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
