8 #ifndef _DAnalysisUtilities_
9 #define _DAnalysisUtilities_
14 #include <JANA/JEventLoop.h>
15 #include <JANA/JObject.h>
47 using namespace DAnalysis;
63 bool Check_IsBDTSignalEvent(JEventLoop* locEventLoop,
const DReaction* locReaction,
bool locExclusiveMatchFlag,
bool locIncludeDecayingToReactionFlag)
const;
64 void Replace_DecayingParticleWithProducts(deque<pair<
const DMCThrown*, deque<const DMCThrown*> > >& locThrownSteps,
size_t locStepIndex)
const;
65 bool Check_ThrownsMatchReaction(JEventLoop* locEventLoop,
const DReaction* locReaction,
bool locExclusiveMatchFlag)
const;
66 bool Check_ThrownsMatchReaction(
const DReaction* locThrownReaction,
const DParticleCombo* locThrownCombo,
const DReaction* locReaction,
bool locExclusiveMatchFlag)
const;
68 void Get_UnusedChargedTracks(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DChargedTrack*>& locUnusedChargedTracks)
const;
69 void Get_UnusedTimeBasedTracks(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DTrackTimeBased*>& locUnusedTimeBasedTracks)
const;
70 void Get_UnusedWireBasedTracks(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DTrackWireBased*>& locUnusedWireBasedTracks)
const;
71 void Get_UnusedTrackCandidates(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DTrackCandidate*>& locUnusedTrackCandidates)
const;
73 void Get_UnusedNeutralShowers(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DNeutralShower*>& locUnusedNeutralShowers)
const;
74 void Get_UnusedNeutralParticles(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo, vector<const DNeutralParticle*>& locUnusedNeutralParticles)
const;
76 void Get_ThrownParticleSteps(JEventLoop* locEventLoop, deque<pair<
const DMCThrown*, deque<const DMCThrown*> > >& locThrownSteps)
const;
77 bool Are_ThrownPIDsSameAsDesired(JEventLoop* locEventLoop,
const deque<Particle_t>& locDesiredPIDs,
Particle_t locMissingPID =
Unknown)
const;
106 jerror_t Calc_DOCA(
double q1,
double q2,
115 DLorentzVector Calc_MissingP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo, set<pair<const JObject*, unsigned int> >& locSourceObjects,
bool locUseKinFitDataFlag)
const;
116 DLorentzVector Calc_MissingP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex,
int locUpToStepIndex, set<size_t> locUpThroughIndices,
bool locUseKinFitDataFlag)
const;
117 DLorentzVector Calc_MissingP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex,
int locUpToStepIndex, set<size_t> locUpThroughIndices, set<pair<const JObject*, unsigned int> >& locSourceObjects,
bool locUseKinFitDataFlag)
const;
119 DLorentzVector Calc_FinalStateP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex, set<pair<const JObject*, unsigned int> >& locSourceObjects,
bool locUseKinFitDataFlag)
const;
120 DLorentzVector Calc_FinalStateP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex, set<size_t> locToIncludeIndices,
bool locUseKinFitDataFlag)
const;
121 DLorentzVector Calc_FinalStateP4(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex, set<size_t> locToIncludeIndices, set<pair<const JObject*, unsigned int> >& locSourceObjects,
bool locUseKinFitDataFlag)
const;
123 double Calc_Energy_UnusedShowers(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo)
const;
124 int Calc_Momentum_UnusedTracks(JEventLoop* locEventLoop,
const DParticleCombo* locParticleCombo,
double &locSumPMag_UnusedTracks, TVector3 &locSumP3_UnusedTracks)
const;
127 TMatrixFSym Calc_MissingP3Covariance(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo)
const;
128 TMatrixFSym Calc_MissingP3Covariance(
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
size_t locStepIndex,
int locUpToStepIndex, set<size_t> locUpThroughIndices)
const;
130 double Calc_CrudeTime(
const vector<const DKinematicData*>& locParticles,
const DVector3& locCommonVertex)
const;
131 double Calc_CrudeTime(
const vector<DKinFitParticle*>& locParticles,
const DVector3& locCommonVertex)
const;
132 DVector3 Calc_CrudeVertex(
const vector<const DKinematicData*>& locParticles)
const;
133 DVector3 Calc_CrudeVertex(
const vector<shared_ptr<DKinFitParticle>>& locParticles)
const;
134 DVector3 Calc_CrudeVertex(
const vector<const DChargedTrackHypothesis*>& locParticles)
const;
135 DVector3 Calc_CrudeVertex(
const vector<const DTrackTimeBased*>& locParticles)
const;
137 set<set<size_t> > Build_IndexCombos(
const DReactionStep* locReactionStep, deque<Particle_t> locToIncludePIDs)
const;
140 bool Get_IsBFieldNearBeamline(
void)
const;
142 double Propagate_Track(
int locCharge,
const DVector3& locPropagateToPoint,
DLorentzVector& locMeasuredX4,
DLorentzVector& locMeasuredP4, TMatrixFSym* locCovarianceMatrix)
const;
144 double Calc_PathLength_FineGrained(
int locCharge,
const DVector3& locPropagateToPoint,
DVector3 locMeasuredPosition,
DVector3 locMeasuredMomentum)
const;
145 void Propagate_Track(
double locDeltaPathLength,
int locCharge,
DLorentzVector& locX4,
DLorentzVector& locP4, TMatrixFSym* locCovarianceMatrix)
const;
149 bool Handle_Decursion(
int& locParticleIndex, deque<size_t>& locComboDeque, deque<int>& locResumeAtIndices, deque<deque<size_t> >& locPossibilities)
const;
154 double dMinDistanceForStraightTrack = 2.0;
168 if(dMagneticFieldMap == NULL)
171 return (dynamic_cast<const DMagneticFieldMapNoField*>(dMagneticFieldMap) == NULL);
176 if(!Get_IsBFieldNearBeamline())
179 double locBx, locBy, locBz;
180 dMagneticFieldMap->GetField(locPosition.X(), locPosition.Y(), locPosition.Z(), locBx, locBy, locBz);
181 return (
DVector3(locBx, locBy, locBz));
184 #endif // _DAnalysisUtilities_
bool Get_IsBFieldNearBeamline(void) const
string dShowerSelectionTag
TLorentzVector DLorentzVector
DVector3 Get_BField(const DVector3 &locPosition) const
string dTrackSelectionTag