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

The DTrackFitter class is a base class for different charged track fitting algorithms. It does not actually fit the track itself, but provides the interface and some common support features most algorthims will need to implement. More...

#include <DTrackFitter.h>

+ Inheritance diagram for DTrackFitter:

Classes

class  dedx_t
 
class  Extrapolation_t
 
class  pull_t
 

Public Types

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

Public Member Functions

 JOBJECT_PUBLIC (DTrackFitter)
 
 DTrackFitter (JEventLoop *loop)
 
virtual ~DTrackFitter ()
 
void Reset (void)
 
void AddHit (const DCDCTrackHit *cdchit)
 
void AddHits (vector< const DCDCTrackHit * > cdchits)
 
void AddHit (const DFDCPseudo *fdchit)
 
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
 
virtual string Name (void) const =0
 
virtual fit_status_t FitTrack (void)=0
 
virtual double ChiSq (fit_type_t fit_type, DReferenceTrajectory *rt, double *chisq_ptr=NULL, int *dof_ptr=NULL, vector< pull_t > *pulls_ptr=NULL)=0
 

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 Member Functions

 DTrackFitter ()
 

Private Attributes

int DEBUG_LEVEL
 
string MATERIAL_MAP_MODEL
 
double mKRhoZoverAGas
 
double mRhoZoverAGas
 
double mLnIGas
 

Detailed Description

The DTrackFitter class is a base class for different charged track fitting algorithms. It does not actually fit the track itself, but provides the interface and some common support features most algorthims will need to implement.

The reason this is needed (instead of just using the mechanism already built into JANA) is due to the nature of charged track fitting. Specifically, tracks are usually fit first to the wire positions and then to the drift times. The algorithm for both is (at least usually) the same. However, we want to separate the wire-based and time-based fitting into 2 distinct stages allowing easy access to the wire-based fits.

There were a few options on how to handle this within the JANA framework but it was decided passing DTrackFitter objects through the framework was the best way to address it. Sub-classes of DTrackFitter will implement the actual algorithms, but JANA will only see these objects as pointers to the DTrackFitter base class. Only one DTrackFitterXXX object will exist for each thread (i.e. each JEventLoop). As such, the state of that object will likely be overwritten many times in a single event and it's internal data never used by anything outside of the TRACKING package. Also, the factories that produce the DTrackFitterXXX objects will make them as persistent and will turn off the the WRITE_TO_OUTPUT bit by default.

Definition at line 61 of file DTrackFitter.h.

Member Enumeration Documentation

Enumerator
kFitNotDone 
kFitSuccess 
kFitFailed 
kFitNoImprovement 

Definition at line 70 of file DTrackFitter.h.

Enumerator
kWireBased 
kTimeBased 

Definition at line 65 of file DTrackFitter.h.

Constructor & Destructor Documentation

DTrackFitter::DTrackFitter ( JEventLoop *  loop)
DTrackFitter::~DTrackFitter ( )
virtual

Definition at line 87 of file DTrackFitter.cc.

DTrackFitter::DTrackFitter ( )
private

Member Function Documentation

void DTrackFitter::AddHit ( const DFDCPseudo fdchit)

Definition at line 138 of file DTrackFitter.cc.

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

Definition at line 147 of file DTrackFitter.cc.

double DTrackFitter::CalcDensityEffect ( double  p,
double  mass,
double  density,
double  Z_over_A,
double  I 
)

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 
)

Definition at line 422 of file DTrackFitter.cc.

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

Definition at line 430 of file DTrackFitter.cc.

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

virtual double DTrackFitter::ChiSq ( fit_type_t  fit_type,
DReferenceTrajectory rt,
double *  chisq_ptr = NULL,
int *  dof_ptr = NULL,
vector< pull_t > *  pulls_ptr = NULL 
)
pure virtual
double DTrackFitter::DistToWire ( const DCoordinateSystem wire,
const vector< Extrapolation_t > &  extrapolations,
DVector3 pos = NULL,
DVector3 mom = NULL,
DVector3 position_along_wire = NULL 
) const
bool DTrackFitter::ExtrapolateToRadius ( double  R,
const vector< Extrapolation_t > &  extraps,
DVector3 pos 
) const

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 
)

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 
)
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 
)
DTrackFitter::fit_status_t DTrackFitter::FitTrack ( const DTrackingData starting_params)

Definition at line 179 of file DTrackFitter.cc.

References start_time, and prof_time::TimeDiffNow().

virtual fit_status_t DTrackFitter::FitTrack ( void  )
pure virtual
const vector<const DCDCTrackHit*>& DTrackFitter::GetCDCInputHits ( void  ) const
inline

Definition at line 137 of file DTrackFitter.h.

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

Definition at line 138 of file DTrackFitter.h.

fit_type_t DTrackFitter::GetFitType ( void  ) const
inline

Definition at line 167 of file DTrackFitter.h.

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

Definition at line 152 of file DTrackFitter.h.

unsigned int DTrackFitter::GetNumPotentialCDCHits ( void  ) const
inline
unsigned int DTrackFitter::GetNumPotentialFDCHits ( void  ) const
inline
DTrackFitter::JOBJECT_PUBLIC ( DTrackFitter  )
virtual string DTrackFitter::Name ( void  ) const
pure virtual
void DTrackFitter::SetInputParameters ( const DTrackingData starting_params)
inline

Definition at line 171 of file DTrackFitter.h.

Member Data Documentation

int DTrackFitter::DEBUG_LEVEL
private

Definition at line 253 of file DTrackFitter.h.

fit_status_t DTrackFitter::fit_status
protected
JEventLoop* DTrackFitter::loop
protected
string DTrackFitter::MATERIAL_MAP_MODEL
private

Definition at line 254 of file DTrackFitter.h.

double DTrackFitter::mKRhoZoverAGas
private

Definition at line 260 of file DTrackFitter.h.

double DTrackFitter::mLnIGas
private

Definition at line 260 of file DTrackFitter.h.

double DTrackFitter::mRhoZoverAGas
private

Definition at line 260 of file DTrackFitter.h.

unsigned int DTrackFitter::potential_cdc_hits_on_track
protected

Definition at line 247 of file DTrackFitter.h.

Referenced by DTrackFitterKalmanSIMD::FitTrack().

unsigned int DTrackFitter::potential_fdc_hits_on_track
protected

Definition at line 246 of file DTrackFitter.h.

Referenced by DTrackFitterKalmanSIMD::FitTrack().

const DRootGeom* DTrackFitter::RootGeom
protected

Definition at line 230 of file DTrackFitter.h.

Referenced by DTrackFitterALT1::DTrackFitterALT1().


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