ARA ROOT v3.8 Software

analysis/deltaTPulses.cxx

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

Generated on Mon Jun 3 14:59:45 2013 for ARA ROOT v3.8 Software by doxygen 1.4.7