1 #ifndef _DKinFitParticle_
2 #define _DKinFitParticle_
10 #include "TLorentzVector.h"
11 #include "TMatrixFSym.h"
63 void Print_ParticleParams(
void)
const;
69 void Set_Mass(
double locMass){dMass = locMass;}
71 void Set_Position(TVector3 locPosition){dSpacetimeVertex.SetVect(locPosition);}
72 void Set_Time(
double locTime){dSpacetimeVertex.SetT(locTime);}
76 void Set_CovarianceMatrix(
const shared_ptr<TMatrixFSym>& locCovarianceMatrix){dCovarianceMatrix = std::const_pointer_cast<
const TMatrixFSym>(locCovarianceMatrix);}
77 void Set_CovarianceMatrix(
const shared_ptr<const TMatrixFSym>& locCovarianceMatrix){dCovarianceMatrix = locCovarianceMatrix;}
84 void Set_CommonVertex(TVector3 locCommonVertex){dCommonSpacetimeVertex.SetVect(locCommonVertex);}
85 void Set_CommonTime(
double locCommonTime){dCommonSpacetimeVertex.SetT(locCommonTime);}
99 void Set_FromInitialState(
const set<shared_ptr<DKinFitParticle>>& locFromInitialState){dFromInitialState = locFromInitialState;}
100 void Set_FromFinalState(
const set<shared_ptr<DKinFitParticle>>& locFromFinalState){dFromFinalState = locFromFinalState;}
106 TLorentzVector
Get_P4(
void)
const{
return TLorentzVector(dMomentum, Get_Energy());}
110 double Get_Beta(
void)
const{
return dMomentum.Mag()/(Get_Energy());}
111 double Get_Time(
void)
const{
return dSpacetimeVertex.T();}
130 set<shared_ptr<DKinFitParticle>> Get_FromAllParticles(
void)
const;
141 int Get_CovMatrixEParamIndex(
void)
const{
return ((dCovarianceMatrix == NULL) ? -1 : ((dCovarianceMatrix->GetNcols() >= 7) ? -1 : 0));}
144 int Get_CovMatrixTParamIndex(
void)
const{
return ((dCovarianceMatrix == NULL) ? -1 : ((dCovarianceMatrix->GetNcols() >= 7) ? 6 : 4));}
205 dSpacetimeVertex.SetXYZT(0.0, 0.0, 0.0, 0.0);
206 dCommonSpacetimeVertex.SetXYZT(0.0, 0.0, 0.0, 0.0);
208 dMomentum.SetXYZ(0.0, 0.0, 0.0);
209 dCovarianceMatrix = NULL;
211 dPathLengthUncertainty = 0.0;
212 dRestFrameLifetime = 0.0;
213 dRestFrameLifetimeUncertainty = 0.0;
215 dVertexConstraintFlag = 0;
223 dCommonVxParamIndex = -1;
224 dCommonTParamIndex = -1;
226 dFromInitialState.clear();
227 dFromFinalState.clear();
229 dVertexP4AtProductionVertex =
false;
230 dIsNeutralShowerFlag =
false;
235 dCovarianceMatrix =
nullptr;
236 dFromInitialState.clear();
237 dFromFinalState.clear();
243 set<shared_ptr<DKinFitParticle>> locFromAllParticles;
246 for(
auto& locKinFitParticle : dFromInitialState)
248 locFromAllParticles.insert(locKinFitParticle);
251 auto locNewParticles = locKinFitParticle->Get_FromAllParticles();
252 locFromAllParticles.insert(locNewParticles.begin(), locNewParticles.end());
257 for(
auto& locKinFitParticle : dFromFinalState)
259 locFromAllParticles.insert(locKinFitParticle);
262 auto locNewParticles = locKinFitParticle->Get_FromAllParticles();
263 locFromAllParticles.insert(locNewParticles.begin(), locNewParticles.end());
267 return locFromAllParticles;
272 cout <<
"DKinFitParticle: Particle Type Enum, pointer: " << dKinFitParticleType <<
", " <<
this << endl;
274 cout <<
"DKinFitParticle: Particle PID, Q, Mass = " << dPID <<
", " << int(dCharge) <<
", " << dMass << endl;
275 cout <<
"DKinFitParticle: Particle P3, V3, T, path length = " << dMomentum.Px() <<
", " << dMomentum.Py() <<
", " << dMomentum.Pz() <<
", ";
276 cout << dSpacetimeVertex.X() <<
", " << dSpacetimeVertex.Y() <<
", " << dSpacetimeVertex.Z() <<
", " << dSpacetimeVertex.T() <<
", " << dPathLength << endl;
277 cout <<
"DKinFitParticle: Particle Common V3, Common T, ShowerE = " << dCommonSpacetimeVertex.X() <<
", " << dCommonSpacetimeVertex.Y();
278 cout <<
", " << dCommonSpacetimeVertex.Z() <<
", " << dCommonSpacetimeVertex.T() <<
", " << dShowerEnergy << endl;
280 cout <<
"DKinFitParticle: FitCommonVertexFlag, FitCommonTimeFlag, dVertexP4AtProductionVertex, dIsNeutralShowerFlag = ";
281 cout << Get_FitCommonVertexFlag() <<
", " << Get_FitCommonTimeFlag() <<
", " << dVertexP4AtProductionVertex <<
", " << dIsNeutralShowerFlag << endl;
282 if(dCovarianceMatrix != NULL)
284 cout <<
"DKinFitParticle: CovMatrix Diagonal Terms: ";
285 for(
int loc_i = 0; loc_i < dCovarianceMatrix->GetNcols(); ++loc_i)
286 cout << (*dCovarianceMatrix)(loc_i, loc_i) <<
", ";
290 cout <<
"DKinFitParticle: Particle E, Px, Vx, Common Vx, T, Common T indices = " << int(dEParamIndex) <<
", " << int(dPxParamIndex) <<
", ";
291 cout << int(dVxParamIndex) <<
", " << int(dCommonVxParamIndex) <<
", " << int(dTParamIndex) <<
", " << int(dCommonTParamIndex) << endl;
293 cout <<
"dFromInitialState size, PIDs: " << dFromInitialState.size();
294 for(
auto& locKinFitParticle : dFromInitialState)
295 cout <<
", " << locKinFitParticle->Get_PID();
298 cout <<
"dFromFinalState size, PIDs: " << dFromFinalState.size();
299 for(
auto& locKinFitParticle : dFromFinalState)
300 cout <<
", " << locKinFitParticle->Get_PID();
303 auto locFromAllParticles = Get_FromAllParticles();
304 cout <<
"FromAllButDecaying size, PIDs: " << locFromAllParticles.size();
305 for(
auto& locKinFitParticle : locFromAllParticles)
306 cout <<
", " << locKinFitParticle->Get_PID();
310 #endif // _DKinFitParticle_
bool Get_FitCommonVertexFlag(void) const
char Get_Charge(void) const
int Get_CovMatrixVxParamIndex(void) const
char Get_TParamIndex(void) const
char Get_CommonVxParamIndex(void) const
void Set_CommonTParamIndex(char locCommonTParamIndex)
set< shared_ptr< DKinFitParticle > > Get_FromInitialState(void) const
set< shared_ptr< DKinFitParticle > > Get_FromAllParticles(void) const
void Set_PathLength(double locPathLength)
double Get_RestFrameLifetimeUncertainty(void) const
void Set_VertexP4AtProductionVertex(bool locVertexP4AtProductionVertex)
void Set_Momentum(TVector3 locMomentum)
int Get_CovMatrixEParamIndex(void) const
void Set_PathLengthUncertainty(double locPathLengthUncertainty)
void Set_CommonSpacetimeVertex(TLorentzVector locCommonSpacetimeVertex)
double Get_Beta(void) const
double Get_Mass(void) const
int Get_CovMatrixTParamIndex(void) const
double Get_RestFrameLifetime(void) const
double Get_ShowerEnergy(void) const
void Set_PxParamIndex(char locPxParamIndex)
void Set_CovarianceMatrix(const shared_ptr< const TMatrixFSym > &locCovarianceMatrix)
void Set_ShowerEnergy(double locShowerEnergy)
void Set_RestFrameLifetime(double locRestFrameLifetime)
void Set_CovarianceMatrix(const shared_ptr< TMatrixFSym > &locCovarianceMatrix)
double dRestFrameLifetimeUncertainty
double Get_PathLengthUncertainty(void) const
unsigned char Get_VertexConstraintFlag(void) const
void Print_ParticleParams(void) const
void Set_Charge(char locCharge)
set< shared_ptr< DKinFitParticle > > dFromInitialState
void Set_CommonVxParamIndex(char locCommonVxParamIndex)
set< shared_ptr< DKinFitParticle > > Get_FromFinalState(void) const
char Get_PxParamIndex(void) const
void Set_Mass(double locMass)
void Set_CommonVertex(TVector3 locCommonVertex)
TLorentzVector Get_SpacetimeVertex(void) const
void Set_KinFitParticleType(DKinFitParticleType locKinFitParticleType)
TLorentzVector dCommonSpacetimeVertex
bool Get_IsNeutralShowerFlag(void) const
TLorentzVector dSpacetimeVertex
double dRestFrameLifetime
bool Get_FitCommonTimeFlag(void) const
double Get_PathLength(void) const
void Set_FromInitialState(const set< shared_ptr< DKinFitParticle >> &locFromInitialState)
set< shared_ptr< DKinFitParticle > > dFromFinalState
char Get_EParamIndex(void) const
char Get_VxParamIndex(void) const
void Set_RestFrameLifetimeUncertainty(double locRestFrameLifetimeUncertainty)
shared_ptr< const TMatrixFSym > Get_CovarianceMatrix(void) const
void Set_Position(TVector3 locPosition)
double Get_CommonTime(void) const
char Get_CommonTParamIndex(void) const
void Set_VertexConstraintFlag(unsigned char locVertexConstraintFlag)
void Set_VxParamIndex(char locVxParamIndex)
void Set_SpacetimeVertex(TLorentzVector locSpacetimeVertex)
DKinFitParticleType Get_KinFitParticleType(void) const
DKinFitParticleType dKinFitParticleType
bool dVertexP4AtProductionVertex
shared_ptr< const TMatrixFSym > dCovarianceMatrix
void Set_TParamIndex(char locTParamIndex)
TVector3 Get_Position(void) const
void Set_CommonTime(double locCommonTime)
void Set_FromFinalState(const set< shared_ptr< DKinFitParticle >> &locFromFinalState)
double dPathLengthUncertainty
unsigned char dVertexConstraintFlag
double Get_Time(void) const
TVector3 Get_CommonVertex(void) const
void Set_EParamIndex(char locEParamIndex)
int Get_CovMatrixPxParamIndex(void) const
TLorentzVector Get_P4(void) const
void Set_IsNeutralShowerFlag(bool locIsNeutralShowerFlag)
bool dIsNeutralShowerFlag
double Get_Energy(void) const
TVector3 Get_Momentum(void) const
bool Get_VertexP4AtProductionVertex(void) const
TLorentzVector Get_CommonSpacetimeVertex(void) const
void Set_Time(double locTime)