17 thePropagator(aPropagator.
clone()),
18 theUpdator(aUpdator.
clone()),
19 theEstimator(aEstimator.
clone()),
20 theMerger(aMerger.
clone()),
21 theGeometry(detLayerGeometry)
37 if(aTraj.
empty())
return std::vector<Trajectory>();
49 <<
"GsfTrajectoryFitter::fit(TrajectorySeed, vector<RecHit>) not implemented";
51 return std::vector<Trajectory>();
56 const TSOS& firstPredTsos)
const {
67 if(hits.empty())
return std::vector<Trajectory>();
71 TSOS predTsos(firstPredTsos);
74 <<
"GsfTrajectoryFitter: predicted tsos of first measurement not valid!";
75 return std::vector<Trajectory>();
79 if(hits.front()->isValid()) {
88 return std::vector<Trajectory>();
96 return std::vector<Trajectory>();
101 for(RecHitContainer::const_iterator ihit = hits.begin() + 1;
102 ihit != hits.end(); ihit++) {
106 if ((**ihit).isValid() ==
false && (**ihit).det() == 0) {
107 LogDebug(
"GsfTrajectoryFitter") <<
" Error: invalid hit with no GeomDet attached .... skipping";
136 <<
"GsfTrajectoryFitter: predicted tsos not valid! \n"
137 <<
"Returning trajectory with " << myTraj.
foundHits() <<
" found hits.";
138 return std::vector<Trajectory>(1,myTraj);
142 <<
"GsfTrajectoryFitter: predicted tsos not valid after " << myTraj.
foundHits()
143 <<
" hits, discarding candidate!";
144 return std::vector<Trajectory>();
149 if((**ihit).isValid()) {
158 return std::vector<Trajectory>();
160 myTraj.
push(
TM(predTsos, currTsos, preciseHit,
167 return std::vector<Trajectory>();
172 return std::vector<Trajectory>(1, myTraj);
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.
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TransientTrackingRecHit &hit) const =0
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const =0
virtual std::vector< Trajectory > fit(const Trajectory &aTraj) const
TrajectoryStateOnSurface merge(const TrajectoryStateOnSurface &tsos) const
const DetLayerGeometry * theGeometry
const MeasurementEstimator * theEstimator
ConstRecHitContainer recHits(bool splitting=false) const
U second(std::pair< T, U > const &p)
TrajectoryStateOnSurface updatedState() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
const MultiTrajectoryStateMerger * merger() const
TrajectoryMeasurement const & firstMeasurement() const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
const Propagator * propagator() const
const TrajectoryStateUpdator * updator() const
virtual ~GsfTrajectoryFitter()
const Surface & surface() const
const TrajectoryStateUpdator * theUpdator
virtual const DetLayer * idToLayer(const DetId &detId) const
Trajectory::RecHitContainer RecHitContainer
void push(const TrajectoryMeasurement &tm)
const MeasurementEstimator * estimator() const
const DetLayerGeometry dummyGeometry