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
