ARA ROOT v3.10 Software

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 doxygen 1.4.7