CMS 3D CMS Logo

AnalyticalPropagator.h
Go to the documentation of this file.
1 #ifndef _COMMONRECO_ANALYTICALPROPAGATOR_H_
2 #define _COMMONRECO_ANALYTICALPROPAGATOR_H_
3 
7 
8 #include <cmath>
9 #include <cfloat>
10 
11 class Surface;
12 class Cylinder;
13 class Plane;
14 class HelixPlaneCrossing;
15 class MagneticField;
16 
22 class AnalyticalPropagator final : public Propagator {
23 public:
26  float maxDPhi = 1.6,
27  bool isOld = true)
28  : Propagator(dir),
30  theMaxDBzRatio(0.5),
31  theField(field),
32  isOldPropagationType(isOld) {}
33 
34  ~AnalyticalPropagator() override {}
35 
36  //
37  // use base class methods where necessary:
38  // - propagation from TrajectoryStateOnSurface
39  // (will use propagation from FreeTrajectoryState)
40  // - propagation to general Surface
41  // (will use specialised methods for planes or cylinders)
42  //
45 
46 private:
48  std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState& fts,
49  const Plane& plane) const override;
50 
52  std::pair<TrajectoryStateOnSurface, double> propagateWithPath(const FreeTrajectoryState& fts,
53  const Cylinder& cylinder) const override;
54 
55 public:
59  bool setMaxDirectionChange(float phiMax) override {
61  return true;
62  }
63 
64  AnalyticalPropagator* clone() const override { return new AnalyticalPropagator(*this); }
65 
70  void setMaxRelativeChangeInBz(const float maxDBz) { theMaxDBzRatio = maxDBz; }
71 
72 private:
74  std::pair<TrajectoryStateOnSurface, double> propagatedStateWithPath(const FreeTrajectoryState& fts,
75  const Surface& surface,
76  const GlobalTrajectoryParameters& gtp,
77  const double& s) const dso_internal;
78 
81  const Cylinder& cylinder,
82  GlobalPoint& x,
83  GlobalVector& p,
84  double& s) const dso_internal;
85 
88  const Plane& plane,
89  GlobalPoint& x,
90  GlobalVector& p,
91  double& s) const dso_internal;
92 
94  bool propagateWithLineCrossing(const GlobalPoint&, const GlobalVector&, const Plane&, GlobalPoint&, double&) const
97  bool propagateWithLineCrossing(const GlobalPoint&, const GlobalVector&, const Cylinder&, GlobalPoint&, double&) const
101  HelixPlaneCrossing&, const Plane&, const float, GlobalPoint&, GlobalVector&, double& s) const dso_internal;
102 
103  const MagneticField* magneticField() const override { return theField; }
104 
105 private:
106  typedef std::pair<TrajectoryStateOnSurface, double> TsosWP;
107  float theMaxDPhi2;
111 };
112 
113 #endif
Vector3DBase
Definition: Vector3DBase.h:8
AnalyticalPropagator::setMaxDirectionChange
bool setMaxDirectionChange(float phiMax) override
Definition: AnalyticalPropagator.h:59
Propagator.h
TrajectoryStateOnSurface.h
Visibility.h
AnalyticalPropagator::propagatedStateWithPath
std::pair< TrajectoryStateOnSurface, double > propagatedStateWithPath(const FreeTrajectoryState &fts, const Surface &surface, const GlobalTrajectoryParameters &gtp, const double &s) const
propagation of errors (if needed) and generation of a new TSOS
Definition: AnalyticalPropagator.cc:106
Surface
Definition: Surface.h:36
AnalyticalPropagator::magneticField
const MagneticField * magneticField() const override
Definition: AnalyticalPropagator.h:103
HLT_FULL_cff.maxDPhi
maxDPhi
Definition: HLT_FULL_cff.py:9162
DDAxes::x
AnalyticalPropagator::clone
AnalyticalPropagator * clone() const override
Definition: AnalyticalPropagator.h:64
AnalyticalPropagator::TsosWP
std::pair< TrajectoryStateOnSurface, double > TsosWP
Definition: AnalyticalPropagator.h:106
AnalyticalPropagator::theMaxDBzRatio
float theMaxDBzRatio
Definition: AnalyticalPropagator.h:108
Propagator
Definition: Propagator.h:44
AnalyticalPropagator::propagateWithPath
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
propagation to plane with path length
alignCSCRings.s
s
Definition: alignCSCRings.py:92
AnalyticalPropagator::propagateParametersOnPlane
bool propagateParametersOnPlane(const FreeTrajectoryState &fts, const Plane &plane, GlobalPoint &x, GlobalVector &p, double &s) const
parameter propagation to plane (returns position, momentum and path length)
Definition: AnalyticalPropagator.cc:180
AnalyticalPropagator::theField
const MagneticField * theField
Definition: AnalyticalPropagator.h:109
AlignmentTrackSelector_cfi.phiMax
phiMax
Definition: AlignmentTrackSelector_cfi.py:17
AnalyticalPropagator::setMaxRelativeChangeInBz
void setMaxRelativeChangeInBz(const float maxDBz)
Definition: AnalyticalPropagator.h:70
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
Point3DBase< float, GlobalTag >
AnalyticalPropagator::~AnalyticalPropagator
~AnalyticalPropagator() override
Definition: AnalyticalPropagator.h:34
AlCaHLTBitMon_ParallelJobs.p
def p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
dso_internal
#define dso_internal
Definition: Visibility.h:13
AnalyticalPropagator::propagateWithLineCrossing
bool propagateWithLineCrossing(const GlobalPoint &, const GlobalVector &, const Plane &, GlobalPoint &, double &) const
straight line parameter propagation to a plane
Propagator::propagate
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:50
AnalyticalPropagator::theMaxDPhi2
float theMaxDPhi2
Definition: AnalyticalPropagator.h:107
AnalyticalPropagator::propagateWithHelixCrossing
bool propagateWithHelixCrossing(HelixPlaneCrossing &, const Plane &, const float, GlobalPoint &, GlobalVector &, double &s) const
helix parameter propagation to a plane using HelixPlaneCrossing
Definition: AnalyticalPropagator.cc:372
HelixPlaneCrossing
Definition: HelixPlaneCrossing.h:13
AnalyticalPropagator
Definition: AnalyticalPropagator.h:22
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
Plane
Definition: Plane.h:16
Propagator::propagateWithPath
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
AnalyticalPropagator::propagateParametersOnCylinder
bool propagateParametersOnCylinder(const FreeTrajectoryState &fts, const Cylinder &cylinder, GlobalPoint &x, GlobalVector &p, double &s) const
parameter propagation to cylinder (returns position, momentum and path length)
Definition: AnalyticalPropagator.cc:139
Cylinder
Definition: Cylinder.h:19
AnalyticalPropagator::AnalyticalPropagator
AnalyticalPropagator(const MagneticField *field, PropagationDirection dir=alongMomentum, float maxDPhi=1.6, bool isOld=true)
Definition: AnalyticalPropagator.h:24
MagneticField
Definition: MagneticField.h:19
alongMomentum
Definition: PropagationDirection.h:4
AnalyticalPropagator::isOldPropagationType
bool isOldPropagationType
Definition: AnalyticalPropagator.h:110
DeadROC_duringRun.dir
dir
Definition: DeadROC_duringRun.py:23