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())));
125 dump(*preciseHit, hitcounter,
"GsfTrackFitters");
133 LogDebug(
"GsfTrackFitters") <<
"added measurement with chi2 " <<
chi2;
142 dump(predTsos,
"predTsos",
"GsfTrackFitters");
143 dump(currTsos,
"currTsos",
"GsfTrackFitters");
bool empty() const
True if trajectory has no measurements.
const Propagator * thePropagator
const MultiTrajectoryStateMerger * theMerger
Trajectory fitOne(const Trajectory &t, fitType type) const override
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
Log< level::Error, false > LogError
const MeasurementEstimator * theEstimator
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
const SurfaceType & surface() const
virtual HitReturnType estimate(const TrajectoryStateOnSurface &ts, const TrackingRecHit &hit) const =0
~GsfTrajectoryFitter() override
const MultiTrajectoryStateMerger * merger() const
GsfTrajectoryFitter(const Propagator &aPropagator, const TrajectoryStateUpdator &aUpdator, const MeasurementEstimator &aEstimator, const MultiTrajectoryStateMerger &aMerger, const DetLayerGeometry *detLayerGeometry=nullptr)
Log< level::Info, false > LogInfo
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
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
tuple dump
OutputFilePath = cms.string('/tmp/zhokin/'), OutputFileExt = cms.string(''),.
const DetLayerGeometry dummyGeometry
TkCloner const * theHitCloner