CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Propagator.h
Go to the documentation of this file.
1 #ifndef CommonDet_Propagator_H
2 #define CommonDet_Propagator_H
3 
6 #include <utility>
7 
9 
12 class Plane;
13 class Cylinder;
14 class Surface;
15 class MagneticField;
16 
17 namespace reco{class BeamSpot;}
18 
40 class Propagator {
41 public:
42 
44  theDir(dir) {}
45  virtual ~Propagator();
46 
55  propagate (const FreeTrajectoryState&, const Surface&) const;
56 
58  propagate (const FreeTrajectoryState&, const Plane&) const = 0;
59 
61  propagate (const FreeTrajectoryState&, const Cylinder&) const = 0;
62 
74  propagate (const TrajectoryStateOnSurface&, const Surface&) const;
75 
77  propagate (const TrajectoryStateOnSurface&, const Plane&) const;
78 
80  propagate (const TrajectoryStateOnSurface&, const Cylinder&) const;
81 
82  virtual FreeTrajectoryState
84  const reco::BeamSpot&) const;
85 
95  virtual std::pair< TrajectoryStateOnSurface, double>
96  propagateWithPath (const FreeTrajectoryState&, const Surface&) const;
97 
98  virtual std::pair< TrajectoryStateOnSurface, double>
99  propagateWithPath (const FreeTrajectoryState&, const Plane&) const = 0;
100 
101  virtual std::pair< TrajectoryStateOnSurface, double>
102  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const=0;
103 
114  virtual std::pair< TrajectoryStateOnSurface, double>
115  propagateWithPath (const TrajectoryStateOnSurface&, const Surface&) const;
116 
117  virtual std::pair< TrajectoryStateOnSurface, double>
118  propagateWithPath (const TrajectoryStateOnSurface&, const Plane&) const;
119 
120  virtual std::pair< TrajectoryStateOnSurface, double>
121  propagateWithPath (const TrajectoryStateOnSurface&, const Cylinder&) const;
122 
123  virtual std::pair<FreeTrajectoryState, double>
125  const GlobalPoint&, const GlobalPoint&) const;
126 
135  theDir = dir;
136  }
137 
146  return theDir;
147  }
148 
159  virtual bool setMaxDirectionChange( float phiMax) { return false;}
160 
161  virtual Propagator * clone() const = 0;
162 
163  virtual const MagneticField* magneticField() const = 0;
164 
165 private:
166 
168 };
169 
171 private:
172  Propagator const & prop;
174 public:
176  prop(iprop),
177  oldDir(iprop.propagationDirection()) {
179  }
182  }
183 };
184 
185 
186 #endif // CommonDet_Propagator_H
PropagationDirection oldDir
Definition: Propagator.h:173
virtual ~Propagator()
Definition: Propagator.cc:9
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:43
Propagator const & prop
Definition: Propagator.h:172
virtual Propagator * clone() const =0
PropagationDirection
virtual bool setMaxDirectionChange(float phiMax)
Definition: Propagator.h:159
Definition: Plane.h:17
virtual PropagationDirection propagationDirection() const GCC11_FINAL
Definition: Propagator.h:145
SetPropagationDirection(Propagator const &iprop, PropagationDirection dir)
Definition: Propagator.h:175
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
PropagationDirection theDir
Definition: Propagator.h:167
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
string const
Definition: compareJSON.py:14
virtual const MagneticField * magneticField() const =0
virtual void setPropagationDirection(PropagationDirection dir) const
Definition: Propagator.h:134
dbl *** dir
Definition: mlp_gen.cc:35
Unlimited (trivial) bounds.