analysis/exampleLoop.cxx
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 //Includes 00011 #include <iostream> 00012 00013 //AraRoot Includes 00014 #include "RawIcrrStationEvent.h" 00015 #include "RawAtriStationEvent.h" 00016 #include "UsefulAraStationEvent.h" 00017 #include "UsefulIcrrStationEvent.h" 00018 #include "UsefulAtriStationEvent.h" 00019 00020 //Include FFTtools.h if you want to ask the correlation, etc. tools 00021 00022 //ROOT Includes 00023 #include "TTree.h" 00024 #include "TFile.h" 00025 #include "TGraph.h" 00026 00027 00028 RawIcrrStationEvent *rawIcrrEvPtr; 00029 RawAtriStationEvent *rawAtriEvPtr; 00030 RawAraStationEvent *rawEvPtr; 00031 UsefulIcrrStationEvent *realIcrrEvPtr; 00032 UsefulAtriStationEvent *realAtriEvPtr; 00033 00034 int main(int argc, char **argv) 00035 { 00036 00037 if(argc<2) { 00038 std::cout << "Usage\n" << argv[0] << " <input file>\n"; 00039 std::cout << "e.g.\n" << argv[0] << " http://www.hep.ucl.ac.uk/uhen/ara/monitor/root/run1841/event1841.root\n"; 00040 return 0; 00041 } 00042 00043 TFile *fp = TFile::Open(argv[1]); 00044 if(!fp) { 00045 std::cerr << "Can't open file\n"; 00046 return -1; 00047 } 00048 TTree *eventTree = (TTree*) fp->Get("eventTree"); 00049 if(!eventTree) { 00050 std::cerr << "Can't find eventTree\n"; 00051 return -1; 00052 } 00053 00054 //Now check the electronics type of the station 00055 00056 00057 int isIcrrEvent=0; 00058 int isAtriEvent=0; 00059 00060 //Check an event in the run Tree and see if it is station1 or TestBed (stationId<2) 00061 eventTree->SetBranchAddress("event",&rawEvPtr); 00062 eventTree->GetEntry(0); 00063 00064 if((rawEvPtr->stationId)<2){ 00065 isIcrrEvent=1; 00066 isAtriEvent=0; 00067 } 00068 else{ 00069 isIcrrEvent=0; 00070 isAtriEvent=1; 00071 } 00072 eventTree->ResetBranchAddresses(); 00073 00074 //Now set the appropriate branch addresses 00075 //The Icrr case 00076 if(isIcrrEvent){ 00077 00078 eventTree->SetBranchAddress("event", &rawIcrrEvPtr); 00079 std::cerr << "Set Branch address to Icrr\n"; 00080 00081 } 00082 //The Atri case 00083 else{ 00084 00085 eventTree->SetBranchAddress("event", &rawAtriEvPtr); 00086 std::cerr << "Set Branch address to Atri\n"; 00087 00088 } 00089 00090 //Now we set up out run list 00091 Long64_t numEntries=eventTree->GetEntries(); 00092 Long64_t starEvery=numEntries/80; 00093 if(starEvery==0) starEvery++; 00094 00095 //jpd print to screen some info 00096 std::cerr << "isAtri " << isAtriEvent << " isIcrr " << isIcrrEvent << " number of entries is " << numEntries << std::endl; 00097 00098 00099 for(Long64_t event=0;event<numEntries;event++) { 00100 if(event%starEvery==0) { 00101 std::cerr << "*"; 00102 } 00103 00104 //This line gets the RawIcrr or RawAtri Event 00105 eventTree->GetEntry(event); 00106 00107 //Here we create a useful event Either an Icrr or Atri event 00108 00109 if(isIcrrEvent){ 00110 realIcrrEvPtr = new UsefulIcrrStationEvent(rawIcrrEvPtr, AraCalType::kLatestCalib); 00111 } 00112 else if(isAtriEvent){ 00113 realAtriEvPtr = new UsefulAtriStationEvent(rawAtriEvPtr, AraCalType::kLatestCalib); 00114 } 00115 00116 //Now you can do whatever analysis you want 00117 //e.g. 00118 TGraph *chan1; 00119 if(isIcrrEvent){ 00120 00121 //Do stuff 00122 // std::cerr << "Doing stuff with the Icrr event\n"; 00123 chan1 = realIcrrEvPtr->getGraphFromRFChan(0); 00124 //Check the short waveform problems 00125 00126 int shortWaveform=0; 00127 for(int chip=0; chip<3;chip++){ 00128 shortWaveform=realIcrrEvPtr->shortWaveform(chip); 00129 if(shortWaveform){ 00130 fprintf(stderr, "shortWaveform on labChip %i\n", chip); 00131 } 00132 00133 } 00134 00135 } 00136 else if(isAtriEvent){ 00137 00138 //Do stuff 00139 // std::cerr << "Doing stuff with the Atri event\n"; 00140 chan1 = realAtriEvPtr->getGraphFromRFChan(0); 00141 00142 00143 00144 00145 } 00146 00147 delete chan1; 00148 00149 00150 } 00151 std::cerr << "\n"; 00152 00153 }
Generated on Mon Jun 3 16:10:04 2013 for ARA ROOT v3.9 Software by
