ARA ROOT v3.10 Software

AraWebPlotter/AraWebPlotter.cxx

00001 #include <cstdio>
00002 #include <fstream>
00003 #include <iostream>
00004 #include <zlib.h>
00005 #include <libgen.h>     
00006  
00007 //Root includes
00008 #include "TTree.h"
00009 #include "TChain.h"
00010 #include "TFile.h"
00011 #include "TSystem.h"
00012 #include "TROOT.h"
00013 #include "TApplication.h"
00014 
00015 #define HACK_FOR_ROOT
00016 
00017 //ARA includes
00018 #include "araIcrrStructures.h"
00019 #include "RawIcrrStationEvent.h"  
00020 #include "FullIcrrHkEvent.h"  
00021 #include "AraWebPlotterConfig.h"
00022 #include "AraHkPlotter.h"
00023 #include "AraEventPlotter.h"
00024 
00025 int openRootFiles(char *eventFileName, char *hkFileName);
00026 
00027 Int_t runNumber;
00028 TFile *theEventFile;
00029 TChain *eventTree;
00030 RawIcrrStationEvent *theEvent=0;
00031 
00032 
00033 TFile *theHkFile;
00034 TChain *hkTree;
00035 FullIcrrHkEvent *theHk=0;
00036 
00037 
00038 
00039 int main(int argc, char **argv) {
00040   if(argc<2) {
00041     std::cout << "Usage:\n";
00042     std::cout << gSystem->BaseName(argv[0]) << " <event file> <hk file>";
00043     return -1;
00044   }
00045   char *eventFileName=argv[1];
00046   char *hkFileName=0;
00047   if(argc>2) 
00048     hkFileName=argv[3];
00049 
00050   //  theEvent = new RawIcrrStationEvent();
00051   //Step one is to read the config file.
00052    gROOT->SetBatch();
00053   AraWebPlotterConfig *araConfig = new AraWebPlotterConfig();
00054   std::cout << "Root File Dir: " << araConfig->getRootFileDir() << "\n";
00055   std::cout << "Plot Dir: " << araConfig->getPlotDir() << "\n";
00056   std::cout << "Make Event Plots " << araConfig->getEventPlotFlag() << "\n";
00057 
00058     
00059 
00060   //Step two is to open the ROOT Files
00061   if(openRootFiles(eventFileName,hkFileName)<0) {
00062     std::cerr << "Can't open root files!\n";
00063     return -1;
00064   }
00065 
00066   //Step three is to make the plotter
00067   AraHkPlotter *hkPlotter = new AraHkPlotter(araConfig->getPlotDir(),araConfig->getRootFileDir());
00068  AraEventPlotter *eventPlotter = new AraEventPlotter(araConfig->getPlotDir(),araConfig->getRootFileDir());
00069  eventPlotter->setEventPlotFlag(araConfig->getEventPlotFlag());
00070 
00071   //Now we can try and read in the data
00072   if(eventTree) {
00073      //     eventTree->Refresh();
00074      std::cout << "Event tree has: " << eventTree->GetEntries() << "\n";
00075      Long64_t numEvents=eventTree->GetEntries();
00076      //    numEvents=1000;
00077      Long64_t starEvery=(numEvents)/80;
00078      if(starEvery==0)starEvery++;
00079      for(Long64_t i=0;i<numEvents;i++) {
00080         if(i%starEvery==0) std::cerr<<"*";
00081         eventTree->GetEntry(i);
00082         eventPlotter->addEvent(runNumber,theEvent);
00083         hkPlotter->addHk(runNumber,theEvent->head.unixTime,&(theEvent->hk));    
00084      }
00085      std::cerr << "\n";
00086 //     hkPlotter->makePlots();
00087      hkPlotter->saveFiles();
00088      hkPlotter->makeLatestRunPlots();
00089 //     eventPlotter->makePlots();
00090      eventPlotter->makeLatestRunPlots();
00091      eventPlotter->saveFiles();
00092 
00093   }
00094   
00095   if(hkTree) {
00096      //hkTree->Refresh();
00097     std::cout << "Hk tree has: " << hkTree->GetEntries() <<  "\n";
00098     Long64_t numHks=hkTree->GetEntries();
00099     Long64_t starEvery=(numHks)/80;
00100     if(starEvery==0) starEvery++;
00101      for(Long64_t i=0;i<numHks;i++) {
00102        if(i%starEvery==0) std::cerr  << "*";
00103         hkTree->GetEntry(i);
00104         hkPlotter->addHk(runNumber,theHk->unixTime,&(theHk->hk));   
00105      }
00106      std::cerr << "\n";
00107      std::cout << "Read entries\n";
00108 //     hkPlotter->makePlots();
00109      hkPlotter->saveFiles();
00110      hkPlotter->makeLatestRunPlots();
00111   }
00112   
00113   //  delete hkPlotter;
00114   //  delete eventPlotter;
00115   //  gApplication->Terminate();
00116 
00117 
00118 }
00119 
00120 Long64_t getLastEntry(char *fLastHkProcessedFile)
00121 {
00122   std::ifstream LastHk(fLastHkProcessedFile);
00123   if(LastHk) {
00124     Long64_t temp;
00125     LastHk >> temp;
00126     if(temp>0) return temp;
00127     LastHk.close();
00128   }
00129   return 0;
00130 }
00131 
00132 
00133 void setLastEntry(char *fLastHkProcessedFile, Long64_t lastHkEntry)
00134 {
00135   std::ofstream LastHk(fLastHkProcessedFile);
00136   if(LastHk) {
00137     LastHk << lastHkEntry << "\n";
00138     LastHk.close();
00139   }
00140   else {
00141     std::cerr << "Can't open " << fLastHkProcessedFile << "\n";
00142   }
00143 
00144 }
00145 
00146 
00147 
00148 
00149 int openRootFiles(char *eventInName, char *hkInName)
00150 {
00151   FileStat_t staty;
00152   if(eventInName) {
00153     theEvent=0;
00154     if(!eventTree)
00155       eventTree = new TChain("eventTree");
00156     if(gSystem->GetPathInfo(eventInName,staty)) {
00157       std::cout << "Can't find File: " << eventInName << std::endl;
00158       return -1;
00159     }
00160     else {
00161       //     theEventFile = new TFile(eventInName,"OLD");
00162       eventTree->Add(eventInName);
00163       if(eventTree->GetEntries()>0) {   
00164         eventTree->SetBranchAddress("run",&runNumber);
00165         eventTree->SetBranchAddress("event",&theEvent);
00166         
00167       }
00168       else { 
00169         std::cout << "Can't find eventTree\n";
00170         return -1;
00171       }
00172     }
00173   }
00174   
00175   if(hkInName) {
00176     theHk=0;
00177     hkTree = new TChain("hkTree");
00178     if(gSystem->GetPathInfo(hkInName,staty)) {
00179       std::cout << "Can't open File: " << hkInName << std::endl;
00180       return -1;
00181     }
00182     else {
00183       hkTree->Add(hkInName);
00184       if(hkTree->GetEntries()>0) {      
00185         hkTree->SetBranchAddress("fullhk",&theHk);
00186         hkTree->SetBranchAddress("run",&runNumber);
00187      }
00188       else {
00189         std::cout << "Can't find hkTree\n";
00190         return -1;
00191       }
00192     }
00193   }
00194   
00195   
00196   return 0;
00197 }

Generated on Tue Jul 16 16:58:01 2013 for ARA ROOT v3.10 Software by doxygen 1.4.7