5 string locHistName, locHistTitle;
6 string locParticleName, locParticleName2, locParticleROOTName, locParticleROOTName2;
9 vector<const DParticleID*> locParticleIDs;
10 locEventLoop->Get(locParticleIDs);
13 vector<const DMCThrown*> locMCThrowns;
14 locEventLoop->Get(locMCThrowns);
16 vector<const DAnalysisUtilities*> locAnalysisUtilitiesVector;
17 locEventLoop->Get(locAnalysisUtilitiesVector);
21 japp->RootWriteLock();
26 for(
size_t loc_i = 0; loc_i < locDesiredPIDs.size(); ++loc_i)
28 locPID = locDesiredPIDs[loc_i];
38 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
" Candidates;#beta");
45 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
" Candidates;#beta");
56 locHistName =
"BetaVsP";
57 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
" Candidates;Shower Energy (GeV);#beta");
60 locHistName =
"DeltaTVsShowerE_Photon";
61 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
" Candidates;Shower Energy (GeV);#Deltat_{BCAL - RF}");
64 locHistName =
"TimePullVsShowerE_Photon";
65 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";Shower Energy (GeV);#Deltat/#sigma_{#Deltat}");
68 locHistName =
"TimeFOMVsShowerE_Photon";
69 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";Shower Energy (GeV);Timing PID Confidence Level");
77 locHistName =
"BetaVsP";
78 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
" Candidates;Shower Energy (GeV);#beta");
81 locHistName =
"DeltaTVsShowerE_Photon";
82 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";p (GeV/c);#Deltat_{FCAL - RF}");
85 locHistName =
"TimePullVsShowerE_Photon";
86 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";Shower Energy (GeV);#Deltat/#sigma_{#Deltat}");
89 locHistName =
"TimeFOMVsShowerE_Photon";
90 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";Shower Energy (GeV);Timing PID Confidence Level");
100 locHistName =
"dEdXVsP";
101 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);SC dE/dX (MeV/cm)");
104 locHistName =
"DeltadEdXVsP";
105 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);SC #Delta(dE/dX) (MeV/cm)");
108 locHistName =
"DeltaBetaVsP";
109 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);SC #Delta#beta");
112 locHistName =
"BetaVsP";
113 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);SC #beta");
116 locHistName =
"DeltaTVsP";
117 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{SC - RF}");
120 locHistName =
string(
"TimePullVsP_") + locParticleName;
121 locHistTitle =
string(
"SC ") + locParticleROOTName +
string(
";p (GeV/c);#Deltat/#sigma_{#Deltat}");
124 locHistName =
string(
"TimeFOMVsP_") + locParticleName;
125 locHistTitle =
string(
"SC") + locParticleROOTName +
string(
";p (GeV/c);Timing PID Confidence Level");
128 gDirectory->cd(
"..");
133 locHistName =
"dEdXVsP";
134 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);TOF dE/dX (MeV/cm)");
137 locHistName =
"DeltadEdXVsP";
138 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);TOF #Delta(dE/dX) (MeV/cm)");
141 locHistName =
"DeltaBetaVsP";
142 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);TOF #Delta#beta");
145 locHistName =
"BetaVsP";
146 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);TOF #beta");
149 locHistName =
"DeltaTVsP";
150 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{TOF - RF}");
153 locHistName =
string(
"TimePullVsP_") + locParticleName;
154 locHistTitle =
string(
"TOF ") + locParticleROOTName +
string(
";p (GeV/c);#Deltat/#sigma_{#Deltat}");
157 locHistName =
string(
"TimeFOMVsP_") + locParticleName;
158 locHistTitle =
string(
"TOF ") + locParticleROOTName +
string(
";p (GeV/c);Timing PID Confidence Level");
161 gDirectory->cd(
"..");
166 locHistName =
"BetaVsP";
167 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);BCAL #beta");
170 locHistName =
"DeltaBetaVsP";
171 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);BCAL #Delta#beta");
174 locHistName =
"DeltaTVsP";
175 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{BCAL - RF}");
178 locHistName =
string(
"TimePullVsP_") + locParticleName;
179 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";p (GeV/c);#Deltat/#sigma_{#Deltat}");
182 locHistName =
string(
"TimeFOMVsP_") + locParticleName;
183 locHistTitle =
string(
"BCAL ") + locParticleROOTName +
string(
";p (GeV/c);Timing PID Confidence Level");
186 locHistName =
"EOverPVsP";
187 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);BCAL E_{Shower}/p_{Track} (c);");
190 locHistName =
"EOverPVsTheta";
191 locHistTitle = locParticleROOTName +
string(
" Candidates;#theta#circ;BCAL E_{Shower}/p_{Track} (c);");
194 gDirectory->cd(
"..");
199 locHistName =
"BetaVsP";
200 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FCAL #beta");
203 locHistName =
"DeltaBetaVsP";
204 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FCAL #Delta#beta");
207 locHistName =
"DeltaTVsP";
208 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);#Deltat_{FCAL - RF}");
211 locHistName =
string(
"TimePullVsP_") + locParticleName;
212 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";p (GeV/c);#Deltat/#sigma_{#Deltat}");
215 locHistName =
string(
"TimeFOMVsP_") + locParticleName;
216 locHistTitle =
string(
"FCAL ") + locParticleROOTName +
string(
";p (GeV/c);Timing PID Confidence Level");
219 locHistName =
"EOverPVsP";
220 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FCAL E_{Shower}/p_{Track} (c);");
223 locHistName =
"EOverPVsTheta";
224 locHistTitle = locParticleROOTName +
string(
" Candidates;#theta#circ;FCAL E_{Shower}/p_{Track} (c);");
227 gDirectory->cd(
"..");
232 locHistName =
"dEdXVsP_Int";
233 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC dE/dx [Integral-based] (keV/cm)");
236 locHistName =
"dEdXVsP_Amp";
237 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC dE/dx [Amplitude-based] (keV/cm)");
240 locHistName =
"DeltadEdXVsP_Int";
241 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC #Delta(dE/dX) [Integral-based] (keV/cm)");
244 locHistName =
"DeltadEdXVsP_Amp";
245 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);CDC #Delta(dE/dX) [Amplitude-based] (keV/cm)");
248 locHistName =
string(
"dEdXPullVsP_Int_") + locParticleName;
249 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC #Delta(dE/dX)/#sigma_{#Delta(dE/dX)} [Integral-based]");
252 locHistName =
string(
"dEdXPullVsP_Amp_") + locParticleName;
253 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC #Delta(dE/dX)/#sigma_{#Delta(dE/dX)} [Amplitude-based]");
256 locHistName =
string(
"dEdXFOMVsP_Int_") + locParticleName;
257 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC dE/dx [Integral-based] PID Confidence Level");
260 locHistName =
string(
"dEdXFOMVsP_Amp_") + locParticleName;
261 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);CDC dE/dx [Amplitude-based] PID Confidence Level");
264 gDirectory->cd(
"..");
269 locHistName =
"dEdXVsP";
270 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FDC dE/dx (keV/cm)");
273 locHistName =
"DeltadEdXVsP";
274 locHistTitle = locParticleROOTName +
string(
" Candidates;p (GeV/c);FDC #Delta(dE/dX) (keV/cm)");
277 locHistName =
string(
"dEdXPullVsP_") + locParticleName;
278 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);FDC #Delta(dE/dX)/#sigma_{#Delta(dE/dX)}");
281 locHistName =
string(
"dEdXFOMVsP_") + locParticleName;
282 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);FDC dE/dx PID Confidence Level");
285 gDirectory->cd(
"..");
290 locHistName =
string(
"NumPhotons_") + locParticleName;
291 locHistTitle = locParticleROOTName +
string(
"; DIRC NumPhotons");
294 locHistName =
string(
"ThetaCVsP_") + locParticleName;
295 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC #theta_{C}");
298 locHistName =
string(
"Ldiff_kpiVsP_") + locParticleName;
299 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC L_{K}-L_{#pi}");
302 locHistName =
string(
"Ldiff_pkVsP_") + locParticleName;
303 locHistTitle = locParticleROOTName +
string(
"; Momentum (GeV); DIRC L_{p}-L_{K}");
306 gDirectory->cd(
"..");
310 if(!locMCThrowns.empty())
313 for(
size_t loc_j = 0; loc_j <
dThrownPIDs.size(); ++loc_j)
322 pair<Particle_t, Particle_t> locPIDPair(locPID, locPID2);
323 locHistName =
string(
"PIDConfidenceLevel_ForThrownPID_") + locParticleName2;
324 locHistTitle = locParticleROOTName +
string(
" PID, Thrown PID = ") + locParticleROOTName2 +
string(
";PID Confidence Level");
327 gDirectory->cd(
"..");
334 locHistName =
"PIDConfidenceLevel";
335 locHistTitle = locParticleROOTName +
string(
" PID;PID Confidence Level");
339 locHistName =
"PVsTheta_NaNPIDFOM";
340 locHistTitle = locParticleROOTName +
string(
", PID FOM = NaN;#theta#circ;p (GeV/c)");
344 gDirectory->cd(
"..");
355 vector<const DMCThrownMatching*> locMCThrownMatchingVector;
356 locEventLoop->Get(locMCThrownMatchingVector);
357 const DMCThrownMatching* locMCThrownMatching = locMCThrownMatchingVector.empty() ? NULL : locMCThrownMatchingVector[0];
365 for(
size_t loc_j = 0; loc_j < locParticles.size(); ++loc_j)
369 pair<const DEventRFBunch*, pair<Particle_t, const JObject*> > locHistInfo(locEventRFBunch, locParticleInfo);
375 Fill_ChargedHists(static_cast<const DChargedTrackHypothesis*>(locParticles[loc_j]), locMCThrownMatching, locEventRFBunch);
377 Fill_NeutralHists(static_cast<const DNeutralParticleHypothesis*>(locParticles[loc_j]), locMCThrownMatching, locEventRFBunch);
387 double locBeta_Timing = locChargedTrackHypothesis->
measuredBeta();
388 double locDeltaBeta = locBeta_Timing - locChargedTrackHypothesis->
lorentzMomentum().Beta();
390 double locFOM_Timing = (locChargedTrackHypothesis->
Get_NDF_Timing() > 0) ? TMath::Prob(locChargedTrackHypothesis->
Get_ChiSq_Timing(), locChargedTrackHypothesis->
Get_NDF_Timing()) : numeric_limits<double>::quiet_NaN();
392 double locP = locChargedTrackHypothesis->
momentum().Mag();
393 double locTheta = locChargedTrackHypothesis->
momentum().Theta()*180.0/TMath::Pi();
394 double locMatchFOM = 0.0;
395 const DMCThrown* locMCThrown = (locMCThrownMatching != NULL) ? locMCThrownMatching->
Get_MatchingMCThrown(locChargedTrackHypothesis, locMatchFOM) : NULL;
405 double locTimePull = 0.0;
406 unsigned int locTimeNDF = 0;
418 if(locSCHitMatchParams != NULL)
421 double locdx = locSCHitMatchParams->dHitEnergy/locSCHitMatchParams->dEdx;
422 double locProbabledEdx = 0.0, locSigmadEdx = 0.0;
428 if(locTOFHitMatchParams != NULL)
431 double locdx = locTOFHitMatchParams->dHitEnergy/locTOFHitMatchParams->dEdx;
432 double locProbabledEdx = 0.0, locSigmadEdx = 0.0;
438 if(locBCALShowerMatchParams != NULL)
440 const DBCALShower* locBCALShower = locBCALShowerMatchParams->dBCALShower;
441 double locEOverP = locBCALShower->
E/locP;
447 if(locFCALShowerMatchParams != NULL)
449 const DFCALShower* locFCALShower = locFCALShowerMatchParams->dFCALShower;
450 double locEOverP = locFCALShower->
getEnergy()/locP;
456 if(locDIRCMatchParams != NULL) {
458 int locNumPhotons_DIRC = locDIRCMatchParams->dNPhotons;
459 double locThetaC_DIRC = locDIRCMatchParams->dThetaC;
462 double locLpi_DIRC = locDIRCMatchParams->dLikelihoodPion;
463 double locLk_DIRC = locDIRCMatchParams->dLikelihoodKaon;
464 double locLp_DIRC = locDIRCMatchParams->dLikelihoodProton;
480 if(locTrackTimeBased->dNumHitsUsedFordEdx_CDC > 0)
486 double locDeltadEdx = locTrackTimeBased->ddEdx_CDC - locProbabledEdx;
488 double locDeltadEdx_amp = locTrackTimeBased->ddEdx_CDC_amp - locProbabledEdx;
491 double locMeandx = locTrackTimeBased->ddx_CDC/locTrackTimeBased->dNumHitsUsedFordEdx_CDC;
492 double locSigmadEdx =
dParticleID->
GetdEdxSigma_DC(locTrackTimeBased->dNumHitsUsedFordEdx_CDC, locP, locChargedTrackHypothesis->
mass(), locMeandx,
true);
493 double locdEdXPull = locDeltadEdx/locSigmadEdx;
495 double locdEdXPull_amp = locDeltadEdx_amp/locSigmadEdx;
498 double locdEdXChiSq = locdEdXPull*locdEdXPull;
499 double locdEdXFOM = TMath::Prob(locdEdXChiSq, locTrackTimeBased->dNumHitsUsedFordEdx_CDC);
501 double locdEdXChiSq_amp = locdEdXPull_amp*locdEdXPull_amp;
502 double locdEdXFOM_amp = TMath::Prob(locdEdXChiSq_amp, locTrackTimeBased->dNumHitsUsedFordEdx_CDC);
507 if(locTrackTimeBased->dNumHitsUsedFordEdx_FDC > 0)
511 double locDeltadEdx = locTrackTimeBased->ddEdx_FDC - locProbabledEdx;
513 double locMeandx = locTrackTimeBased->ddx_FDC/locTrackTimeBased->dNumHitsUsedFordEdx_FDC;
514 double locSigmadEdx =
dParticleID->
GetdEdxSigma_DC(locTrackTimeBased->dNumHitsUsedFordEdx_FDC, locP, locChargedTrackHypothesis->
mass(), locMeandx,
false);
515 double locdEdXPull = locDeltadEdx/locSigmadEdx;
517 double locdEdXChiSq = locdEdXPull*locdEdXPull;
518 double locdEdXFOM = TMath::Prob(locdEdXChiSq, locTrackTimeBased->dNumHitsUsedFordEdx_FDC);
522 pair<Particle_t, Particle_t> locPIDPair(locPID,
Unknown);
523 if(locMCThrown != NULL)
528 if(locChargedTrackHypothesis->
Get_NDF() == 0)
538 double locBeta_Timing = locNeutralParticleHypothesis->
measuredBeta();
539 double locDeltaT = locNeutralParticleHypothesis->
time() - locNeutralParticleHypothesis->
t0();
541 double locP = locNeutralParticleHypothesis->
momentum().Mag();
542 double locMatchFOM = 0.0;
543 const DMCThrown* locMCThrown = (locMCThrownMatching != NULL) ? locMCThrownMatching->
Get_MatchingMCThrown(locNeutralParticleHypothesis, locMatchFOM) : NULL;
545 double locTimePull = 0.0;
546 unsigned int locTimeNDF = 0;
570 pair<Particle_t, Particle_t> locPIDPair(locPID,
Unknown);
571 if(locMCThrown != NULL)
581 string locHistName, locHistTitle, locStepROOTName, locParticleName, locParticleROOTName;
582 Particle_t locPID, locHigherMassPID, locLowerMassPID;
583 string locHigherMassParticleName, locLowerMassParticleName, locHigherMassParticleROOTName, locLowerMassParticleROOTName;
585 vector<const DAnalysisUtilities*> locAnalysisUtilitiesVector;
586 locEventLoop->Get(locAnalysisUtilitiesVector);
599 japp->RootWriteLock();
603 for(
size_t loc_i = 0; loc_i < locNumSteps; ++loc_i)
606 if(locDetectedChargedPIDs.empty())
610 ostringstream locStepName;
616 locHistName =
"MaxTrackDeltaZ";
617 locHistTitle = locStepROOTName +
string(
";Largest Track #DeltaVertex-Z (cm)");
621 locHistName =
"MaxTrackDeltaT";
622 locHistTitle = locStepROOTName +
string(
";Largest Track #DeltaVertex-T (ns)");
626 locHistName =
"MaxTrackDOCA";
627 locHistTitle = locStepROOTName +
string(
";Largest Track DOCA (cm)");
630 for(
size_t loc_j = 0; loc_j < locDetectedChargedPIDs.size(); ++loc_j)
632 locPID = locDetectedChargedPIDs[loc_j];
639 locHistName =
string(
"TrackZToCommon_") + locParticleName;
640 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#DeltaVertex-Z (Track, Common) (cm)");
644 locHistName =
string(
"TrackTToCommon_") + locParticleName;
645 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#DeltaVertex-T (Track, Common) (ns)");
649 locHistName =
string(
"TrackDOCAToCommon_") + locParticleName;
650 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";DOCA (Track, Common) (cm)");
664 for(
int loc_j = 0; loc_j < int(locDetectedChargedPIDs_HasDupes.size()) - 1; ++loc_j)
666 locPID = locDetectedChargedPIDs_HasDupes[loc_j];
667 for(
size_t loc_k = loc_j + 1; loc_k < locDetectedChargedPIDs_HasDupes.size(); ++loc_k)
671 locHigherMassPID = locDetectedChargedPIDs_HasDupes[loc_k];
672 locLowerMassPID = locPID;
676 locHigherMassPID = locPID;
677 locLowerMassPID = locDetectedChargedPIDs_HasDupes[loc_k];
679 pair<Particle_t, Particle_t> locParticlePair(locHigherMassPID, locLowerMassPID);
683 locHigherMassParticleName =
ParticleType(locHigherMassPID);
685 locLowerMassParticleName =
ParticleType(locLowerMassPID);
689 locHistName =
string(
"TrackDeltaTVsP_") + locHigherMassParticleName +
string(
"_") + locLowerMassParticleName;
690 locHistTitle = locStepROOTName +
string(
";") + locHigherMassParticleROOTName +
string(
" Momentum (GeV/c);t_{") + locHigherMassParticleROOTName +
string(
"} - t_{") + locLowerMassParticleROOTName +
string(
"} (ns)");
694 gDirectory->cd(
"..");
705 double locDOCA, locDeltaZ, locDeltaT, locMaxDOCA, locMaxDeltaZ, locMaxDeltaT;
712 if(locParticles.empty())
717 double locVertexTime = locParticleComboStep->
Get_Time();
719 for(
size_t loc_j = 0; loc_j < locParticles.size(); ++loc_j)
721 locPID = locParticles[loc_j]->PID();
727 for(
size_t loc_k = loc_j + 1; loc_k < locParticles.size(); ++loc_k)
729 locDeltaZ = fabs(locParticles[loc_j]->position().Z() - locParticles[loc_k]->position().Z());
730 if(locDeltaZ > locMaxDeltaZ)
731 locMaxDeltaZ = locDeltaZ;
733 locDeltaT = fabs(locParticles[loc_j]->time() - locParticles[loc_k]->time());
734 if(locDeltaT > locMaxDeltaT)
735 locMaxDeltaT = locDeltaT;
738 if(locDOCA > locMaxDOCA)
739 locMaxDOCA = locDOCA;
743 deque<pair<const DKinematicData*, size_t> > locParticlePairs;
744 size_t locHigherMassParticleIndex, locLowerMassParticleIndex;
746 deque<pair<Particle_t, Particle_t> > locPIDPairs;
748 deque<double> locDeltaTs;
749 for(
size_t loc_k = loc_j + 1; loc_k < locParticles.size(); ++loc_k)
751 locParticlePairs.clear();
752 locParticlePairs.push_back(pair<const DKinematicData*, size_t>(locParticles[loc_j], loc_i));
753 locParticlePairs.push_back(pair<const DKinematicData*, size_t>(locParticles[loc_k], loc_i));
755 if(locParticles[loc_k]->mass() > locParticles[loc_j]->mass())
757 locHigherMassParticleIndex = loc_k;
758 locLowerMassParticleIndex = loc_j;
762 locHigherMassParticleIndex = loc_j;
763 locLowerMassParticleIndex = loc_k;
766 locDeltaTs.push_back(locParticles[locHigherMassParticleIndex]->time() - locParticles[locLowerMassParticleIndex]->time());
767 locPs.push_back(locParticles[locHigherMassParticleIndex]->momentum().Mag());
768 locPIDPairs.push_back(pair<Particle_t, Particle_t>(locParticles[locHigherMassParticleIndex]->PID(), locParticles[locLowerMassParticleIndex]->PID()));
772 double locBeamDeltaT = (locBeamParticle != NULL) ? locParticles[loc_j]->time() - locBeamParticle->
time() : numeric_limits<double>::quiet_NaN();
786 if(locMaxDeltaZ > 0.0)
793 if(locBeamParticle != NULL)
795 for(
size_t loc_k = 0; loc_k < locPIDPairs.size(); ++loc_k)
800 pair<Particle_t, Particle_t> locTempPIDPair(locPIDPairs[loc_k]);
801 locPIDPairs[loc_k].first = locTempPIDPair.second;
802 locPIDPairs[loc_k].second = locTempPIDPair.first;
817 cout <<
"WARNING: REQUESTED HISTOGRAM OF KINEMATIC FIT RESULTS WHEN NO KINEMATIC FIT!!!" << endl;
821 vector<const DParticleID*> locParticleIDs;
822 locEventLoop->Get(locParticleIDs);
824 string locHistName, locHistTitle, locStepROOTName, locParticleName, locParticleROOTName;
840 vector<const DAnalysisUtilities*> locAnalysisUtilitiesVector;
841 locEventLoop->
Get(locAnalysisUtilitiesVector);
847 japp->RootWriteLock();
857 if(locIsFirstStepBeam)
864 locHistName =
"Momentum";
865 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";p (GeV/c)");
869 locHistName =
"Theta";
870 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";#theta#circ");
875 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";#phi#circ");
879 locHistName =
"PVsTheta";
880 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";#theta#circ;p (GeV/c)");
884 locHistName =
"PhiVsTheta";
885 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";#theta#circ;#phi#circ");
889 locHistName =
"VertexZ";
890 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";Vertex-Z (cm)");
894 locHistName =
"VertexYVsX";
895 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";Vertex-X (cm);Vertex-Y (cm)");
899 locHistName =
"DeltaTRF";
900 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";#Deltat_{Beam - RF} (ns)");
904 locHistName =
"DeltaTRFVsBeamE";
905 locHistTitle =
string(
"Beam ") + locParticleROOTName +
string(
";E (GeV);#Deltat_{Beam - RF} (ns)");
908 gDirectory->cd(
"..");
912 for(
size_t loc_i = 0; loc_i < locNumSteps; ++loc_i)
915 ostringstream locStepName;
923 vector<Particle_t> locPIDs;
924 bool locLastPIDMissingFlag =
false;
930 if((!locIsFirstStepBeam) || (loc_i != 0))
931 locPIDs.insert(locPIDs.begin(), locInitialPID);
936 locPIDs.push_back(locMissingPID);
937 locLastPIDMissingFlag =
true;
941 bool locDirectoryCreatedFlag =
false;
942 for(
size_t loc_j = 0; loc_j < locPIDs.size(); ++loc_j)
944 locPID = locPIDs[loc_j];
945 bool locIsMissingFlag =
false;
946 if((loc_j == locPIDs.size() - 1) && locLastPIDMissingFlag)
950 locIsMissingFlag =
true;
960 if(!locDirectoryCreatedFlag)
963 locDirectoryCreatedFlag =
true;
969 locHistName =
"Momentum";
970 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";p (GeV/c)");
974 locHistName =
"Theta";
975 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#theta#circ");
980 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#phi#circ");
984 locHistName =
"PVsTheta";
985 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#theta#circ;p (GeV/c)");
989 locHistName =
"PhiVsTheta";
990 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";#theta#circ;#phi#circ");
994 locHistName =
"BetaVsP";
995 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#beta");
999 locHistName =
"DeltaBetaVsP";
1000 locHistTitle = locParticleROOTName +
string(
";p (GeV/c);#Delta#beta");
1004 locHistName =
"VertexZ";
1005 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";Vertex-Z (cm)");
1009 locHistName =
"VertexYVsX";
1010 locHistTitle = locParticleROOTName +
string(
", ") + locStepROOTName +
string(
";Vertex-X (cm);Vertex-Y (cm)");
1013 gDirectory->cd(
"..");
1018 string locInitParticleName =
ParticleType(locInitialPID);
1021 if(!locDirectoryCreatedFlag)
1024 locDirectoryCreatedFlag =
true;
1027 locHistName =
"StepVertexZ";
1028 locHistTitle = (loc_i == 0) ?
";Production Vertex-Z (cm)" :
string(
";") + locInitParticleROOTName +
string(
" Decay Vertex-Z (cm)");
1031 locHistName =
"StepVertexYVsX";
1032 locHistTitle = (loc_i == 0) ?
"Production Vertex" : locInitParticleROOTName +
string(
" Decay Vertex");
1033 locHistTitle +=
string(
";Vertex-X (cm);Vertex-Y (cm)");
1039 if(!locDirectoryCreatedFlag)
1042 locDirectoryCreatedFlag =
true;
1045 locHistName = locInitParticleName +
string(
"PathLength");
1046 locHistTitle =
string(
";") + locInitParticleROOTName +
string(
" Path Length (cm)");
1049 locHistName = locInitParticleName +
string(
"Lifetime");
1050 locHistTitle =
string(
";") + locInitParticleROOTName +
string(
" Lifetime (ns)");
1055 locHistName = locInitParticleName +
string(
"Lifetime_RestFrame");
1056 locHistTitle =
string(
";") + locInitParticleROOTName +
string(
" Rest Frame Lifetime (ns)");
1061 if(locDirectoryCreatedFlag)
1062 gDirectory->cd(
"..");
1075 cout <<
"WARNING: REQUESTED HISTOGRAM OF KINEMATIC FIT RESULTS WHEN NO KINEMATIC FIT!!! Skipping histogram." << endl;
1094 if(locKinematicData != NULL)
1096 if(locIsFirstStepBeam && (loc_i == 0))
1107 Fill_Hists(locEventLoop, locKinematicData,
false, loc_i);
1124 DLorentzVector locDeltaSpacetime = locStepSpacetimeVertex - locFromSpacetimeVertex;
1126 double locPathLength = locDeltaSpacetime.Vect().Mag();
1130 if(locKinematicData != NULL)
1141 double locRestFrameLifetime = locPathLength*
ParticleMass(locInitialPID)/(29.9792458*locInitialP4.P());
1154 if(locKinematicData == NULL)
1159 if(locSourceObject != NULL)
1161 pair<Particle_t, const JObject*> locParticleInfo(locKinematicData->
PID(), locSourceObject);
1162 pair<size_t, pair<Particle_t, const JObject*> > locHistInfo(loc_i, locParticleInfo);
1169 Fill_Hists(locEventLoop, locKinematicData, locIsMissingFlag, loc_i);
1181 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
1182 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
1183 double locP = locMomentum.Mag();
1185 double locBeta_Timing = 0.0;
1187 if(locNeutralHypo !=
nullptr)
1192 if(locChargedHypo !=
nullptr)
1195 double locDeltaBeta = locBeta_Timing - locKinematicData->
lorentzMomentum().Beta();
1202 dHistDeque_P[locStepIndex][locPID][locIsMissingFlag]->Fill(locP);
1203 dHistDeque_Phi[locStepIndex][locPID][locIsMissingFlag]->Fill(locPhi);
1207 dHistDeque_BetaVsP[locStepIndex][locPID][locIsMissingFlag]->Fill(locP, locBeta_Timing);
1218 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
1219 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
1220 double locP = locMomentum.Mag();
1221 double locDeltaTRF = locKinematicData->
time() - (locEventRFBunch->
dTime + (locKinematicData->
z() -
dTargetZCenter)/29.9792458);
1243 string locHistName, locHistTitle;
1247 string locParticleNamesForHist =
"";
1263 japp->RootWriteLock();
1267 locHistName =
"InvariantMass";
1268 ostringstream locStream;
1269 locStream << locMassPerBin;
1270 locHistTitle =
string(
";") + locParticleNamesForHist +
string(
" Invariant Mass (GeV/c^{2});# Combos / ") + locStream.str() +
string(
" MeV/c^{2}");
1275 locHistName =
"InvariantMassVsBeamE";
1276 locHistTitle =
string(
";Beam Energy (GeV);") + locParticleNamesForHist +
string(
" Invariant Mass (GeV/c^{2})");
1290 auto locBeam =
Get_UseKinFitResultsFlag() ? locFirstStep->Get_InitialParticle() : locFirstStep->Get_InitialParticle_Measured();
1292 vector<double> locMassesToFill;
1293 vector<double> loc2DMassesToFill;
1306 set<set<size_t> >::iterator locComboIterator = locIndexCombos.begin();
1307 for(; locComboIterator != locIndexCombos.end(); ++locComboIterator)
1309 set<pair<const JObject*, unsigned int> > locSourceObjects;
1314 locMassesToFill.push_back(locFinalStateP4.M());
1317 auto locBeamSourceObjects = std::make_pair(locSourceObjects, locBeam);
1321 loc2DMassesToFill.push_back(locFinalStateP4.M());
1332 for(
size_t loc_i = 0; loc_i < locMassesToFill.size(); ++loc_i)
1334 for(
size_t loc_i = 0; loc_i < loc2DMassesToFill.size(); ++loc_i)
1354 japp->RootWriteLock();
1358 string locHistName =
"MissingMass";
1359 ostringstream locStream;
1360 locStream << locMassPerBin;
1361 string locHistTitle =
string(
";") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass (GeV/c^{2});# Combos / ") + locStream.str() +
string(
" MeV/c^{2}");
1364 locHistName =
"MissingMassVsBeamE";
1365 locMassPerBin *= ((double)dNumMassBins)/((double)
dNum2DMassBins);
1367 locStream << locMassPerBin;
1368 locHistTitle =
string(
";Beam Energy (GeV);") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass (GeV/c^{2})");
1371 locHistName =
"MissingMassVsMissingP";
1373 locStream << locMassPerBin;
1374 locHistTitle =
string(
";Missing P (GeV/c);") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass (GeV/c^{2})");
1391 vector<pair<double, double> > locMassesToFill;
1392 set<set<size_t> >::iterator locComboIterator = locIndexCombos.begin();
1393 for(; locComboIterator != locIndexCombos.end(); ++locComboIterator)
1395 set<pair<const JObject*, unsigned int> > locSourceObjects;
1402 locMassesToFill.push_back(pair<double, double>(locMissingP4.M(), locMissingP4.P()));
1410 for(
size_t loc_i = 0; loc_i < locMassesToFill.size(); ++loc_i)
1434 japp->RootWriteLock();
1438 string locHistName =
"MissingMassSquared";
1439 ostringstream locStream;
1440 locStream << locMassSqPerBin;
1441 string locHistTitle =
string(
";") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass Squared (GeV/c^{2})^{2};# Combos / ") + locStream.str() +
string(
" (MeV/c^{2})^{2}");
1444 locHistName =
"MissingMassSquaredVsBeamE";
1445 locMassSqPerBin *= ((double)dNumMassBins)/((double)
dNum2DMassBins);
1447 locStream << locMassSqPerBin;
1448 locHistTitle =
string(
";Beam Energy (GeV);") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass Squared (GeV/c^{2})^{2};");
1451 locHistName =
"MissingMassSquaredVsMissingP";
1453 locStream << locMassSqPerBin;
1454 locHistTitle =
string(
";Missing P (GeV/c);") + locInitialParticlesROOTName +
string(
"#rightarrow") + locFinalParticlesROOTName +
string(
" Missing Mass Squared (GeV/c^{2})^{2}");
1471 vector<pair<double, double> > locMassesToFill;
1472 set<set<size_t> >::iterator locComboIterator = locIndexCombos.begin();
1473 for(; locComboIterator != locIndexCombos.end(); ++locComboIterator)
1475 set<pair<const JObject*, unsigned int> > locSourceObjects;
1482 locMassesToFill.push_back(pair<double, double>(locMissingP4.M2(), locMissingP4.P()));
1490 for(
size_t loc_i = 0; loc_i < locMassesToFill.size(); ++loc_i)
1504 string locHistName, locHistTitle;
1507 string locParticleNamesForHistX =
"";
1508 for(
size_t loc_i = 0; loc_i <
dXPIDs.size(); ++loc_i)
1511 string locParticleNamesForHistY =
"";
1512 for(
size_t loc_i = 0; loc_i <
dYPIDs.size(); ++loc_i)
1515 string locMassString =
" Invariant Mass (GeV/c^{2});";
1519 japp->RootWriteLock();
1523 locHistName =
"2DInvariantMass";
1524 locHistTitle =
string(
";") + locParticleNamesForHistX + locMassString + locParticleNamesForHistY + locMassString;
1535 vector<pair<double, double> > locMassesToFill;
1547 set<set<size_t> >::iterator locXComboIterator = locXIndexCombos.begin();
1548 for(; locXComboIterator != locXIndexCombos.end(); ++locXComboIterator)
1550 set<pair<const JObject*, unsigned int> > locXSourceObjects;
1553 set<set<size_t> >::iterator locYComboIterator = locYIndexCombos.begin();
1554 for(; locYComboIterator != locYIndexCombos.end(); ++locYComboIterator)
1556 set<pair<const JObject*, unsigned int> > locYSourceObjects;
1559 if(locXSourceObjects == locYSourceObjects)
1562 set<set<pair<const JObject*, unsigned int> > > locAllSourceObjects;
1563 locAllSourceObjects.insert(locXSourceObjects);
1564 locAllSourceObjects.insert(locYSourceObjects);
1569 locMassesToFill.push_back(pair<double, double>(locXP4.M(), locYP4.M()));
1579 for(
size_t loc_i = 0; loc_i < locMassesToFill.size(); ++loc_i)
1589 string locHistName, locHistTitle;
1592 string locParticleNamesForHistX =
"";
1593 for(
size_t loc_i = 0; loc_i <
dXPIDs.size(); ++loc_i)
1596 string locParticleNamesForHistY =
"";
1597 for(
size_t loc_i = 0; loc_i <
dYPIDs.size(); ++loc_i)
1600 string locMassString =
" Invariant Mass Squared (GeV/c^{2})^{2};";
1604 japp->RootWriteLock();
1608 locHistName =
"DalitzPlot";
1609 locHistTitle =
string(
";") + locParticleNamesForHistX + locMassString + locParticleNamesForHistY + locMassString;
1620 vector<pair<double, double> > locMassesToFill;
1632 set<set<size_t> >::iterator locXComboIterator = locXIndexCombos.begin();
1633 for(; locXComboIterator != locXIndexCombos.end(); ++locXComboIterator)
1635 set<pair<const JObject*, unsigned int> > locXSourceObjects;
1638 set<set<size_t> >::iterator locYComboIterator = locYIndexCombos.begin();
1639 for(; locYComboIterator != locYIndexCombos.end(); ++locYComboIterator)
1641 set<pair<const JObject*, unsigned int> > locYSourceObjects;
1644 if(locXSourceObjects == locYSourceObjects)
1647 set<set<pair<const JObject*, unsigned int> > > locAllSourceObjects;
1648 locAllSourceObjects.insert(locXSourceObjects);
1649 locAllSourceObjects.insert(locYSourceObjects);
1654 locMassesToFill.push_back(pair<double, double>(locXP4.M2(), locYP4.M2()));
1664 for(
size_t loc_i = 0; loc_i < locMassesToFill.size(); ++loc_i)
1665 dHist_DalitzPlot->Fill(locMassesToFill[loc_i].first, locMassesToFill[loc_i].second);
1675 DKinFitType locKinFitType = locReaction->Get_KinFitType();
1682 vector<const DReactionVertexInfo*> locReactionVertexInfos;
1683 locEventLoop->Get(locReactionVertexInfos);
1685 for(
auto& locVertexInfo : locReactionVertexInfos)
1688 std::sort(locReactions.begin(), locReactions.end());
1689 if(!std::binary_search(locReactions.begin(), locReactions.end(),
Get_Reaction()))
1691 locReactionVertexInfo = locVertexInfo;
1697 size_t locNumConstraints = 0, locNumUnknowns = 0;
1700 size_t locNDF = locNumConstraints - locNumUnknowns;
1713 japp->RootWriteLock();
1718 string locHistName =
"ConfidenceLevel";
1719 ostringstream locHistTitle;
1720 locHistTitle <<
"Kinematic Fit Constraints: " << locConstraintString <<
";Confidence Level (" << locNumConstraints;
1721 locHistTitle <<
" Constraints, " << locNumUnknowns <<
" Unknowns: " << locNDF <<
"-C Fit);# Combos";
1731 bool locIsInVertexFitFlag = locVertexIsFitFlag && locIncludeBeamlineInVertexFitFlag && !locFullConstrainParticles.empty();
1734 if(locP4IsFit || locIsInVertexFitFlag)
1741 locHistName =
"ConfidenceLevel_VsBeamEnergy";
1742 locHistTitle.str(
"");
1743 locHistTitle <<
"Kinematic Fit Constraints: " << locConstraintString <<
";Beam Energy (GeV);Confidence Level (" << locNumConstraints;
1744 locHistTitle <<
" Constraints, " << locNumUnknowns <<
" Unknowns: " << locNDF <<
"-C Fit)";
1750 map<DKinFitPullType, TH1I*> locParticlePulls;
1751 map<DKinFitPullType, TH2I*> locParticlePullsVsP, locParticlePullsVsTheta, locParticlePullsVsPhi;
1752 Create_ParticlePulls(locFullROOTName, locIsChargedFlag, locIsInVertexFitFlag,
false, -1, locInitialPID);
1754 gDirectory->cd(
"..");
1764 ostringstream locStepName;
1770 for(
auto locPID : locPIDs)
1772 bool locIsInVertexFitFlag = locVertexIsFitFlag && locStepVertexInfo->Get_FittableVertexFlag();
1774 bool locIsNeutralShowerFlag = (locIsInVertexFitFlag && (
ParticleCharge(locPID) == 0));
1775 if((
ParticleMass(locPID) > 0.0) && !locSpactimeIsFitFlag)
1776 locIsNeutralShowerFlag =
false;
1777 if(!locP4IsFit && !locIsInVertexFitFlag)
1779 if(locIsNeutralShowerFlag && !locP4IsFit)
1788 locHistName =
string(
"ConfidenceLevel_Vs") + locParticleName +
string(
"P");
1789 locHistTitle.str(
"");
1790 locHistTitle <<
"Kinematic Fit Constraints: " << locConstraintString <<
";" << locParticleROOTName <<
" p (GeV/c);Confidence Level (" << locNumConstraints;
1791 locHistTitle <<
" Constraints, " << locNumUnknowns <<
" Unknowns: " << locNDF <<
"-C Fit)";
1795 locHistName =
string(
"ConfidenceLevel_Vs") + locParticleName +
string(
"Theta");
1796 locHistTitle.str(
"");
1797 locHistTitle <<
"Kinematic Fit Constraints: " << locConstraintString <<
";" << locParticleROOTName <<
" #theta#circ;Confidence Level (" << locNumConstraints;
1798 locHistTitle <<
" Constraints, " << locNumUnknowns <<
" Unknowns: " << locNDF <<
"-C Fit)";
1802 locHistName =
string(
"ConfidenceLevel_Vs") + locParticleName +
string(
"Phi");
1803 locHistTitle.str(
"");
1804 locHistTitle <<
"Kinematic Fit Constraints: " << locConstraintString <<
";" << locParticleROOTName <<
" #phi#circ;Confidence Level (" << locNumConstraints;
1805 locHistTitle <<
" Constraints, " << locNumUnknowns <<
" Unknowns: " << locNDF <<
"-C Fit)";
1811 bool locFilledFlag =
false;
1812 for(
auto locPID : locPIDs)
1814 bool locIsInVertexFitFlag = locVertexIsFitFlag && locStepVertexInfo->Get_FittableVertexFlag();
1817 bool locIsNeutralShowerFlag = (locIsInVertexFitFlag && (
ParticleCharge(locPID) == 0));
1818 if((
ParticleMass(locPID) > 0.0) && !locSpactimeIsFitFlag)
1819 locIsNeutralShowerFlag =
false;
1820 if(!locP4IsFit && !locIsInVertexFitFlag)
1822 if(locIsNeutralShowerFlag && !locP4IsFit)
1827 locFilledFlag =
true;
1835 string locFullROOTName = locParticleROOTName +
string(
", ") + locStepROOTName;
1836 Create_ParticlePulls(locFullROOTName, locIsChargedFlag, locIsInVertexFitFlag, locIsNeutralShowerFlag, loc_i, locPID);
1838 gDirectory->cd(
"..");
1842 gDirectory->cd(
"..");
1853 auto locParticlePair = std::make_pair(locStepIndex, locPID);
1859 set<pair<DKinFitPullType, pair<string, string> > > locPullTypes;
1862 string locHistName, locHistTitle;
1863 if(locIsNeutralShowerFlag && locP4IsFit)
1864 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_EPull, pair<string, string>(
"Pull_E",
"E Pull")));
1865 else if(!locIsNeutralShowerFlag && (locP4IsFit || locIsInVertexFitFlag))
1869 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_PxPull, pair<string, string>(
"Pull_Px",
"p_{x} Pull")));
1870 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_PyPull, pair<string, string>(
"Pull_Py",
"p_{y} Pull")));
1871 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_PzPull, pair<string, string>(
"Pull_Pz",
"p_{z} Pull")));
1875 if((locIsNeutralShowerFlag && locP4IsFit) || (locIsChargedFlag && locIsInVertexFitFlag))
1877 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_XxPull, pair<string, string>(
"Pull_Xx",
"x_{x} Pull")));
1878 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_XyPull, pair<string, string>(
"Pull_Xy",
"x_{y} Pull")));
1879 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_XzPull, pair<string, string>(
"Pull_Xz",
"x_{z} Pull")));
1884 locPullTypes.insert(pair<
DKinFitPullType, pair<string, string> >(
d_TPull, pair<string, string>(
"Pull_T",
"t Pull")));
1886 bool locIsBeamFlag = (locFullROOTName.substr(0, 4) ==
"Beam");
1892 set<pair<DKinFitPullType, pair<string, string> > >::iterator locIterator = locPullTypes.begin();
1893 for(; locIterator != locPullTypes.end(); ++locIterator)
1895 pair<string, string> locStrings = (*locIterator).second;
1896 auto locPullType = (*locIterator).first;
1899 locHistName = locStrings.first;
1900 locHistTitle = locFullROOTName +
string(
";") + locStrings.second +
string(
";# Combos");
1903 int locNumDeltaBins;
1904 double locMaxDeltaRange;
1907 dHistMap_Deltas[locParticlePair][locPullType] = GetOrCreate_Histogram<TH1I>(locHistName, locHistTitle, locNumDeltaBins, -1.0*locMaxDeltaRange, locMaxDeltaRange);
1914 locHistName = locStrings.first +
string(
"_VsP");
1915 locHistTitle = locFullROOTName +
string(
";p (GeV/c);") + locStrings.second;
1918 dHistMap_DeltasVsP[locParticlePair][locPullType] = GetOrCreate_Histogram<TH2I>(locHistName, locHistTitle, locNum2DPBins, locMinP, locMaxP, locNumDeltaBins, -1.0*locMaxDeltaRange, locMaxDeltaRange);
1923 locHistName = locStrings.first +
string(
"_VsTheta");
1924 locHistTitle = locFullROOTName +
string(
";#theta#circ;") + locStrings.second;
1930 locHistName = locStrings.first +
string(
"_VsPhi");
1931 locHistTitle = locFullROOTName +
string(
";#phi#circ;") + locStrings.second;
1940 string locNameParam, locTitleParam;
1943 locNameParam =
"ShowerE";
1944 locTitleParam =
"E";
1948 locNameParam =
"Theta";
1949 locTitleParam =
"#theta#circ";
1953 locNameParam =
"Phi";
1954 locTitleParam =
"#phi#circ";
1958 locNameParam =
"POverP";
1959 locTitleParam =
"p/p";
1964 locTitleParam =
"Vertex-X (cm)";
1969 locTitleParam =
"Vertex-Y (cm)";
1974 locTitleParam =
"Vertex-Z (cm)";
1976 else if(locPullType ==
d_TPull)
1979 locTitleParam =
"T (ns)";
1984 locHistName =
string(
"Delta") + locNameParam;
1985 locHistTitle = locFullROOTName +
string(
";#Delta") + locTitleParam;
1987 else if(locVsKey == 1)
1989 locHistName =
string(
"Delta") + locNameParam +
string(
"_VsP");
1990 locHistTitle = locFullROOTName +
string(
";p (GeV/c);#Delta") + locTitleParam;
1992 else if(locVsKey == 2)
1994 locHistName =
string(
"Delta") + locNameParam +
string(
"_VsTheta");
1995 locHistTitle = locFullROOTName +
string(
";#theta#circ;#Delta") + locTitleParam;
1997 else if(locVsKey == 3)
1999 locHistName =
string(
"Delta") + locNameParam +
string(
"_VsPhi");
2000 locHistTitle = locFullROOTName +
string(
";#phi#circ;#Delta") + locTitleParam;
2036 else if(locPullType ==
d_TPull)
2047 if(locKinFitResults == NULL)
2054 map<const JObject*, map<DKinFitPullType, double> > locPulls;
2071 map<DKinFitPullType, double> locParticlePulls = locPulls[locKinematicData];
2072 if(!locParticlePulls.empty())
2074 pair<int, Particle_t> locParticlePair(-1, locInitPID);
2076 double locP = locMomentum.Mag();
2085 map<DKinFitPullType, double>::iterator locIterator = locParticlePulls.begin();
2086 for(; locIterator != locParticlePulls.end(); ++locIterator)
2088 dHistMap_Pulls[locParticlePair][locIterator->first]->Fill(locIterator->second);
2090 dHistMap_PullsVsP[locParticlePair][locIterator->first]->Fill(locP, locIterator->second);
2108 for(
size_t loc_j = 0; loc_j < locParticles.size(); ++loc_j)
2110 auto& locParticle = locParticles[loc_j];
2111 auto& locKinFitParticle = locKinFitParticles[loc_j];
2114 map<DKinFitPullType, double> locParticlePulls;
2115 map<const JObject*, map<DKinFitPullType, double> >::iterator locParticleIterator = locPulls.find(locParticle);
2116 if(locParticleIterator != locPulls.end())
2117 locParticlePulls = locParticleIterator->second;
2120 auto locNeutralHypo = dynamic_cast<const DNeutralParticleHypothesis*>(locParticle);
2121 locParticlePulls = locPulls[locNeutralHypo->Get_NeutralShower()];
2123 if(locParticlePulls.empty())
2126 pair<int, Particle_t> locParticlePair(loc_i, locParticle->PID());
2127 DVector3 locMomentum = locParticle->momentum();
2128 double locP = locMomentum.Mag();
2129 double locTheta = locMomentum.Theta()*180.0/TMath::Pi();
2130 double locPhi = locMomentum.Phi()*180.0/TMath::Pi();
2133 for(
auto locIterator = locParticlePulls.begin(); locIterator != locParticlePulls.end(); ++locIterator)
2135 auto locPullType = locIterator->first;
2136 auto locDelta =
Get_Delta(locPullType, locParticle, locKinFitParticle);
2157 map<DKinFitPullType, double>::iterator locIterator = locParticlePulls.begin();
2158 for(; locIterator != locParticlePulls.end(); ++locIterator)
2160 dHistMap_Pulls[locParticlePair][locIterator->first]->Fill(locIterator->second);
2163 dHistMap_PullsVsP[locParticlePair][locIterator->first]->Fill(locP, locIterator->second);
2165 dHistMap_PullsVsPhi[locParticlePair][locIterator->first]->Fill(locPhi, locIterator->second);
2181 return (locKinFit->
momentum().Theta() - locMeasured->
momentum().Theta())*180.0/TMath::Pi();
2184 auto locDeltaPhi = (locKinFit->
momentum().Phi() - locMeasured->
momentum().Phi())*180.0/TMath::Pi();
2185 while(locDeltaPhi > 180.0)
2186 locDeltaPhi -= 360.0;
2187 while(locDeltaPhi < -180.0)
2188 locDeltaPhi += 360.0;
2193 auto locP = locMeasured->
momentum().Mag();
2194 return (locKinFit->
momentum().Mag() - locP)/locP;
2202 else if(locPullType ==
d_TPull)
2203 return locKinFit->
time() - locMeasured->
time();
2210 string locHistName, locHistTitle;
2213 vector<const DAnalysisUtilities*> locAnalysisUtilitiesVector;
2214 locEventLoop->Get(locAnalysisUtilitiesVector);
2218 japp->RootWriteLock();
2223 locHistName =
"MissingTransverseMomentum";
2224 ostringstream locStream;
2225 locStream << locPtPerBin;
2226 locHistTitle =
string(
";") +
string(
" Missing Transverse Momentum (GeV/c);# Combos / ") + locStream.str() +
string(
" MeV/c");
2237 set<pair<const JObject*, unsigned int> > locSourceObjects;
2244 double locMissingTransverseMomentum = locFinalStateP4.Pt();
vector< const DKinematicData * > Get_FinalParticles_Measured(void) const
DetectorSystem_t t1_detector(void) const
unsigned int dNum2DBCALThetaBins
vector< pair< int, int > > Get_FullConstrainParticles(bool locFitFlag, DReactionState_t locState=d_EitherState, Charge_t locCharge=d_AllCharges, bool locIncludeDecayingFlag=true) const
TDirectoryFile * ChangeTo_BaseDirectory(void)
set< pair< set< pair< const JObject *, unsigned int > >, const JObject * > > dPreviousSourceObjects_Beam
bool Get_IsFirstStepBeam(const DReaction *locReaction)
void Initialize(JEventLoop *locEventLoop)
map< Particle_t, TH2I * > dHistMap_BeamTrackDeltaTVsP
unsigned int dNum2DMissPBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dNum2DBetaBins
DetectorSystem_t SYS_CDC_AMP
const DKinematicData * Get_FinalParticle_Measured(size_t locFinalParticleIndex) const
deque< map< Particle_t, map< bool, TH2I * > > > dHistDeque_DeltaBetaVsP
double Get_ChiSq_Timing(void) const
const DAnalysisUtilities * dAnalysisUtilities
unsigned int dNum2DMassBins
unsigned int dNum2DDeltaShowerEBins
unsigned int dNum2DPhiBins
static char * ParticleName_ROOT(Particle_t p)
unsigned int dNum2DThetaBins
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_dEdXFOMVsP
TH1I * dHist_InvariantMass
bool Get_IncludeBeamlineInVertexFitFlag(void) const
pair< int, int > Get_InitialParticleDecayFromIndices(const DReaction *locReaction, int locStepIndex)
void Fill_ChargedHists(const DChargedTrackHypothesis *locChargedTrackHypothesis, const DMCThrownMatching *locMCThrownMatching, const DEventRFBunch *locEventRFBunch)
size_t Get_NumParticleComboSteps(void) const
void Create_ParticlePulls(string locFullROOTName, bool locIsChargedFlag, bool locIsInVertexFitFlag, bool locIsNeutralShowerFlag, int locStepIndex, Particle_t locPID)
DKinFitType Get_KinFitType(void) const
deque< map< Particle_t, map< bool, TH2I * > > > dHistDeque_VertexYVsX
set< const JObject * > dPreviouslyHistogrammedBeamParticles
const DAnalysisUtilities * dAnalysisUtilities
TH2I * dHist_MissingMassSquaredVsMissingP
unsigned int dNumDeltaTBins
unsigned int dNumDeltaPOverPBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dNumPathLengthBins
string Convert_PIDsToROOTName(const vector< Particle_t > &locPIDs)
void Initialize(JEventLoop *locEventLoop)
double energy(void) const
const DReaction * Get_Reaction(void) const
unsigned int dNum2DPullBins
deque< map< Particle_t, map< bool, TH2I * > > > dHistDeque_PhiVsTheta
const DAnalysisUtilities * dAnalysisUtilities
unsigned int dNumLifetimeBins
unsigned int dNumDOCABins
const DReactionStepVertexInfo * Get_StepVertexInfo(size_t locStepIndex) const
unsigned int dNum2DFOMBins
double Get_FOM(void) const
int dMissingMassOffOfStepIndex
unsigned int dNum2DdEdxBins
TDirectoryFile * CreateAndChangeTo_Directory(TDirectoryFile *locBaseDirectory, string locDirName, string locDirTitle)
double Get_TimeAtPOCAToVertex(void) const
unsigned int dNumDeltaVertexTBins
bool Get(string xpath, string &sval) const
map< size_t, TH2I * > dHistMap_StepVertexYVsX
const DAnalysisUtilities * dAnalysisUtilities
TH1I * dHist_MissingMassSquared
const DVector3 & position(void) const
map< pair< int, Particle_t >, TH2I * > dHistMap_ConfidenceLevel_VsPhi
unsigned int dNumBetaBins
set< set< pair< const JObject *, unsigned int > > > dPreviousSourceObjects
const DTrackTimeBased * Get_TrackTimeBased(void) const
void Fill_BeamHists(const DKinematicData *locKinematicData, const DEventRFBunch *locEventRFBunch)
deque< TH1I * > dHistDeque_MaxTrackDOCA
unsigned int dNum2DThetaBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
TDirectoryFile * CreateAndChangeTo_ActionDirectory(void)
unsigned int dNum2DConfidenceLevelBins
TH2I * dBeamParticleHist_PhiVsTheta
TH1I * dBeamParticleHist_VertexZ
const JObject * Get_FinalParticle_SourceObject(const DKinematicData *locParticle)
TH2I * dHist_2DInvaraintMass
deque< Particle_t > dThrownPIDs
unsigned int dNumDeltaBetaBins
static unsigned short int IsDetachedVertex(Particle_t p)
static char * ParticleType(Particle_t p)
unsigned int dNum2DDeltaBetaBins
unsigned int dNum2DDeltadEdxBins
set< set< size_t > > Build_IndexCombos(const DReactionStep *locReactionStep, deque< Particle_t > locToIncludePIDs) const
deque< Particle_t > dXPIDs
double measuredBeta(void) const
double Calc_DOCAToVertex(const DVector3 &locUnitDir, const DVector3 &locPosition, const DVector3 &locVertex) const
const DKinematicData * Get_InitialParticle_Measured(void) const
unsigned int dNum2DMassBins
TLorentzVector DLorentzVector
unsigned int dDIRCNumPhotonsBins
string Get_StepName(const DReactionStep *locStep, bool locIncludeMissingFlag, bool locTLatexFlag)
unsigned int Get_NDF_Timing(void) const
const DEventRFBunch * Get_EventRFBunch(void) const
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
static int ParticleCharge(Particle_t p)
double Get_Delta(DKinFitPullType locPullType, const DKinematicData *locMeasured, const DKinematicData *locKinFit)
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dNumMassBins
unsigned int dNum2DDeltaTBins
double dPullHistConfidenceLevelCut
void Initialize(JEventLoop *locEventLoop)
void Initialize(JEventLoop *locEventLoop)
double Calc_DOCA(const DVector3 &locUnitDir1, const DVector3 &locUnitDir2, const DVector3 &locVertex1, const DVector3 &locVertex2) const
bool Get_UseKinFitResultsFlag(void) const
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_EOverPVsTheta
deque< Particle_t > dYPIDs
shared_ptr< const DTOFHitMatchParams > Get_TOFHitMatchParams(void) const
map< pair< int, Particle_t >, map< DKinFitPullType, TH1I * > > dHistMap_Pulls
map< size_t, TH1I * > dHistMap_DetachedLifetime
deque< TH1I * > dHistDeque_MaxTrackDeltaZ
unsigned int dNum2DBeamEBins
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dNum2DDeltaThetaBins
vector< Particle_t > Get_ChainPIDs(const DReaction *locReaction, size_t locStepIndex, int locUpToStepIndex, vector< Particle_t > locUpThroughPIDs, bool locExpandDecayingFlag, bool locExcludeMissingFlag)
unsigned int dNumMassBins
vector< Particle_t > Get_FinalPIDs(int locStepIndex=-1, bool locIncludeMissingFlag=true, bool locIncludeDecayingFlag=true, Charge_t locCharge=d_AllCharges, bool locIncludeDuplicatesFlag=true) const
set< pair< size_t, pair< Particle_t, const JObject * > > > dPreviouslyHistogrammedParticles
void Initialize(JEventLoop *locEventLoop)
void Initialize(JEventLoop *locEventLoop)
unsigned int dNumDeltaVertexXYBins
void Get_HistNameTitle(DKinFitPullType locPullType, string locFullROOTName, int locVsKey, string &locHistName, string &locHistTitle)
unsigned int dDIRCLikelihoodBins
unsigned int dNumDeltaShowerEBins
TH2I * dHist_MissingMassVsBeamE
deque< Particle_t > dMissingMassOffOfPIDs
string Get_ConstraintInfo(const DReactionVertexInfo *locReactionVertexInfo, const DReaction *locReaction, size_t &locNumConstraints, size_t &locNumUnknowns) const
TH2D * dHist_InvariantMassVsBeamE
map< size_t, TH1I * > dHistMap_DetachedPathLength
unsigned int dNum2DEOverPBins
DLorentzVector Calc_FinalStateP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, size_t locStepIndex, bool locUseKinFitDataFlag) const
map< size_t, TH1I * > dHistMap_StepVertexZ
unsigned int dNumVertexXYBins
const DAnalysisUtilities * dAnalysisUtilities
deque< map< Particle_t, map< bool, TH1I * > > > dHistDeque_P
deque< map< Particle_t, TH1I * > > dHistDeque_TrackTToCommon
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_PullsVsTheta
unsigned int dNumDeltaVertexZBins
double Get_FOM(void) const
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_EOverPVsP
Particle_t Get_InitialPID(void) const
void Initialize(JEventLoop *locEventLoop)
deque< map< Particle_t, TH1I * > > dHistDeque_TrackDOCAToCommon
void Fill_Hists(JEventLoop *locEventLoop, const DKinematicData *locKinematicData, bool locIsMissingFlag, size_t locStepIndex)
TH2I * dBeamParticleHist_PVsTheta
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_PullsVsP
const DParticleID * dParticleID
map< Particle_t, TH2I * > dHistMap_Ldiff_kpiVsP_DIRC
DLorentzVector Calc_MissingP4(const DReaction *locReaction, const DParticleCombo *locParticleCombo, bool locUseKinFitDataFlag) const
unsigned int dNum2DBeamEBins
TH1I * dBeamParticleHist_Phi
map< pair< int, Particle_t >, map< DKinFitPullType, TH1I * > > dHistMap_Deltas
TH2I * dHist_MissingMassSquaredVsBeamE
double GetMostProbabledEdx_DC(double p, double mass, double dx, bool locIsCDCFlag) const
const DAnalysisUtilities * dAnalysisUtilities
set< set< pair< const JObject *, unsigned int > > > dPreviousSourceObjects
DGeometry * GetDGeometry(unsigned int run_number)
deque< Particle_t > dXPIDs
map< Particle_t, TH2I * > dHistMap_ThetaCVsP_DIRC
deque< map< pair< Particle_t, Particle_t >, TH2I * > > dHistDeque_TrackDeltaTVsP
unsigned int dNumBetaBins
vector< const DKinematicData * > Get_FinalParticles(void) const
TH2I * dBeamParticleHist_DeltaTRFVsBeamE
map< Particle_t, TH2I * > dHistMap_Ldiff_pkVsP_DIRC
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
unsigned int dDIRCThetaCBins
size_t Get_NumFinalParticles(void) const
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
deque< Particle_t > dYPIDs
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_DeltasVsP
shared_ptr< const DDIRCMatchParams > Get_DIRCMatchParams(void) const
map< size_t, TH1I * > dHistMap_DetachedLifetime_RestFrame
deque< Particle_t > dMissingMassOffOfPIDs
unsigned int dNum2DDeltaVertexZBins
double Get_ConfidenceLevel(void) const
DLorentzVector Get_SpacetimeVertex(void) const
double GetdEdxSigma_DC(double num_hits, double p, double mass, double mean_path_length, bool locIsCDCFlag) const
void Initialize(JEventLoop *locEventLoop)
unsigned int dDIRCMaxNumPhotons
TH2I * dBeamParticleHist_VertexYVsX
deque< map< Particle_t, map< bool, TH1I * > > > dHistDeque_Theta
int Get_MissingParticleIndex(void) const
unsigned int dNum2DBeamEBins
shared_ptr< const DSCHitMatchParams > Get_SCHitMatchParams(void) const
void Get_DeltaBinningParams(DKinFitPullType locPullType, bool loc2DFlag, int &locNumBins, double &locMax)
set< pair< const DEventRFBunch *, pair< Particle_t, const JObject * > > > dPreviouslyHistogrammedParticles
unsigned int dNumPullBins
map< Particle_t, TH1I * > dHistMap_PIDFOM
unsigned int dNumDeltaPhiBins
unsigned int dNum2DPhiBins
set< set< pair< const JObject *, unsigned int > > > dPreviousSourceObjects
unsigned int dNumDeltaVertexZBins
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_dEdXPullVsP
deque< Particle_t > dToIncludePIDs
DLorentzVector lorentzMomentum(void) const
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_dEdXVsP
unsigned int dNum2DDeltaPOverPBins
unsigned int dNum2DBeamEBins
static double ParticleMass(Particle_t p)
map< Particle_t, TH1I * > dHistMap_NumPhotons_DIRC
unsigned int dNum2DMissPBins
double Calc_TimingChiSq(const DChargedTrackHypothesis *locChargedHypo, unsigned int &locNDF, double &locTimingPull) const
shared_ptr< const DFCALShowerMatchParams > Get_FCALShowerMatchParams(void) const
DKinFitUtils_GlueX * dKinFitUtils
const DKinematicData * Get_InitialParticle(void) const
deque< map< Particle_t, map< bool, TH1I * > > > dHistDeque_Phi
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_DeltasVsTheta
TH1I * dHist_ConfidenceLevel
const DAnalysisUtilities * dAnalysisUtilities
TH2I * dHist_MissingMassVsMissingP
double measuredBeta(void) const
unsigned int dNum2DDeltaPhiBins
unsigned int Get_NDF(void) const
unsigned int dNumMassBins
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_DeltaTVsP
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_DeltasVsPhi
unsigned int dNum2DThetaBins
const DVector3 & momentum(void) const
const DAnalysisUtilities * dAnalysisUtilities
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_DeltadEdXVsP
set< set< set< pair< const JObject *, unsigned int > > > > dPreviousSourceObjects
void Fill_NeutralHists(const DNeutralParticleHypothesis *locNeutralParticleHypothesis, const DMCThrownMatching *locMCThrownMatching, const DEventRFBunch *locEventRFBunch)
unsigned int dNumConfidenceLevelBins
unsigned int dNumVertexZBins
unsigned int dNumThetaBins
void Initialize(JEventLoop *locEventLoop)
const DAnalysisUtilities * dAnalysisUtilities
const DReactionStep * Get_ReactionStep(size_t locStepIndex) const
map< Particle_t, map< DetectorSystem_t, TH1I * > > dHistMap_Beta
const DAnalysisUtilities * dAnalysisUtilities
unsigned int dNum2DDeltaTBins
double Get_Time(void) const
set< set< pair< const JObject *, unsigned int > > > dPreviousSourceObjects
const DKinFitResults * Get_KinFitResults(void) const
deque< map< Particle_t, map< bool, TH1I * > > > dHistDeque_VertexZ
set< set< set< pair< const JObject *, unsigned int > > > > dPreviousSourceObjects
DVector3 Get_Position(void) const
unsigned int dNum2DMassBins
shared_ptr< const DBCALShowerMatchParams > Get_BCALShowerMatchParams(void) const
unsigned int dNumDeltaTRFBins
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_TimePullVsP
map< Particle_t, TH2I * > dHistMap_PVsTheta_NaNPIDFOM
unsigned int dNumDeltaThetaBins
const DParticleComboStep * Get_ParticleComboStep(size_t locStepIndex) const
double dDIRCMaxLikelihood
string Get_InitialParticlesName(const DReactionStep *locStep, bool locTLatexFlag)
void GetScintMPdEandSigma(double p, double M, double x, double &most_prob_dE, double &sigma_dE) const
deque< TH1I * > dHistDeque_MaxTrackDeltaT
deque< map< Particle_t, map< bool, TH2I * > > > dHistDeque_BetaVsP
const DKinematicData * Get_FinalParticle(size_t locFinalParticleIndex) const
size_t Get_NumReactionSteps(void) const
map< pair< int, Particle_t >, TH2I * > dHistMap_ConfidenceLevel_VsTheta
int type
GEANT particle ID.
deque< map< Particle_t, TH1I * > > dHistDeque_TrackZToCommon
unsigned int dNum2DDeltaVertexXYBins
DetectorSystem_t t1_detector(void) const
deque< map< Particle_t, map< bool, TH2I * > > > dHistDeque_PVsTheta
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_BetaVsP
TH1I * dBeamParticleHist_P
unsigned int dDIRCMinNumPhotons
bool GetTargetZ(double &z_target) const
z-location of center of target
int dMissingMassOffOfStepIndex
map< pair< int, Particle_t >, TH2I * > dHistMap_ConfidenceLevel_VsP
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
TH1I * dHist_MissingTransverseMomentum
Particle_t Get_MissingPID(void) const
unsigned int dNum2DFCALThetaBins
Particle_t PID(void) const
const DMCThrown * Get_MatchingMCThrown(const DChargedTrackHypothesis *locChargedTrackHypothesis, double &locMatchFOM) const
const DParticleID * dParticleID
bool Perform_Action(JEventLoop *locEventLoop, const DParticleCombo *locParticleCombo)
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_DeltaBetaVsP
void Get_Pulls(map< const JObject *, map< DKinFitPullType, double > > &locPulls) const
TH1I * dBeamParticleHist_DeltaTRF
map< pair< Particle_t, Particle_t >, TH1I * > dHistMap_PIDFOMForTruePID
void Initialize(JEventLoop *locEventLoop)
TH1I * dBeamParticleHist_Theta
map< Particle_t, map< DetectorSystem_t, TH2I * > > dHistMap_TimeFOMVsP
vector< const DReaction * > Get_Reactions(void) const
map< pair< int, Particle_t >, map< DKinFitPullType, TH2I * > > dHistMap_PullsVsPhi