ARA ROOT v3.10 Software

analysis/maxAmplitude.cxx

00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 //Includes
00010 #include <iostream>
00011 
00012 //AraRoot Includes
00013 #include "RawAtriStationEvent.h"
00014 #include "UsefulAraStationEvent.h"
00015 #include "UsefulAtriStationEvent.h"
00016 
00017 //Include FFTtools.h if you want to ask the correlation, etc. tools
00018 
00019 #include "FFTtools.h"
00020 
00021 //ROOT Includes
00022 #include "TTree.h"
00023 #include "TMath.h"
00024 #include "TFile.h"
00025 #include "TGraph.h"
00026 
00027 
00028 RawAtriStationEvent *rawAtriEvPtr;
00029 UsefulAtriStationEvent *realAtriEvPtr;
00030 
00031 Double_t getMaxX(TGraph *gr);
00032 Double_t getMaxY(TGraph *gr);
00033 
00034 int main(int argc, char **argv)
00035 {
00036 
00037   if(argc<4) {
00038     std::cout << "Usage\n" << argv[0] << " <input file> <ped file> <output file>\n";
00039     return 0;
00040   }
00041 
00042   printf("------------------------------------------------------------------------------------------------------------------------------------------\n");
00043   printf("\t\t%s\n", argv[0]);
00044   printf("------------------------------------------------------------------------------------------------------------------------------------------\n");
00045 
00046   printf("input file %s\n", argv[1]);
00047   printf("ped file %s\n", argv[2]);
00048   printf("out file %s\n", argv[3]);
00049   
00050   
00051 
00052   TFile *fpOut = new TFile(argv[3], "RECREATE");
00053 
00054   TTree *outTree = new TTree("tMaxADC", "tree of maximum ADCs in a waveform");
00055   Double_t maxADC=0;
00056   UInt_t thisTimeStamp=0, pps=0;
00057   Int_t chan=0;
00058 
00059   outTree->Branch("maxADC", &maxADC, "maxADC/D");
00060   outTree->Branch("chan", &chan, "chan/I");
00061   outTree->Branch("timeStamp", &thisTimeStamp, "thisTimeStamp/I");
00062   outTree->Branch("pps", &pps, "pps/I");
00063 
00064   TFile *fp = TFile::Open(argv[1]);
00065   if(!fp) {
00066     std::cerr << "Can't open file\n";
00067      return -1;
00068    }
00069    TTree *eventTree = (TTree*) fp->Get("eventTree");
00070    if(!eventTree) {
00071      std::cerr << "Can't find eventTree\n";
00072      return -1;
00073    }
00074 
00075    eventTree->SetBranchAddress("event", &rawAtriEvPtr);
00076    Long64_t numEntries=eventTree->GetEntries();
00077    Long64_t starEvery=numEntries/80;
00078    if(starEvery==0) starEvery++;
00079 
00080    TGraph *grChan;
00081 
00082    eventTree->GetEntry(0);
00083    
00084    Int_t stationId = rawAtriEvPtr->stationId;
00085 
00086    AraEventCalibrator::Instance()->setAtriPedFile(argv[2],stationId);
00087 
00088 
00089    for(Long64_t event=0;event<numEntries;event++) {
00090      if(event%starEvery==0) {
00091        std::cerr << "*";       
00092      }
00093 
00094      //This line gets the RawIcrr or RawAtri Event
00095      eventTree->GetEntry(event);
00096 
00097 
00098      thisTimeStamp = rawAtriEvPtr->timeStamp;
00099      pps = rawAtriEvPtr->ppsNumber;
00100     
00101      realAtriEvPtr = new UsefulAtriStationEvent(rawAtriEvPtr, AraCalType::kFirstCalib);
00102 
00103      for(chan=0;chan<CHANNELS_PER_ATRI;chan++){
00104        grChan = realAtriEvPtr->getGraphFromElecChan(chan);
00105        maxADC = getMaxY(grChan);
00106        outTree->Fill();
00107        delete grChan;
00108 
00109      }
00110 
00111      delete realAtriEvPtr;
00112      
00113    }
00114    std::cerr << "\n";
00115 
00116    fpOut->Write();
00117 
00118 
00119 }
00120 
00121 
00122 Double_t getMaxX(TGraph *gr){
00123   Int_t size = gr->GetN();
00124   Double_t *xVals = gr->GetX();
00125   Double_t *yVals = gr->GetY();
00126   
00127   Double_t maxX=0;
00128   Double_t maxY=0;
00129   for(int n=0;n<size;n++){
00130     if(TMath::Abs(yVals[n])>TMath::Abs(maxY)){
00131       maxX=xVals[n];
00132       maxY=yVals[n];
00133 
00134     }
00135     
00136 
00137   }
00138   
00139   return maxX;
00140 }
00141 
00142 
00143 Double_t getMaxY(TGraph *gr){
00144   Int_t size = gr->GetN();
00145   Double_t *xVals = gr->GetX();
00146   Double_t *yVals = gr->GetY();
00147   
00148   Double_t maxX=0;
00149   Double_t maxY=0;
00150   for(int n=0;n<size;n++){
00151     if(TMath::Abs(yVals[n])>TMath::Abs(maxY)){
00152       maxX=xVals[n];
00153       maxY=yVals[n];
00154 
00155     }
00156     
00157 
00158   }
00159   
00160   return maxY;
00161 }

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