22 thePropagator(aPropagator.
clone()),
23 theUpdator(aUpdator.
clone()),
24 theEstimator(aEstimator.
clone()),
25 theMerger(aMerger.
clone()),
26 theGeometry(detLayerGeometry)
53 <<
"GsfTrajectoryFitter::fit(TrajectorySeed, vector<RecHit>) not implemented";
76 TSOS predTsos(firstPredTsos);
79 <<
"GsfTrajectoryFitter: predicted tsos of first measurement not valid!";
84 if(hits.front()->isValid()) {
85 auto const & ihit = hits.front();
88 assert( (!(ihit)->canImproveWithTrack()) | (
nullptr!=dynamic_cast<BaseTrackerRecHit const*>(ihit.get())));
109 for(RecHitContainer::const_iterator ihit = hits.begin() + 1;
110 ihit != hits.end(); ihit++) {
114 if ((**ihit).isValid() ==
false && (**ihit).det() == 0) {
115 LogDebug(
"GsfTrajectoryFitter") <<
" Error: invalid hit with no GeomDet attached .... skipping";
144 <<
"GsfTrajectoryFitter: predicted tsos not valid! \n"
145 <<
"Returning trajectory with " << myTraj.
foundHits() <<
" found hits.";
150 <<
"GsfTrajectoryFitter: predicted tsos not valid after " << myTraj.
foundHits()
151 <<
" hits, discarding candidate!";
157 if((**ihit).isValid()) {
160 assert( (!(*ihit)->canImproveWithTrack()) | (
nullptr!=dynamic_cast<BaseTrackerRecHit const*>((*ihit).get())));
170 myTraj.
push(
TM(predTsos, currTsos, preciseHit,
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
const DetLayerGeometry * theGeometry
const MeasurementEstimator * theEstimator
U second(std::pair< T, U > const &p)
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
const SurfaceType & surface() const
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
const MultiTrajectoryStateMerger * merger() const
TrajectoryMeasurement const & firstMeasurement() const
TrackingRecHit *operator()[[cms TrackingRecHit::ConstRecHitPointer makeShared(TrackingRecHit::ConstRecHitPointer const &hit, TrajectoryStateOnSurface const &tsos) const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Trajectory fitOne(const Trajectory &t, fitType type) const
const Propagator * propagator() const
const TrajectoryStateUpdator * updator() const
virtual ~GsfTrajectoryFitter()
const TrajectoryStateUpdator * theUpdator
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