20 thePropagator(aPropagator.
clone()),
21 theUpdator(aUpdator.
clone()),
22 theEstimator(aEstimator.
clone()),
23 theMerger(aMerger.
clone()),
24 theGeometry(detLayerGeometry)
49 <<
"GsfTrajectoryFitter::fit(TrajectorySeed, vector<RecHit>) not implemented";
63 TSOS predTsos(firstPredTsos);
66 <<
"GsfTrajectoryFitter: predicted tsos of first measurement not valid!";
71 if(hits.front()->isValid()) {
72 auto const & ihit = hits.front();
74 assert( (!(ihit)->canImproveWithTrack()) | (
nullptr!=
theHitCloner));
75 assert( (!(ihit)->canImproveWithTrack()) | (
nullptr!=dynamic_cast<BaseTrackerRecHit const*>(ihit.get())));
77 dump(*preciseHit,1,
"GsfTrackFitters");
97 for(RecHitContainer::const_iterator ihit = hits.begin() + 1;
98 ihit != hits.end(); ihit++) {
104 if ((**ihit).isValid() ==
false && (**ihit).det() == 0) {
105 LogDebug(
"GsfTrackFitters") <<
" Error: invalid hit with no GeomDet attached .... skipping";
117 <<
"GsfTrajectoryFitter: predicted tsos not valid! \n" 118 <<
"Returning trajectory with " << myTraj.
foundHits() <<
" found hits.";
123 <<
"GsfTrajectoryFitter: predicted tsos not valid after " << myTraj.
foundHits()
124 <<
" hits, discarding candidate!";
130 if((**ihit).isValid()) {
132 assert( (!(*ihit)->canImproveWithTrack()) | (
nullptr!=
theHitCloner));
133 assert( (!(*ihit)->canImproveWithTrack()) | (
nullptr!=dynamic_cast<BaseTrackerRecHit const*>((*ihit).get())));
135 dump(*preciseHit,hitcounter,
"GsfTrackFitters");
142 myTraj.
push(
TM(predTsos, currTsos, preciseHit,
145 LogDebug(
"GsfTrackFitters") <<
"added measurement with chi2 " <<
chi2;
154 dump(predTsos,
"predTsos",
"GsfTrackFitters");
155 dump(currTsos,
"currTsos",
"GsfTrackFitters");
Trajectory fitOne(const Trajectory &t, fitType type) const override
bool empty() const
True if trajectory has no measurements.
const Propagator * thePropagator
const MultiTrajectoryStateMerger * theMerger
GsfTrajectoryFitter(const Propagator &aPropagator, const TrajectoryStateUpdator &aUpdator, const MeasurementEstimator &aEstimator, const MultiTrajectoryStateMerger &aMerger, const DetLayerGeometry *detLayerGeometry=0)
TrajectorySeed const & seed() const
Access to the seed used to reconstruct the Trajectory.
ConstRecHitContainer recHits() const
TrajectoryStateOnSurface merge(const TrajectoryStateOnSurface &tsos) const
TrackingRecHit::ConstRecHitPointer makeShared(TrackingRecHit::ConstRecHitPointer const &hit, TrajectoryStateOnSurface const &tsos) const
const DetLayerGeometry * theGeometry
const MeasurementEstimator * theEstimator
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
const SurfaceType & surface() const
const MultiTrajectoryStateMerger * merger() const
TrajectoryMeasurement const & firstMeasurement() const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
const Propagator * propagator() const
const TrajectoryStateUpdator * updator() const
virtual ~GsfTrajectoryFitter()
const TrajectoryStateUpdator * theUpdator
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
TrajectoryStateOnSurface const & updatedState() const
virtual const DetLayer * idToLayer(const DetId &detId) const
Trajectory::RecHitContainer RecHitContainer
void push(const TrajectoryMeasurement &tm)
const MeasurementEstimator * estimator() const
const DetLayerGeometry dummyGeometry
TkCloner const * theHitCloner