1 #ifndef _DKinFitUtils_GlueX_
2 #define _DKinFitUtils_GlueX_
10 #include "TMatrixFSym.h"
11 #include "TLorentzVector.h"
49 void Reset_NewEvent(
void);
59 shared_ptr<DKinFitParticle> Make_BeamParticle(
const DBeamPhoton* locBeamPhoton);
60 shared_ptr<DKinFitParticle> Make_BeamParticle(
const DBeamPhoton* locBeamPhoton,
const DEventRFBunch* locEventRFBunch);
61 shared_ptr<DKinFitParticle> Make_DetectedParticle(
const DKinematicData* locKinematicData);
65 shared_ptr<DKinFitParticle> Make_TargetParticle(
Particle_t locPID,
size_t locInstance = 0);
66 shared_ptr<DKinFitParticle> Make_DecayingParticle(
Particle_t locPID,
const set<shared_ptr<DKinFitParticle>>& locFromInitialState,
const set<shared_ptr<DKinFitParticle>>& locFromFinalState);
67 shared_ptr<DKinFitParticle> Make_MissingParticle(
Particle_t locPID);
71 const JObject* Get_SourceJObject(
const shared_ptr<DKinFitParticle>& locInputKinFitParticle)
const;
80 set<shared_ptr<DKinFitConstraint>> Create_Constraints(
const DReactionVertexInfo* locReactionVertexInfo,
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
const shared_ptr<const DKinFitChain>& locKinFitChain,
DKinFitType locKinFitType, vector<shared_ptr<DKinFitConstraint_Vertex>>& locSortedVertexConstraints);
84 tuple<size_t, size_t, string> Predict_VertexConstraints(
const DReactionVertexInfo* locReactionVertexInfo,
bool locSpacetimeFitFlag)
const;
85 string Get_ConstraintInfo(
const DReactionVertexInfo* locReactionVertexInfo,
const DReaction* locReaction,
size_t& locNumConstraints,
size_t& locNumUnknowns)
const;
91 inline TVector3 Make_TVector3(
DVector3 locDVector3)
const;
92 inline TLorentzVector Make_TLorentzVector(
DLorentzVector locDLorentzVector)
const;
96 bool Get_IncludeBeamlineInVertexFitFlag(
void)
const;
97 TVector3 Get_BField(
const TVector3& locPosition)
const;
98 bool Get_IsBFieldNearBeamline(
void)
const;
107 shared_ptr<DKinFitChainStep> Make_KinFitChainStep(
const DReactionVertexInfo* locReactionVertexInfo,
const DReaction* locReaction,
const DParticleCombo* locParticleCombo,
DKinFitType locKinFitType,
size_t locStepIndex,
const shared_ptr<DKinFitChain>& locKinFitChain);
108 pair<set<shared_ptr<DKinFitParticle>>, set<shared_ptr<DKinFitParticle>>> Get_StepParticles_NonNull(
const shared_ptr<const DKinFitChain>& locKinFitChain,
const DReaction* locReaction,
size_t locStepIndex,
int locNonFixedMassParticleIndex = -99)
const;
109 set<shared_ptr<DKinFitParticle>> Build_ParticleSet(
const vector<pair<int, int>>& locParticleIndices,
const shared_ptr<const DKinFitChain>& locKinFitChain);
121 dPID(locPID), dFromInitialState(locFromInitialState), dFromFinalState(locFromFinalState) {}
166 return TVector3(locDVector3.X(), locDVector3.Y(), locDVector3.Z());
171 return TLorentzVector(locDLorentzVector.X(), locDLorentzVector.Y(), locDLorentzVector.Z(), locDLorentzVector.T());
176 DKinFitParticleType locKinFitParticleType = locInputKinFitParticle->Get_KinFitParticleType();
180 auto locIterator = dParticleMap_InputToSource_JObject.find(locInputKinFitParticle);
181 return ((locIterator != dParticleMap_InputToSource_JObject.end()) ? locIterator->second : NULL);
186 if(dPID < locDecayingParticleInfo.
dPID)
188 else if(dPID > locDecayingParticleInfo.
dPID)
199 #endif // _DKinFitUtils_GlueX_
const DAnalysisUtilities * dAnalysisUtilities
bool operator<(const DSourceComboUse &lhs, const DSourceComboUse &rhs)
map< pair< const DBeamPhoton *, const DEventRFBunch * >, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_Beam
bool dWillBeamHaveErrorsFlag
map< Particle_t, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_Missing
shared_ptr< DKinFitParticle > Make_DetectedParticle(int locPID, int locCharge, double locMass, TLorentzVector locSpacetimeVertex, TVector3 locMomentum, double locPathLength, const shared_ptr< const TMatrixFSym > &locCovarianceMatrix)
string Build_VertexConstraintString(const DReactionStepVertexInfo *locVertexInfo, bool locSpacetimeFitFlag)
TLorentzVector Make_TLorentzVector(DLorentzVector locDLorentzVector) const
TLorentzVector DLorentzVector
set< shared_ptr< DKinFitParticle > > dFromInitialState
TVector3 Make_TVector3(DVector3 locDVector3) const
DDecayingParticleInfo(Particle_t locPID, const set< shared_ptr< DKinFitParticle >> &locFromInitialState, const set< shared_ptr< DKinFitParticle >> &locFromFinalState)
map< DDecayingParticleInfo, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_Decaying
DApplication * dApplication
map< shared_ptr< DKinFitParticle >, DDecayingParticleInfo > dParticleMap_InputToSource_Decaying
map< pair< const DNeutralShower *, Particle_t >, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_Shower
bool dIncludeBeamlineInVertexFitFlag
set< shared_ptr< DKinFitParticle > > dFromFinalState
void Set_IncludeBeamlineInVertexFitFlag(bool locIncludeBeamlineInVertexFitFlag)
const JObject * Get_SourceJObject(const shared_ptr< DKinFitParticle > &locInputKinFitParticle) const
map< shared_ptr< DKinFitParticle >, const JObject * > dParticleMap_InputToSource_JObject
map< const DKinematicData *, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_DetectedParticle
const DMagneticFieldMap * dMagneticFieldMap
map< pair< Particle_t, size_t >, shared_ptr< DKinFitParticle > > dParticleMap_SourceToInput_Target
bool operator<(const DDecayingParticleInfo &locDecayingParticleInfo) const