00001 #include "MessageService/MsgService.h"
00002 #include "TVector3.h"
00003 #include "StandardNtuple/NtpStRecord.h"
00004 #include "MCNtuple/NtpMCRecord.h"
00005 #include "CandNtupleSR/NtpSRRecord.h"
00006 #include "NueAna/NueRecord.h"
00007 #include "NueAna/NueRecordAna.h"
00008
00009 CVSID("$Id: NueRecordAna.cxx,v 1.42 2009/06/26 19:15:00 xbhuang Exp $");
00010
00011 NueRecordAna::NueRecordAna(NueRecord &nr):
00012 sfa(nr.shwfit),
00013 hca(nr.hitcalc),
00014 aca(nr.angcluster),
00015 acf(nr.angclusterfit),
00016 msta(nr.mstvars),
00017 fva(nr.fracvars),
00018 sva(nr.subshowervars),
00019 hhv(nr.highhitvars),
00020 shrva(nr.shieldrejvars),
00021 anna(nr),
00022 anaia(nr.anainfo),
00023 aneia(nr.srevent),
00024 ansia(nr.srshower),
00025 antia(nr.srtrack),
00026 antiba(nr.mctrue),
00027
00028 mda(nr,nr.mdadiscrim),
00029 tpa(nr,nr.treepid),
00030 fiana(nr.fluxinfo),
00031 nuefwa(nr.fluxweights),
00032 nuexsa(nr.xsecweights),
00033 shia(nr.shi),
00034 mria(nr.mri),
00035 cdia(nr.cdi),
00036 tva(nr.timingvars),
00037 bta(nr, nr.dtree),
00038 equala(nr)
00039 {
00040 active3DHits = false;
00041 }
00042
00043 void NueRecordAna::SetEventEnergyArray(float* array, float *ar2)
00044 {
00045 evtstp0mip = array; evtstp1mip = ar2;
00046 sfa.SetEventEnergyArray(array, ar2);
00047 hca.SetEventEnergyArray(array, ar2);
00048 aca.SetEventEnergyArray(array, ar2);
00049 acf.SetEventEnergyArray(array, ar2);
00050 msta.SetEventEnergyArray(array, ar2);
00051 fva.SetEventEnergyArray(array, ar2);
00052 sva.SetEventEnergyArray(array, ar2);
00053 hhv.SetEventEnergyArray(array, ar2);
00054 shrva.SetEventEnergyArray(array, ar2);
00055
00056 anaia.SetEventEnergyArray(array, ar2);
00057 aneia.SetEventEnergyArray(array, ar2);
00058 ansia.SetEventEnergyArray(array, ar2);
00059 antia.SetEventEnergyArray(array, ar2);
00060 antiba.SetEventEnergyArray(array, ar2);
00061
00062
00063 fiana.SetEventEnergyArray(array, ar2);
00064 nuefwa.SetEventEnergyArray(array, ar2);
00065 nuexsa.SetEventEnergyArray(array, ar2);
00066 shia.SetEventEnergyArray(array, ar2);
00067 mria.SetEventEnergyArray(array, ar2);
00068 cdia.SetEventEnergyArray(array, ar2);
00069 tva.SetEventEnergyArray(array, ar2);
00070
00071 }
00072
00073 void NueRecordAna::SetRelease(int rel)
00074 {
00075 release = rel;
00076 sfa.SetRelease(rel);
00077 hca.SetRelease(rel);
00078 aca.SetRelease(rel);
00079 acf.SetRelease(rel);
00080 msta.SetRelease(rel);
00081 fva.SetRelease(rel);
00082 sva.SetRelease(rel);
00083 hhv.SetRelease(rel);
00084 shrva.SetRelease(rel);
00085
00086 anaia.SetRelease(rel);
00087 aneia.SetRelease(rel);
00088 ansia.SetRelease(rel);
00089 antia.SetRelease(rel);
00090 antiba.SetRelease(rel);
00091
00092
00093 fiana.SetRelease(rel);
00094 nuefwa.SetRelease(rel);
00095 nuexsa.SetRelease(rel);
00096 shia.SetRelease(rel);
00097 mria.SetRelease(rel);
00098 cdia.SetRelease(rel);
00099 tva.SetRelease(rel);
00100
00101 equala.SetRelease(rel);
00102 }
00103
00104
00105
00106 NueRecordAna::~NueRecordAna()
00107 {}
00108
00109
00110 void NueRecordAna::Analyze(int evtn, RecRecordImp<RecCandHeader> *srobj)
00111 {
00112
00113 MSG("NueRecordAna",Msg::kDebug)<<"On Snarl "<<srobj->GetHeader().GetSnarl()
00114 <<" event "<<evtn<<endl;
00115
00116 DeqFloat_t x,y,z,e;
00117 Int_t primShow;
00118 DeqDeqInt_t clusterMap;
00119 TVector3 primDir;
00120
00121 sfa.Analyze(evtn,srobj);
00122 MSG("NueRecordAna",Msg::kDebug)<<"done sfa"<<endl;
00123
00124
00125 if(active3DHits){
00126 hca.Analyze(evtn, srobj);
00127 MSG("NueRecordAna",Msg::kDebug)<<"done hca"<<endl;
00128 hca.Get3DHit(x,y,z,e);
00129 aca.Set3DHit(x,y,z,e);
00130 aca.Analyze(evtn,srobj);
00131
00132 MSG("NueRecordAna",Msg::kDebug)<<"done aca"<<endl;
00133
00134 aca.GetAngCluster(primShow,clusterMap,primDir);
00135 acf.Set3DHit(x,y,z,e);
00136 acf.SetAngCluster(primShow,clusterMap,primDir);
00137 acf.Analyze(evtn,srobj);
00138
00139
00140
00141 MSG("NueRecordAna",Msg::kDebug)<<"done acf"<<endl;
00142 }
00143 msta.Analyze(evtn,srobj);
00144 MSG("NueRecordAna",Msg::kDebug)<<"done msta"<<endl;
00145
00146 fva.Analyze(evtn,srobj);
00147 MSG("NueRecordAna",Msg::kDebug)<<"done fva"<<endl;
00148
00149 sva.Analyze(evtn,srobj);
00150 MSG("NueRecordAna",Msg::kDebug)<<"done sva"<<endl;
00151
00152
00153 hhv.Analyze(evtn,srobj);
00154 MSG("NueRecordAna",Msg::kDebug)<<"done hhv"<<endl;
00155
00156
00157 shrva.Analyze(evtn,srobj);
00158 MSG("NueRecordAna",Msg::kDebug)<<"done shrva"<<endl;
00159
00160
00161
00162
00163
00164
00165
00166 MSG("NueRecordAna",Msg::kDebug)<<"done anaia"<<endl;
00167
00168 anna.Analyze();
00169 MSG("NueRecordAna",Msg::kDebug)<<"done anna"<<endl;
00170
00171 mda.Analyze();
00172 MSG("NueRecordAna",Msg::kDebug)<<"done mda"<<endl;
00173
00174 tpa.Analyze();
00175 MSG("NueRecordAna",Msg::kDebug)<<"done tpa"<<endl;
00176
00177 tva.Analyze(evtn,srobj);
00178 MSG("NueRecordAna",Msg::kDebug)<<"done tva"<<endl;
00179
00180 bta.Analyze();
00181 equala.Analyze(evtn,srobj);
00182 return;
00183 }
00184
00185
00186 void NueRecordAna::Analyze(int evtn, NtpMRRecord *mr, NtpStRecord *oldst)
00187 {
00188 MSG("NueRecordAna",Msg::kDebug)<<"On Snarl "<<mr->GetHeader().GetSnarl()
00189 <<" event "<<evtn<<endl;
00190 mria.Analyze(evtn,mr,oldst);
00191 MSG("NueRecordAna",Msg::kDebug)<<"done mri"<<endl;
00192 return;
00193 }
00194
00195 void NueRecordAna::Analyze(UberRecord *ur)
00196 {
00197 MSG("NueRecordAna",Msg::kDebug)<<"Time of current event "
00198 <<ur->GetHeader().GetStartTime()
00199 <<endl;
00200 cdia.Analyze(ur);
00201 MSG("NueRecordAna",Msg::kDebug)<<"done cdi"<<endl;
00202 return;
00203 }
00204
00205 void NueRecordAna::FillTrue(int evtn, NtpSRRecord *srobj, NtpMCRecord *mcobj, NtpTHRecord *thobj)
00206 {
00207 if(mcobj==0){
00208 return;
00209 }
00210
00211 VldContext vc;
00212 if(srobj!=0){
00213 vc=srobj->GetHeader().GetVldContext();
00214 }
00215 else{
00216 vc=mcobj->GetHeader().GetVldContext();
00217 }
00218
00219 if(vc.GetSimFlag()==SimFlag::kData){
00220 return;
00221 }
00222
00223 antiba.Analyze(evtn,srobj,mcobj,thobj);
00224 return;
00225 }
00226
00227 void NueRecordAna::FillTrue(int evtn, NtpStRecord *srobj)
00228 {
00229 if(srobj==0){
00230 return;
00231 }
00232
00233 VldContext vc=srobj->GetHeader().GetVldContext();
00234 if(vc.GetSimFlag()==SimFlag::kData){
00235 return;
00236 }
00237
00238 antiba.Analyze(evtn,srobj);
00239 fiana.Analyze(evtn,srobj);
00240 shia.Analyze(evtn,srobj);
00241 Detector::Detector_t d=vc.GetDetector();
00242 if(d==Detector::kNear){
00243 nuefwa.SetDetector(1);
00244 }
00245 else if(d==Detector::kFar){
00246 nuefwa.SetDetector(2);
00247 }
00248 else{
00249 nuefwa.SetDetector(0);
00250 }
00251 nuefwa.SetFluxInfo(fiana.GetMCFluxInfo());
00252 nuefwa.Analyze(evtn,srobj);
00253 nuexsa.Analyze(evtn,srobj);
00254 return;
00255 }
00256
00257 void NueRecordAna::FillReco(int evtn, RecRecordImp<RecCandHeader> *srobj)
00258 {
00259 if(srobj==0){
00260 return;
00261 }
00262
00263 aneia.Analyze(evtn,srobj);
00264 ansia.Analyze(evtn,srobj);
00265 antia.Analyze(evtn,srobj);
00266 anaia.Analyze(evtn,srobj);
00267
00268 return;
00269 }
00270
00271 void NueRecordAna::SetBeamType(int bType)
00272 {
00273 return SetBeamType((BeamType::BeamType_t) bType);
00274 }
00275
00276 void NueRecordAna::SetBeamType(BeamType::BeamType_t bType)
00277 {
00278 sfa.SetBeamType(bType);
00279 hca.SetBeamType(bType);
00280 aca.SetBeamType(bType);
00281 acf.SetBeamType(bType);
00282 msta.SetBeamType(bType);
00283 fva.SetBeamType(bType);
00284 hhv.SetBeamType(bType);
00285 sva.SetBeamType(bType);
00286 shrva.SetBeamType(bType);
00287
00288 anaia.SetBeamType(bType);
00289 aneia.SetBeamType(bType);
00290 ansia.SetBeamType(bType);
00291 antia.SetBeamType(bType);
00292 antiba.SetBeamType(bType);
00293
00294
00295 fiana.SetBeamType(bType);
00296 nuefwa.SetBeamType(bType);
00297 nuexsa.SetBeamType(bType);
00298 shia.SetBeamType(bType);
00299 mria.SetBeamType(bType);
00300 cdia.SetBeamType(bType);
00301 tva.SetBeamType(bType);
00302
00303 }
00304