debugging/thresholds/eventTime_deltaT.cxx
00001 #include <iostream> 00002 #include <iostream> 00003 #include <fstream> 00004 #include <stdlib.h> 00005 00006 #include "RawAtriStationEvent.h" 00007 #include "TTree.h" 00008 #include "TFile.h" 00009 #include "TMath.h" 00010 00011 using namespace std; 00012 00013 UInt_t getCorrectedTime(UInt_t rawTime, UInt_t ppsNumber, bool fudgeOn); 00014 00015 int main(int argc, char **argv) 00016 { 00017 00018 if(argc<3) { 00019 std::cout << "Usage\n" << argv[0] << " <input file> <output file>\n"; 00020 std::cout << "e.g.\n" << argv[0] << " http://www.hep.ucl.ac.uk/uhen/ara/monitor/root/run1841/event1841.root outfile.root\n"; 00021 return 0; 00022 } 00023 00024 TFile *fpOut = new TFile(argv[2], "RECREATE"); 00025 TTree *evTimeTree = new TTree("eventTimeTree", "Tree of event times and times between consecutive events"); 00026 UInt_t timeStampGray=0, lastTimeStampGray=0, eventNumber=0, ppsNumber=0, unixTimeUs=0; 00027 Int_t deltaTimeStampGray=0, dtsgPos=0; 00028 UInt_t correctedTimeStampGray=0, correctedTimeStampGrayFudge=0; 00029 evTimeTree->Branch("timeStampGray", &timeStampGray, "timeStampGray/i"); 00030 evTimeTree->Branch("dtsgPos", &dtsgPos, "dtsgPos/i"); 00031 evTimeTree->Branch("correctedTimeStampGray", &correctedTimeStampGray, "correctedTimeStampGray/i"); 00032 evTimeTree->Branch("correctedTimeStampGrayFudge", &correctedTimeStampGrayFudge, "correctedTimeStampGrayFudge/i"); 00033 evTimeTree->Branch("deltaTimeStampGray", &deltaTimeStampGray, "deltaTimeStampGray/I"); 00034 evTimeTree->Branch("eventNumber", &eventNumber, "eventNumber/i"); 00035 evTimeTree->Branch("ppsNumber", &ppsNumber, "ppsNumber/i"); 00036 evTimeTree->Branch("unixTimeUs", &unixTimeUs, "unixTimeUs/i"); 00037 00038 00039 TFile *fp = TFile::Open(argv[1]); 00040 if(!fp) { 00041 std::cerr << "Can't open file\n"; 00042 return -1; 00043 } 00044 TTree *eventTree = (TTree*) fp->Get("eventTree"); 00045 if(!eventTree) { 00046 std::cerr << "Can't find eventTree\n"; 00047 return -1; 00048 } 00049 00050 00051 RawAtriStationEvent *rawEvPtr=0; 00052 eventTree->SetBranchAddress("event", &rawEvPtr); 00053 00054 Int_t numEntries=eventTree->GetEntries(); 00055 // numEntries=100; //FIXME 00056 00057 Int_t starEvery=numEntries/80; 00058 if(starEvery==0) starEvery++; 00059 00060 for(Int_t event=0;event<numEntries;event++) { 00061 if(event%starEvery==0) { 00062 std::cerr << "*"; 00063 } 00064 00065 eventTree->GetEntry(event); 00066 timeStampGray=rawEvPtr->timeStamp; 00067 eventNumber=rawEvPtr->eventNumber; 00068 ppsNumber=rawEvPtr->ppsNumber; 00069 unixTimeUs=rawEvPtr->unixTimeUs; 00070 00071 deltaTimeStampGray=timeStampGray-lastTimeStampGray; 00072 if(deltaTimeStampGray<0){ 00073 deltaTimeStampGray+=100000000; 00074 dtsgPos=0; 00075 } 00076 else dtsgPos=1; 00077 correctedTimeStampGray = getCorrectedTime(timeStampGray, ppsNumber, false); 00078 correctedTimeStampGrayFudge = getCorrectedTime(timeStampGray, ppsNumber, true); 00079 00080 lastTimeStampGray=timeStampGray; 00081 evTimeTree->Fill(); 00082 00083 00084 }//event 00085 std::cerr << std::endl; 00086 00087 fpOut->Write(); 00088 00089 return 0; 00090 } 00091 00092 00093 UInt_t getCorrectedTime(UInt_t rawTime, UInt_t ppsNumber, bool fudgeOn){ 00094 Long64_t fudge=0; 00095 if(fudgeOn) fudge=1.68e6; 00096 00097 Long64_t correctedTime=0; 00098 correctedTime = (Long64_t)rawTime - ((Long64_t)ppsNumber-14456.6)/(-5.95664e-7); 00099 00100 while(correctedTime<(fudge)) { 00101 correctedTime+=(1e8-fudge);//FUDGE FACTOR 00102 } 00103 while(correctedTime>=(1e8-fudge)) { 00104 correctedTime-=(1e8-fudge);//FUDGE FACTOR 00105 } 00106 00107 return (UInt_t)correctedTime; 00108 00109 }
Generated on Tue Jul 16 16:58:02 2013 for ARA ROOT v3.10 Software by
