8 #ifndef _DReferenceTrajectory_
9 #define _DReferenceTrajectory_
14 #include <TMatrixFSym.h>
20 #include <JANA/jerror.h>
94 double *t=NULL,
double *var_t=NULL,
110 double q,
double smax=2000.0,
130 double &doca,
double &var_doca)
const;
135 DVector3 &commonpos,
double &doca,
double &var_doca)
const;
154 inline double dPdx_from_A_Z_rho(
double ptot,
double A,
double Z,
double density)
const;
155 inline double dPdx(
double ptot,
double KrhoZ_overA,
double rhoZ_overA,
double LogI)
const;
174 double &var_doca,
double &vertex_chi2,
175 bool DoFitVertex=
false)
const;
179 TMatrixFSym &C)
const;
188 const TMatrixFSym &cov1,
189 const TMatrixFSym &cov2,
191 double q1=1.,
double q2=1.)
const;
236 #endif // _DReferenceTrajectory_
int InsertSteps(const swim_step_t *start_step, double delta_s, double step_size=0.02)
jerror_t BrentsAlgorithm(DVector3 &pos1, DVector3 &mom1, DVector3 &pos2, DVector3 &mom2, double ds, double q2, double &doca) const
double Straw_dx(const DCoordinateSystem *wire, double radius) const
bool GetCheckMaterialBoundaries(void) const
double zmax_track_boundary
double GetBoundaryStepFraction(void) const
void FastSwim(const DVector3 &pos, const DVector3 &mom, double q, double smax=2000.0, double zmin=-100., double zmax=1000.0)
void CopyWithShift(const DReferenceTrajectory *rt, DVector3 shift)
const swim_step_t * GetLastSwimStep(void) const
virtual const char * className(void)
void SetDebugLevel(int new_level)
const DMagneticFieldMap * bfield
bool check_material_boundaries
DVector3 GetLastDOCAPoint(void) const
void SetMass(double mass)
swim_step_t * FindPlaneCrossing(const DVector3 &origin, DVector3 norm, int first_i=0, DetectorSystem_t detector=SYS_NULL) const
void Swim(const DVector3 &pos, const DVector3 &mom, double q=-1000.0, const TMatrixFSym *cov=NULL, double smax=2000.0, const DCoordinateSystem *wire=NULL)
double dPdx(double ptot, double KrhoZ_overA, double rhoZ_overA, double LogI) const
void SetZminTrackingBoundary(double zmin)
bool GetHitCDCEndplate(void) const
double GetLastDistAlongWire(void) const
double GetZmaxTrackingBoundary(void)
jerror_t IntersectTracks(const DReferenceTrajectory *rt2, DKinematicData *track1_kd, DKinematicData *track2_kd, DVector3 &pos, double &doca, double &var_doca, double &vertex_chi2, bool DoFitVertex=false) const
void SetDGeometry(const DGeometry *geom)
const DGeometry * GetDGeometry(void) const
swim_step_t * FindClosestSwimStep(const DCoordinateSystem *wire, int *istep_ptr=NULL) const
double GetStepSize(void) const
static thread_local shared_ptr< DResourcePool< TMatrixFSym > > dResourcePool_TMatrixFSym
double GetMaxStepSize(void) const
direction_t ploss_direction
void FastSwimForHitSelection(const DVector3 &pos, const DVector3 &mom, double q)
double DistToRT(double x, double y, double z) const
void SetCheckMaterialBoundaries(bool check_material_boundaries)
double DistToRTBruteForce(const DCoordinateSystem *wire, double *s=NULL) const
double DistToRTwithTime(DVector3 hit, double *s=NULL, double *t=NULL, double *var_t=NULL, DetectorSystem_t detector=SYS_NULL) const
virtual ~DReferenceTrajectory()
jerror_t FindPOCAtoPoint(const DVector3 &point, const DMatrixDSym *covpoint, DKinematicData *track_kd, double &doca, double &var_doca) const
direction_t GetPLossDirection(void) const
void Dump(double zmin=-1000.0, double zmax=1000.0)
double GetMass(void) const
double BOUNDARY_STEP_FRACTION
void SetDRootGeom(const DRootGeom *RootGeom)
const DMagneticFieldMap * GetBfield(void) const
double dPdx_from_A_Z_rho(double ptot, double A, double Z, double density) const
double zmin_track_boundary
void SetZmaxTrackingBoundary(double zmax)
<A href="index.html#legend"> <IMG src="CORE.png" width="100"> </A>
void FitVertex(const DVector3 &pos1, const DVector3 &mom1, const DVector3 &pos2, const DVector3 &mom2, const TMatrixFSym &cov1, const TMatrixFSym &cov2, DVector3 &pos, double &vertex_chi2, double q1=1., double q2=1.) const
jerror_t GetIntersectionWithRadius(double R, DVector3 &mypos, double *s=NULL, double *t=NULL, DVector3 *dir=NULL) const
DReferenceTrajectory & operator=(const DReferenceTrajectory &rt)
const swim_step_t * last_swim_step
last swim step used in DistToRT
double last_phi
last phi found in DistToRT
static const char * static_className(void)
double last_dist_along_wire
direction_t
This class is a utility class used by the TRACKING package. It is used to swim a particle through the...
const DRootGeom * GetDRootGeom(void) const
double GetMinStepSize(void) const
jerror_t FindPOCAtoLine(const DVector3 &origin, const DVector3 &dir, const DMatrixDSym *covpoint, DKinematicData *track_kd, DVector3 &commonpos, double &doca, double &var_doca) const
void SetPLossDirection(direction_t direction)
const DRootGeom * RootGeom
double GetZminTrackingBoundary(void)
void SetStepSize(double step_size)
jerror_t GetIntersectionWithPlane(const DVector3 &origin, const DVector3 &norm, DVector3 &pos, double *s=NULL, double *t=NULL, double *var_t=NULL, DetectorSystem_t detector=SYS_NULL) const
jerror_t PropagateCovariance(double ds, double q, double mass_sq, const DVector3 &mom, const DVector3 &pos, const DVector3 &B, TMatrixFSym &C) const