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 } 00125 else if(isAtriEvent){ 00126 00127 //Do stuff 00128 std::cerr << "Doing stuff with the Atri event\n"; 00129 chan1 = realAtriEvPtr->getGraphFromRFChan(0); 00130 } 00131 00132 delete chan1; 00133 00134 00135 } 00136 std::cerr << "\n"; 00137 00138 }
Generated on Wed Aug 8 16:20:07 2012 for ARA ROOT Test Bed Software by
