ARA ROOT v3.13 Software

utilities/Icrr/makeIcrrEventTreeFromAraSim.cxx

00001 #include <cstdio>
00002 #include <fstream>
00003 #include <iostream>
00004 #include <cstdlib>
00005  
00006 using namespace std;
00007 
00008 #include "TTree.h"
00009 #include "TFile.h"
00010 #include "TSystem.h"
00011 
00012 #define HACK_FOR_ROOT
00013 
00014 #include "araIcrrStructures.h"
00015 #include "UsefulIcrrStationEvent.h"  
00016 
00017 //Stuff from the sim event 
00018 Double_t Volts[NUM_DIGITIZED_ICRR_CHANNELS][MAX_NUMBER_SAMPLES_LAB3];
00019 Double_t Times[NUM_DIGITIZED_ICRR_CHANNELS][MAX_NUMBER_SAMPLES_LAB3];
00020 Int_t NumPoints[NUM_DIGITIZED_ICRR_CHANNELS];
00021 Double_t VoltsRF[RFCHANS_PER_ICRR][2*MAX_NUMBER_SAMPLES_LAB3];
00022 Double_t TimesRF[RFCHANS_PER_ICRR][2*MAX_NUMBER_SAMPLES_LAB3];
00023 Int_t NumPointsRF[RFCHANS_PER_ICRR];
00024 
00025 Int_t NumRFChans;
00026 
00027 TFile *outFp=0;
00028 TTree *outTree=0;
00029 UsefulIcrrStationEvent *outEvPtr=0;
00030 Int_t run;
00031 
00032 int processEvent(Int_t entry, char *outFileName, Int_t stationId);
00033 int processRun(char *simFileName, char *outFileName, Int_t stationId);
00034 int fillEvDataWithZeros();
00035 int fillEvDataFromSim(Int_t eventNum);
00036 
00037 int main(int argc, char **argv) {
00038   if(argc<4) {
00039     fprintf(stderr, "%s -  <simulationFileName> <outFileName> <stationId (Icrr==0 Station1==1)>\n", argv[0]);
00040     return -1;
00041   }
00042 
00043   char simFileName[FILENAME_MAX];
00044   char outFileName[FILENAME_MAX];
00045   Int_t stationId;
00046 
00047   sprintf(simFileName, "%s", argv[1]);
00048   sprintf(outFileName, "%s", argv[2]);
00049   stationId=atoi(argv[3]);
00050 
00051   processRun(simFileName, outFileName, stationId);
00052 
00053   return 0;
00054 }
00055 
00056 int processRun(char *simFileName, char *outFileName, Int_t stationId){
00057 
00058   fprintf(stderr, "simFileName %s\n", simFileName);
00059   fprintf(stderr, "outFileName %s\n", outFileName);
00060 
00061   TFile *simFp = TFile::Open(simFileName);
00062   if(!simFp){
00063     fprintf(stderr, "Error opening file %s\n", simFileName);
00064     return -1;    
00065   }
00066 
00067   TTree *simTree = (TTree*) simFp->Get("eventTree");
00068   if(!simTree){
00069     fprintf(stderr, "Error getting tree\n");
00070     return -1;    
00071   }
00072 
00073   UsefulIcrrStationEvent *simEvPtr=0;
00074   Int_t retVal = simTree->SetBranchAddress("event", &simEvPtr);
00075   
00076   Int_t numEntries = simTree->GetEntries();
00077   Int_t starEvery=numEntries/80;
00078   if(starEvery==0) starEvery=1;
00079   
00080 
00081 
00082 
00083   for(Int_t i=0;i<numEntries;i++){
00084     if(i%starEvery==0) fprintf(stderr, "*");
00085     simTree->GetEntry(i);
00086     
00087     //Zero everything
00088     for(Int_t chan=0;chan<NUM_DIGITIZED_ICRR_CHANNELS;chan++){
00089       for(Int_t samp=0;samp<MAX_NUMBER_SAMPLES_LAB3;samp++){
00090         Volts[chan][samp]=samp;//FIXME
00091         Times[chan][samp]=samp;//FIXME
00092       }
00093       NumPoints[chan]=MAX_NUMBER_SAMPLES_LAB3;//FIXME
00094     }
00095     for(Int_t rfChan=0;rfChan<RFCHANS_PER_ICRR;rfChan++){
00096       for(Int_t samp=0;samp<2*MAX_NUMBER_SAMPLES_LAB3;samp++){
00097         VoltsRF[rfChan][samp]=0;
00098         TimesRF[rfChan][samp]=0;
00099       }
00100       NumPointsRF[rfChan]=0;
00101     }
00102     NumRFChans=0;
00103 
00104 
00105 
00106     //Now fill with the real shit
00107 
00108     // fprintf(stderr, "1 - NumRFChans %i %i\n",NumRFChans, simEvPtr->numRFChans);//FIXME
00109     // fprintf(stderr, "2 - fNumPointsRF %i\n", simEvPtr->fNumPointsRF[0]);//FIXME
00110     NumRFChans=simEvPtr->numRFChans;
00111     for(Int_t rfChan=0;rfChan<NumRFChans;rfChan++){
00112       NumPointsRF[rfChan]=simEvPtr->fNumPointsRF[rfChan];
00113       for(Int_t samp=0;samp<NumPointsRF[rfChan];samp++){
00114         VoltsRF[rfChan][samp]=simEvPtr->fVoltsRF[rfChan][samp];
00115         TimesRF[rfChan][samp]=simEvPtr->fTimesRF[rfChan][samp];
00116       }
00117     }
00118 
00119 
00120     //Now put process the event
00121     processEvent(i, outFileName, stationId);
00122 
00123   }
00124   simTree->SetDirectory(0);
00125 
00126   fprintf(stderr, "\n");
00127   outTree->Write();
00128   outFp->Write();
00129   outFp->Close();
00130 
00131   return 0;
00132 }
00133 
00134 
00135 int processEvent(Int_t entry, char *outFileName, Int_t stationId){
00136   static int doneInit=0;
00137   if(!doneInit) {
00138     fprintf(stderr, "Creating file %s\n", outFileName);
00139     outFp = new TFile(outFileName, "RECREATE");
00140     outTree = new TTree("eventTree", "Tree of ARA Events - Steven Gerrard");
00141     outTree->SetDirectory(outFp);
00142     run=0;
00143     outTree->Branch("run",&run,"run/I");
00144     outTree->Branch("event","UsefulIcrrStationEvent",&outEvPtr);
00145     
00146     doneInit=1;
00147   }  
00148   if(outEvPtr) delete outEvPtr;
00149   outEvPtr = new UsefulIcrrStationEvent();
00150   
00151 
00152   fillEvDataWithZeros();
00153   fillEvDataFromSim(entry);
00154 
00155   outTree->Fill();
00156 
00157   return 0;
00158 }
00159 
00160 
00161 int fillEvDataWithZeros(){
00162 
00163   if(!outEvPtr) return -1;
00164   
00165     for(Int_t chan=0;chan<NUM_DIGITIZED_ICRR_CHANNELS;chan++){
00166       for(Int_t samp=0;samp<MAX_NUMBER_SAMPLES_LAB3;samp++){
00167         outEvPtr->fVolts[chan][samp]=samp;//FIXME
00168         outEvPtr->fTimes[chan][samp]=samp;//FIXME
00169       }
00170       outEvPtr->fNumPoints[chan]=MAX_NUMBER_SAMPLES_LAB3;//FIXME
00171     }
00172     for(Int_t rfChan=0;rfChan<RFCHANS_PER_ICRR;rfChan++){
00173       for(Int_t samp=0;samp<2*MAX_NUMBER_SAMPLES_LAB3;samp++){
00174         outEvPtr->fVoltsRF[rfChan][samp]=0;
00175         outEvPtr->fTimesRF[rfChan][samp]=0;
00176       }
00177       outEvPtr->fNumPointsRF[rfChan]=0;
00178     }
00179     outEvPtr->numRFChans=0;
00180 
00181 
00182     //    for(Int_t chan=0;chan<NUM_DIGITIZED_ICRR_CHANNELS;chan++){
00183     //      outEvPtr->chan[chan]=0;
00184     //    }
00185     //    outEvPtr->whichPeds=0;
00186     //    outEvPtr->head=0;
00187     //    outEvPtr->trig=0;
00188     //    outEvPtr->hk=0;
00189   return 0;
00190 }
00191 
00192 int fillEvDataFromSim(Int_t eventNum){
00193   if(!outEvPtr) return -1;
00194 
00195   outEvPtr->numRFChans=NumRFChans;
00196   for(Int_t rfChan=0;rfChan<NumRFChans;rfChan++){
00197     outEvPtr->fNumPointsRF[rfChan]=NumPointsRF[rfChan];
00198     for(Int_t samp=0;samp<NumPointsRF[rfChan];samp++){
00199       outEvPtr->fVoltsRF[rfChan][samp]=VoltsRF[rfChan][samp];
00200       outEvPtr->fTimesRF[rfChan][samp]=TimesRF[rfChan][samp];
00201     }
00202   }
00203   outEvPtr->head.eventNumber=eventNum;
00204 
00205   // fprintf(stderr, "3 - NumRFChans %i %i\n", NumRFChans, outEvPtr->numRFChans);//FIXME
00206   // fprintf(stderr, "4 - NumPoints %i %i\n", NumPointsRF[0], outEvPtr->fNumPointsRF[0]);//FIXME
00207   
00208   return 0;
00209 }

Generated on Mon Dec 9 13:20:22 2013 for ARA ROOT v3.13 Software by doxygen 1.4.7