19 : thePropagator(aPropagator.
clone()),
20 theUpdator(aUpdator.
clone()),
21 theEstimator(aEstimator.
clone()),
22 theMerger(aMerger.
clone()),
23 theGeometry(detLayerGeometry) {
46 edm::LogError(
"GsfTrajectoryFitter") <<
"GsfTrajectoryFitter::fit(TrajectorySeed, vector<RecHit>) not implemented";
60 TSOS predTsos(firstPredTsos);
62 edm::LogInfo(
"GsfTrackFitters") <<
"GsfTrajectoryFitter: predicted tsos of first measurement not valid!";
67 if (
hits.front()->isValid()) {
68 auto const& ihit =
hits.front();
71 assert((!(ihit)->canImproveWithTrack()) || (
nullptr != dynamic_cast<BaseTrackerRecHit const*>(ihit.get())));
73 dump(*preciseHit, 1,
"GsfTrackFitters");
91 for (RecHitContainer::const_iterator ihit =
hits.begin() + 1; ihit !=
hits.end(); ihit++) {
97 if ((**ihit).isValid() ==
false && (**ihit).det() ==
nullptr) {
98 LogDebug(
"GsfTrackFitters") <<
" Error: invalid hit with no GeomDet attached .... skipping";
108 edm::LogInfo(
"GsfTrackFitters") <<
"GsfTrajectoryFitter: predicted tsos not valid! \n" 109 <<
"Returning trajectory with " << myTraj.
foundHits() <<
" found hits.";
112 edm::LogInfo(
"GsfTrackFitters") <<
"GsfTrajectoryFitter: predicted tsos not valid after " << myTraj.
foundHits()
113 <<
" hits, discarding candidate!";
120 if ((**ihit).isValid()) {
123 assert((!(*ihit)->canImproveWithTrack()) || (
nullptr != dynamic_cast<BaseTrackerRecHit const*>((*ihit).get())));
128 dump(*preciseHit, hitcounter,
"GsfTrackFitters");
136 LogDebug(
"GsfTrackFitters") <<
"added measurement with chi2 " <<
chi2;
145 dump(predTsos,
"predTsos",
"GsfTrackFitters");
146 dump(currTsos,
"currTsos",
"GsfTrackFitters");
const Propagator * thePropagator
const MultiTrajectoryStateMerger * theMerger
Trajectory fitOne(const Trajectory &t, fitType type) const override
virtual const DetLayer * idToLayer(const DetId &detId) const
const MeasurementEstimator * estimator() const
const TrajectoryStateUpdator * updator() const
const DetLayerGeometry * theGeometry
Log< level::Error, false > LogError
const SurfaceType & surface() const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
const MeasurementEstimator * theEstimator
const Propagator * propagator() const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
TrajectoryStateOnSurface merge(const TrajectoryStateOnSurface &tsos) const
ConstRecHitContainer recHits() const
const MultiTrajectoryStateMerger * merger() const
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
TrackingRecHit::ConstRecHitPointer makeShared(TrackingRecHit::ConstRecHitPointer const &hit, TrajectoryStateOnSurface const &tsos) const
~GsfTrajectoryFitter() override
GsfTrajectoryFitter(const Propagator &aPropagator, const TrajectoryStateUpdator &aUpdator, const MeasurementEstimator &aEstimator, const MultiTrajectoryStateMerger &aMerger, const DetLayerGeometry *detLayerGeometry=nullptr)
Log< level::Info, false > LogInfo
TrajectorySeed const & seed() const
Access to the seed used to reconstruct the Trajectory.
bool empty() const
True if trajectory has no measurements.
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
TrajectoryStateOnSurface const & updatedState() const
TrajectoryMeasurement const & firstMeasurement() const
const TrajectoryStateUpdator * theUpdator
Trajectory::RecHitContainer RecHitContainer
void push(const TrajectoryMeasurement &tm)
const DetLayerGeometry dummyGeometry
TkCloner const * theHitCloner