ARA ROOT v3.11 Software

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 Fri Jul 26 15:27:34 2013 for ARA ROOT v3.11 Software by doxygen 1.4.7