CMS 3D CMS Logo

KFTrajectorySmoother.h
Go to the documentation of this file.
1 #ifndef CD_KFTrajectorySmoother_H_
2 #define CD_KFTrajectorySmoother_H_
3 
19 
21 
22 private:
23 
27 
28 public:
29 
30  KFTrajectorySmoother(const Propagator& aPropagator,
31  const TrajectoryStateUpdator& aUpdator,
32  const MeasurementEstimator& aEstimator,
33  float errorRescaling = 100.f,
34  int minHits = 3) :
37  theUpdator(aUpdator.clone()),
38  theEstimator(aEstimator.clone()),
41  theGeometry(nullptr){ // to be fixed. Why this first constructor is needed? who is using it? Can it be removed?
43  auto p = aPropagator.clone();
44  p->setPropagationDirection(alongMomentum);
46  p = aPropagator.clone();
47  p->setPropagationDirection(oppositeToMomentum);
49  }
50 
51 
52  KFTrajectorySmoother(const Propagator* aPropagator,
53  const TrajectoryStateUpdator* aUpdator,
54  const MeasurementEstimator* aEstimator,
55  float errorRescaling = 100.f,
56  int minHits = 3,
57  const DetLayerGeometry* detLayerGeometry=nullptr,
58  TkCloner const * hc=nullptr) :
61  theUpdator(aUpdator->clone()),
62  theEstimator(aEstimator->clone()),
66  theGeometry(detLayerGeometry){
68  auto p = aPropagator->clone();
69  p->setPropagationDirection(alongMomentum);
71  p = aPropagator->clone();
72  p->setPropagationDirection(oppositeToMomentum);
74  }
75 
76  virtual ~KFTrajectorySmoother();
77 
78  virtual Trajectory trajectory(const Trajectory& aTraj) const override;
79 
80  const Propagator* alongPropagator() const { return theAlongPropagator;}
82 
83  const TrajectoryStateUpdator* updator() const {return theUpdator;}
84  const MeasurementEstimator* estimator() const {return theEstimator;}
85 
86  virtual KFTrajectorySmoother* clone() const override{
88  }
89 
90  // FIXME a prototype: final inplementaiton may differ
91  virtual void setHitCloner(TkCloner const * hc) override { theHitCloner = hc;}
92 
93 
94 private:
100  TkCloner const * theHitCloner=nullptr;
102  int minHits_;
104 };
105 
106 #endif //CD_KFTrajectorySmoother_H_
const DetLayerGeometry dummyGeometry
virtual Propagator * clone() const =0
const DetLayerGeometry * theGeometry
TrajectoryStateOnSurface TSOS
KFTrajectorySmoother(const Propagator *aPropagator, const TrajectoryStateUpdator *aUpdator, const MeasurementEstimator *aEstimator, float errorRescaling=100.f, int minHits=3, const DetLayerGeometry *detLayerGeometry=0, TkCloner const *hc=0)
#define nullptr
virtual KFTrajectorySmoother * clone() const override
const Propagator * oppositePropagator() const
KFTrajectorySmoother(const Propagator &aPropagator, const TrajectoryStateUpdator &aUpdator, const MeasurementEstimator &aEstimator, float errorRescaling=100.f, int minHits=3)
const MeasurementEstimator * estimator() const
virtual Trajectory trajectory(const Trajectory &aTraj) const override
virtual void setHitCloner(TkCloner const *hc) override
double f[11][100]
const MeasurementEstimator * theEstimator
const TrajectoryStateUpdator * theUpdator
TrajectoryMeasurement TM
FreeTrajectoryState FTS
const TrajectoryStateUpdator * updator() const
susybsm::HSCParticleCollection hc
Definition: classes.h:25
const Propagator * theAlongPropagator
const Propagator * alongPropagator() const
const Propagator * theOppositePropagator
TkCloner const * theHitCloner