10 #include "TLorentzVector.h"
11 #include "TMatrixFSym.h"
55 shared_ptr<DKinFitParticle> Get_InputKinFitParticle(
const shared_ptr<DKinFitParticle>& locKinFitParticle)
const;
60 shared_ptr<DKinFitParticle> Make_BeamParticle(
int locPID,
int locCharge,
double locMass, TLorentzVector locSpacetimeVertex, TVector3 locMomentum,
const shared_ptr<const TMatrixFSym>& locCovarianceMatrix);
61 shared_ptr<DKinFitParticle> Make_TargetParticle(
int locPID,
int locCharge,
double locMass);
64 shared_ptr<DKinFitParticle> Make_DetectedParticle(
int locPID,
int locCharge,
double locMass, TLorentzVector locSpacetimeVertex, TVector3 locMomentum,
double locPathLength,
const shared_ptr<const TMatrixFSym>& locCovarianceMatrix);
65 shared_ptr<DKinFitParticle> Make_DetectedShower(
int locPID,
double locMass, TLorentzVector locSpacetimeVertex,
double locShowerEnergy,
const shared_ptr<const TMatrixFSym>& locCovarianceMatrix);
67 shared_ptr<DKinFitParticle> Make_MissingParticle(
int locPID,
int locCharge,
double locMass);
68 shared_ptr<DKinFitParticle> Make_DecayingParticle(
int locPID,
int locCharge,
double locMass,
const set<shared_ptr<DKinFitParticle>>& locFromInitialState,
const set<shared_ptr<DKinFitParticle>>& locFromFinalState);
72 shared_ptr<DKinFitConstraint_Mass> Make_MassConstraint(
const shared_ptr<DKinFitParticle>& locDecayingParticle);
73 shared_ptr<DKinFitConstraint_P4> Make_P4Constraint(
const set<shared_ptr<DKinFitParticle>>& locInitialParticles,
const set<shared_ptr<DKinFitParticle>>& locFinalParticles);
74 shared_ptr<DKinFitConstraint_Vertex> Make_VertexConstraint(
const set<shared_ptr<DKinFitParticle>>& locFullConstrainParticles,
const set<shared_ptr<DKinFitParticle>>& locNoConstrainParticles, TVector3 locVertexGuess = TVector3());
75 shared_ptr<DKinFitConstraint_Spacetime> Make_SpacetimeConstraint(
const set<shared_ptr<DKinFitParticle>>& locFullConstrainParticles,
const set<shared_ptr<DKinFitParticle>>& locOnlyConstrainTimeParticles,
76 const set<shared_ptr<DKinFitParticle>>& locNoConstrainParticles, TLorentzVector locSpacetimeGuess = TLorentzVector());
78 virtual bool Validate_Constraints(
const set<shared_ptr<DKinFitConstraint>>& locKinFitConstraints)
const;
84 TLorentzVector Calc_DecayingP4_ByPosition(
const DKinFitParticle* locKinFitParticle,
bool locAtPositionFlag,
bool locDontPropagateAtAllFlag =
false)
const;
88 TLorentzVector Calc_DecayingP4_ByP3Derived(
const DKinFitParticle* locKinFitParticle,
bool locAtP3DerivedFlag,
bool locDontPropagateAtAllFlag =
false)
const;
91 TLorentzVector Calc_DecayingP4_ByVertex(
const DKinFitParticle* locKinFitParticle,
bool locAtProductionVertexFlag,
bool locDontPropagateAtAllFlag =
false)
const;
93 bool Propagate_TrackInfoToCommonVertex(
const DKinFitParticle* locKinFitParticle,
const TMatrixDSym* locVXi, TVector3& locMomentum, TLorentzVector& locSpacetimeVertex, pair<double, double>& locPathLengthPair, pair<double, double>& locRestFrameLifetimePair, TMatrixFSym* locCovarianceMatrix)
const;
98 shared_ptr<const DKinFitChain> Build_OutputKinFitChain(
const shared_ptr<const DKinFitChain>& locInputKinFitChain, set<shared_ptr<DKinFitParticle>>& locKinFitOutputParticles);
102 void Print_Matrix(
const TMatrixD& locMatrix)
const;
103 void Print_Matrix(
const TMatrixF& locMatrix)
const;
109 virtual bool Get_IncludeBeamlineInVertexFitFlag(
void)
const = 0;
112 virtual TVector3 Get_BField(
const TVector3& locPosition)
const = 0;
113 virtual bool Get_IsBFieldNearBeamline(
void)
const = 0;
117 shared_ptr<TMatrixFSym> Get_SymMatrixResource(
unsigned int locNumMatrixRows);
122 shared_ptr<DKinFitConstraint_P4> Clone_KinFitConstraint_P4(
const DKinFitConstraint_P4* locConstraint);
123 shared_ptr<DKinFitConstraint_Mass> Clone_KinFitConstraint_Mass(
const DKinFitConstraint_Mass* locConstraint);
127 shared_ptr<TMatrixFSym> Clone_SymMatrix(
const TMatrixFSym* locMatrix);
137 bool Get_IsDecayingParticleDefinedByProducts(
const DKinFitParticle* locKinFitParticle)
const;
151 shared_ptr<DKinFitParticle> Clone_KinFitParticle(
const shared_ptr<DKinFitParticle>& locKinFitParticle);
152 set<shared_ptr<DKinFitParticle>> Build_CloneParticleSet(
const set<shared_ptr<DKinFitParticle>>& locInputParticles,
const map<shared_ptr<DKinFitParticle>, shared_ptr<DKinFitParticle>>& locCloneIOMap)
const;
153 set<shared_ptr<DKinFitConstraint>> Clone_ParticlesAndConstraints(
const set<shared_ptr<DKinFitConstraint>>& locInputConstraints);
158 TLorentzVector Calc_DecayingP4(
const DKinFitParticle* locKinFitParticle,
bool locIsConstrainedParticle,
double locStateSignMultiplier,
bool locDontPropagateAtAllFlag =
false)
const;
160 bool Calc_PathLength(
const DKinFitParticle* locKinFitParticle,
const TMatrixDSym* locVXi,
const TMatrixFSym* locCovarianceMatrix, pair<double, double>& locPathLengthPair, pair<double, double>& locRestFrameLifetimePair)
const;
161 void Calc_DecayingParticleJacobian(
const DKinFitParticle* locKinFitParticle,
bool locDontPropagateDecayingP3Flag,
double locStateSignMultiplier,
int locNumEta,
const map<const DKinFitParticle*, int>& locAdditionalPxParamIndices, TMatrixD& locJacobian)
const;
173 DSpacetimeParticles(
const set<shared_ptr<DKinFitParticle>>& locFullConstrainParticles,
const set<shared_ptr<DKinFitParticle>>& locOnlyConstrainTimeParticles,
const set<shared_ptr<DKinFitParticle>>& locNoConstrainParticles) :
174 dFullConstrainParticles(locFullConstrainParticles), dOnlyConstrainTimeParticles(locOnlyConstrainTimeParticles), dNoConstrainParticles(locNoConstrainParticles) {}
188 map<pair<set<shared_ptr<DKinFitParticle>>, set<shared_ptr<DKinFitParticle>> >, shared_ptr<DKinFitConstraint_P4>>
dP4ConstraintMap;
189 map<pair<set<shared_ptr<DKinFitParticle>>, set<shared_ptr<DKinFitParticle>> >, shared_ptr<DKinFitConstraint_Vertex>>
dVertexConstraintMap;
205 auto locIterator = dParticleMap_OutputToInput.find(locOutputKinFitParticle);
206 return (locIterator != dParticleMap_OutputToInput.end() ? locIterator->second : NULL);
224 #endif // _DKinFitUtils_
void Reset_NewEvent(void)
void Set_UpdateCovarianceMatricesFlag(bool locUpdateCovarianceMatricesFlag)
bool Get_DebugLevel(void) const
bool operator<(const DSourceComboUse &lhs, const DSourceComboUse &rhs)
DSpacetimeParticles(const set< shared_ptr< DKinFitParticle >> &locFullConstrainParticles, const set< shared_ptr< DKinFitParticle >> &locOnlyConstrainTimeParticles, const set< shared_ptr< DKinFitParticle >> &locNoConstrainParticles)
map< DSpacetimeParticles, shared_ptr< DKinFitConstraint_Spacetime > > dSpacetimeConstraintMap
shared_ptr< DResourcePool< DKinFitConstraint_Spacetime > > dResourcePool_SpacetimeConstraint
set< shared_ptr< DKinFitParticle > > dFullConstrainParticles
bool dUpdateCovarianceMatricesFlag
set< shared_ptr< DKinFitParticle > > dOnlyConstrainTimeParticles
void Recycle_LastFitMemory(void)
map< pair< set< shared_ptr< DKinFitParticle > >, set< shared_ptr< DKinFitParticle > > >, shared_ptr< DKinFitConstraint_P4 > > dP4ConstraintMap
shared_ptr< DResourcePool< DKinFitConstraint_P4 > > dResourcePool_P4Constraint
shared_ptr< DResourcePool< DKinFitChain > > dResourcePool_KinFitChain
map< shared_ptr< DKinFitParticle >, shared_ptr< DKinFitConstraint_Mass > > dMassConstraintMap
bool operator<(const DSpacetimeParticles &locSpacetimeParticles) const
virtual ~DKinFitUtils(void)
bool Get_LinkVerticesFlag(void) const
virtual void Reset_NewFit(void)
bool Get_UpdateCovarianceMatricesFlag(void) const
shared_ptr< DResourcePool< DKinFitParticle > > dResourcePool_KinFitParticle
map< shared_ptr< DKinFitParticle >, shared_ptr< DKinFitParticle > > dParticleMap_OutputToInput
void Set_LinkVerticesFlag(bool locLinkVerticesFlag)
set< shared_ptr< DKinFitParticle > > dNoConstrainParticles
map< pair< set< shared_ptr< DKinFitParticle > >, set< shared_ptr< DKinFitParticle > > >, shared_ptr< DKinFitConstraint_Vertex > > dVertexConstraintMap
shared_ptr< DKinFitParticle > Get_InputKinFitParticle(const shared_ptr< DKinFitParticle > &locKinFitParticle) const
shared_ptr< DResourcePool< TMatrixFSym > > dResourcePool_TMatrixFSym
shared_ptr< DResourcePool< DKinFitConstraint_Mass > > dResourcePool_MassConstraint
shared_ptr< DResourcePool< DKinFitConstraint_Vertex > > dResourcePool_VertexConstraint
shared_ptr< DResourcePool< DKinFitChainStep > > dResourcePool_KinFitChainStep
void Set_DebugLevel(int locDebugLevel)