Implement this for read only access to the MomNavigator
Reimplemented from JobCModule.
Definition at line 93 of file AtNuTreeModule.cxx.
References begpln, EVD::Clear(), date, digit(), Eel, Ehad, EMfrac, Emu, endpln, Enu, Etarg, fAtNuFile, fAtNuFileName, fAtNuTree, FITbegpln, FITcharge, FITchisq, FITchisqlin, FITcputime, FITendpln, FITlast, FITmomentumCurve, FITmomentumCurveErr, FITpass, FITQPcorr, FITQPerr, FITQPmean, FITQPplns, FITQPwidth, FITvtxpln, fMCStrpList, fShwStrpList, fTotStrpList, fTrkStrpList, CandTrackAtNuHandle::GetAssocTrkPH(), CandTrackAtNuHandle::GetAssocTrkPHfrac(), CandRecoHandle::GetBegPlane(), CandRecord::GetCandHandleIter(), CandRecord::GetCandHeader(), CandFitTrackHandle::GetChi2(), CandFitTrackAtNuHandle::GetChi2Lin(), RecDataRecord< T >::GetComponents(), CandHandle::GetDaughterIterator(), VldContext::GetDetector(), CandShowerAtNuHandle::GetDirCosErrU(), CandShowerAtNuHandle::GetDirCosErrV(), CandRecoHandle::GetDirCosU(), CandRecoHandle::GetDirCosV(), CandRecoHandle::GetDirCosZ(), CandTrackAtNuHandle::GetDirTimeScatter(), CandShowerAtNuHandle::GetDirTimeScore(), CandTrackAtNuHandle::GetDirTimeScore(), CandTrackAtNuHandle::GetDirTimeSlope(), CandShowerAtNuHandle::GetDirVtxShwScore(), CandTrackHandle::GetdS(), CandFitTrackHandle::GetEMCharge(), CandRecoHandle::GetEndDirCosU(), CandRecoHandle::GetEndDirCosV(), CandRecoHandle::GetEndDirCosZ(), CandRecoHandle::GetEndPlane(), CandTrackAtNuHandle::GetEndPlaneDigits(), CandTrackAtNuHandle::GetEndQmax(), CandTrackAtNuHandle::GetEndR(), CandTrackAtNuHandle::GetEndRdigits(), CandTrackAtNuHandle::GetEndRmax(), CandTrackAtNuHandle::GetEndShw(), CandTrackAtNuHandle::GetEndShwReseedFlag(), CandTrackAtNuHandle::GetEndShwStrips(), CandTrackHandle::GetEndTrace(), CandTrackHandle::GetEndTraceZ(), CandRecoHandle::GetEndU(), CandTrackAtNuHandle::GetEndUmean(), CandTrackAtNuHandle::GetEndUwidth(), CandRecoHandle::GetEndV(), CandTrackAtNuHandle::GetEndVmean(), CandTrackAtNuHandle::GetEndVwidth(), CandRecoHandle::GetEndZ(), CandShowerHandle::GetEnergy(), RerootExodus::GetEventNo(), RerootExodus::GetFLSHitList(), MomNavigator::GetFragment(), CandTrackAtNuHandle::GetLinearDirCosU(), CandTrackAtNuHandle::GetLinearDirCosV(), CandTrackAtNuHandle::GetLinearDirCosZ(), CandTrackHandle::GetMomentum(), CandFitTrackHandle::GetMomentumCurve(), CandFitTrackAtNuHandle::GetMomentumCurveErr(), CandFitTrackHandle::GetPass(), CandFitTrackAtNuHandle::GetQPcorr(), CandFitTrackAtNuHandle::GetQPerr(), CandFitTrackAtNuHandle::GetQPmean(), CandFitTrackAtNuHandle::GetQPplns(), CandFitTrackAtNuHandle::GetQPwidth(), CandTrackAtNuHandle::GetRangeThruSteel(), RawRecord::GetRawBlockIter(), RawRecord::GetRawHeader(), CandShowerAtNuHandle::GetReseedFlag(), CandTrackAtNuHandle::GetReseedFlag(), CandHeader::GetRun(), RawSnarlHeaderBlock::GetRun(), RawDaqHeader::GetRun(), RecDataHeader::GetRun(), RerootExodus::GetRunNo(), RawSnarlHeaderBlock::GetRunType(), RawDaqHeader::GetRunType(), RecDataHeader::GetRunType(), UgliGeomHandle::GetScintPlnHandle(), CandTrackAtNuHandle::GetShwPH(), SimSnarlRecord::GetSimSnarlHeader(), CandHeader::GetSnarl(), RawSnarlHeaderBlock::GetSnarl(), RawDaqSnarlHeader::GetSnarl(), RecPhysicsHeader::GetSnarl(), UgliGeomHandle::GetStripHandle(), RawSnarlHeaderBlock::GetSubRun(), RawDaqHeader::GetSubRun(), RecDataHeader::GetSubRun(), CandTrackHandle::GetTimeBackwardFitNDOF(), CandTrackHandle::GetTimeBackwardFitRMS(), CandTrackHandle::GetTimeForwardFitNDOF(), CandTrackHandle::GetTimeForwardFitRMS(), RawSnarlHeaderBlock::GetTimeFrameNum(), RawDaqHeader::GetTimeFrameNum(), CandRecoHandle::GetTimeSlope(), UgliStripHandle::GetTPos(), CandTrackAtNuHandle::GetTrackLikePlanes(), RawSnarlHeaderBlock::GetTriggerSource(), RawSnarlHeaderBlock::GetTriggerTime(), RawDaqSnarlHeader::GetTrigSrc(), CandTrackAtNuHandle::GetTrkPH(), RecMinos::GetVldContext(), RecRecordImp< T >::GetVldContext(), CandRecoHandle::GetVtxPlane(), CandTrackAtNuHandle::GetVtxPlaneDigits(), CandTrackAtNuHandle::GetVtxQmax(), CandTrackAtNuHandle::GetVtxR(), CandTrackAtNuHandle::GetVtxRdigits(), CandTrackAtNuHandle::GetVtxRmax(), CandShowerAtNuHandle::GetVtxShw(), CandTrackAtNuHandle::GetVtxShw(), CandTrackAtNuHandle::GetVtxShwReseedFlag(), CandTrackAtNuHandle::GetVtxShwStrips(), CandTrackHandle::GetVtxTrace(), CandTrackHandle::GetVtxTraceZ(), CandRecoHandle::GetVtxU(), CandTrackAtNuHandle::GetVtxUmean(), CandTrackAtNuHandle::GetVtxUwidth(), CandRecoHandle::GetVtxV(), CandTrackAtNuHandle::GetVtxVmean(), CandTrackAtNuHandle::GetVtxVwidth(), CandRecoHandle::GetVtxZ(), IDact, IDboson, IDnu, IDres, IDtarget, CandTrackHandle::IsTPosValid(), Msg::kDebug, Msg::kInfo, JobCResult::kPassed, CalDigitType::kPE, PlaneView::kU, PlaneView::kV, CandDeMuxDigit::kXTalk, MSG, muendvtxpln, muendvtxR, muendvtxX, muendvtxY, muendvtxZ, mupbeg, mupend, muvtxpln, muvtxR, muvtxX, muvtxY, muvtxZ, Ndigits, Nfits, Nmuplns, Nplns, Nshws, Nstrps, Ntrks, PelX, PelY, PelZ, PhadX, PhadY, PhadZ, PmuX, PmuY, PmuZ, PnuX, PnuY, PnuZ, PtargX, PtargY, PtargZ, Q2, run, runtype, SHWbegpln, SHWcputime, SHWdigits, SHWdir, SHWdirTrk, SHWdirTrue, SHWendpln, SHWenergyNstrps, SHWenergyPH, SHWlast, SHWplns, SHWpshwX, SHWpshwY, SHWpshwZ, SHWreseeded, SHWstrps, SHWtotPH, SHWvtxpln, SHWvtxshw, SHWvtxX, SHWvtxY, SHWvtxZ, SHWwidthU, SHWwidthV, snarl, StrpCell, StrpExtr, subrun, time, timeframe, totPH, trigsrc, trigtimecorr, trigtimeraw, TRKassocPH, TRKassocPHfrac, TRKbegpln, TRKbegplndigits, TRKbegTimeFitNdf, TRKbegTimeFitRms, TRKbegtrace, TRKbegtraceZ, TRKbegvtxQmax, TRKbegvtxR, TRKbegvtxRdigits, TRKbegvtxRmax, TRKbegvtxshw, TRKbegvtxshwreseeded, TRKbegvtxshwstrips, TRKbegvtxUmean, TRKbegvtxUwidth, TRKbegvtxVmean, TRKbegvtxVwidth, TRKbegvtxX, TRKbegvtxY, TRKbegvtxZ, TRKcputime, TRKdigits, TRKdir, TRKdirTimeScatter, TRKdirTimeSlope, TRKdirTrue, TRKendpln, TRKendplndigits, TRKendTimeFitNdf, TRKendTimeFitRms, TRKendtrace, TRKendtraceZ, TRKendvtxQmax, TRKendvtxR, TRKendvtxRdigits, TRKendvtxRmax, TRKendvtxshw, TRKendvtxshwreseeded, TRKendvtxshwstrips, TRKendvtxUmean, TRKendvtxUwidth, TRKendvtxVmean, TRKendvtxVwidth, TRKendvtxX, TRKendvtxY, TRKendvtxZ, TRKlast, TRKmomentumRange, TRKpbegX, TRKpbegY, TRKpbegZ, TRKpendX, TRKpendY, TRKpendZ, TRKplinX, TRKplinY, TRKplinZ, TRKplns, TRKrange, TRKrangeSteel, TRKreseeded, TRKscore, TRKscoreMuEff, TRKscoreMuPur, TRKscorePiEff, TRKscorePiPur, TRKshwPH, TRKstrps, TRKtrkPH, TRKtrkplns, TRKvtxpln, Uplns, Ustrps, Vplns, Vstrps, vtxX, vtxY, vtxZ, W2, x, Xsection, and y.
00094 {
00095
00096 MSG("AtNuTreeModule",Msg::kInfo) << " *** AtNuTreeModule::Ana() *** " << endl;
00097 JobCResult result(JobCResult::kPassed);
00098 Int_t i,j,k;
00099
00100
00101
00102
00103
00104 run = -1;
00105 subrun = -1;
00106 snarl = -1;
00107 runtype = -1;
00108 trigsrc = -1;
00109 date = -1;
00110 time = -1;
00111 timeframe = -1;
00112 trigtimeraw = -999.9;
00113 trigtimecorr = -999.9;
00114
00115 Ndigits = 0;
00116 Nstrps = 0;
00117 Ustrps = 0;
00118 Vstrps = 0;
00119 Nplns = 0;
00120 Uplns = 0;
00121 Vplns = 0;
00122 begpln = -1;
00123 endpln = -1;
00124 Nmuplns = 0;
00125
00126 totPH = 0.0;
00127
00128 IDnu = 0;
00129 IDact = 0;
00130 IDboson = 0;
00131 IDres = 0;
00132 IDtarget = 0;
00133 x = -1.0;
00134 y = -1.0;
00135 Q2 = -1.0;
00136 W2 = -1.0;
00137 Xsection = -1.0;
00138 EMfrac = -1.0;
00139 PnuX = 0.0;
00140 PnuY = 0.0;
00141 PnuZ = 0.0;
00142 Enu = 0.0;
00143 PmuX = 0.0;
00144 PmuY = 0.0;
00145 PmuZ = 0.0;
00146 Emu = 0.0;
00147 PelX = 0.0;
00148 PelY = 0.0;
00149 PelZ = 0.0;
00150 Eel = 0.0;
00151 PhadX = 0.0;
00152 PhadY = 0.0;
00153 PhadZ = 0.0;
00154 Ehad = 0.0;
00155 PtargX = 0.0;
00156 PtargY = 0.0;
00157 PtargZ = 0.0;
00158 Etarg = 0.0;
00159 vtxX = 0.0;
00160 vtxY = 0.0;
00161 vtxZ = 0.0;
00162 muvtxX = 0.0;
00163 muvtxY = 0.0;
00164 muvtxZ = 0.0;
00165 muvtxR = 0.0;
00166 muvtxpln=-1;
00167 muendvtxX = 0.0;
00168 muendvtxY = 0.0;
00169 muendvtxZ = 0.0;
00170 muendvtxR = 0.0;
00171 muendvtxpln=-1;
00172 mupbeg = 0.0;
00173 mupend = 0.0;
00174
00175 Ntrks = 0;
00176 TRKlast = 0;
00177 TRKcputime = 0.0;
00178 for(j=0;j<3;j++){
00179 TRKplns[j] = 0;
00180 TRKstrps[j] = 0;
00181 TRKdigits[j] = 0;
00182 TRKvtxpln[j] = -1;
00183 TRKbegpln[j] = -1;
00184 TRKendpln[j] = -1;
00185 TRKtrkplns[j] = 0;
00186 TRKtrkPH[j] = 0.0;
00187 TRKshwPH[j] = 0.0;
00188 TRKassocPH[j] = 0.0;
00189 TRKassocPHfrac[j] = 0.0;
00190 TRKpbegX[j] = 0.0;
00191 TRKpbegY[j] = 0.0;
00192 TRKpbegZ[j] = 0.0;
00193 TRKpendX[j] = 0.0;
00194 TRKpendY[j] = 0.0;
00195 TRKpendZ[j] = 0.0;
00196 TRKplinX[j] = 0.0;
00197 TRKplinY[j] = 0.0;
00198 TRKplinZ[j] = 0.0;
00199 TRKbegvtxX[j] = 0.0;
00200 TRKbegvtxY[j] = 0.0;
00201 TRKbegvtxZ[j] = 0.0;
00202 TRKbegvtxR[j] = -999.9;
00203 TRKbegvtxRdigits[j] = -999.9;
00204 TRKbegplndigits[j] = -1;
00205 TRKbegtrace[j] = -999.9;
00206 TRKbegtraceZ[j] = 0.0;
00207 TRKbegvtxUwidth[j] = 0.0;
00208 TRKbegvtxUmean[j] = 0.0;
00209 TRKbegvtxVwidth[j] = 0.0;
00210 TRKbegvtxVmean[j] = 0.0;
00211 TRKbegvtxRmax[j] = 0.0;
00212 TRKbegvtxQmax[j] = 0.0;
00213 TRKendvtxX[j] = 0.0;
00214 TRKendvtxY[j] = 0.0;
00215 TRKendvtxZ[j] = 0.0;
00216 TRKendvtxR[j] = -999.9;
00217 TRKendvtxRdigits[j] = -999.9;
00218 TRKendplndigits[j] = -1;
00219 TRKendtrace[j] = -999.9;
00220 TRKendtraceZ[j] = -999.9;
00221 TRKendvtxUwidth[j] = 0.0;
00222 TRKendvtxUmean[j] = 0.0;
00223 TRKendvtxVwidth[j] = 0.0;
00224 TRKendvtxVmean[j] = 0.0;
00225 TRKendvtxRmax[j] = 0.0;
00226 TRKendvtxQmax[j] = 0.0;
00227 TRKdir[j] = 0.0;
00228 TRKdirTrue[j] = 0.0;
00229 TRKdirTimeSlope[j] = 0.0;
00230 TRKdirTimeScatter[j] = 0.0;
00231 TRKbegTimeFitRms[j] = -1.0;
00232 TRKbegTimeFitNdf[j] = 0;
00233 TRKendTimeFitRms[j] = -1.0;
00234 TRKendTimeFitNdf[j] = 0;
00235 TRKbegvtxshw[j] = 0;
00236 TRKbegvtxshwstrips[j] = 0;
00237 TRKbegvtxshwreseeded[j] = -1;
00238 TRKendvtxshw[j] = 0;
00239 TRKendvtxshwstrips[j] = 0;
00240 TRKendvtxshwreseeded[j] = -1;
00241 TRKrange[j] = 0.0;
00242 TRKrangeSteel[j]=0.0;
00243 TRKmomentumRange[j] = 0.0;
00244 TRKscore[j] = -1.0;
00245 TRKscoreMuEff[j] = -1.0;
00246 TRKscoreMuPur[j] = -1.0;
00247 TRKscorePiEff[j] = -1.0;
00248 TRKscorePiPur[j] = -1.0;
00249 TRKreseeded[j] = 0;
00250 }
00251
00252 Nfits = 0;
00253 FITlast = 0;
00254 for(j=0;j<3;j++){
00255 FITcputime[j] = 0.0;
00256 FITvtxpln[j] = -1;
00257 FITbegpln[j] = -1;
00258 FITendpln[j] = -1;
00259 FITcharge[j] = 0.0;
00260 FITchisqlin[j] = -1.0;
00261 FITchisq[j] = -1.0;
00262 FITQPmean[j] = 0.0;
00263 FITQPerr[j] = 0.0;
00264 FITQPcorr[j] = 0.0;
00265 FITQPwidth[j] = 0.0;
00266 FITQPplns[j] = 0;
00267 FITmomentumCurve[j] = 0.0;
00268 FITmomentumCurveErr[j] = 0.0;
00269 FITpass[j] = 0;
00270 }
00271
00272 Nshws = 0;
00273 SHWlast = 0;
00274 SHWcputime = 0.0;
00275 for(j=0;j<3;j++){
00276 SHWplns[j] = 0;
00277 SHWstrps[j] = 0;
00278 SHWdigits[j] = 0;
00279 SHWvtxpln[j] = -1;
00280 SHWbegpln[j] = -1;
00281 SHWendpln[j] = -1;
00282 SHWtotPH[j] = 0.0;
00283 SHWpshwX[j] = 0.0;
00284 SHWpshwY[j] = 0.0;
00285 SHWpshwZ[j] = 0.0;
00286 SHWwidthU[j] = 0.0;
00287 SHWwidthV[j] = 0.0;
00288 SHWvtxX[j] = 0.0;
00289 SHWvtxY[j] = 0.0;
00290 SHWvtxZ[j] = 0.0;
00291 SHWdir[j] = 0.0;
00292 SHWdirTrue[j] = 0.0;
00293 SHWvtxshw[j] = -1;
00294 SHWdirTrk[j] = 0.0;
00295 SHWenergyPH[j] = 0.0;
00296 SHWenergyNstrps[j] = 0.0;
00297 SHWreseeded[j] = 0;
00298 }
00299
00300
00301
00302
00303
00304
00305 MSG("AtNuTreeModule",Msg::kDebug) << " *** SIMSNARL RECORD *** " << endl;
00306
00307 SimSnarlRecord* simrec = dynamic_cast<SimSnarlRecord *>(mom->GetFragment("SimSnarlRecord"));
00308 if(simrec){
00309
00310 VldContext *vldc = (VldContext*)(simrec->GetVldContext());
00311 UgliGeomHandle ugh(*vldc);
00312
00313 if(run<0) run=RerootExodus::GetRunNo();
00314 if(snarl<0) snarl=RerootExodus::GetEventNo();
00315
00316 const SimSnarlHeader* hdr = dynamic_cast<const SimSnarlHeader*>(simrec->GetSimSnarlHeader());
00317 if(hdr){
00318 if(run<0) run = hdr->GetRun();
00319 if(subrun<0) subrun = hdr->GetSubRun();
00320 if(snarl<0) snarl = hdr->GetSnarl();
00321 if(runtype<0) runtype = hdr->GetRunType();
00322 }
00323
00324 TObjArray arr(simrec->GetComponents());
00325 TIter iter(arr.MakeIterator());
00326 while(TObject* tob = (TObject*)(iter())){
00327 MSG("AtNuTreeModule",Msg::kDebug) << tob->GetName() << endl;
00328
00329 if(tob->GetName()==TString("REROOT_NeuKin")){
00330 REROOT_NeuKin* nukin = dynamic_cast<REROOT_NeuKin*>(tob);
00331 MSG("AtNuTreeModule",Msg::kDebug) << " ... found REROOT_NeuKin " << endl;
00332 IDnu = nukin->INu();
00333 IDact = nukin->IAction();
00334 IDtarget = nukin->ITg();
00335 IDboson = nukin->IBoson();
00336 IDres = nukin->IResonance();
00337 Xsection = nukin->Sigma();
00338 EMfrac = nukin->EMFrac();
00339 W2 = nukin->W2();
00340 Q2 = nukin->Q2();
00341 x = nukin->X();
00342 y = nukin->Y();
00343 PnuX = nukin->P4Neu()[0];
00344 PnuY = nukin->P4Neu()[1];
00345 PnuZ = nukin->P4Neu()[2];
00346 Enu = nukin->P4Neu()[3];
00347 PmuX = nukin->P4Mu1()[0];
00348 PmuY = nukin->P4Mu1()[1];
00349 PmuZ = nukin->P4Mu1()[2];
00350 Emu = nukin->P4Mu1()[3];
00351 PelX = nukin->P4El1()[0];
00352 PelY = nukin->P4El1()[1];
00353 PelZ = nukin->P4El1()[2];
00354 Eel = nukin->P4El1()[3];
00355 PhadX = nukin->P4Shw()[0];
00356 PhadY = nukin->P4Shw()[1];
00357 PhadZ = nukin->P4Shw()[2];
00358 Ehad = nukin->P4Shw()[3];
00359 PtargX = nukin->P4Tgt()[0];
00360 PtargY = nukin->P4Tgt()[1];
00361 PtargZ = nukin->P4Tgt()[2];
00362 Etarg = nukin->P4Tgt()[3];
00363 }
00364
00365 if(tob->GetName()==TString("StdHep")){
00366 TClonesArray* tpart = (TClonesArray*)(tob);
00367 MSG("AtNuTreeModule",Msg::kDebug) << " found StdHep " << endl;
00368 TParticle* apart = dynamic_cast<TParticle*>(tpart->At(0));
00369 vtxX=apart->Vx(); vtxY=apart->Vy(); vtxZ=apart->Vz();
00370 }
00371 }
00372
00373 MSG("AtNuTreeModule",Msg::kDebug) << " *** FLSHIT LIST *** " << endl;
00374 Int_t packedPEC,trueplane,trueext,truecell,truestrip,trueview=0,ipdg,itrack;
00375 Int_t itrkneg=-999,itrkpos=999;
00376 const TClonesArray* FLShits = (TClonesArray*)(RerootExodus::GetFLSHitList());
00377 for(i=0;i<1+FLShits->GetLast();i++){
00378 REROOT_FLSHit* FLS_hit = (REROOT_FLSHit*)FLShits->At(i);
00379 packedPEC=FLS_hit->IPackedPEC();
00380 trueplane=(Int_t)(packedPEC/65536.0);
00381 fMCStrpList[trueplane].Add(FLS_hit);
00382 if(FLS_hit->ITrack()>0 && FLS_hit->ITrack()<itrkpos) itrkpos=FLS_hit->ITrack();
00383 if(FLS_hit->ITrack()<0 && FLS_hit->ITrack()>itrkneg) itrkneg=FLS_hit->ITrack();
00384 }
00385
00386 Double_t ptot,eloss;
00387 Double_t tpos=0., opos=0., xpos=0., ypos=0., upos=0., vpos=0., zpos,rpos;
00388 Double_t um,up,vm,vp,xm,xp,ym,yp;
00389 Double_t minmuvtxX=0.,minmuvtxY=0.,minmuvtxZ=0.,minmuvtxR=0.,minptot=-1.0;
00390 Double_t maxmuvtxX=0.,maxmuvtxY=0.,maxmuvtxZ=0.,maxmuvtxR=0.,maxptot=-1.0;
00391 Int_t minmuvtxpln=0,maxmuvtxpln=0;
00392 for(i=0;i<500;i++){
00393 for(j=0;j<1+fMCStrpList[i].GetLast();j++){
00394 REROOT_FLSHit* FLS_hit = (REROOT_FLSHit*)(fMCStrpList[i].At(j));
00395 ipdg = FLS_hit->IPDG();
00396 itrack = FLS_hit->ITrack();
00397 ptot = FLS_hit->Ptot();
00398 eloss = FLS_hit->ELoss();
00399 if(ptot<0) ptot=-ptot;
00400
00401 packedPEC=FLS_hit->IPackedPEC();
00402 trueplane=(Int_t)(packedPEC/65536.0);
00403 trueext=(Int_t)((packedPEC-trueplane*65536)/256.0);
00404 truecell=packedPEC-trueplane*65536-trueext*256;
00405 truestrip=StrpExtr[trueext-1]+StrpCell[truecell-1];
00406
00407 PlexPlaneId trueplnid(vldc->GetDetector(),trueplane,0);
00408 UgliScintPlnHandle trueplnhandle = ugh.GetScintPlnHandle(trueplnid);
00409 if(trueplnhandle.GetPlaneView()==PlaneView::kU) trueview = 0;
00410 if(trueplnhandle.GetPlaneView()==PlaneView::kV) trueview = 1;
00411 PlexStripEndId truestrpid(trueplnid,truestrip);
00412 UgliStripHandle truestrphandle = ugh.GetStripHandle(truestrpid);
00413 opos=0.005*(FLS_hit->XBegin()+FLS_hit->XEnd());
00414 tpos=truestrphandle.GetTPos();
00415 if(trueview==0){ upos=tpos; vpos=-opos; }
00416 if(trueview==1){ vpos=tpos; upos=opos; }
00417 xpos=0.7071*(upos-vpos); ypos=0.7071*(upos+vpos);
00418 zpos=trueplnhandle.GetZ0();
00419
00420 rpos=4.0;
00421 up=4.0-upos; if(up<rpos) rpos=up;
00422 um=4.0+upos; if(um<rpos) rpos=um;
00423 vp=4.0-vpos; if(vp<rpos) rpos=vp;
00424 vm=4.0+vpos; if(vm<rpos) rpos=vm;
00425 xp=4.0-xpos; if(xp<rpos) rpos=xp;
00426 xm=4.0+xpos; if(xm<rpos) rpos=xm;
00427 yp=4.0-ypos; if(yp<rpos) rpos=yp;
00428 ym=4.0+ypos; if(ym<rpos) rpos=ym;
00429
00430 if( (IDnu==0&&(ipdg==13||ipdg==-13))
00431 || (IDnu==14&&ipdg==13)
00432 || (IDnu==-14&&ipdg==-13) ){
00433 if(minptot<0||ptot<minptot){
00434 minmuvtxX=xpos; minmuvtxY=ypos; minmuvtxZ=zpos;
00435 minmuvtxR=rpos; minmuvtxpln=trueplane; minptot=ptot;
00436 }
00437 if(maxptot<0||ptot>maxptot){
00438 maxmuvtxX=xpos; maxmuvtxY=ypos; maxmuvtxZ=zpos;
00439 maxmuvtxR=rpos; maxmuvtxpln=trueplane; maxptot=ptot;
00440 }
00441 }
00442
00443 }
00444 }
00445
00446 if(minptot>=0.0 && maxptot>=0.0){
00447 muvtxX = maxmuvtxX;
00448 muvtxY = maxmuvtxY;
00449 muvtxZ = maxmuvtxZ;
00450 muvtxR = maxmuvtxR;
00451 muvtxpln = maxmuvtxpln;
00452 muendvtxX = minmuvtxX;
00453 muendvtxY = minmuvtxY;
00454 muendvtxZ = minmuvtxZ;
00455 muendvtxR = minmuvtxR;
00456 muendvtxpln = minmuvtxpln;
00457 mupbeg = maxptot;
00458 mupend = minptot;
00459 }
00460 }
00461
00462 MSG("AtNuTreeModule",Msg::kDebug) << " *** END OF SIMRECORD *** " << endl;
00463
00464
00465
00466
00467
00468
00469 MSG("AtNuTreeModule",Msg::kDebug) << " *** RAW RECORD *** " << endl;
00470
00471 RawRecord *rawrec = dynamic_cast<RawRecord *>(mom->GetFragment("RawRecord"));
00472 if(rawrec){
00473
00474 Double_t timestamp;
00475 const RawDaqSnarlHeader* hdr = dynamic_cast<const RawDaqSnarlHeader*>(rawrec->GetRawHeader());
00476 if(hdr){
00477 if(run<0) run = hdr->GetRun();
00478 if(subrun<0) subrun = hdr->GetSubRun();
00479 if(snarl<0) snarl = hdr->GetSnarl();
00480 if(runtype<0) runtype = hdr->GetRunType();
00481 if(trigsrc<0) trigsrc = hdr->GetTrigSrc();
00482 if(timeframe<0) timeframe = hdr->GetTimeFrameNum();
00483 }
00484
00485 TIter rdbit(rawrec->GetRawBlockIter());
00486 while(TObject* tob = (TObject*)(rdbit())){
00487 MSG("AtNuTreeModule",Msg::kDebug) << tob->GetName() << endl;
00488
00489 if(tob->InheritsFrom("RawSnarlHeaderBlock")){
00490 MSG("AtNuTreeModule",Msg::kDebug) << " ... found RawSnarlHeaderBlock " << endl;
00491 RawSnarlHeaderBlock* rdb = (RawSnarlHeaderBlock*)(tob);
00492 if(run<0) run = rdb->GetRun();
00493 if(subrun<0) subrun = rdb->GetSubRun();
00494 if(snarl<0) snarl = rdb->GetSnarl();
00495 if(runtype<0) runtype = rdb->GetRunType();
00496 if(trigsrc<0) trigsrc = rdb->GetTriggerSource();
00497 if(timeframe<0) timeframe = rdb->GetTimeFrameNum();
00498 timestamp = ((VldTimeStamp)(rdb->GetTriggerTime())).GetNanoSec();
00499 date = (((VldTimeStamp)(rdb->GetTriggerTime())).GetSec()-1059696000)/(3600*24);
00500 time = (((VldTimeStamp)(rdb->GetTriggerTime())).GetSec()-1059696000)%(3600*24);
00501 if(trigtimeraw<0.0) trigtimeraw=0.001*timestamp;
00502 }
00503 }
00504 }
00505
00506 MSG("AtNuTreeModule",Msg::kDebug) << " *** END OF RAWRECORD *** " << endl;
00507
00508
00509
00510
00511
00512
00513 MSG("AtNuTreeModule",Msg::kDebug) << " *** CANDRECORD *** " << endl;
00514
00515 CandRecord* candrec = dynamic_cast<CandRecord*>(mom->GetFragment("CandRecord","PrimaryCandidateRecord"));
00516 if(candrec){
00517
00518 const CandHeader* hdr = candrec->GetCandHeader();
00519 if(hdr){
00520 if(run<0) run = hdr->GetRun();
00521 if(snarl<0) snarl = hdr->GetSnarl();
00522 }
00523
00524 VldContext *vldc = (VldContext*)(candrec->GetVldContext());
00525 UgliGeomHandle ugh(*vldc);
00526
00527 Int_t SHW=0,TRK=0,FIT=0;
00528 TIter candbit(candrec->GetCandHandleIter());
00529 while(TObject* tob = (TObject*)(candbit())){
00530 MSG("AtNuTreeModule",Msg::kDebug) << tob->GetName() << endl;
00531
00532
00533 if(tob->InheritsFrom("CandDeMuxDigitListHandle")){
00534 CandDeMuxDigitListHandle* digitlist = (CandDeMuxDigitListHandle*)(tob);
00535 MSG("AtNuTreeModule",Msg::kDebug) << " ... found CandDeMuxDigitListHandle " << endl;
00536
00537 Int_t pln,xtalk;
00538 if(trigtimecorr<0.0) trigtimecorr=1.0e6*digitlist->GetAbsTime();
00539 TIter digitr(digitlist->GetDaughterIterator());
00540 while(CandDeMuxDigitHandle* digit = (CandDeMuxDigitHandle*)(digitr())){
00541 xtalk=0;
00542 if( (digit->GetDeMuxDigitFlagWord()<8)
00543 && (digit->GetDeMuxDigitFlagWord() & CandDeMuxDigit::kXTalk)==(CandDeMuxDigit::kXTalk) ){
00544 xtalk=1;
00545 }
00546 pln=digit->GetPlexSEIdAltL().GetBestSEId().GetPlane();
00547 if( pln>0 && pln<500 ){
00548 totPH+=digit->GetCharge(CalDigitType::kPE);
00549 }
00550 }
00551 }
00552
00553
00554 if(tob->InheritsFrom("CandStripListHandle")){
00555 CandStripListHandle* strplist = (CandStripListHandle*)(tob);
00556 MSG("AtNuTreeModule",Msg::kDebug) << " ... found CandStripListHandle " << endl;
00557
00558 Int_t pln,vuw;
00559 TIter stritr(strplist->GetDaughterIterator());
00560 while(CandStripHandle* strip = dynamic_cast<CandStripHandle*>(stritr())){
00561 if(strip){
00562 pln=strip->GetPlane();
00563 if( pln>0 && pln<500 && strip->GetCharge()>2.0){
00564 if(begpln<0||pln<begpln) begpln=pln;
00565 if(endpln<0||pln>endpln) endpln=pln;
00566 fTotStrpList[pln].Add(strip);
00567 }
00568 }
00569 }
00570 for(i=0;i<500;i++){
00571 if(1+fTotStrpList[i].GetLast()>0){
00572 vuw=-1;
00573 for(j=0;j<1+fTotStrpList[i].GetLast();j++){
00574 CandStripHandle* strip = (CandStripHandle*)(fTotStrpList[i].At(j));
00575
00576 if(strip->GetPlaneView()==PlaneView::kU){
00577 vuw=0; Ustrps++; Ndigits+=strip->GetNDaughters();
00578 }
00579 if(strip->GetPlaneView()==PlaneView::kV){
00580 vuw=1; Vstrps++; Ndigits+=strip->GetNDaughters();
00581 }
00582 }
00583 if(vuw==0) Uplns++; if(vuw==1) Vplns++;
00584 }
00585 }
00586 Nplns=Uplns+Vplns; Nstrps=Ustrps+Vstrps;
00587 }
00588
00589 Int_t ipdg,muflag=0;
00590 if(simrec){
00591 for(i=0;i<500;i++){
00592 if(1+fMCStrpList[i].GetLast()>0 && 1+fTotStrpList[i].GetLast()>0){
00593 for(j=0;j<1+fMCStrpList[i].GetLast();j++){
00594 REROOT_FLSHit* FLS_hit = (REROOT_FLSHit*)(fMCStrpList[i].At(j));
00595 ipdg = FLS_hit->IPDG();
00596 if( (IDnu==0&&(ipdg==13||ipdg==-13))
00597 ||(IDnu==14&&ipdg==13)||(IDnu==-14&&ipdg==-13) ){
00598 muflag=1;
00599 }
00600 }
00601 if(muflag) Nmuplns++;
00602 }
00603 }
00604 }
00605
00606
00607 if(tob->InheritsFrom("CandTrackAtNuListHandle")&&!TRK){
00608 CandTrackAtNuListHandle* trklist = (CandTrackAtNuListHandle*)(tob);
00609 MSG("AtNuTreeModule",Msg::kDebug) << " ... found CandTrackAtNuListHandle " << endl;
00610 TRK=1;
00611
00612 Int_t pln,flag;
00613 Double_t dir,scr,maxscr,tmpscr;
00614
00615 TRKcputime=trklist->GetCPUTime();
00616 Ntrks=0; TRKlast=0;
00617 CandTrackAtNuHandle* trk=0;
00618 flag=1; maxscr=9999;
00619 while(trk||flag){
00620 trk=0;
00621 flag=0; tmpscr=0;
00622 TIter trkitr(trklist->GetDaughterIterator());
00623 while(CandTrackAtNuHandle* trackhandle = dynamic_cast<CandTrackAtNuHandle*>(trkitr())){
00624 if(trackhandle){
00625 if(trackhandle->GetEndPlane()>trackhandle->GetBegPlane()) scr=trackhandle->GetEndPlane()-trackhandle->GetBegPlane(); else scr=trackhandle->GetBegPlane()-trackhandle->GetEndPlane();
00626 if(scr>0&&scr<maxscr&&scr>tmpscr){
00627 tmpscr=scr; trk=trackhandle;
00628 }
00629 }
00630 }
00631 if(trk){
00632 Ntrks++; maxscr=tmpscr;
00633 if(TRKlast<3){
00634 MSG("AtNuTreeModule",Msg::kDebug) << " track: " << TRKlast << endl;
00635 dir=3.0e8*trk->GetTimeSlope();
00636
00637 TRKtrkPH[TRKlast]=trk->GetTrkPH();
00638 TRKshwPH[TRKlast]=trk->GetShwPH();
00639 TRKassocPH[TRKlast]=trk->GetAssocTrkPH();
00640 TRKassocPHfrac[TRKlast]=trk->GetAssocTrkPHfrac();
00641 TRKvtxpln[TRKlast]=trk->GetVtxPlane();
00642 TRKtrkplns[TRKlast]=trk->GetTrackLikePlanes();
00643 TRKdir[TRKlast]=trk->GetDirTimeScore();
00644 TRKdirTimeSlope[TRKlast]=trk->GetDirTimeSlope();
00645 TRKdirTimeScatter[TRKlast]=trk->GetDirTimeScatter();
00646 TRKrangeSteel[TRKlast]=trk->GetRangeThruSteel();
00647 TRKmomentumRange[TRKlast]=trk->GetMomentum();
00648 TRKreseeded[TRKlast]=trk->GetReseedFlag();
00649
00650 if(dir>=0){
00651 TRKbegpln[TRKlast]=trk->GetBegPlane();
00652 TRKbegvtxX[TRKlast]=0.7071*(trk->GetVtxU()-trk->GetVtxV());
00653 TRKbegvtxY[TRKlast]=0.7071*(trk->GetVtxU()+trk->GetVtxV());
00654 TRKbegvtxZ[TRKlast]=trk->GetVtxZ();
00655 TRKpbegX[TRKlast]=0.7071*(trk->GetDirCosU()-trk->GetDirCosV());
00656 TRKpbegY[TRKlast]=0.7071*(trk->GetDirCosU()+trk->GetDirCosV());
00657 TRKpbegZ[TRKlast]=trk->GetDirCosZ();
00658 TRKbegvtxR[TRKlast]=trk->GetVtxR();
00659 TRKbegvtxRdigits[TRKlast]=trk->GetVtxRdigits();
00660 TRKbegplndigits[TRKlast]=trk->GetVtxPlaneDigits();
00661 TRKbegtrace[TRKlast]=trk->GetVtxTrace();
00662 TRKbegtraceZ[TRKlast]=trk->GetVtxTraceZ();
00663 TRKbegvtxUwidth[TRKlast]=trk->GetVtxUwidth();
00664 TRKbegvtxUmean[TRKlast]=trk->GetVtxUmean();
00665 TRKbegvtxVwidth[TRKlast]=trk->GetVtxVwidth();
00666 TRKbegvtxVmean[TRKlast]=trk->GetVtxVmean();
00667 TRKbegvtxRmax[TRKlast]=trk->GetVtxRmax();
00668 TRKbegvtxQmax[TRKlast]=trk->GetVtxQmax();
00669 TRKendpln[TRKlast]=trk->GetEndPlane();
00670 TRKendvtxX[TRKlast]=0.7071*(trk->GetEndU()-trk->GetEndV());
00671 TRKendvtxY[TRKlast]=0.7071*(trk->GetEndU()+trk->GetEndV());
00672 TRKendvtxZ[TRKlast]=trk->GetEndZ();
00673 TRKpendX[TRKlast]=0.7071*(trk->GetEndDirCosU()-trk->GetEndDirCosV());
00674 TRKpendY[TRKlast]=0.7071*(trk->GetEndDirCosU()+trk->GetEndDirCosV());
00675 TRKpendZ[TRKlast]=trk->GetEndDirCosZ();
00676 TRKendvtxR[TRKlast]=trk->GetEndR();
00677 TRKendvtxRdigits[TRKlast]=trk->GetEndRdigits();
00678 TRKendplndigits[TRKlast]=trk->GetEndPlaneDigits();
00679 TRKendtrace[TRKlast]=trk->GetEndTrace();
00680 TRKendtraceZ[TRKlast]=trk->GetEndTraceZ();
00681 TRKendvtxUwidth[TRKlast]=trk->GetEndUwidth();
00682 TRKendvtxUmean[TRKlast]=trk->GetEndUmean();
00683 TRKendvtxVwidth[TRKlast]=trk->GetEndVwidth();
00684 TRKendvtxVmean[TRKlast]=trk->GetEndVmean();
00685 TRKendvtxRmax[TRKlast]=trk->GetEndRmax();
00686 TRKendvtxQmax[TRKlast]=trk->GetEndQmax();
00687 TRKplinX[TRKlast]=0.7071*(trk->GetLinearDirCosU()-trk->GetLinearDirCosV());
00688 TRKplinY[TRKlast]=0.7071*(trk->GetLinearDirCosU()+trk->GetLinearDirCosV());
00689 TRKplinZ[TRKlast]=trk->GetLinearDirCosZ();
00690 TRKbegTimeFitRms[TRKlast]=trk->GetTimeForwardFitRMS();
00691 TRKbegTimeFitNdf[TRKlast]=trk->GetTimeForwardFitNDOF();
00692 TRKendTimeFitRms[TRKlast]=trk->GetTimeBackwardFitRMS();
00693 TRKendTimeFitNdf[TRKlast]=trk->GetTimeBackwardFitNDOF();
00694 TRKbegvtxshw[TRKlast]=trk->GetVtxShw();
00695 TRKbegvtxshwstrips[TRKlast]=trk->GetVtxShwStrips();
00696 TRKbegvtxshwreseeded[TRKlast]=trk->GetVtxShwReseedFlag();
00697 TRKendvtxshw[TRKlast]=trk->GetEndShw();
00698 TRKendvtxshwstrips[TRKlast]=trk->GetEndShwStrips();
00699 TRKendvtxshwreseeded[TRKlast]=trk->GetEndShwReseedFlag();
00700 }
00701 else{
00702 TRKbegpln[TRKlast]=trk->GetEndPlane();
00703 TRKbegvtxX[TRKlast]=0.7071*(trk->GetEndU()-trk->GetEndV());
00704 TRKbegvtxY[TRKlast]=0.7071*(trk->GetEndU()+trk->GetEndV());
00705 TRKbegvtxZ[TRKlast]=trk->GetEndZ();
00706 TRKpbegX[TRKlast]=-0.7071*(trk->GetEndDirCosU()-trk->GetEndDirCosV());
00707 TRKpbegY[TRKlast]=-0.7071*(trk->GetEndDirCosU()+trk->GetEndDirCosV());
00708 TRKpbegZ[TRKlast]=-trk->GetEndDirCosZ();
00709 TRKbegvtxR[TRKlast]=trk->GetEndR();
00710 TRKbegvtxRdigits[TRKlast]=trk->GetEndRdigits();
00711 TRKbegplndigits[TRKlast]=trk->GetEndPlaneDigits();
00712 TRKbegtrace[TRKlast]=trk->GetEndTrace();
00713 TRKbegtraceZ[TRKlast]=trk->GetEndTraceZ();
00714 TRKbegvtxUwidth[TRKlast]=trk->GetEndUwidth();
00715 TRKbegvtxUmean[TRKlast]=trk->GetEndUmean();
00716 TRKbegvtxVwidth[TRKlast]=trk->GetEndVwidth();
00717 TRKbegvtxVmean[TRKlast]=trk->GetEndVmean();
00718 TRKbegvtxRmax[TRKlast]=trk->GetEndRmax();
00719 TRKbegvtxQmax[TRKlast]=trk->GetEndQmax();
00720 TRKendpln[TRKlast]=trk->GetBegPlane();
00721 TRKendvtxX[TRKlast]=0.7071*(trk->GetVtxU()-trk->GetVtxV());
00722 TRKendvtxY[TRKlast]=0.7071*(trk->GetVtxU()+trk->GetVtxV());
00723 TRKendvtxZ[TRKlast]=trk->GetVtxZ();
00724 TRKpendX[TRKlast]=-0.7071*(trk->GetDirCosU()-trk->GetDirCosV());
00725 TRKpendY[TRKlast]=-0.7071*(trk->GetDirCosU()+trk->GetDirCosV());
00726 TRKpendZ[TRKlast]=-trk->GetDirCosZ();
00727 TRKendvtxR[TRKlast]=trk->GetVtxR();
00728 TRKendvtxRdigits[TRKlast]=trk->GetVtxRdigits();
00729 TRKendplndigits[TRKlast]=trk->GetVtxPlaneDigits();
00730 TRKendtrace[TRKlast]=trk->GetVtxTrace();
00731 TRKendtraceZ[TRKlast]=trk->GetVtxTraceZ();
00732 TRKendvtxUwidth[TRKlast]=trk->GetVtxUwidth();
00733 TRKendvtxUmean[TRKlast]=trk->GetVtxUmean();
00734 TRKendvtxVwidth[TRKlast]=trk->GetVtxVwidth();
00735 TRKendvtxVmean[TRKlast]=trk->GetVtxVmean();
00736 TRKendvtxRmax[TRKlast]=trk->GetVtxRmax();
00737 TRKendvtxQmax[TRKlast]=trk->GetVtxQmax();
00738 TRKplinX[TRKlast]=-0.7071*(trk->GetLinearDirCosU()-trk->GetLinearDirCosV());
00739 TRKplinY[TRKlast]=-0.7071*(trk->GetLinearDirCosU()+trk->GetLinearDirCosV());
00740 TRKplinZ[TRKlast]=-trk->GetLinearDirCosZ();
00741 TRKbegTimeFitRms[TRKlast]=trk->GetTimeForwardFitRMS();
00742 TRKbegTimeFitNdf[TRKlast]=trk->GetTimeForwardFitNDOF();
00743 TRKendTimeFitRms[TRKlast]=trk->GetTimeBackwardFitRMS();
00744 TRKendTimeFitNdf[TRKlast]=trk->GetTimeBackwardFitNDOF();
00745 TRKbegvtxshw[TRKlast]=trk->GetEndShw();
00746 TRKbegvtxshwstrips[TRKlast]=trk->GetEndShwStrips();
00747 TRKbegvtxshwreseeded[TRKlast]=trk->GetEndShwReseedFlag();
00748 TRKendvtxshw[TRKlast]=trk->GetVtxShw();
00749 TRKendvtxshwstrips[TRKlast]=trk->GetVtxShwStrips();
00750 TRKendvtxshwreseeded[TRKlast]=trk->GetVtxShwReseedFlag();
00751 }
00752
00753 TIter stritr(trk->GetDaughterIterator());
00754 while(CandStripHandle* strp = dynamic_cast<CandStripHandle*>(stritr())){
00755 if(strp){
00756 pln=strp->GetPlane();
00757 if(pln>0 && pln<500){
00758 fTrkStrpList[pln].Add(strp);
00759 }
00760 }
00761 }
00762
00763 Double_t range=0.0,ds=0.0;
00764 for(i=0;i<500;i++){
00765 if(1+fTrkStrpList[i].GetLast()>0){
00766 if(trk->IsTPosValid(i)){
00767 ds=trk->GetdS(i);
00768 if(ds>range) range=ds;
00769 }
00770 TRKplns[TRKlast]++;
00771 for(j=0;j<1+fTrkStrpList[i].GetLast();j++){
00772 CandStripHandle* strip = (CandStripHandle*)(fTrkStrpList[i].At(j));
00773 TRKstrps[TRKlast]++; TRKdigits[TRKlast]+=strip->GetNDaughters();
00774 }
00775 }
00776 }
00777 TRKrange[TRKlast]=range;
00778
00779 if(simrec){
00780 Int_t muflag,muflagtrk,piflag,piflagtrk;
00781 Int_t trueview,packedPEC,trueplane,truecell,trueext,truestrip,ipdg;
00782 Double_t trk_pln=0,trk_mu=0.0,trk_pi=0.0,notrk_mu=0.0,notrk_pi=0.0;
00783 for(i=0;i<500;i++){
00784 if(1+fMCStrpList[i].GetLast()>0 && 1+fTotStrpList[i].GetLast()>0){
00785 muflag=0; muflagtrk=0; piflag=0; piflagtrk=0;
00786 for(j=0;j<1+fMCStrpList[i].GetLast();j++){
00787 REROOT_FLSHit* FLS_hit = (REROOT_FLSHit*)(fMCStrpList[i].At(j));
00788 packedPEC=FLS_hit->IPackedPEC();
00789 trueplane=(Int_t)(packedPEC/65536.0);
00790 trueext=(Int_t)((packedPEC-trueplane*65536)/256.0);
00791 truecell=packedPEC-trueplane*65536-trueext*256;
00792 truestrip=StrpExtr[trueext-1]+StrpCell[truecell-1];
00793 ipdg = FLS_hit->IPDG();
00794 PlexPlaneId trueplnid(vldc->GetDetector(),trueplane,0);
00795 UgliScintPlnHandle trueplnhandle = ugh.GetScintPlnHandle(trueplnid);
00796 if(trueplnhandle.GetPlaneView()==PlaneView::kU) trueview = 0;
00797 if(trueplnhandle.GetPlaneView()==PlaneView::kV) trueview = 1;
00798 if( (IDnu==0&&(ipdg==13||ipdg==-13))
00799 ||(IDnu==14&&ipdg==13)||(IDnu==-14&&ipdg==-13) ){
00800 muflag=1;
00801 for(k=0;k<1+fTrkStrpList[i].GetLast();k++){
00802 CandStripHandle* strp = (CandStripHandle*)(fTrkStrpList[i].At(k));
00803 if(strp->GetStrip()-truestrip>-2 && strp->GetStrip()-truestrip<2){
00804 muflagtrk=1;
00805 }
00806 }
00807 }
00808 if(ipdg==211||ipdg==-211){
00809 piflag=1;
00810 for(k=0;k<1+fTrkStrpList[i].GetLast();k++){
00811 CandStripHandle* strp = (CandStripHandle*)(fTrkStrpList[i].At(k));
00812 if(strp->GetStrip()-truestrip>-2 && strp->GetStrip()-truestrip<2){
00813 piflagtrk=1;
00814 }
00815 }
00816 }
00817 }
00818 if(muflag){ if(muflagtrk) trk_mu+=1.0; else notrk_mu+=1.0; }
00819 if(piflag){ if(piflagtrk) trk_pi+=1.0; else notrk_pi+=1.0; }
00820 if(1+fTrkStrpList[i].GetLast()>0) trk_pln+=1.0;
00821 }
00822 }
00823 if(trk_pln>0){
00824 TRKscore[TRKlast] = (trk_mu)/(trk_pln+notrk_mu);
00825 if(trk_mu+notrk_mu>0.0){
00826 TRKscoreMuEff[TRKlast] = (trk_mu)/(trk_mu+notrk_mu);
00827 TRKscoreMuPur[TRKlast]= (trk_mu)/(trk_pln);
00828 }
00829 if(trk_pi+notrk_pi>0.0){
00830 TRKscorePiEff[TRKlast] = (trk_pi)/(trk_pi+notrk_pi);
00831 TRKscorePiPur[TRKlast] = (trk_pi)/(trk_pln);
00832 }
00833 }
00834
00835 Double_t begZ,endZ;
00836 begZ=TRKbegvtxZ[TRKlast]; endZ=TRKendvtxZ[TRKlast];
00837 if(endZ>begZ){
00838 TRKdirTrue[TRKlast]=2.0*(0.5*(endZ+begZ)-vtxZ)/(endZ-begZ);
00839 }
00840 }
00841
00842 MSG("AtNuTreeModule",Msg::kDebug)
00843 << " RESULTS FROM TRACKS " << endl
00844 << " ------------------- " << endl
00845 << " TRKplns = " << TRKplns[TRKlast] << endl
00846 << " TRKstrps = " << TRKstrps[TRKlast] << endl
00847 << " TRKdigits = " << TRKdigits[TRKlast] << endl
00848 << " TRKvtxpln = " << TRKvtxpln[TRKlast] << endl
00849 << " TRKbegpln = " << TRKbegpln[TRKlast] << endl
00850 << " TRKendpln = " << TRKendpln[TRKlast] << endl
00851 << " TRKtrkplns = " << TRKtrkplns[TRKlast] << endl
00852 << " TRKtrkPH = " << TRKtrkPH[TRKlast] << endl
00853 << " TRKshwPH = " << TRKshwPH[TRKlast] << endl
00854 << " TRKassocPH = " << TRKassocPH[TRKlast] << endl
00855 << " TRKassocPHfrac = " << TRKassocPHfrac[TRKlast] << endl
00856 << " TRKpbegX = " << TRKpbegX[TRKlast] << endl
00857 << " TRKpbegY = " << TRKpbegY[TRKlast] << endl
00858 << " TRKpbegZ = " << TRKpbegZ[TRKlast] << endl
00859 << " TRKpendX = " << TRKpendX[TRKlast] << endl
00860 << " TRKpendY = " << TRKpendY[TRKlast] << endl
00861 << " TRKpendZ = " << TRKpendZ[TRKlast] << endl
00862 << " TRKplinX = " << TRKplinX[TRKlast] << endl
00863 << " TRKplinY = " << TRKplinY[TRKlast] << endl
00864 << " TRKplinZ = " << TRKplinZ[TRKlast] << endl
00865 << " TRKbegvtxX = " << TRKbegvtxX[TRKlast] << endl
00866 << " TRKbegvtxY = " << TRKbegvtxY[TRKlast] << endl
00867 << " TRKbegvtxZ = " << TRKbegvtxZ[TRKlast] << endl
00868 << " TRKbegvtxR = " << TRKbegvtxR[TRKlast] << endl
00869 << " TRKbegvtxRdigits = " << TRKbegvtxRdigits[TRKlast] << endl
00870 << " TRKbegplndigits = " << TRKbegplndigits[TRKlast] << endl
00871 << " TRKbegtrace = " << TRKbegtrace[TRKlast] << endl
00872 << " TRKbegtraceZ = " << TRKbegtraceZ[TRKlast] << endl
00873 << " TRKbegvtxUwidth = " << TRKbegvtxUwidth[TRKlast] << endl
00874 << " TRKbegvtxUmean = " << TRKbegvtxUmean[TRKlast] << endl
00875 << " TRKbegvtxVwidth = " << TRKbegvtxVwidth[TRKlast] << endl
00876 << " TRKbegvtxVmean = " << TRKbegvtxVmean[TRKlast] << endl
00877 << " TRKbegvtxRmax = " << TRKbegvtxRmax[TRKlast] << endl
00878 << " TRKbegvtxQmax = " << TRKbegvtxQmax[TRKlast] << endl
00879 << " TRKendvtxX = " << TRKendvtxX[TRKlast] << endl
00880 << " TRKendvtxY = " << TRKendvtxY[TRKlast] << endl
00881 << " TRKendvtxZ = " << TRKendvtxZ[TRKlast] << endl
00882 << " TRKendvtxR = " << TRKendvtxR[TRKlast] << endl
00883 << " TRKendvtxRdigits = " << TRKendvtxRdigits[TRKlast] << endl
00884 << " TRKendplndigits = " << TRKendplndigits[TRKlast] << endl
00885 << " TRKendtrace = " << TRKendtrace[TRKlast] << endl
00886 << " TRKendtraceZ = " << TRKendtraceZ[TRKlast] << endl
00887 << " TRKendvtxUwidth = " << TRKendvtxUwidth[TRKlast] << endl
00888 << " TRKendvtxUmean = " << TRKendvtxUmean[TRKlast] << endl
00889 << " TRKendvtxVwidth = " << TRKendvtxVwidth[TRKlast] << endl
00890 << " TRKendvtxVmean = " << TRKendvtxVmean[TRKlast] << endl
00891 << " TRKendvtxRmax = " << TRKendvtxRmax[TRKlast] << endl
00892 << " TRKendvtxQmax = " << TRKendvtxQmax[TRKlast] << endl
00893 << " TRKdir = " << TRKdir[TRKlast] << endl
00894 << " TRKdirTrue = " << TRKdirTrue[TRKlast] << endl
00895 << " TRKdirTimeSlope = " << TRKdirTimeSlope[TRKlast] << endl
00896 << " TRKdirTimeScatter = " << TRKdirTimeScatter[TRKlast] << endl
00897 << " TRKbegTimeFitRms = " << TRKbegTimeFitRms[TRKlast] << endl
00898 << " TRKbegTimeFitNdf = " << TRKbegTimeFitNdf[TRKlast] << endl
00899 << " TRKendTimeFitRms = " << TRKendTimeFitRms[TRKlast] << endl
00900 << " TRKendTimeFitNdf = " << TRKendTimeFitNdf[TRKlast] << endl
00901 << " TRKbegvtxshw = " << TRKbegvtxshw[TRKlast] << endl
00902 << " TRKbegvtxshwstrips = " << TRKbegvtxshwstrips[TRKlast] << endl
00903 << " TRKbegvtxshwreseeded = " << TRKbegvtxshwreseeded[TRKlast] << endl
00904 << " TRKendvtxshw = " << TRKendvtxshw[TRKlast] << endl
00905 << " TRKendvtxshwstrips = " << TRKendvtxshwstrips[TRKlast] << endl
00906 << " TRKendvtxshwreseeded = " << TRKendvtxshwreseeded[TRKlast] << endl
00907 << " TRKrange = " << TRKrange[TRKlast] << endl
00908 << " TRKrangeSteel = " << TRKrangeSteel[TRKlast] << endl
00909 << " TRKmomentumRange = " << TRKmomentumRange[TRKlast] << endl
00910 << " TRKscore = " << TRKscore[TRKlast] << endl
00911 << " TRKscoreMuEff = " << TRKscoreMuEff[TRKlast] << endl
00912 << " TRKscoreMuPur = " << TRKscoreMuPur[TRKlast] << endl
00913 << " TRKscorePiEff = " << TRKscorePiEff[TRKlast] << endl
00914 << " TRKscorePiPur = " << TRKscorePiPur[TRKlast] << endl
00915 << " TRKreseeded = " << TRKreseeded[TRKlast] << endl;
00916
00917 TRKlast++;
00918 }
00919 }
00920 }
00921 }
00922
00923
00924
00925 if(tob->InheritsFrom("CandShowerAtNuListHandle")&&!SHW){
00926 CandShowerAtNuListHandle* shwlist = (CandShowerAtNuListHandle*)(tob);
00927 MSG("AtNuTreeModule",Msg::kDebug) << " ... found CandShowerAtNuListHandle " << endl;
00928 SHW=1;
00929
00930 Int_t pln,flag;
00931 Double_t dir,scr,tmpscr,maxscr;
00932
00933 SHWcputime=shwlist->GetCPUTime();
00934 Nshws=0; SHWlast=0;
00935 CandShowerAtNuHandle* shw=0;
00936 flag=1; maxscr=9999;
00937 while(shw||flag){
00938 shw=0;
00939 flag=0; tmpscr=0;
00940 TIter shwitr(shwlist->GetDaughterIterator());
00941 while(CandShowerAtNuHandle* showerhandle = dynamic_cast<CandShowerAtNuHandle*>(shwitr())){
00942 if(showerhandle){
00943 scr=0;
00944 TIter stritr(showerhandle->GetDaughterIterator());
00945 while(CandStripHandle* strp = dynamic_cast<CandStripHandle*>(stritr())){
00946 if(strp) scr++;
00947 }
00948 if(scr>0&&scr<maxscr&&scr>tmpscr){
00949 tmpscr=scr; shw=showerhandle;
00950 }
00951 }
00952 }
00953 if(shw){
00954 Nshws++; maxscr=tmpscr;
00955 if(SHWlast<3){
00956 MSG("AtNuTreeModule",Msg::kDebug) << " shower: " << SHWlast << endl;
00957 dir=3.0e8*shw->GetTimeSlope();
00958
00959 SHWvtxpln[SHWlast]=shw->GetVtxPlane();
00960 SHWvtxX[SHWlast]=0.7071*(shw->GetVtxU()-shw->GetVtxV());
00961 SHWvtxY[SHWlast]=0.7071*(shw->GetVtxU()+shw->GetVtxV());
00962 SHWvtxZ[SHWlast]=shw->GetVtxZ();
00963 SHWdir[SHWlast]=shw->GetDirTimeScore();
00964 SHWvtxshw[SHWlast]=shw->GetVtxShw();
00965 SHWdirTrk[SHWlast]=shw->GetDirVtxShwScore();
00966 SHWwidthU[SHWlast]=shw->GetDirCosErrU();
00967 SHWwidthV[SHWlast]=shw->GetDirCosErrV();
00968 SHWenergyPH[SHWlast]=shw->GetEnergy();
00969 SHWenergyNstrps[SHWlast]=0.0;
00970 SHWreseeded[SHWlast]=shw->GetReseedFlag();
00971
00972 if(dir>=0){
00973 SHWbegpln[SHWlast]=shw->GetBegPlane();
00974 SHWendpln[SHWlast]=shw->GetEndPlane();
00975 SHWpshwX[SHWlast]=0.7071*(shw->GetDirCosU()-shw->GetDirCosV());
00976 SHWpshwY[SHWlast]=0.7071*(shw->GetDirCosU()+shw->GetDirCosV());
00977 SHWpshwZ[SHWlast]=shw->GetDirCosZ();
00978 }
00979 else{
00980 SHWbegpln[SHWlast]=shw->GetEndPlane();
00981 SHWendpln[SHWlast]=shw->GetBegPlane();
00982 SHWpshwX[SHWlast]=-0.7071*(shw->GetDirCosU()-shw->GetDirCosV());
00983 SHWpshwY[SHWlast]=-0.7071*(shw->GetDirCosU()+shw->GetDirCosV());
00984 SHWpshwZ[SHWlast]=-shw->GetDirCosZ();
00985 }
00986
00987 TIter stritr(shw->GetDaughterIterator());
00988 while(CandStripHandle* strp = dynamic_cast<CandStripHandle*>(stritr())){
00989 if(strp){
00990 pln=strp->GetPlane();
00991 if(pln>0 && pln<500){
00992 fShwStrpList[pln].Add(strp);
00993 }
00994 }
00995 }
00996
00997 for(i=0;i<500;i++){
00998 if(1+fShwStrpList[i].GetLast()>0){
00999 SHWplns[SHWlast]++;
01000 for(j=0;j<1+fShwStrpList[i].GetLast();j++){
01001 CandStripHandle* strip = (CandStripHandle*)(fShwStrpList[i].At(j));
01002 SHWtotPH[SHWlast]+=strip->GetCharge();
01003 SHWstrps[SHWlast]++; SHWdigits[SHWlast]+=strip->GetNDaughters();
01004 }
01005 }
01006 }
01007
01008 if(simrec){
01009 if(PhadX*PhadX+PhadY*PhadY+PhadZ*PhadZ>0.0){
01010 SHWdirTrue[SHWlast]=PhadZ/sqrt(PhadX*PhadX+PhadY*PhadY+PhadZ*PhadZ);
01011 }
01012 }
01013
01014 MSG("AtNuTreeModule",Msg::kDebug)
01015 << " RESULTS FROM SHOWER " << endl
01016 << " ------------------- " << endl
01017 << " SHWplns = " << SHWplns[SHWlast] << endl
01018 << " SHWstrps = " << SHWstrps[SHWlast] << endl
01019 << " SHWdigits = " << SHWdigits[SHWlast] << endl
01020 << " SHWvtxpln = " << SHWvtxpln[SHWlast] << endl
01021 << " SHWbegpln = " << SHWbegpln[SHWlast] << endl
01022 << " SHWendpln = " << SHWendpln[SHWlast] << endl
01023 << " SHWtotPH = " << SHWtotPH[SHWlast] << endl
01024 << " SHWpshwX = " << SHWpshwX[SHWlast] << endl
01025 << " SHWpshwY = " << SHWpshwY[SHWlast] << endl
01026 << " SHWpshwZ = " << SHWpshwZ[SHWlast] << endl
01027 << " SHWwidthU = " << SHWwidthU[SHWlast] << endl
01028 << " SHWwidthV = " << SHWwidthV[SHWlast] << endl
01029 << " SHWvtxX = " << SHWvtxX[SHWlast] << endl
01030 << " SHWvtxY = " << SHWvtxY[SHWlast] << endl
01031 << " SHWvtxZ = " << SHWvtxZ[SHWlast] << endl
01032 << " SHWdir = " << SHWdir[SHWlast] << endl
01033 << " SHWdirTrue = " << SHWdirTrue[SHWlast] << endl
01034 << " SHWvtxshw = " << SHWvtxshw[SHWlast] << endl
01035 << " SHWdirTrk = " << SHWdirTrk[SHWlast] << endl
01036 << " SHWenergyPH = " << SHWenergyPH[SHWlast] << endl
01037 << " SHWenergyNstrps = " << SHWenergyNstrps[SHWlast] << endl
01038 << " SHWreseeded = " << SHWreseeded[SHWlast] << endl;
01039
01040 SHWlast++;
01041 }
01042 }
01043 }
01044 }
01045
01046
01047 if(tob->InheritsFrom("CandFitTrackAtNuListHandle")&&!FIT){
01048 CandFitTrackAtNuListHandle* fitlist = (CandFitTrackAtNuListHandle*)(tob);
01049 MSG("AtNuTreeModule",Msg::kDebug) << " ... found CandFitTrackAtNuListHandle " << endl;
01050 FIT=1;
01051
01052 Int_t flag;
01053 Double_t dir,scr,tmpscr,maxscr;
01054
01055 Nfits=0; FITlast=0;
01056 CandFitTrackAtNuHandle* fit=0;
01057 flag=1; maxscr=9999;
01058 while(fit||flag){
01059 fit=0;
01060 flag=0; tmpscr=0;
01061 TIter fititr(fitlist->GetDaughterIterator());
01062 while(CandFitTrackAtNuHandle* fithandle = dynamic_cast<CandFitTrackAtNuHandle*>(fititr())){
01063 if(fithandle){
01064 if(fithandle->GetEndPlane()>fithandle->GetBegPlane()) scr=fithandle->GetEndPlane()-fithandle->GetBegPlane(); else scr=fithandle->GetBegPlane()-fithandle->GetEndPlane();
01065 if(scr>0&&scr<maxscr&&scr>tmpscr){
01066 tmpscr=scr; fit=fithandle;
01067 }
01068 }
01069 }
01070 if(fit){
01071 Nfits++; maxscr=tmpscr;
01072 if(FITlast<3){
01073 MSG("AtNuTreeModule",Msg::kDebug) << " fitted track: " << FITlast << endl;
01074 dir=3.0e8*fit->GetTimeSlope();
01075
01076 FITcharge[FITlast]=fit->GetEMCharge();
01077 FITchisq[FITlast]=fit->GetChi2();
01078 FITchisqlin[FITlast]=fit->GetChi2Lin();
01079 FITQPmean[FITlast]=fit->GetQPmean();
01080 FITQPerr[FITlast]=fit->GetQPerr();
01081 FITQPcorr[FITlast]=fit->GetQPcorr();
01082 FITQPwidth[FITlast]=fit->GetQPwidth();
01083 FITQPplns[FITlast]=fit->GetQPplns();
01084 FITmomentumCurve[FITlast]=fit->GetMomentumCurve();
01085 FITmomentumCurveErr[FITlast]=fit->GetMomentumCurveErr();
01086 FITpass[FITlast]=fit->GetPass();
01087
01088 if(dir>=0.0){
01089 FITvtxpln[FITlast]=fit->GetVtxPlane();
01090 FITbegpln[FITlast]=fit->GetBegPlane();
01091 FITendpln[FITlast]=fit->GetEndPlane();
01092 }
01093 else{
01094 FITvtxpln[FITlast]=fit->GetVtxPlane();
01095 FITbegpln[FITlast]=fit->GetEndPlane();
01096 FITendpln[FITlast]=fit->GetBegPlane();
01097 }
01098
01099 MSG("AtNuTreeModule",Msg::kDebug)
01100 << " RESULTS FROM FITTED TRACK " << endl
01101 << " ------------------------- " << endl
01102 << " FITcputime = " << FITcputime[FITlast] << endl
01103 << " FITvtxpln = " << FITvtxpln[FITlast] << endl
01104 << " FITbegpln = " << FITbegpln[FITlast] << endl
01105 << " FITendpln = " << FITendpln[FITlast] << endl
01106 << " FITcharge = " << FITcharge[FITlast] << endl
01107 << " FITchisqlin = " << FITchisqlin[FITlast] << endl
01108 << " FITchisq = " << FITchisq[FITlast] << endl
01109 << " FITQPmean = " << FITQPmean[FITlast] << endl
01110 << " FITQPerr = " << FITQPerr[FITlast] << endl
01111 << " FITQPcorr = " << FITQPcorr[FITlast] << endl
01112 << " FITQPwidth = " << FITQPwidth[FITlast] << endl
01113 << " FITQPplns = " << FITQPplns[FITlast] << endl
01114 << " FITmomentumCurve = " << FITmomentumCurve[FITlast] << endl
01115 << " FITmomentumCurveErr = " << FITmomentumCurveErr[FITlast] << endl
01116 << " FITpass = " << FITpass[FITlast] << endl;
01117
01118 FITlast++;
01119 }
01120 }
01121 }
01122 }
01123
01124 MSG("AtNuTreeModule",Msg::kDebug) << " ... next object?" << endl;
01125 }
01126 }
01127
01128 MSG("AtNuTreeModule",Msg::kDebug) << " *** END OF CANDRECORD *** " << endl;
01129
01130 for(i=0;i<500;i++){
01131 fTotStrpList[i].Clear();
01132 fTrkStrpList[i].Clear();
01133 fShwStrpList[i].Clear();
01134 fMCStrpList[i].Clear();
01135 }
01136
01137
01138
01139
01140
01141
01142 MSG("AtNuTreeModule",Msg::kDebug) << " *** SAVE TO FILE *** " << endl;
01143 if(!fAtNuFile && run>0){
01144 TDirectory* tmpd = gDirectory;
01145
01146
01147
01148
01149
01150
01151 TString filename(fAtNuFileName.Data());
01152 filename.Append(".root");
01153 MSG("AtNuTreeModule",Msg::kDebug) << " ..." << filename.Data() << endl;
01154
01155 fAtNuFile = new TFile(filename.Data(),"RECREATE");
01156 fAtNuTree = new TTree("AtNuTree","AtNuTree");
01157
01158 fAtNuTree->SetAutoSave(100);
01159
01160 fAtNuTree->Branch("run",&run,"run/I");
01161 fAtNuTree->Branch("subrun",&subrun,"subrun/I");
01162 fAtNuTree->Branch("snarl",&snarl,"snarl/I");
01163 fAtNuTree->Branch("runtype",&runtype,"runtype/I");
01164 fAtNuTree->Branch("trigsrc",&trigsrc,"trigsrc/I");
01165 fAtNuTree->Branch("date",&date,"date/I");
01166 fAtNuTree->Branch("time",&time,"time/I");
01167 fAtNuTree->Branch("timeframe",&timeframe,"timeframe/I");
01168 fAtNuTree->Branch("trigtimeraw",&trigtimeraw,"trigtimeraw/D");
01169 fAtNuTree->Branch("trigtimecorr",&trigtimecorr,"trigtimecorr/D");
01170
01171 fAtNuTree->Branch("Ndigits",&Ndigits,"Ndigits/I");
01172 fAtNuTree->Branch("Nstrps",&Nstrps,"Nstrps/I");
01173 fAtNuTree->Branch("Nplns",&Nplns,"Nplns/I");
01174 fAtNuTree->Branch("Ustrps",&Ustrps,"Ustrps/I");
01175 fAtNuTree->Branch("Uplns",&Uplns,"Uplns/I");
01176 fAtNuTree->Branch("Vstrps",&Vstrps,"Vstrps/I");
01177 fAtNuTree->Branch("Vplns",&Vplns,"Vplns/I");
01178 fAtNuTree->Branch("begpln",&begpln,"begpln/I");
01179 fAtNuTree->Branch("endpln",&endpln,"endpln/I");
01180 fAtNuTree->Branch("Nmuplns",&Nmuplns,"Nmuplns/I");
01181
01182 fAtNuTree->Branch("totPH",&totPH,"totPH/D");
01183
01184 fAtNuTree->Branch("IDnu",&IDnu,"IDnu/I");
01185 fAtNuTree->Branch("IDact",&IDact,"IDact/I");
01186 fAtNuTree->Branch("IDboson",&IDboson,"IDboson/I");
01187 fAtNuTree->Branch("IDtarget",&IDtarget,"IDtarget/I");
01188 fAtNuTree->Branch("IDres",&IDres,"IDres/I");
01189 fAtNuTree->Branch("x",&x,"x/D");
01190 fAtNuTree->Branch("y",&y,"y/D");
01191 fAtNuTree->Branch("Q2",&Q2,"Q2/D");
01192 fAtNuTree->Branch("W2",&W2,"W2/D");
01193 fAtNuTree->Branch("EMfrac",&EMfrac,"EMfrac/D");
01194 fAtNuTree->Branch("Xsection",&Xsection,"Xsection/D");
01195 fAtNuTree->Branch("PnuX",&PnuX,"PnuX/D");
01196 fAtNuTree->Branch("PnuY",&PnuY,"PnuY/D");
01197 fAtNuTree->Branch("PnuZ",&PnuZ,"PnuZ/D");
01198 fAtNuTree->Branch("Enu",&Enu,"Enu/D");
01199 fAtNuTree->Branch("PmuX",&PmuX,"PmuX/D");
01200 fAtNuTree->Branch("PmuY",&PmuY,"PmuY/D");
01201 fAtNuTree->Branch("PmuZ",&PmuZ,"PmuZ/D");
01202 fAtNuTree->Branch("Emu",&Emu,"Emu/D");
01203 fAtNuTree->Branch("PelX",&PelX,"PelX/D");
01204 fAtNuTree->Branch("PelY",&PelY,"PelY/D");
01205 fAtNuTree->Branch("PelZ",&PelZ,"PelZ/D");
01206 fAtNuTree->Branch("Eel",&Eel,"Eel/D");
01207 fAtNuTree->Branch("PhadX",&PhadX,"PhadX/D");
01208 fAtNuTree->Branch("PhadY",&PhadY,"PhadY/D");
01209 fAtNuTree->Branch("PhadZ",&PhadZ,"PhadZ/D");
01210 fAtNuTree->Branch("Ehad",&Ehad,"Ehad/D");
01211 fAtNuTree->Branch("PtargX",&PtargX,"PtargX/D");
01212 fAtNuTree->Branch("PtargY",&PtargY,"PtargY/D");
01213 fAtNuTree->Branch("PtargZ",&PtargZ,"PtargZ/D");
01214 fAtNuTree->Branch("Etarg",&Etarg,"Etarg/D");
01215 fAtNuTree->Branch("vtxX",&vtxX,"vtxX/D");
01216 fAtNuTree->Branch("vtxY",&vtxY,"vtxY/D");
01217 fAtNuTree->Branch("vtxZ",&vtxZ,"vtxZ/D");
01218 fAtNuTree->Branch("muvtxX",&muvtxX,"muvtxX/D");
01219 fAtNuTree->Branch("muvtxY",&muvtxY,"muvtxY/D");
01220 fAtNuTree->Branch("muvtxZ",&muvtxZ,"muvtxZ/D");
01221 fAtNuTree->Branch("muvtxR",&muvtxR,"muvtxR/D");
01222 fAtNuTree->Branch("muvtxpln",&muvtxpln,"muvtxpln/I");
01223 fAtNuTree->Branch("muendvtxX",&muendvtxX,"muendvtxX/D");
01224 fAtNuTree->Branch("muendvtxY",&muendvtxY,"muendvtxY/D");
01225 fAtNuTree->Branch("muendvtxZ",&muendvtxZ,"muendvtxZ/D");
01226 fAtNuTree->Branch("muendvtxR",&muendvtxR,"muendvtxR/D");
01227 fAtNuTree->Branch("muendvtxpln",&muendvtxpln,"muendvtxpln/I");
01228 fAtNuTree->Branch("mupbeg",&mupbeg,"mupbeg/D");
01229 fAtNuTree->Branch("mupend",&mupend,"mupend/D");
01230
01231 fAtNuTree->Branch("Ntrks",&Ntrks,"Ntrks/I");
01232 fAtNuTree->Branch("TRKlast",&TRKlast,"TRKlast/I");
01233 fAtNuTree->Branch("TRKcputime",&TRKcputime,"TRKcputime/D");
01234 fAtNuTree->Branch("TRKplns",TRKplns,"TRKplns[3]/I");
01235 fAtNuTree->Branch("TRKstrps",TRKstrps,"TRKstrps[3]/I");
01236 fAtNuTree->Branch("TRKdigits",TRKdigits,"TRKdigits[3]/I");
01237 fAtNuTree->Branch("TRKvtxpln",TRKvtxpln,"TRKvtxpln[3]/I");
01238 fAtNuTree->Branch("TRKbegpln",TRKbegpln,"TRKbegpln[3]/I");
01239 fAtNuTree->Branch("TRKendpln", TRKendpln,"TRKendpln[3]/I");
01240 fAtNuTree->Branch("TRKtrkplns",TRKtrkplns,"TRKtrkplns[3]/I");
01241 fAtNuTree->Branch("TRKtrkPH",TRKtrkPH,"TRKtrkPH[3]/D");
01242 fAtNuTree->Branch("TRKshwPH",TRKshwPH,"TRKshwPH[3]/D");
01243 fAtNuTree->Branch("TRKassocPH",TRKassocPH,"TRKassocPH[3]/D");
01244 fAtNuTree->Branch("TRKassocPHfrac",TRKassocPHfrac,"TRKassocPHfrac[3]/D");
01245 fAtNuTree->Branch("TRKpbegX",TRKpbegX,"TRKpbegX[3]/D");
01246 fAtNuTree->Branch("TRKpbegY",TRKpbegY,"TRKpbegY[3]/D");
01247 fAtNuTree->Branch("TRKpbegZ",TRKpbegZ,"TRKpbegZ[3]/D");
01248 fAtNuTree->Branch("TRKpendX",TRKpendX,"TRKpendX[3]/D");
01249 fAtNuTree->Branch("TRKpendY",TRKpendY,"TRKpendY[3]/D");
01250 fAtNuTree->Branch("TRKpendZ",TRKpendZ,"TRKpendZ[3]/D");
01251 fAtNuTree->Branch("TRKplinX",TRKplinX,"TRKplinX[3]/D");
01252 fAtNuTree->Branch("TRKplinY",TRKplinY,"TRKplinY[3]/D");
01253 fAtNuTree->Branch("TRKplinZ",TRKplinZ,"TRKplinZ[3]/D");
01254 fAtNuTree->Branch("TRKbegvtxX",TRKbegvtxX,"TRKbegvtxX[3]/D");
01255 fAtNuTree->Branch("TRKbegvtxY",TRKbegvtxY,"TRKbegvtxY[3]/D");
01256 fAtNuTree->Branch("TRKbegvtxZ",TRKbegvtxZ,"TRKbegvtxZ[3]/D");
01257 fAtNuTree->Branch("TRKbegvtxR",TRKbegvtxR,"TRKbegvtxR[3]/D");
01258 fAtNuTree->Branch("TRKbegvtxRdigits",TRKbegvtxRdigits,"TRKbegvtxRdigits[3]/D");
01259 fAtNuTree->Branch("TRKbegplndigits",TRKbegplndigits,"TRKbegplndigits[3]/I");
01260 fAtNuTree->Branch("TRKbegtrace",TRKbegtrace,"TRKbegtrace[3]/D");
01261 fAtNuTree->Branch("TRKbegtraceZ",TRKbegtraceZ,"TRKbegtraceZ[3]/D");
01262 fAtNuTree->Branch("TRKbegvtxUwidth",TRKbegvtxUwidth,"TRKbegvtxUwidth[3]/D");
01263 fAtNuTree->Branch("TRKbegvtxUmean",TRKbegvtxUmean,"TRKbegvtxUmean[3]/D");
01264 fAtNuTree->Branch("TRKbegvtxVwidth",TRKbegvtxVwidth,"TRKbegvtxVwidth[3]/D");
01265 fAtNuTree->Branch("TRKbegvtxVmean",TRKbegvtxVmean,"TRKbegvtxVmean[3]/D");
01266 fAtNuTree->Branch("TRKbegvtxRmax",TRKbegvtxRmax,"TRKbegvtxRmax[3]/D");
01267 fAtNuTree->Branch("TRKbegvtxQmax",TRKbegvtxQmax,"TRKbegvtxQmax[3]/D");
01268 fAtNuTree->Branch("TRKendvtxX",TRKendvtxX,"TRKendvtxX[3]/D");
01269 fAtNuTree->Branch("TRKendvtxY",TRKendvtxY,"TRKendvtxY[3]/D");
01270 fAtNuTree->Branch("TRKendvtxZ",TRKendvtxZ,"TRKendvtxZ[3]/D");
01271 fAtNuTree->Branch("TRKendvtxR",TRKendvtxR,"TRKendvtxR[3]/D");
01272 fAtNuTree->Branch("TRKendvtxRdigits",TRKendvtxRdigits,"TRKendvtxRdigits[3]/D");
01273 fAtNuTree->Branch("TRKendplndigits",TRKendplndigits,"TRKendplndigits[3]/I");
01274 fAtNuTree->Branch("TRKendtrace",TRKendtrace,"TRKendtrace[3]/D");
01275 fAtNuTree->Branch("TRKendtraceZ",TRKendtraceZ,"TRKendtraceZ[3]/D");
01276 fAtNuTree->Branch("TRKendvtxUwidth",TRKendvtxUwidth,"TRKendvtxUwidth[3]/D");
01277 fAtNuTree->Branch("TRKendvtxUmean",TRKendvtxUmean,"TRKendvtxUmean[3]/D");
01278 fAtNuTree->Branch("TRKendvtxVwidth",TRKendvtxVwidth,"TRKendvtxVwidth[3]/D");
01279 fAtNuTree->Branch("TRKendvtxVmean",TRKendvtxVmean,"TRKendvtxVmean[3]/D");
01280 fAtNuTree->Branch("TRKendvtxRmax",TRKendvtxRmax,"TRKendvtxRmax[3]/D");
01281 fAtNuTree->Branch("TRKendvtxQmax",TRKendvtxQmax,"TRKendvtxQmax[3]/D");
01282 fAtNuTree->Branch("TRKdir", TRKdir,"TRKdir[3]/D");
01283 fAtNuTree->Branch("TRKdirTrue", TRKdirTrue,"TRKdirTrue[3]/D");
01284 fAtNuTree->Branch("TRKdirTimeSlope", TRKdirTimeSlope,"TRKdirTimeSlope[3]/D");
01285 fAtNuTree->Branch("TRKdirTimeScatter",TRKdirTimeScatter,"TRKdirTimeScatter[3]/D");
01286 fAtNuTree->Branch("TRKbegTimeFitRms",TRKbegTimeFitRms,"TRKbegTimeFitRms[3]/D");
01287 fAtNuTree->Branch("TRKbegTimeFitNdf",TRKbegTimeFitNdf,"TRKbegTimeFitNdf[3]/I");
01288 fAtNuTree->Branch("TRKendTimeFitRms",TRKendTimeFitRms,"TRKendTimeFitRms[3]/D");
01289 fAtNuTree->Branch("TRKendTimeFitNdf",TRKendTimeFitNdf,"TRKendTimeFitNdf[3]/I");
01290 fAtNuTree->Branch("TRKbegvtxshw",TRKbegvtxshw,"TRKbegvtxshw[3]/I");
01291 fAtNuTree->Branch("TRKbegvtxshwstrips", TRKbegvtxshwstrips,"TRKbegvtxshwstrips[3]/I");
01292 fAtNuTree->Branch("TRKbegvtxshwreseeded", TRKbegvtxshwreseeded,"TRKbegvtxshwreseeded[3]/I");
01293 fAtNuTree->Branch("TRKendvtxshw",TRKendvtxshw,"TRKendvtxshw[3]/I");
01294 fAtNuTree->Branch("TRKendvtxshwstrips", TRKendvtxshwstrips,"TRKendvtxshwstrips[3]/I");
01295 fAtNuTree->Branch("TRKendvtxshwreseeded", TRKendvtxshwreseeded,"TRKendvtxshwreseeded[3]/I");
01296 fAtNuTree->Branch("TRKrange",TRKrange,"TRKrange[3]/D");
01297 fAtNuTree->Branch("TRKrangeSteel",TRKrangeSteel,"TRKrangeSteel[3]/D");
01298 fAtNuTree->Branch("TRKmomentumRange", TRKmomentumRange,"TRKmomentumRange[3]/D");
01299 fAtNuTree->Branch("TRKscore", TRKscore, "TRKscore[3]/D");
01300 fAtNuTree->Branch("TRKscoreMuEff", TRKscoreMuEff, "TRKscoreMuEff[3]/D");
01301 fAtNuTree->Branch("TRKscoreMuPur", TRKscoreMuPur, "TRKscoreMuPur[3]/D");
01302 fAtNuTree->Branch("TRKscorePiEff", TRKscorePiEff, "TRKscorePiEff[3]/D");
01303 fAtNuTree->Branch("TRKscorePiPur", TRKscorePiPur, "TRKscorePiPur[3]/D");
01304 fAtNuTree->Branch("TRKreseeded", TRKreseeded, "TRKreseeded[3]/I");
01305
01306 fAtNuTree->Branch("Nfits",&Nfits,"Nfits/I");
01307 fAtNuTree->Branch("FITlast",&FITlast,"FITlast/I");
01308 fAtNuTree->Branch("FITcputime",FITcputime,"FITcputime[3]/D");
01309 fAtNuTree->Branch("FITvtxpln",FITvtxpln,"FITvtxpln[3]/I");
01310 fAtNuTree->Branch("FITbegpln",FITbegpln,"FITbegpln[3]/I");
01311 fAtNuTree->Branch("FITendpln", FITendpln,"FITendpln[3]/I");
01312 fAtNuTree->Branch("FITcharge",FITcharge,"FITcharge[3]/D");
01313 fAtNuTree->Branch("FITchisqlin", FITchisqlin, "FITchisqlin[3]/D");
01314 fAtNuTree->Branch("FITchisq", FITchisq, "FITchisq[3]/D");
01315 fAtNuTree->Branch("FITQPmean", FITQPmean, "FITQPmean[3]/D");
01316 fAtNuTree->Branch("FITQPerr", FITQPerr, "FITQPerr[3]/D");
01317 fAtNuTree->Branch("FITQPcorr", FITQPcorr, "FITQPcorr[3]/D");
01318 fAtNuTree->Branch("FITQPwidth",FITQPwidth,"FITQPwidth[3]/D");
01319 fAtNuTree->Branch("FITQPplns", FITQPplns, "FITQPplns[3]/I");
01320 fAtNuTree->Branch("FITmomentumCurve", FITmomentumCurve,"FITmomentumCurve[3]/D");
01321 fAtNuTree->Branch("FITmomentumCurveErr", FITmomentumCurveErr,"FITmomentumCurveErr[3]/D");
01322 fAtNuTree->Branch("FITpass", FITpass, "FITpass[3]/I");
01323
01324 fAtNuTree->Branch("Nshws",&Nshws,"Nshws/I");
01325 fAtNuTree->Branch("SHWlast",&SHWlast,"SHWlast/I");
01326 fAtNuTree->Branch("SHWcputime",&SHWcputime,"SHWcputime/D");
01327 fAtNuTree->Branch("SHWplns",SHWplns,"SHWplns[3]/I");
01328 fAtNuTree->Branch("SHWstrps",SHWstrps,"SHWstrps[3]/I");
01329 fAtNuTree->Branch("SHWdigits",SHWdigits,"SHWdigits[3]/I");
01330 fAtNuTree->Branch("SHWvtxpln",SHWvtxpln,"SHWvtxpln[3]/I");
01331 fAtNuTree->Branch("SHWbegpln",SHWbegpln,"SHWbegpln[3]/I");
01332 fAtNuTree->Branch("SHWendpln",SHWendpln,"SHWendpln[3]/I");
01333 fAtNuTree->Branch("SHWtotPH",SHWtotPH,"SHWtotPH[3]/D");
01334 fAtNuTree->Branch("SHWpshwX",SHWpshwX,"SHWpshwX[3]/D");
01335 fAtNuTree->Branch("SHWpshwY",SHWpshwY,"SHWpshwY[3]/D");
01336 fAtNuTree->Branch("SHWpshwZ",SHWpshwZ,"SHWpshwZ[3]/D");
01337 fAtNuTree->Branch("SHWwidthU",SHWwidthU,"SHWwidthU[3]/D");
01338 fAtNuTree->Branch("SHWwidthV",SHWwidthV,"SHWwidthV[3]/D");
01339 fAtNuTree->Branch("SHWvtxX",SHWvtxX,"SHWvtxX[3]/D");
01340 fAtNuTree->Branch("SHWvtxY",SHWvtxY,"SHWvtxY[3]/D");
01341 fAtNuTree->Branch("SHWvtxZ",SHWvtxZ,"SHWvtxZ[3]/D");
01342 fAtNuTree->Branch("SHWdir",SHWdir,"SHWdir[3]/D");
01343 fAtNuTree->Branch("SHWdirTrue",SHWdirTrue,"SHWdirTrue[3]/D");
01344 fAtNuTree->Branch("SHWvtxshw",SHWvtxshw,"SHWvtxshw[3]/I");
01345 fAtNuTree->Branch("SHWdirTrk",SHWdirTrk,"SHWdirTrk[3]/D");
01346 fAtNuTree->Branch("SHWenergyPH",SHWenergyPH,"SHWenergyPH[3]/D");
01347 fAtNuTree->Branch("SHWenergyNstrps",SHWenergyNstrps,"SHWenergyNstrps[3]/D");
01348 fAtNuTree->Branch("SHWreseeded",SHWreseeded,"SHWreseeded[3]/I");
01349
01350 tmpd->cd();
01351 }
01352
01353 if(fAtNuFile){
01354 MSG("AtNuTreeModule",Msg::kDebug) << " ***** FILL TREE ***** " << endl;
01355 TDirectory* tmpd = gDirectory;
01356 fAtNuFile->cd();
01357 fAtNuTree->Fill();
01358 tmpd->cd();
01359 MSG("AtNuTreeModule",Msg::kDebug) << " ***** TREE FILLED ***** " << endl;
01360 }
01361
01362 MSG("AtNuTreeModule",Msg::kInfo) << " *** AtNuTreeModule::Ana() FINISHED *** " << endl;
01363 return result;
01364 }