Hall-D Software  alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DTrackFitterRiemann Class Reference

#include <DTrackFitterRiemann.h>

+ Inheritance diagram for DTrackFitterRiemann:

Public Types

enum  fit_type_t { kWireBased, kTimeBased }
 
enum  fit_status_t { kFitNotDone, kFitSuccess, kFitFailed, kFitNoImprovement }
 

Public Member Functions

 DTrackFitterRiemann (JEventLoop *loop)
 
 ~DTrackFitterRiemann ()
 
string Name (void) const
 
fit_status_t FitTrack (void)
 
double ChiSq (fit_type_t fit_type, DReferenceTrajectory *rt, double *chisq_ptr=NULL, int *dof_ptr=NULL, vector< pull_t > *pulls_ptr=NULL)
 
jerror_t AddCDCHit (const DCDCTrackHit *cdchit)
 
jerror_t AddFDCHit (const DFDCPseudo *fdchit)
 
jerror_t AddHitXYZ (double x, double y, double z, double covx, double covy, double covxy)
 
jerror_t SetSeed (double my_q, const DVector3 &pos, const DVector3 &mom, double mass)
 
double GetProcessNoise (const DVector2 &XY, const double z)
 
jerror_t ComputeCRPhi ()
 
jerror_t ComputeCR ()
 
jerror_t ComputeCz ()
 
jerror_t GetAxialPosition (double &sperp, const DVector2 &XYold, DRiemannHit_t *hit)
 
jerror_t GetStereoPosition (double &sperp, DVector2 &XYold, DRiemannHit_t *hit)
 
double GetStereoZ (double dx, double dy, DRiemannHit_t *hit)
 
jerror_t GetFDCPosition (DRiemannHit_t *hit)
 
DVector2 GetHelicalPosition (double sperp)
 
jerror_t FitCircle ()
 
jerror_t FitLine ()
 
jerror_t GetCharge ()
 
jerror_t ComputeIntersections ()
 
double ChiSq ()
 
 JOBJECT_PUBLIC (DTrackFitter)
 
void Reset (void)
 
void AddHit (const DCDCTrackHit *cdchit)
 
void AddHit (const DFDCPseudo *fdchit)
 
void AddHits (vector< const DCDCTrackHit * > cdchits)
 
void AddHits (vector< const DFDCPseudo * > fdchits)
 
const vector< const
DCDCTrackHit * > & 
GetCDCInputHits (void) const
 
const vector< const DFDCPseudo * > & GetFDCInputHits (void) const
 
const vector< const
DCDCTrackHit * > & 
GetCDCFitHits (void) const
 
const vector< const DFDCPseudo * > & GetFDCFitHits (void) const
 
void ClearExtrapolations (void)
 
const DKinematicDataGetInputParameters (void) const
 
const DTrackingDataGetFitParameters (void) const
 
double GetChisq (void) const
 
int GetNdof (void) const
 
unsigned int GetNumPotentialFDCHits (void) const
 
unsigned int GetNumPotentialCDCHits (void) const
 
bool GetIsSmoothed (void) const
 
vector< pull_t > & GetPulls (void)
 
const map< DetectorSystem_t,
vector< Extrapolation_t > > & 
GetExtrapolations (void) const
 
fit_type_t GetFitType (void) const
 
const DMagneticFieldMapGetDMagneticFieldMap (void) const
 
void SetFitType (fit_type_t type)
 
void SetInputParameters (const DTrackingData &starting_params)
 
fit_status_t FitTrack (const DVector3 &pos, const DVector3 &mom, double q, double mass, double t0=QuietNaN, DetectorSystem_t t0_det=SYS_NULL)
 
fit_status_t FitTrack (const DTrackingData &starting_params)
 
fit_status_t FindHitsAndFitTrack (const DKinematicData &starting_params, const DReferenceTrajectory *rt, JEventLoop *loop, double mass=-1.0, int N=0, double t0=QuietNaN, DetectorSystem_t t0_det=SYS_NULL)
 mass<0 means get it from starting_params More...
 
fit_status_t FindHitsAndFitTrack (const DKinematicData &starting_params, const map< DetectorSystem_t, vector< DTrackFitter::Extrapolation_t > > &extrapolations, JEventLoop *loop, double mass, int N, double t0, DetectorSystem_t t0_det)
 
jerror_t CorrectForELoss (const DKinematicData &starting_params, DReferenceTrajectory *rt, DVector3 &pos, DVector3 &mom, double mass)
 
double CalcDensityEffect (double p, double mass, double density, double Z_over_A, double I)
 
double CalcDensityEffect (double p, double mass, double rho_Z_over_A, double LnI)
 
double CalcDensityEffect (double betagamma, double rho_Z_over_A, double LnI)
 
bool ExtrapolateToRadius (double R, const vector< Extrapolation_t > &extraps, DVector3 &pos, DVector3 &mom, double &t, double &s) const
 
bool ExtrapolateToRadius (double R, const vector< Extrapolation_t > &extraps, DVector3 &pos) const
 
double DistToWire (const DCoordinateSystem *wire, const vector< Extrapolation_t > &extrapolations, DVector3 *pos=NULL, DVector3 *mom=NULL, DVector3 *position_along_wire=NULL) const
 

Protected Attributes

vector< const DCDCTrackHit * > cdchits
 
vector< const DFDCPseudo * > fdchits
 
DTrackingData input_params
 
fit_type_t fit_type
 
const DMagneticFieldMapbfield
 
const DGeometrygeom
 
const DRootGeomRootGeom
 
JEventLoop * loop
 
DTrackingData fit_params
 
double chisq
 
int Ndof
 
vector< pull_tpulls
 
map< DetectorSystem_t, vector
< Extrapolation_t > > 
extrapolations
 
fit_status_t fit_status
 
vector< const DCDCTrackHit * > cdchits_used_in_fit
 
vector< const DFDCPseudo * > fdchits_used_in_fit
 
bool IsSmoothed
 
unsigned int potential_fdc_hits_on_track
 
unsigned int potential_cdc_hits_on_track
 
bool CORRECT_FOR_ELOSS
 

Private Attributes

vector< DRiemannHit_t * > my_circle_hits
 
vector< DRiemannHit_t * > my_line_hits
 
double mass2
 
double phi0
 
double z_vertex
 
double tanl
 
double q
 
double rc
 
double xc
 
double yc
 
double D
 
double p
 
double theta
 
double one_over_vcosl
 
double B
 
DMatrix CR
 
DMatrix CRPhi
 
DMatrix Cz
 
vector< DVector2projections
 
vector< double > s
 
DVector3 N
 
double c_origin
 

Detailed Description

Definition at line 23 of file DTrackFitterRiemann.h.

Member Enumeration Documentation

Enumerator
kFitNotDone 
kFitSuccess 
kFitFailed 
kFitNoImprovement 

Definition at line 70 of file DTrackFitter.h.

enum DTrackFitter::fit_type_t
inherited
Enumerator
kWireBased 
kTimeBased 

Definition at line 65 of file DTrackFitter.h.

Constructor & Destructor Documentation

DTrackFitterRiemann::DTrackFitterRiemann ( JEventLoop *  loop)

Definition at line 48 of file DTrackFitterRiemann.cc.

DTrackFitterRiemann::~DTrackFitterRiemann ( )
inline

Definition at line 26 of file DTrackFitterRiemann.h.

Member Function Documentation

jerror_t DTrackFitterRiemann::AddCDCHit ( const DCDCTrackHit cdchit)
jerror_t DTrackFitterRiemann::AddFDCHit ( const DFDCPseudo fdchit)
void DTrackFitter::AddHit ( const DFDCPseudo fdchit)
inherited

Definition at line 138 of file DTrackFitter.cc.

void DTrackFitter::AddHits ( vector< const DFDCPseudo * >  fdchits)
inherited

Definition at line 147 of file DTrackFitter.cc.

jerror_t DTrackFitterRiemann::AddHitXYZ ( double  x,
double  y,
double  z,
double  covx,
double  covy,
double  covxy 
)
double DTrackFitter::CalcDensityEffect ( double  p,
double  mass,
double  density,
double  Z_over_A,
double  I 
)
inherited

Definition at line 412 of file DTrackFitter.cc.

Referenced by DTrackFitterKalmanSIMD::GetdEdx().

double DTrackFitter::CalcDensityEffect ( double  p,
double  mass,
double  rho_Z_over_A,
double  LnI 
)
inherited

Definition at line 422 of file DTrackFitter.cc.

double DTrackFitter::CalcDensityEffect ( double  betagamma,
double  rho_Z_over_A,
double  LnI 
)
inherited

Definition at line 430 of file DTrackFitter.cc.

References e, sqrt(), X, and X0.

double DTrackFitterRiemann::ChiSq ( fit_type_t  fit_type,
DReferenceTrajectory rt,
double *  chisq_ptr = NULL,
int *  dof_ptr = NULL,
vector< pull_t > *  pulls_ptr = NULL 
)
virtual

Implements DTrackFitter.

Definition at line 308 of file DTrackFitterRiemann.cc.

References ChiSq(), DTrackFitter::chisq, DTrackFitter::Ndof, and printf().

double DTrackFitterRiemann::ChiSq ( )

Definition at line 324 of file DTrackFitterRiemann.cc.

References D, GetHelicalPosition(), my_circle_hits, my_line_hits, DTrackFitter::Ndof, phi0, rc, sin(), tanl, and z_vertex.

Referenced by ChiSq(), and FitTrack().

jerror_t DTrackFitterRiemann::ComputeCR ( )

Definition at line 698 of file DTrackFitterRiemann.cc.

References CR, EPS, GetProcessNoise(), my_line_hits, sin(), and tanl.

Referenced by FitTrack().

jerror_t DTrackFitterRiemann::ComputeCRPhi ( )

Definition at line 620 of file DTrackFitterRiemann.cc.

References CRPhi, EPS, GetProcessNoise(), my_circle_hits, rc, S, sin(), sqrt(), and tanl.

Referenced by FitTrack().

jerror_t DTrackFitterRiemann::ComputeCz ( )

Definition at line 748 of file DTrackFitterRiemann.cc.

References Cz, EPS, GetProcessNoise(), my_line_hits, s, and tanl.

Referenced by FitTrack().

jerror_t DTrackFitterRiemann::ComputeIntersections ( )

Definition at line 945 of file DTrackFitterRiemann.cc.

References c_origin, D, my_line_hits, N, phi0, projections, rc, s, sin(), sqrt(), and temp.

Referenced by FitTrack().

double DTrackFitter::DistToWire ( const DCoordinateSystem wire,
const vector< Extrapolation_t > &  extrapolations,
DVector3 pos = NULL,
DVector3 mom = NULL,
DVector3 position_along_wire = NULL 
) const
inherited
bool DTrackFitter::ExtrapolateToRadius ( double  R,
const vector< Extrapolation_t > &  extraps,
DVector3 pos 
) const
inherited

Definition at line 527 of file DTrackFitter.cc.

DTrackFitter::fit_status_t DTrackFitter::FindHitsAndFitTrack ( const DKinematicData starting_params,
const DReferenceTrajectory rt,
JEventLoop *  loop,
double  mass = -1.0,
int  N = 0,
double  t0 = QuietNaN,
DetectorSystem_t  t0_det = SYS_NULL 
)
inherited

mass<0 means get it from starting_params

Fit a DTrackCandidate using a given mass hypothesis.

This will perform a full wire-based and time-based fit using the given mass and starting from the given candidate. The given DReferenceTrajectory is used to swim the track numerous times during the various stages but will be left with the final time-based fit result. The JEventLoop given will be used to get the hits (CDC and FDC) and default DTrackHitSelector to use for the fit.

Definition at line 271 of file DTrackFitter.cc.

References _DBG_, DKinematicData::charge(), DTrackHitSelector::GetAllHits(), IDTrack(), DTrackHitSelector::kHelical, DTrackHitSelector::kWireBased, DKinematicData::mass(), DKinematicData::momentum(), DKinematicData::position(), start_time, and prof_time::TimeDiffNow().

Referenced by DTrackTimeBased_factory::AddMissingTrackHypothesis(), DTrackWireBased_factory::DoFit(), and DTrackTimeBased_factory::DoFit().

DTrackFitter::fit_status_t DTrackFitter::FindHitsAndFitTrack ( const DKinematicData starting_params,
const map< DetectorSystem_t, vector< DTrackFitter::Extrapolation_t > > &  extrapolations,
JEventLoop *  loop,
double  mass,
int  N,
double  t0,
DetectorSystem_t  t0_det 
)
inherited
jerror_t DTrackFitterRiemann::FitCircle ( void  )

Riemann Circle fit: points on a circle in x,y project onto a plane cutting the circular paraboloid surface described by (x,y,x^2+y^2). Therefore the task of fitting points in (x,y) to a circle is transormed to the task of fitting planes in (x,y, w=x^2+y^2) space

Definition at line 811 of file DTrackFitterRiemann.cc.

References B0, c_origin, CRPhi, D, EPS, my_circle_hits, N, ONE_THIRD, phi0, q, rc, sin(), sqrt(), sum, temp, X, xc, and yc.

Referenced by FitTrack().

jerror_t DTrackFitterRiemann::FitLine ( )

Riemann Line fit: linear regression to determine the tangent of the dip angle and the z position of the closest approach to the beam line.

Definition at line 1001 of file DTrackFitterRiemann.cc.

References CR, Cz, DTrackFitter::fdchits, my_line_hits, projections, s, tanl, theta, Z_MAX, Z_VERTEX, and z_vertex.

Referenced by FitTrack().

DTrackFitter::fit_status_t DTrackFitter::FitTrack ( const DVector3 pos,
const DVector3 mom,
double  q,
double  mass,
double  t0 = QuietNaN,
DetectorSystem_t  t0_det = SYS_NULL 
)
inherited
DTrackFitter::fit_status_t DTrackFitter::FitTrack ( const DTrackingData starting_params)
inherited

Definition at line 179 of file DTrackFitter.cc.

References start_time, and prof_time::TimeDiffNow().

jerror_t DTrackFitterRiemann::GetAxialPosition ( double &  sperp,
const DVector2 XYold,
DRiemannHit_t hit 
)
const vector<const DCDCTrackHit*>& DTrackFitter::GetCDCInputHits ( void  ) const
inlineinherited

Definition at line 137 of file DTrackFitter.h.

jerror_t DTrackFitterRiemann::GetCharge ( void  )

Definition at line 1087 of file DTrackFitterRiemann.cc.

const DMagneticFieldMap* DTrackFitter::GetDMagneticFieldMap ( void  ) const
inlineinherited
const vector<const DFDCPseudo*>& DTrackFitter::GetFDCInputHits ( void  ) const
inlineinherited

Definition at line 138 of file DTrackFitter.h.

fit_type_t DTrackFitter::GetFitType ( void  ) const
inlineinherited

Definition at line 167 of file DTrackFitter.h.

DVector2 DTrackFitterRiemann::GetHelicalPosition ( double  sperp)

Definition at line 561 of file DTrackFitterRiemann.cc.

References D, phi0, q, rc, and sin().

Referenced by ChiSq(), FitTrack(), and GetFDCPosition().

const DKinematicData& DTrackFitter::GetInputParameters ( void  ) const
inlineinherited

Definition at line 152 of file DTrackFitter.h.

unsigned int DTrackFitter::GetNumPotentialCDCHits ( void  ) const
inlineinherited
unsigned int DTrackFitter::GetNumPotentialFDCHits ( void  ) const
inlineinherited
double DTrackFitterRiemann::GetProcessNoise ( const DVector2 XY,
const double  z 
)
jerror_t DTrackFitterRiemann::GetStereoPosition ( double &  sperp,
DVector2 XYold,
DRiemannHit_t hit 
)
double DTrackFitterRiemann::GetStereoZ ( double  dx,
double  dy,
DRiemannHit_t hit 
)
DTrackFitter::JOBJECT_PUBLIC ( DTrackFitter  )
inherited
string DTrackFitterRiemann::Name ( void  ) const
inlinevirtual

Implements DTrackFitter.

Definition at line 29 of file DTrackFitterRiemann.h.

References string.

void DTrackFitter::SetInputParameters ( const DTrackingData starting_params)
inlineinherited

Definition at line 171 of file DTrackFitter.h.

jerror_t DTrackFitterRiemann::SetSeed ( double  my_q,
const DVector3 pos,
const DVector3 mom,
double  mass 
)

Member Data Documentation

double DTrackFitterRiemann::B
private

Definition at line 69 of file DTrackFitterRiemann.h.

Referenced by FitTrack(), and SetSeed().

double DTrackFitterRiemann::c_origin
private

Definition at line 82 of file DTrackFitterRiemann.h.

Referenced by ComputeIntersections(), and FitCircle().

DMatrix DTrackFitterRiemann::CR
private

Definition at line 72 of file DTrackFitterRiemann.h.

Referenced by ComputeCR(), FitLine(), and FitTrack().

DMatrix DTrackFitterRiemann::CRPhi
private

Definition at line 73 of file DTrackFitterRiemann.h.

Referenced by ComputeCRPhi(), FitCircle(), and FitTrack().

DMatrix DTrackFitterRiemann::Cz
private

Definition at line 74 of file DTrackFitterRiemann.h.

Referenced by ComputeCz(), FitLine(), and FitTrack().

double DTrackFitterRiemann::D
private
fit_status_t DTrackFitter::fit_status
protectedinherited
JEventLoop* DTrackFitter::loop
protectedinherited
double DTrackFitterRiemann::mass2
private

Definition at line 62 of file DTrackFitterRiemann.h.

Referenced by FitTrack(), GetProcessNoise(), and SetSeed().

vector<DRiemannHit_t *> DTrackFitterRiemann::my_circle_hits
private

Definition at line 58 of file DTrackFitterRiemann.h.

Referenced by ChiSq(), ComputeCRPhi(), FitCircle(), and FitTrack().

vector<DRiemannHit_t *> DTrackFitterRiemann::my_line_hits
private
DVector3 DTrackFitterRiemann::N
private

Definition at line 81 of file DTrackFitterRiemann.h.

Referenced by ComputeIntersections(), and FitCircle().

double DTrackFitterRiemann::one_over_vcosl
private

Definition at line 66 of file DTrackFitterRiemann.h.

Referenced by FitTrack(), GetAxialPosition(), GetFDCPosition(), and SetSeed().

double DTrackFitterRiemann::p
private

Definition at line 66 of file DTrackFitterRiemann.h.

Referenced by FitTrack(), GetProcessNoise(), and SetSeed().

double DTrackFitterRiemann::phi0
private
unsigned int DTrackFitter::potential_cdc_hits_on_track
protectedinherited

Definition at line 247 of file DTrackFitter.h.

Referenced by DTrackFitterKalmanSIMD::FitTrack().

unsigned int DTrackFitter::potential_fdc_hits_on_track
protectedinherited

Definition at line 246 of file DTrackFitter.h.

Referenced by DTrackFitterKalmanSIMD::FitTrack().

vector<DVector2> DTrackFitterRiemann::projections
private

Definition at line 77 of file DTrackFitterRiemann.h.

Referenced by ComputeIntersections(), FitLine(), and FitTrack().

double DTrackFitterRiemann::q
private

Definition at line 65 of file DTrackFitterRiemann.h.

Referenced by FitCircle(), FitTrack(), GetHelicalPosition(), and SetSeed().

const DRootGeom* DTrackFitter::RootGeom
protectedinherited

Definition at line 230 of file DTrackFitter.h.

Referenced by DTrackFitterALT1::DTrackFitterALT1().

vector<double> DTrackFitterRiemann::s
private

Definition at line 78 of file DTrackFitterRiemann.h.

Referenced by ComputeCz(), ComputeIntersections(), FitLine(), and FitTrack().

double DTrackFitterRiemann::tanl
private
double DTrackFitterRiemann::theta
private

Definition at line 66 of file DTrackFitterRiemann.h.

Referenced by FitLine(), and SetSeed().

double DTrackFitterRiemann::xc
private
double DTrackFitterRiemann::yc
private
double DTrackFitterRiemann::z_vertex
private

Definition at line 65 of file DTrackFitterRiemann.h.

Referenced by ChiSq(), FitLine(), FitTrack(), GetFDCPosition(), and SetSeed().


The documentation for this class was generated from the following files: