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 
10 class Plane;
11 class Cylinder;
12 class Surface;
13 class MagneticField;
14 
15 namespace reco{class BeamSpot;}
16 
38 class Propagator {
39 public:
40 
42  theDir(dir) {}
43  virtual ~Propagator();
44 
53  propagate (const FreeTrajectoryState&, const Surface&) const;
54 
56  propagate (const FreeTrajectoryState&, const Plane&) const = 0;
57 
59  propagate (const FreeTrajectoryState&, const Cylinder&) const = 0;
60 
72  propagate (const TrajectoryStateOnSurface&, const Surface&) const;
73 
75  propagate (const TrajectoryStateOnSurface&, const Plane&) const;
76 
78  propagate (const TrajectoryStateOnSurface&, const Cylinder&) const;
79 
80  virtual FreeTrajectoryState
82  const reco::BeamSpot&) const;
83 
93  virtual std::pair< TrajectoryStateOnSurface, double>
94  propagateWithPath (const FreeTrajectoryState&, const Surface&) const;
95 
96  virtual std::pair< TrajectoryStateOnSurface, double>
97  propagateWithPath (const FreeTrajectoryState&, const Plane&) const = 0;
98 
99  virtual std::pair< TrajectoryStateOnSurface, double>
100  propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const=0;
101 
112  virtual std::pair< TrajectoryStateOnSurface, double>
113  propagateWithPath (const TrajectoryStateOnSurface&, const Surface&) const;
114 
115  virtual std::pair< TrajectoryStateOnSurface, double>
116  propagateWithPath (const TrajectoryStateOnSurface&, const Plane&) const;
117 
118  virtual std::pair< TrajectoryStateOnSurface, double>
119  propagateWithPath (const TrajectoryStateOnSurface&, const Cylinder&) const;
120 
121  virtual std::pair<FreeTrajectoryState, double>
123  const GlobalPoint&, const GlobalPoint&) const;
124 
133  theDir = dir;
134  }
135 
144  return theDir;
145  }
146 
157  virtual bool setMaxDirectionChange( float phiMax) { return false;}
158 
159  virtual Propagator * clone() const = 0;
160 
161  virtual const MagneticField* magneticField() const = 0;
162 
163 private:
164 
166 };
167 
169 private:
170  Propagator const & prop;
172 public:
174  prop(iprop),
175  oldDir(iprop.propagationDirection()) {
177  }
180  }
181 };
182 
183 
184 #endif // CommonDet_Propagator_H
PropagationDirection oldDir
Definition: Propagator.h:171
virtual PropagationDirection propagationDirection() const
Definition: Propagator.h:143
virtual ~Propagator()
Definition: Propagator.cc:9
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:41
Propagator const & prop
Definition: Propagator.h:170
virtual Propagator * clone() const =0
PropagationDirection
virtual bool setMaxDirectionChange(float phiMax)
Definition: Propagator.h:157
Definition: Plane.h:17
SetPropagationDirection(Propagator const &iprop, PropagationDirection dir)
Definition: Propagator.h:173
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
PropagationDirection theDir
Definition: Propagator.h:165
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
virtual const MagneticField * magneticField() const =0
virtual void setPropagationDirection(PropagationDirection dir) const
Definition: Propagator.h:132
dbl *** dir
Definition: mlp_gen.cc:35