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
