24 gPARMS->SetDefaultParameter(
"TRKFIT:CDC_MATCH_CUT",CDC_MATCH_CUT);
26 gPARMS->SetDefaultParameter(
"TRKFIT:FDC_MATCH_CUT",FDC_MATCH_CUT);
37 eventLoop->GetSingle(dPIDAlgorithm);
40 vector<const DTrackFinder *> finders;
41 eventLoop->Get(finders);
44 _DBG_<<
"Unable to get a DTrackFinder object!"<<endl;
45 return RESOURCE_UNAVAILABLE;
52 vector<const DTrackFitter *> fitters;
53 eventLoop->Get(fitters,
"StraightTrack");
55 _DBG_<<
"Unable to get a DTrackFitter object!"<<endl;
56 return RESOURCE_UNAVAILABLE;
71 vector<const DTrackCandidate*> candidates;
72 loop->Get(candidates);
75 vector<const DCDCTrackHit *>cdchits;
77 vector<const DFDCPseudo *>fdchits;
80 for (
unsigned int i=0;i<candidates.size();i++){
88 for (
unsigned int j=0;j<cdchits.size();j++){
89 double d=finder->FindDoca(pos,dir,cdchits[j]->wire->origin,
90 cdchits[j]->wire->udir);
93 for (
unsigned int i=0;i<fdchits.size();i++){
97 double dz=fdchits[i]->wire->origin.z()-pos.z();
98 DVector2 predpos(pos.x()+tx*dz,pos.y()+ty*dz);
99 DVector2 diff=predpos-fdchits[i]->xy;
100 if (diff.Mod()<FDC_MATCH_CUT)
fitter->
AddHit(fdchits[i]);
127 for (
unsigned int k=0;k<cdchits_on_track.size();k++){
128 if (cdchits_on_track[k]->tdrift<tmin){
129 tmin=cdchits_on_track[k]->tdrift;
132 track->AddAssociatedObject(cdchits_on_track[k]);
134 for (
unsigned int k=0;k<fdchits_on_track.size();k++){
135 if (fdchits_on_track[k]->time<tmin){
136 tmin=fdchits_on_track[k]->time;
139 track->AddAssociatedObject(fdchits_on_track[k]);
141 track->
setT0(tmin,10.0,detector);
143 track->
dCDCRings = dPIDAlgorithm->Get_CDCRingBitPattern(cdchits_on_track);
144 track->
dFDCPlanes = dPIDAlgorithm->Get_FDCPlaneBitPattern(fdchits_on_track);
146 _data.push_back(track);
map< DetectorSystem_t, vector< DTrackFitter::Extrapolation_t > > extrapolations
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
vector< pull_t > & GetPulls(void)
float chisq
Chi-squared for the track (not chisq/dof!)
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.
const DVector3 & position(void) const
bool GetIsSmoothed(void) const
void setT0(double at0, double at0_err, DetectorSystem_t at0_detector)
jerror_t init(void)
Called once at program start.
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
vector< DTrackFitter::pull_t > pulls
Holds pulls used in chisq calc. (not including off-diagonals)
const map< DetectorSystem_t, vector< Extrapolation_t > > & GetExtrapolations(void) const
double GetChisq(void) const
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
jerror_t fini(void)
Called after last event of last event source has been processed.
const vector< const DCDCTrackHit * > & GetCDCFitHits(void) const
<A href="index.html#legend"> <IMG src="CORE.png" width="100"> </A>
int Ndof
Number of degrees of freedom in the fit.
void setPID(Particle_t locPID)
const vector< const DFDCPseudo * > & GetFDCFitHits(void) const
void AddHit(const DCDCTrackHit *cdchit)
const DVector3 & momentum(void) const
fit_status_t FitTrack(const DVector3 &pos, const DVector3 &mom, double q, double mass, double t0=QuietNaN, DetectorSystem_t t0_det=SYS_NULL)
const DTrackFitter * fitter
oid_t candidateid
which DTrackCandidate this came from
const DTrackingData & GetFitParameters(void) const