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
