CMS 3D CMS Logo

DualReferenceTrajectory.h
Go to the documentation of this file.
1 #ifndef Alignment_ReferenceTrajectories_DualReferenceTrajectory_H
2 #define Alignment_ReferenceTrajectories_DualReferenceTrajectory_H
3 
31 
33 namespace reco {
34  class BeamSpot;
35 }
36 
38 public:
40 
42  const ConstRecHitContainer &forwardRecHits,
43  const ConstRecHitContainer &backwardRecHits,
44  const MagneticField *magField,
45  const reco::BeamSpot &beamSpot,
47 
49 
50  DualReferenceTrajectory *clone() const override { return new DualReferenceTrajectory(*this); }
51 
52 protected:
53  DualReferenceTrajectory(unsigned int nPar, unsigned int nHits, const ReferenceTrajectoryBase::Config &config);
54 
57  virtual bool construct(const TrajectoryStateOnSurface &referenceTsos,
58  const ConstRecHitContainer &forwardRecHits,
59  const ConstRecHitContainer &backwardRecHits,
60  const MagneticField *magField,
61  const reco::BeamSpot &beamSpot);
62 
63  virtual ReferenceTrajectory *construct(const TrajectoryStateOnSurface &referenceTsos,
64  const ConstRecHitContainer &recHits,
65  const MagneticField *magField,
66  const reco::BeamSpot &beamSpot,
67  const bool revertDirection = false) const;
68 
69  virtual AlgebraicVector extractParameters(const TrajectoryStateOnSurface &referenceTsos) const;
70 
71  inline const PropagationDirection oppositeDirection(const PropagationDirection propDir) const {
72  return (propDir == anyDirection) ? anyDirection : ((propDir == alongMomentum) ? oppositeToMomentum : alongMomentum);
73  }
74 
75 private:
76  const double mass_;
79  const bool useBeamSpot_;
80 };
81 
82 #endif
const PropagationDirection propDir_
const PropagationDirection oppositeDirection(const PropagationDirection propDir) const
Definition: config.py:1
PropagationDirection
DualReferenceTrajectory * clone() const override
TransientTrackingRecHit::ConstRecHitContainer ConstRecHitContainer
std::vector< ConstRecHitPointer > ConstRecHitContainer
CLHEP::HepVector AlgebraicVector
fixed size matrix
const MaterialEffects materialEffects_