File indexing completed on 2023-03-17 11:26:35
0001 #ifndef CD_KFSplittingFitter_H_
0002 #define CD_KFSplittingFitter_H_
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h"
0012 #include "TrackingTools/TrackFitters/interface/RecHitSplitter.h"
0013
0014 class KFSplittingFitter final : public TrajectoryFitter {
0015 private:
0016 typedef RecHitSplitter::RecHitContainer RecHitContainer;
0017
0018 typedef TrajectoryStateOnSurface TSOS;
0019 typedef FreeTrajectoryState FTS;
0020 typedef TrajectoryMeasurement TM;
0021
0022 public:
0023 KFSplittingFitter(const Propagator& aPropagator,
0024 const TrajectoryStateUpdator& aUpdator,
0025 const MeasurementEstimator& aEstimator)
0026 : fitter(aPropagator, aUpdator, aEstimator) {}
0027
0028 KFSplittingFitter(const Propagator* aPropagator,
0029 const TrajectoryStateUpdator* aUpdator,
0030 const MeasurementEstimator* aEstimator)
0031 : fitter(aPropagator, aUpdator, aEstimator) {}
0032
0033 std::unique_ptr<TrajectoryFitter> clone() const override {
0034 return std::unique_ptr<TrajectoryFitter>(
0035 new KFSplittingFitter(fitter.propagator(), fitter.updator(), fitter.estimator()));
0036 }
0037
0038 Trajectory fitOne(const Trajectory& aTraj, fitType type) const override;
0039 Trajectory fitOne(const TrajectorySeed& aSeed, const RecHitContainer& hits, fitType type) const override;
0040 Trajectory fitOne(const TrajectorySeed& aSeed,
0041 const RecHitContainer& hits,
0042 const TSOS& firstPredTsos,
0043 fitType type) const override;
0044
0045 void setHitCloner(TkCloner const* hc) override { fitter.setHitCloner(hc); }
0046
0047 private:
0048 void sorter(const RecHitContainer& hits, PropagationDirection dir, RecHitContainer& result) const;
0049
0050 KFTrajectoryFitter fitter;
0051 };
0052
0053 #endif