23 #ifndef genfit_AbsTrackRep_h
24 #define genfit_AbsTrackRep_h
34 #include <TMatrixDSym.h>
53 class MeasuredStateOnPlane;
90 bool stopAtBoundary =
false,
91 bool calcJacobianNoise =
false)
const = 0;
103 const TVector3& linePoint,
104 const TVector3& lineDirection,
105 bool stopAtBoundary =
false,
106 bool calcJacobianNoise =
false)
const = 0;
121 const TVector3& point1,
122 const TVector3& point2,
125 TVector3& poca_onwire,
126 bool stopAtBoundary =
false,
127 bool calcJacobianNoise =
false)
const {
128 TVector3 wireDir(point2 - point1);
130 double retval = this->
extrapolateToLine(state, point1, wireDir, stopAtBoundary, calcJacobianNoise);
131 poca = this->
getPos(state);
132 dirInPoca = this->
getMom(state);
135 poca_onwire = point1 + wireDir*((poca - point1)*wireDir);
150 const TVector3&
point,
151 bool stopAtBoundary =
false,
152 bool calcJacobianNoise =
false)
const = 0;
164 const TVector3&
point,
165 const TMatrixDSym& G,
166 bool stopAtBoundary =
false,
167 bool calcJacobianNoise =
false)
const = 0;
180 const TVector3& linePoint = TVector3(0.,0.,0.),
181 const TVector3& lineDirection = TVector3(0.,0.,1.),
182 bool stopAtBoundary =
false,
183 bool calcJacobianNoise =
false)
const = 0;
196 const TVector3&
point = TVector3(0.,0.,0.),
197 bool stopAtBoundary =
false,
198 bool calcJacobianNoise =
false)
const = 0;
211 bool stopAtBoundary =
false,
212 bool calcJacobianNoise =
false)
const = 0;
217 bool stopAtBoundary =
false,
218 bool calcJacobianNoise =
false)
const;
221 virtual unsigned int getDim()
const = 0;
281 virtual std::vector<genfit::MatStep>
getSteps()
const = 0;
337 virtual void Print(
const Option_t* =
"")
const;
362 #endif // genfit_AbsTrackRep_h
virtual void setTime(StateOnPlane &state, double time) const =0
Set time at which the state was defined.
int getPDG() const
Get the pdg code.
boost::shared_ptr< genfit::DetPlane > SharedPlanePtr
Shared Pointer to a DetPlane.
double extrapolateToMeasurement(StateOnPlane &state, const AbsMeasurement *measurement, bool stopAtBoundary=false, bool calcJacobianNoise=false) const
extrapolate to an AbsMeasurement
virtual std::vector< genfit::MatStep > getSteps() const =0
Get stepsizes and material properties of crossed materials of the last extrapolation.
virtual void Print(const Option_t *="") const
virtual double extrapolateToLine(StateOnPlane &state, const TVector3 &point1, const TVector3 &point2, TVector3 &poca, TVector3 &dirInPoca, TVector3 &poca_onwire, bool stopAtBoundary=false, bool calcJacobianNoise=false) const
Resembles the interface of GFAbsTrackRep in old versions of genfit.
virtual double extrapolateToSphere(StateOnPlane &state, double radius, const TVector3 &point=TVector3(0., 0., 0.), bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state to the sphere surface, and returns the extrapolation length and...
virtual unsigned int getDim() const =0
Get the dimension of the state vector used by the track representation.
Simple struct containing MaterialProperties and stepsize in the material.
virtual bool isSameType(const AbsTrackRep *other)=0
check if other is of same type (e.g. RKTrackRep).
virtual TVectorD get6DState(const StateOnPlane &state) const
Get the 6D state vector (x, y, z, p_x, p_y, p_z).
void setPropDir(int dir)
Set propagation direction. (-1, 0, 1) -> (backward, auto, forward).
virtual double getMomMag(const StateOnPlane &state) const =0
get the magnitude of the momentum in GeV.
Abstract base class for a track representation.
virtual double getQop(const StateOnPlane &state) const =0
Get charge over momentum.
virtual void get6DStateCov(const MeasuredStateOnPlane &state, TVectorD &stateVec, TMatrixDSym &cov) const
Translates MeasuredStateOnPlane into 6D state vector (x, y, z, p_x, p_y, p_z) and 6x6 covariance...
void switchPropDir()
Switch propagation direction. Has no effect if propDir_ is set to 0.
StateOnPlane with additional covariance matrix.
Material properties needed e.g. for material effects calculation.
void getPosDir(const StateOnPlane &state, TVector3 &pos, TVector3 &dir) const
Get cartesian position and direction vector of a state.
virtual void getPosMomCov(const MeasuredStateOnPlane &state, TVector3 &pos, TVector3 &mom, TMatrixDSym &cov) const =0
Translates MeasuredStateOnPlane into 3D position, momentum and 6x6 covariance.
virtual void setDebugLvl(unsigned int lvl=1)
MaterialProperties materialProperties_
virtual bool isSame(const AbsTrackRep *other)=0
check if other is of same type (e.g. RKTrackRep) and has same pdg code.
void calcJacobianNumerically(const genfit::StateOnPlane &origState, const genfit::SharedPlanePtr destPlane, TMatrixD &jacobian) const
Calculate Jacobian of transportation numerically. Slow but accurate. Can be used to validate (semi)an...
virtual double getTime(const StateOnPlane &) const =0
Get the time corresponding to the StateOnPlane. Extrapolation.
AbsTrackRep & operator=(const AbsTrackRep &)
protect from calling assignment operator from outside the class. Use clone() instead! ...
bool switchPDGSign()
try to multiply pdg code with -1. (Switch from particle to anti-particle and vice versa)...
virtual double extrapolateToCylinder(StateOnPlane &state, double radius, const TVector3 &linePoint=TVector3(0., 0., 0.), const TVector3 &lineDirection=TVector3(0., 0., 1.), bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state to the cylinder surface, and returns the extrapolation length and...
virtual double getRadiationLenght() const =0
Get the accumulated X/X0 (path / radiation length) of the material crossed in the last extrapolation...
double getPDGCharge() const
Get the charge of the particle of the pdg code.
char propDir_
propagation direction (-1, 0, 1) -> (backward, auto, forward)
virtual void setChargeSign(StateOnPlane &state, double charge) const =0
Set the sign of the charge according to charge.
A state with arbitrary dimension defined in a DetPlane.
virtual void setPosMomErr(MeasuredStateOnPlane &state, const TVector3 &pos, const TVector3 &mom, const TVector3 &posErr, const TVector3 &momErr) const =0
Set position and momentum and error of state.
virtual AbsTrackRep * clone() const =0
Clone the trackRep.
char getPropDir() const
Get propagation direction. (-1, 0, 1) -> (backward, auto, forward).
virtual double getCharge(const StateOnPlane &state) const =0
Get the (fitted) charge of a state. This is not always equal the pdg charge (e.g. if the charge sign ...
virtual double extrapolateBy(StateOnPlane &state, double step, bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state by step (cm) and returns the extrapolation length and, via reference...
virtual void setPosMomCov(MeasuredStateOnPlane &state, const TVector3 &pos, const TVector3 &mom, const TMatrixDSym &cov6x6) const =0
Set position, momentum and covariance of state.
virtual TVector3 getPos(const StateOnPlane &state) const =0
Get the cartesian position of a state.
virtual void getForwardJacobianAndNoise(TMatrixD &jacobian, TMatrixDSym &noise, TVectorD &deltaState) const =0
Get the jacobian and noise matrix of the last extrapolation.
virtual TVector3 getMom(const StateOnPlane &state) const =0
Get the cartesian momentum vector of a state.
virtual void getPosMom(const StateOnPlane &state, TVector3 &pos, TVector3 &mom) const =0
Get cartesian position and momentum vector of a state.
virtual void getBackwardJacobianAndNoise(TMatrixD &jacobian, TMatrixDSym &noise, TVectorD &deltaState) const =0
Get the jacobian and noise matrix of the last extrapolation if it would have been done in opposite di...
int pdgCode_
Particle code.
Contains the measurement and covariance in raw detector coordinates.
double getMass(const StateOnPlane &state) const
Get tha particle mass in GeV/c^2.
virtual double extrapolateToLine(StateOnPlane &state, const TVector3 &linePoint, const TVector3 &lineDirection, bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state to the POCA to a line, and returns the extrapolation length and...
virtual double getMomVar(const MeasuredStateOnPlane &state) const =0
get the variance of the absolute value of the momentum .
virtual double extrapolateToPoint(StateOnPlane &state, const TVector3 &point, bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state to the POCA to a point, and returns the extrapolation length and...
virtual TMatrixDSym get6DCov(const MeasuredStateOnPlane &state) const =0
Get the 6D covariance.
virtual double extrapolateToPlane(StateOnPlane &state, const genfit::SharedPlanePtr &plane, bool stopAtBoundary=false, bool calcJacobianNoise=false) const =0
Extrapolates the state to plane, and returns the extrapolation length and, via reference, the extrapolated state.
virtual void setQop(StateOnPlane &state, double qop) const =0
Set charge/momentum.
TVector3 getDir(const StateOnPlane &state) const
Get the direction vector of a state.
TMatrixT< double > TMatrixD
virtual void setPosMom(StateOnPlane &state, const TVector3 &pos, const TVector3 &mom) const =0
Set position and momentum of state.