ARA ROOT v3.11 Software

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 doxygen 1.4.7