AraWebPlotter/AraHkPlotter.cxx
00001 #include "AraHkPlotter.h" 00002 #include "TCanvas.h" 00003 #include "TGraph.h" 00004 #include "TAxis.h" 00005 #include "TMultiGraph.h" 00006 #include "TTimeStamp.h" 00007 #include "TSystem.h" 00008 00009 AraHkPlotter::AraHkPlotter(char *plotDir, char *dataDir) 00010 { 00011 fCurrentRun=0; 00012 fHistoFile=0; 00013 AraPlotUtils::setDefaultStyle(); 00014 strncpy(fPlotDir,plotDir,180); 00015 strncpy(fDataDir,dataDir,180); 00016 sprintf(fTouchFile,"%s/lastHk",fPlotDir); 00017 // std::cout << "AraHkPlotter " << fPlotDir << "\t" << fDataDir << "\n"; 00018 } 00019 00020 AraHkPlotter::~AraHkPlotter() 00021 { 00022 saveFiles(); 00023 fHistoFile->Close(); 00024 } 00025 00026 void AraHkPlotter::saveFiles() 00027 { 00028 00029 if(fHistoFile) { 00030 fHistoFile->cd(); 00031 for(int i=0;i<8;i++) { 00032 if(fTempHistos[i]) fTempHistos[i]->Write(0,TObject::kWriteDelete); 00033 if(fRfpDisconeHistos[i]) fRfpDisconeHistos[i]->Write(0,TObject::kWriteDelete); 00034 if(fRfpBatwingHistos[i]) fRfpBatwingHistos[i]->Write(0,TObject::kWriteDelete); 00035 if(fSclDisconeHistos[i]) fSclDisconeHistos[i]->Write(0,TObject::kWriteDelete); 00036 if(fSclBatPlusHistos[i]) fSclBatPlusHistos[i]->Write(0,TObject::kWriteDelete); 00037 if(fSclBatMinusHistos[i]) fSclBatMinusHistos[i]->Write(0,TObject::kWriteDelete); 00038 } 00039 00040 00041 for(int i=0;i<6;i++) { 00042 for(int j=0;j<4;j++) { 00043 if(fDacHistos[i][j]) fDacHistos[i][j]->Write(0,TObject::kWriteDelete); 00044 } 00045 } 00046 00047 00048 for(int i=0;i<12;i++) { 00049 if(fSclTrigL1Histos[i]) fSclTrigL1Histos[i]->Write(0,TObject::kWriteDelete); 00050 } 00051 00052 if(fSclGlobalHisto) fSclGlobalHisto->Write(0,TObject::kWriteDelete); 00053 } 00054 } 00055 00056 void AraHkPlotter::initialiseCurrentRunTimeHists() 00057 { 00058 char filename[180]; 00059 sprintf(filename,"%s/hkTimeHists%d.root",fDataDir,fCurrentRun); 00060 fHistoFile = new TFile(filename,"UPDATE"); 00061 initialiseTimeHists(); 00062 } 00063 00064 void AraHkPlotter::initialiseTimeHists(Int_t binWidth) 00065 { 00066 char name[180]; 00067 char title[180]; 00068 for(int i=0;i<8;i++) { 00069 sprintf(name,"tempHisto%d",i); 00070 sprintf(title,"Temperature %d",i+1); 00071 fTempHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00072 if(!fTempHistos[i]) 00073 fTempHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00074 sprintf(name,"rfpDisconeHisto%d",i); 00075 sprintf(title,"RF Power -- Discone %d",i+1); 00076 fRfpDisconeHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00077 if(!fRfpDisconeHistos[i]) 00078 fRfpDisconeHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00079 sprintf(name,"rfpBatwingHisto%d",i); 00080 sprintf(title,"RF Power -- Batwing %d",i+1); 00081 fRfpBatwingHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00082 if(!fRfpBatwingHistos[i]) 00083 fRfpBatwingHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00084 sprintf(name,"sclDisconeHisto%d",i); 00085 sprintf(title,"Scaler -- Discone %d",i+1); 00086 fSclDisconeHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00087 if(!fSclDisconeHistos[i]) 00088 fSclDisconeHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00089 sprintf(name,"sclBatPlusHisto%d",i); 00090 sprintf(title,"Scaler -- Bat+ %d",i+1); 00091 fSclBatPlusHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00092 if(!fSclBatPlusHistos[i]) 00093 fSclBatPlusHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00094 sprintf(name,"sclBatMinusHisto%d",i); 00095 sprintf(title,"Scaler -- Bat- %d",i+1); 00096 fSclBatMinusHistos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00097 if(!fSclBatMinusHistos[i]) 00098 fSclBatMinusHistos[i] = new AraTimeHistoHandler(name,title,binWidth); 00099 } 00100 00101 00102 for(int i=0;i<6;i++) { 00103 for(int j=0;j<4;j++) { 00104 sprintf(name,"dacHisto%d_%d",i,j); 00105 sprintf(title,"DAC %c %d",IcrrHkData::getDacLetter(i),j+1); 00106 fDacHistos[i][j] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00107 if(!fDacHistos[i][j]) 00108 fDacHistos[i][j]= new AraTimeHistoHandler(name,title,binWidth); 00109 } 00110 } 00111 00112 for(int i=0;i<12;i++) { 00113 sprintf(name,"sclTrigL1Histo%d",i); 00114 sprintf(title,"Scaler L1 %d",i+1); 00115 fSclTrigL1Histos[i] = (AraTimeHistoHandler*) fHistoFile->Get(name); 00116 if(!fSclTrigL1Histos[i]) 00117 fSclTrigL1Histos[i]=new AraTimeHistoHandler(name,title,binWidth); 00118 } 00119 00120 sprintf(name,"sclGlobalHisto"); 00121 sprintf(title,"Scaler Global"); 00122 fSclGlobalHisto = (AraTimeHistoHandler*) fHistoFile->Get(name); 00123 if(!fSclGlobalHisto) 00124 fSclGlobalHisto = new AraTimeHistoHandler(name,title,binWidth); 00125 00126 } 00127 00128 void AraHkPlotter::loadAllTimeHists() 00129 { 00130 char filename[180]; 00131 sprintf(filename,"%s/allHkTimeHists.root",fDataDir); 00132 fHistoFile = new TFile(filename,"RECREATE"); //Might switch this to RECREATE at some point 00133 initialiseTimeHists(600); 00134 int countFiles=0; 00135 //Now need to loop over all eventTimeHists run files in the directory 00136 void* dirp = gSystem->OpenDirectory(fDataDir); 00137 const char *entry = gSystem->GetDirEntry(dirp); 00138 while(entry != 0) 00139 { 00140 int len = strlen(entry); 00141 if(len >= 5 && strcmp(&entry[len - 5], ".root") == 0) 00142 { 00143 if(len >= 17 && strstr(entry,"hkTimeHists")) { 00144 00145 TString fileName; 00146 fileName+=fDataDir; 00147 if( !fileName.EndsWith("/") ) fileName += "/"; 00148 fileName+=entry; 00149 TFile *fpRun=TFile::Open(fileName.Data(),"OLD"); 00150 { 00151 std::cerr << "*"; 00152 char name[180]; 00153 char title[180]; 00154 for(int i=0;i<8;i++) { 00155 sprintf(name,"tempHisto%d",i); 00156 sprintf(title,"Temperature %d",i+1); 00157 AraTimeHistoHandler *tempTempHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00158 if(fTempHistos[i] && tempTempHistos) 00159 fTempHistos[i]->addAraTimeHistoHandler(tempTempHistos); 00160 00161 sprintf(name,"rfpDisconeHisto%d",i); 00162 sprintf(title,"RF Power -- Discone %d",i+1); 00163 AraTimeHistoHandler *tempRfpDisconeHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00164 if(fRfpDisconeHistos[i] && tempRfpDisconeHistos) 00165 fRfpDisconeHistos[i]->addAraTimeHistoHandler(tempRfpDisconeHistos); 00166 00167 sprintf(name,"rfpBatwingHisto%d",i); 00168 sprintf(title,"RF Power -- Batwing %d",i+1); 00169 AraTimeHistoHandler *tempRfpBatwingHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00170 if(fRfpBatwingHistos[i] && tempRfpBatwingHistos) 00171 fRfpBatwingHistos[i]->addAraTimeHistoHandler(tempRfpBatwingHistos); 00172 00173 sprintf(name,"sclDisconeHisto%d",i); 00174 sprintf(title,"Scaler -- Discone %d",i+1); 00175 AraTimeHistoHandler *tempSclDisconeHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00176 if(fSclDisconeHistos[i] && tempSclDisconeHistos) 00177 fSclDisconeHistos[i]->addAraTimeHistoHandler(tempSclDisconeHistos); 00178 00179 sprintf(name,"sclBatPlusHisto%d",i); 00180 sprintf(title,"Scaler -- Bat+ %d",i+1); 00181 AraTimeHistoHandler *tempSclBatPlusHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00182 if(fSclBatPlusHistos[i] && tempSclBatPlusHistos) 00183 fSclBatPlusHistos[i]->addAraTimeHistoHandler(tempSclBatPlusHistos); 00184 00185 sprintf(name,"sclBatMinusHisto%d",i); 00186 sprintf(title,"Scaler -- Bat- %d",i+1); 00187 AraTimeHistoHandler *tempSclBatMinusHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00188 if(fSclBatMinusHistos[i] && tempSclBatMinusHistos ) 00189 fSclBatMinusHistos[i]->addAraTimeHistoHandler(tempSclBatMinusHistos); 00190 } 00191 00192 00193 for(int i=0;i<6;i++) { 00194 for(int j=0;j<4;j++) { 00195 sprintf(name,"dacHisto%d_%d",i,j); 00196 sprintf(title,"DAC %c %d",IcrrHkData::getDacLetter(i),j+1); 00197 AraTimeHistoHandler *tempDacHistos = (AraTimeHistoHandler*) fpRun->Get(name); 00198 if(fDacHistos[i][j] && tempDacHistos) 00199 fDacHistos[i][j]->addAraTimeHistoHandler(tempDacHistos); 00200 } 00201 } 00202 00203 for(int i=0;i<12;i++) { 00204 sprintf(name,"sclTrigL1Histo%d",i); 00205 sprintf(title,"Scaler L1 %d",i+1); 00206 AraTimeHistoHandler *tempSclTrigL1Histos = (AraTimeHistoHandler*) fpRun->Get(name); 00207 if(fSclTrigL1Histos[i] && tempSclTrigL1Histos) 00208 fSclTrigL1Histos[i]->addAraTimeHistoHandler(tempSclTrigL1Histos); 00209 } 00210 00211 sprintf(name,"sclGlobalHisto"); 00212 sprintf(title,"Scaler Global"); 00213 AraTimeHistoHandler *tempSclGlobalHisto = (AraTimeHistoHandler*) fpRun->Get(name); 00214 if(fSclGlobalHisto && tempSclGlobalHisto) 00215 fSclGlobalHisto->addAraTimeHistoHandler(tempSclGlobalHisto); 00216 } 00217 countFiles++; 00218 if(fpRun) 00219 delete fpRun; 00220 } 00221 } 00222 entry = gSystem->GetDirEntry(dirp); 00223 } 00224 std::cerr << "\n"; 00225 std::cout << "Found " << countFiles << " run hk time hist files\n"; 00226 00227 00228 } 00229 00230 00231 00232 void AraHkPlotter::addHk(Int_t runNumber,UInt_t unixTime, IcrrHkData *hkData) 00233 { 00234 if(fCurrentRun!=runNumber) { 00235 fCurrentRun=runNumber; 00236 fEarliestTime=unixTime; 00237 fLatestTime=unixTime; 00238 } 00239 else { 00240 if(fEarliestTime>unixTime) 00241 fEarliestTime=unixTime; 00242 if(fLatestTime<unixTime) 00243 fLatestTime=unixTime; 00244 } 00245 if(!fHistoFile) initialiseCurrentRunTimeHists(); 00246 fHistoFile->cd(); 00247 AraPlotUtils::updateTouchFile(fTouchFile,unixTime); 00248 //Here we will need to add something to calibrate these numbers 00249 for(int i=0;i<8;i++) { 00250 fTempHistos[i]->addVariable(unixTime,hkData->getTemperature(i)); 00251 fRfpDisconeHistos[i]->addVariable(unixTime,hkData->getRFPowerDiscone(i)); 00252 fRfpBatwingHistos[i]->addVariable(unixTime,hkData->getRFPowerBatwing(i)); 00253 fSclDisconeHistos[i]->addVariable(unixTime,hkData->sclDiscone[i]); 00254 fSclBatPlusHistos[i]->addVariable(unixTime,hkData->sclBatPlus[i]); 00255 fSclBatMinusHistos[i]->addVariable(unixTime,hkData->sclBatMinus[i]); 00256 } 00257 00258 for(int i=0;i<6;i++) { 00259 for(int j=0;j<4;j++) { 00260 fDacHistos[i][j]->addVariable(unixTime,hkData->dac[i][j]); 00261 } 00262 } 00263 00264 for(int i=0;i<12;i++) { 00265 fSclTrigL1Histos[i]->addVariable(unixTime,hkData->sclTrigL1[i]); 00266 } 00267 00268 fSclGlobalHisto->addVariable(unixTime,hkData->sclGlobal); 00269 00270 } 00271 00272 void AraHkPlotter::makePlots() 00273 { 00274 fHistoFile->cd(); 00275 char plotTitle[180]; 00276 char canName[FILENAME_MAX]; 00277 UInt_t lastTime=fTempHistos[0]->getLastTime(); 00278 std::cout << "Last Time: " << lastTime << "\n"; 00279 //Assume they are all the same 00280 TTimeStamp clockTime((time_t)lastTime,0); 00281 00282 //First up lets do the temperature plots 00283 for(int timeInd = (int) AraPlotTime::kFullTime; 00284 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00285 // if(timeInd==(int)AraPlotTime::kOneHour) continue; 00286 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00287 TCanvas canTemp("canTemp","canTemp"); 00288 TGraph *grTemp[8]={0}; 00289 for(int i=0;i<8;i++) { 00290 grTemp[i]= fTempHistos[i]->getTimeGraph(plotTime); 00291 } 00292 sprintf(plotTitle,"Temperatures for %s (Last time: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00293 00294 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canTemp,grTemp,8,plotTitle,"Time","Temp (units)",1); 00295 if(mg) { 00296 sprintf(canName,"%s/hk/canTemp%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00297 unlink(canName); 00298 canTemp.Print(canName); 00299 canTemp.Clear(); 00300 delete mg; 00301 } 00302 } 00303 00304 00305 //Next the RF Power Plots --Discones 00306 for(int timeInd = (int) AraPlotTime::kFullTime; 00307 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00308 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00309 TCanvas canRfpDiscone("canRfpDiscone","canRfpDiscone"); 00310 TGraph *grRfpDiscone[8]={0}; 00311 for(int i=0;i<8;i++) { 00312 grRfpDiscone[i]= fRfpDisconeHistos[i]->getTimeGraph(plotTime); 00313 } 00314 sprintf(plotTitle,"RF Power (Discones) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00315 00316 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canRfpDiscone,grRfpDiscone,8,plotTitle,"Time","RF Power (units)",1); 00317 if(mg) { 00318 sprintf(canName,"%s/hk/canRfpDiscone%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00319 unlink(canName); 00320 canRfpDiscone.Print(canName); 00321 canRfpDiscone.Clear(); 00322 delete mg; 00323 } 00324 } 00325 00326 00327 //Next the RF Power Plots --Batwings 00328 for(int timeInd = (int) AraPlotTime::kFullTime; 00329 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00330 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00331 TCanvas canRfpBatwing("canRfpBatwing","canRfpBatwing"); 00332 TGraph *grRfpBatwing[8]={0}; 00333 for(int i=0;i<8;i++) { 00334 grRfpBatwing[i]= fRfpBatwingHistos[i]->getTimeGraph(plotTime); 00335 } 00336 sprintf(plotTitle,"RF Power (Batwings) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00337 00338 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canRfpBatwing,grRfpBatwing,8,plotTitle,"Time","RF Power (units)",1); 00339 if(mg) { 00340 sprintf(canName,"%s/hk/canRfpBatwing%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00341 unlink(canName); 00342 canRfpBatwing.Print(canName); 00343 canRfpBatwing.Clear(); 00344 delete mg; 00345 } 00346 } 00347 00348 00349 00350 //Next the Scaler Plots -- Discones 00351 for(int timeInd = (int) AraPlotTime::kFullTime; 00352 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00353 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00354 TCanvas canSclDiscone("canSclDiscone","canSclDiscone"); 00355 TGraph *grSclDiscone[8]={0}; 00356 for(int i=0;i<8;i++) { 00357 grSclDiscone[i]= fSclDisconeHistos[i]->getTimeGraph(plotTime); 00358 } 00359 sprintf(plotTitle,"Scalers (Discones) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00360 00361 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclDiscone,grSclDiscone,8,plotTitle,"Time","Scaler (units)",1); 00362 if(mg) { 00363 sprintf(canName,"%s/hk/canSclDiscone%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00364 unlink(canName); 00365 canSclDiscone.Print(canName); 00366 canSclDiscone.Clear(); 00367 delete mg; 00368 } 00369 } 00370 00371 00372 //Next the Scaler Plots -- Bat+ 00373 for(int timeInd = (int) AraPlotTime::kFullTime; 00374 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00375 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00376 TCanvas canSclBatPlus("canSclBatPlus","canSclBatPlus"); 00377 TGraph *grSclBatPlus[8]={0}; 00378 for(int i=0;i<8;i++) { 00379 grSclBatPlus[i]= fSclBatPlusHistos[i]->getTimeGraph(plotTime); 00380 } 00381 sprintf(plotTitle,"Scalers (Bat+) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00382 00383 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclBatPlus,grSclBatPlus,8,plotTitle,"Time","Scaler (units)",1); 00384 if(mg) { 00385 sprintf(canName,"%s/hk/canSclBatPlus%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00386 unlink(canName); 00387 canSclBatPlus.Print(canName); 00388 canSclBatPlus.Clear(); 00389 delete mg; 00390 } 00391 } 00392 00393 00394 //Next the Scaler Plots -- Bat- 00395 for(int timeInd = (int) AraPlotTime::kFullTime; 00396 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00397 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00398 TCanvas canSclBatMinus("canSclBatMinus","canSclBatMinus"); 00399 TGraph *grSclBatMinus[8]={0}; 00400 for(int i=0;i<8;i++) { 00401 grSclBatMinus[i]= fSclBatMinusHistos[i]->getTimeGraph(plotTime); 00402 } 00403 sprintf(plotTitle,"Scalers (Bat-) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00404 00405 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclBatMinus,grSclBatMinus,8,plotTitle,"Time","Scaler (units)",1); 00406 if(mg) { 00407 sprintf(canName,"%s/hk/canSclBatMinus%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00408 unlink(canName); 00409 canSclBatMinus.Print(canName); 00410 canSclBatMinus.Clear(); 00411 delete mg; 00412 } 00413 } 00414 00415 00416 //Next the Scaler Plots -- Trig L1 00417 for(int timeInd = (int) AraPlotTime::kFullTime; 00418 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00419 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00420 TCanvas canSclTrigL1("canSclTrigL1","canSclTrigL1"); 00421 TGraph *grSclTrigL1[12]={0}; 00422 for(int i=0;i<12;i++) { 00423 grSclTrigL1[i]= fSclTrigL1Histos[i]->getTimeGraph(plotTime); 00424 } 00425 sprintf(plotTitle,"Scalers (L1) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00426 00427 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclTrigL1,grSclTrigL1,12,plotTitle,"Time","Scaler (units)",1); 00428 if(mg) { 00429 sprintf(canName,"%s/hk/canSclTrigL1%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00430 unlink(canName); 00431 canSclTrigL1.Print(canName); 00432 canSclTrigL1.Clear(); 00433 delete mg; 00434 } 00435 } 00436 00437 //Next the Global Scaler, bit of overkill to make a multigraph for one thing, but hey ho there we go 00438 for(int timeInd = (int) AraPlotTime::kFullTime; 00439 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00440 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00441 TCanvas canSclGlobal("canSclGlobal","canSclGlobal"); 00442 TGraph *grSclGlobal[1]={0}; 00443 for(int i=0;i<1;i++) { 00444 grSclGlobal[i]= fSclGlobalHisto->getTimeGraph(plotTime); 00445 } 00446 sprintf(plotTitle,"Scalers (Global) for %s (Last: %s)",AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00447 00448 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclGlobal,grSclGlobal,1,plotTitle,"Time","Scaler (units)",1); 00449 if(mg) { 00450 sprintf(canName,"%s/hk/canSclGlobal%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00451 unlink(canName); 00452 canSclGlobal.Print(canName); 00453 canSclGlobal.Clear(); 00454 delete mg; 00455 } 00456 } 00457 00458 00459 //Next the DAC Plots 00460 for(int timeInd = (int) AraPlotTime::kFullTime; 00461 timeInd<(int)AraPlotTime::kNoTime;timeInd++) { 00462 AraPlotTime::AraPlotTime_t plotTime=AraPlotTime::AraPlotTime_t(timeInd); 00463 TCanvas canDac("canDac","canDac",600,800); 00464 canDac.Divide(2,3); 00465 TGraph *grDac[6][4]={{0}}; 00466 TMultiGraph *mg[6]; 00467 Int_t doPlot=0; 00468 for(int i=0;i<6;i++) { 00469 canDac.cd(i+1); 00470 for(int j=0;j<4;j++) { 00471 grDac[i][j]= fDacHistos[i][j]->getTimeGraph(plotTime); 00472 } 00473 sprintf(plotTitle,"DAC (%c) for %s (Last: %s)",IcrrHkData::getDacLetter(i),AraPlotTime::getTimeTitleString(plotTime),clockTime.AsString("sl")); 00474 //This is dodgy should think about whether to go home 00475 mg[i] =AraPlotUtils::plotMultigraph((TCanvas*)gPad,grDac[i],4,plotTitle,"Time","Scaler (units)",1); 00476 if(mg[i]) doPlot=1; 00477 } 00478 00479 if(doPlot) { 00480 sprintf(canName,"%s/hk/canDac%s.png",fPlotDir,AraPlotTime::getTimeString(plotTime)); 00481 unlink(canName); 00482 canDac.Print(canName); 00483 canDac.Clear(); 00484 } 00485 for(int i=0;i<6;i++) { 00486 if(mg[i]) delete mg[i]; 00487 } 00488 } 00489 00490 00491 00492 } 00493 00494 void AraHkPlotter::makeLatestRunPlots() 00495 { 00496 fHistoFile->cd(); 00497 char plotTitle[180]; 00498 char canName[FILENAME_MAX]; 00499 char dirName[FILENAME_MAX]; 00500 sprintf(dirName,"%s/hk/archive/run%d",fPlotDir,fCurrentRun); 00501 gSystem->mkdir(dirName,kTRUE); 00502 00503 00504 00505 //First up lets do the temperature plots 00506 { 00507 00508 TCanvas canTemp("canTemp","canTemp"); 00509 TGraph *grTemp[8]={0}; 00510 for(int i=0;i<8;i++) { 00511 grTemp[i]= fTempHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00512 } 00513 sprintf(plotTitle,"Temperatures for Run %d",fCurrentRun); 00514 00515 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canTemp,grTemp,8,plotTitle,"Time","Temp (units)",1); 00516 if(mg) { 00517 sprintf(canName,"%s/canTemp.png",dirName); 00518 unlink(canName); 00519 canTemp.Print(canName); 00520 canTemp.Clear(); 00521 delete mg; 00522 } 00523 } 00524 00525 00526 //Next the RF Power Plots --Discones 00527 { 00528 00529 TCanvas canRfpDiscone("canRfpDiscone","canRfpDiscone"); 00530 TGraph *grRfpDiscone[8]={0}; 00531 for(int i=0;i<8;i++) { 00532 grRfpDiscone[i]= fRfpDisconeHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00533 } 00534 sprintf(plotTitle,"RF Power (Discones) for Run %d",fCurrentRun); 00535 00536 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canRfpDiscone,grRfpDiscone,8,plotTitle,"Time","RF Power (units)",1); 00537 if(mg) { 00538 sprintf(canName,"%s/canRfpDiscone.png",dirName); 00539 unlink(canName); 00540 canRfpDiscone.Print(canName); 00541 canRfpDiscone.Clear(); 00542 delete mg; 00543 } 00544 } 00545 00546 00547 //Next the RF Power Plots --Batwings 00548 { 00549 00550 TCanvas canRfpBatwing("canRfpBatwing","canRfpBatwing"); 00551 TGraph *grRfpBatwing[8]={0}; 00552 for(int i=0;i<8;i++) { 00553 grRfpBatwing[i]= fRfpBatwingHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00554 } 00555 sprintf(plotTitle,"RF Power (Batwings) for Run %d",fCurrentRun); 00556 00557 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canRfpBatwing,grRfpBatwing,8,plotTitle,"Time","RF Power (units)",1); 00558 if(mg) { 00559 sprintf(canName,"%s/canRfpBatwing.png",dirName); 00560 unlink(canName); 00561 canRfpBatwing.Print(canName); 00562 canRfpBatwing.Clear(); 00563 delete mg; 00564 } 00565 } 00566 00567 00568 00569 //Next the Scaler Plots -- Discones 00570 { 00571 00572 TCanvas canSclDiscone("canSclDiscone","canSclDiscone"); 00573 TGraph *grSclDiscone[8]={0}; 00574 for(int i=0;i<8;i++) { 00575 grSclDiscone[i]= fSclDisconeHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00576 } 00577 sprintf(plotTitle,"Scalers (Discones) for Run %d",fCurrentRun); 00578 00579 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclDiscone,grSclDiscone,8,plotTitle,"Time","Scaler (units)",1); 00580 if(mg) { 00581 sprintf(canName,"%s/canSclDiscone.png",dirName); 00582 unlink(canName); 00583 canSclDiscone.Print(canName); 00584 canSclDiscone.Clear(); 00585 delete mg; 00586 } 00587 } 00588 00589 00590 //Next the Scaler Plots -- Bat+ 00591 { 00592 00593 TCanvas canSclBatPlus("canSclBatPlus","canSclBatPlus"); 00594 TGraph *grSclBatPlus[8]={0}; 00595 for(int i=0;i<8;i++) { 00596 grSclBatPlus[i]= fSclBatPlusHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00597 } 00598 sprintf(plotTitle,"Scalers (Bat+) for Run %d",fCurrentRun); 00599 00600 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclBatPlus,grSclBatPlus,8,plotTitle,"Time","Scaler (units)",1); 00601 if(mg) { 00602 sprintf(canName,"%s/canSclBatPlus.png",dirName); 00603 unlink(canName); 00604 canSclBatPlus.Print(canName); 00605 canSclBatPlus.Clear(); 00606 delete mg; 00607 } 00608 } 00609 00610 00611 //Next the Scaler Plots -- Bat- 00612 { 00613 00614 TCanvas canSclBatMinus("canSclBatMinus","canSclBatMinus"); 00615 TGraph *grSclBatMinus[8]={0}; 00616 for(int i=0;i<8;i++) { 00617 grSclBatMinus[i]= fSclBatMinusHistos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00618 } 00619 sprintf(plotTitle,"Scalers (Bat-) for Run %d",fCurrentRun); 00620 00621 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclBatMinus,grSclBatMinus,8,plotTitle,"Time","Scaler (units)",1); 00622 if(mg) { 00623 sprintf(canName,"%s/canSclBatMinus.png",dirName); 00624 unlink(canName); 00625 canSclBatMinus.Print(canName); 00626 canSclBatMinus.Clear(); 00627 delete mg; 00628 } 00629 } 00630 00631 00632 //Next the Scaler Plots -- Trig L1 00633 { 00634 00635 TCanvas canSclTrigL1("canSclTrigL1","canSclTrigL1"); 00636 TGraph *grSclTrigL1[12]={0}; 00637 for(int i=0;i<12;i++) { 00638 grSclTrigL1[i]= fSclTrigL1Histos[i]->getTimeGraph(fEarliestTime,fLatestTime); 00639 } 00640 sprintf(plotTitle,"Scalers (L1) for Run %d",fCurrentRun); 00641 00642 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclTrigL1,grSclTrigL1,12,plotTitle,"Time","Scaler (units)",1); 00643 if(mg) { 00644 sprintf(canName,"%s/canSclTrigL1.png",dirName); 00645 unlink(canName); 00646 canSclTrigL1.Print(canName); 00647 canSclTrigL1.Clear(); 00648 delete mg; 00649 } 00650 } 00651 00652 //Next the Global Scaler, bit of overkill to make a multigraph for one thing, but hey ho there we go 00653 { 00654 00655 TCanvas canSclGlobal("canSclGlobal","canSclGlobal"); 00656 TGraph *grSclGlobal[1]={0}; 00657 for(int i=0;i<1;i++) { 00658 grSclGlobal[i]= fSclGlobalHisto->getTimeGraph(fEarliestTime,fLatestTime); 00659 } 00660 sprintf(plotTitle,"Scalers (Global) for Run %d",fCurrentRun); 00661 00662 TMultiGraph *mg =AraPlotUtils::plotMultigraph(&canSclGlobal,grSclGlobal,1,plotTitle,"Time","Scaler (units)",1); 00663 if(mg) { 00664 sprintf(canName,"%s/canSclGlobal.png",dirName); 00665 unlink(canName); 00666 canSclGlobal.Print(canName); 00667 canSclGlobal.Clear(); 00668 delete mg; 00669 } 00670 } 00671 00672 00673 //Next the DAC Plots 00674 { 00675 00676 TCanvas canDac("canDac","canDac",600,800); 00677 canDac.Divide(2,3); 00678 TGraph *grDac[6][4]={{0}}; 00679 TMultiGraph *mg[6]; 00680 Int_t doPlot=0; 00681 for(int i=0;i<6;i++) { 00682 canDac.cd(i+1); 00683 for(int j=0;j<4;j++) { 00684 grDac[i][j]= fDacHistos[i][j]->getTimeGraph(fEarliestTime,fLatestTime); 00685 } 00686 sprintf(plotTitle,"DAC (%c) for Run %d",IcrrHkData::getDacLetter(i),fCurrentRun); 00687 //This is dodgy should think about whether to go home 00688 mg[i] =AraPlotUtils::plotMultigraph((TCanvas*)gPad,grDac[i],4,plotTitle,"Time","Scaler (units)",1); 00689 if(mg[i]) doPlot=1; 00690 } 00691 00692 if(doPlot) { 00693 sprintf(canName,"%s/canDac.png",dirName); 00694 unlink(canName); 00695 canDac.Print(canName); 00696 canDac.Clear(); 00697 } 00698 for(int i=0;i<6;i++) { 00699 if(mg[i]) delete mg[i]; 00700 } 00701 } 00702 00703 00704 00705 }
Generated on Fri Jul 26 15:27:35 2013 for ARA ROOT v3.11 Software by
