11 #include <JANA/JObject.h>
12 #include <JANA/JFactory.h>
13 #include <JANA/JEventLoop.h>
15 #ifdef PROFILE_TRK_TIMES
28 #define QuietNaN std::numeric_limits<double>::quiet_NaN()
79 dedx_t(
double dE,
double dx,
double p):dE(dE),dx(dx),p(p){}
88 double t,
double s,
double s_theta_ms_sum=0.,
89 double theta2ms_sum=0.):
90 position(position),momentum(momentum),t(t),s(s),s_theta_ms_sum(s_theta_ms_sum),theta2ms_sum(theta2ms_sum){}
102 pull_t(
double resi,
double err,
double s=0.0,
103 double tdrift=0.0,
double d=0.0,
105 const DFDCPseudo *fdc_hit=NULL,
double docaphi=0.0,
106 double z=0.0,
double cosThetaRel=0.0,
double tcorr=0.0,
double resic=0.0,
107 double errc=0.0):resi(resi),err(err),s(s),tdrift(tdrift),d(d),
cdc_hit(
cdc_hit),fdc_hit(fdc_hit),docaphi(docaphi),z(z),cosThetaRel(cosThetaRel),tcorr(tcorr),resic(resic),errc(errc){}
134 void AddHits(vector<const DCDCTrackHit*> cdchits);
136 void AddHits(vector<const DFDCPseudo*> fdchits);
139 const vector<const DCDCTrackHit*>&
GetCDCFitHits(
void)
const {
return cdchits_used_in_fit;}
140 const vector<const DFDCPseudo*>&
GetFDCFitHits(
void)
const {
return fdchits_used_in_fit;}
142 extrapolations[
SYS_TOF].clear();
145 extrapolations[
SYS_FDC].clear();
146 extrapolations[
SYS_CDC].clear();
164 return extrapolations;
181 JEventLoop *loop,
double mass=-1.0,
188 const map<
DetectorSystem_t,vector<DTrackFitter::Extrapolation_t> >&extrapolations,
190 double mass,
int N,
double t0,
194 double CalcDensityEffect(
double p,
double mass,
double density,
195 double Z_over_A,
double I);
196 double CalcDensityEffect(
double p,
double mass,
197 double rho_Z_over_A,
double LnI);
198 double CalcDensityEffect(
double betagamma,
199 double rho_Z_over_A,
double LnI);
200 #ifdef PROFILE_TRK_TIMES
201 void GetProfilingTimes(std::map<std::string, prof_time::time_diffs> &my_prof_times)
const;
203 bool ExtrapolateToRadius(
double R,
204 const vector<Extrapolation_t>&extraps,
207 bool ExtrapolateToRadius(
double R,
208 const vector<Extrapolation_t>&extraps,
211 const vector<Extrapolation_t>&extrapolations,
213 DVector3 *position_along_wire=NULL)
const;
216 virtual string Name(
void)
const =0;
217 virtual fit_status_t FitTrack(
void)=0;
218 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;
264 #endif // _DTrackFitter_
vector< pull_t > & GetPulls(void)
dedx_t(double dE, double dx, double p)
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.
void ClearExtrapolations(void)
const DRootGeom * RootGeom
bool GetIsSmoothed(void) const
class DFDCPseudo: definition for a reconstructed point in the FDC
map< DetectorSystem_t, vector< Extrapolation_t > > extrapolations
vector< const DFDCPseudo * > fdchits_used_in_fit
void SetInputParameters(const DTrackingData &starting_params)
unsigned int potential_cdc_hits_on_track
const DFDCPseudo * fdc_hit
const vector< const DFDCPseudo * > & GetFDCInputHits(void) const
const DMagneticFieldMap * bfield
pull_t(double resi, double err, double s=0.0, double tdrift=0.0, double d=0.0, const DCDCTrackHit *cdc_hit=NULL, const DFDCPseudo *fdc_hit=NULL, double docaphi=0.0, double z=0.0, double cosThetaRel=0.0, double tcorr=0.0, double resic=0.0, double errc=0.0)
vector< const DCDCTrackHit * > cdchits
const map< DetectorSystem_t, vector< Extrapolation_t > > & GetExtrapolations(void) const
double GetChisq(void) const
void SetFitType(fit_type_t type)
const DCDCTrackHit * cdc_hit
vector< double > trackDerivatives
vector< const DCDCTrackHit * > cdchits_used_in_fit
const vector< const DCDCTrackHit * > & GetCDCInputHits(void) const
const vector< const DCDCTrackHit * > & GetCDCFitHits(void) const
unsigned int GetNumPotentialCDCHits(void) const
void cdc_hit(Int_t &, Int_t &, Int_t &, Int_t[], Int_t, Int_t, Int_t, Int_t, Int_t, Int_t)
const vector< const DFDCPseudo * > & GetFDCFitHits(void) const
vector< const DFDCPseudo * > fdchits
void AddTrackDerivatives(vector< double > d)
DTrackingData input_params
string MATERIAL_MAP_MODEL
fit_type_t GetFitType(void) const
const DMagneticFieldMap * GetDMagneticFieldMap(void) const
const DKinematicData & GetInputParameters(void) const
unsigned int potential_fdc_hits_on_track
unsigned int GetNumPotentialFDCHits(void) const
const DTrackingData & GetFitParameters(void) const