1 #ifndef MarlinDDKalTestTrack_h
2 #define MarlinDDKalTestTrack_h
4 #include "IMarlinTrack.h"
5 #include "IMarlinTrkSystem.h"
21 class MarlinDDKalTest;
43 #ifdef MARLINTRK_DIAGNOSTICS_ON
44 friend class DiagnosticsController;
63 void setMass(
double mass) ;
72 int addHit(EVENT::TrackerHit* hit) ;
77 int addHit(EVENT::TrackerHit* trkhit,
const DDVMeasLayer* ml) ;
82 int addHit( EVENT::TrackerHit* trkhit, DDVTrackHit* kalhit,
const DDVMeasLayer* ml) ;
88 int initialise(
bool fitDirection );
98 int initialise(
const EVENT::TrackState& ts,
double ,
bool fitDirection ) ;
105 int fit(
double maxChi2Increment=DBL_MAX ) ;
115 int smooth( EVENT::TrackerHit* hit ) ;
121 int addAndFit( EVENT::TrackerHit* hit,
double& chi2increment,
double maxChi2Increment=DBL_MAX ) ;
126 int addAndFit( DDVTrackHit* kalhit,
double& chi2increment, TKalTrackSite*& site,
double maxChi2Increment=DBL_MAX ) ;
131 int testChi2Increment( EVENT::TrackerHit* hit,
double& chi2increment ) ;
138 int getTrackState( IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
143 int getTrackState( EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
151 int getHitsInFit( std::vector<std::pair<EVENT::TrackerHit*, double> >& hits ) ;
158 int getOutliers( std::vector<std::pair<EVENT::TrackerHit*, double> >& hits ) ;
163 int getNDF(
int& ndf ) ;
167 int getTrackerHitAtPositiveNDF( EVENT::TrackerHit*& trkhit ) ;
173 int propagate(
const gear::Vector3D& point, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
179 int propagate(
const gear::Vector3D& point, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
185 int propagate(
const gear::Vector3D& point,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
const DDVMeasLayer* ml = 0 ) ;
190 int propagateToLayer(
int layerID, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
195 int propagateToLayer(
int layerID, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
200 int propagateToLayer(
int layerID,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
204 int propagateToDetElement(
int detElementID, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
209 int propagateToDetElement(
int detEementID, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
214 int propagateToDetElement(
int detEementID,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
222 int extrapolate(
const gear::Vector3D& point, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
227 int extrapolate(
const gear::Vector3D& point, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
232 int extrapolate(
const gear::Vector3D& point,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf ) ;
236 int extrapolateToLayer(
int layerID, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
241 int extrapolateToLayer(
int layerID, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
246 int extrapolateToLayer(
int layerID,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int& detElementID,
int mode=modeClosest ) ;
250 int extrapolateToDetElement(
int detElementID, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
255 int extrapolateToDetElement(
int detEementID, EVENT::TrackerHit* hit, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
260 int extrapolateToDetElement(
int detEementID,
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf,
int mode=modeClosest ) ;
265 std::string toString() ;
273 int intersectionWithLayer(
int layerID, gear::Vector3D& point,
int& detElementID,
int mode=modeClosest ) ;
278 int intersectionWithLayer(
int layerID, EVENT::TrackerHit* hit, gear::Vector3D& point,
int& detElementID,
int mode=modeClosest ) ;
283 int intersectionWithLayer(
int layerID,
const TKalTrackSite& site, gear::Vector3D& point,
int& detElementID,
const DDVMeasLayer*& ml,
int mode=modeClosest ) ;
288 int intersectionWithDetElement(
int detElementID, gear::Vector3D& point,
int mode=modeClosest ) ;
293 int intersectionWithDetElement(
int detElementID, EVENT::TrackerHit* hit, gear::Vector3D& point,
int mode=modeClosest ) ;
298 int intersectionWithDetElement(
int detElementID,
const TKalTrackSite& site, gear::Vector3D& point,
const DDVMeasLayer*& ml,
int mode=modeClosest ) ;
303 int findIntersection( std::vector<DDVMeasLayer const*>& meas_modules,
const TKalTrackSite& site, gear::Vector3D& point,
int& detElementID,
const DDVMeasLayer*& ml,
int mode=modeClosest ) ;
308 int findIntersection(
const DDVMeasLayer& meas_module,
const TKalTrackSite& site, gear::Vector3D& point,
double& dphi,
int& detElementIDconst,
int mode=modeClosest ) ;
317 void ToLCIOTrackState(
const TKalTrackSite& site, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf )
const ;
321 void ToLCIOTrackState(
const THelicalTrack& helix,
const TMatrixD& cov, IMPL::TrackStateImpl& ts,
double& chi2,
int& ndf )
const ;
325 int getSiteFromLCIOHit( EVENT::TrackerHit* trkhit, TKalTrackSite*& site )
const ;
330 inline double toBaseRange(
double phi)
const {
331 while( phi <= -M_PI ){ phi += 2. * M_PI ; }
332 while( phi > M_PI ){ phi -= 2. * M_PI ; }
340 TKalTrack* _kaltrack;
342 EVENT::TrackerHitVec _lcioHits ;
348 EVENT::TrackerHit* _trackHitAtPositiveNDF;
349 int _hitIndexAtPositiveNDF;
366 std::map<EVENT::TrackerHit*,TKalTrackSite*> _hit_used_for_sites ;
370 std::map<EVENT::TrackerHit*,DDVTrackHit*> _lcio_hits_to_kaltest_hits ;
374 std::vector<EVENT::TrackerHit*> _hit_not_used_for_sites ;
378 std::vector< std::pair<EVENT::TrackerHit*, double> > _hit_chi2_values ;
382 std::vector< std::pair<EVENT::TrackerHit*, double> > _outlier_chi2_values ;
Interface for generic tracks in MarlinTrk.
Definition: IMarlinTrack.h:28
Definition: MarlinDDKalTestTrack.h:39
Interface to KaltTest Kalman fitter - instantiates and holds the detector geometry.
Definition: MarlinDDKalTest.h:40