CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SmartPropagator.h
Go to the documentation of this file.
1 #ifndef GeomPropagators_SmartPropagator_H
2 #define GeomPropagators_SmartPropagator_H
3 
23 /* Collaborating Class Declarations */
30 
31 class Cylinder;
32 class Plane;
33 
34 
35 /* Class SmartPropagator Interface */
36 
37 class SmartPropagator GCC11_FINAL : public Propagator {
38 
39  public:
40 
41  /* Constructor */
43  SmartPropagator(Propagator* aTkProp, Propagator* aGenProp, const MagneticField* field,
45 
47  SmartPropagator(const Propagator& aTkProp, const Propagator& aGenProp,const MagneticField* field,
49 
52 
54  virtual ~SmartPropagator() ;
55 
57  virtual SmartPropagator* clone() const {
58  return new SmartPropagator(getTkPropagator(),getGenPropagator(),magneticField());
59  }
60 
63  {
65  getTkPropagator()->setPropagationDirection(dir);
66  getGenPropagator()->setPropagationDirection(dir);
67  }
68 
69 
70  /* Operations as propagator*/
71  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
72  const Surface& surface) const;
73 
75  const Surface& surface) const {
76  return Propagator::propagate(tsos,surface);
77  }
78 
79  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
80  const Plane& plane) const;
81 
83  const Plane& plane) const {
84  return Propagator::propagate(tsos, plane);
85  }
86 
87  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
88  const Cylinder& cylinder) const;
89 
91  const Cylinder& cylinder) const {
92  return Propagator::propagate(tsos, cylinder);
93  }
94 
95  std::pair<TrajectoryStateOnSurface,double>
97  const Surface& surface) const {
98  return Propagator::propagateWithPath(fts,surface);
99  }
100 
101  std::pair<TrajectoryStateOnSurface,double>
103  const Surface& surface) const {
104  return Propagator::propagateWithPath(tsos,surface);
105  }
106 
107  std::pair<TrajectoryStateOnSurface,double>
108  propagateWithPath(const FreeTrajectoryState& fts,
109  const Plane& plane) const;
110 
111  std::pair<TrajectoryStateOnSurface,double>
113  const Plane& plane) const {
114  return Propagator::propagateWithPath(tsos, plane);
115  }
116 
117  std::pair<TrajectoryStateOnSurface,double>
118  propagateWithPath(const FreeTrajectoryState& fts,
119  const Cylinder& cylinder) const;
120 
121  std::pair<TrajectoryStateOnSurface,double>
123  const Cylinder& cylinder) const {
124  return Propagator::propagateWithPath(tsos, cylinder);
125  }
126 
128  bool insideTkVol(const FreeTrajectoryState& fts) const ;
130  bool insideTkVol(const Surface& surface) const ;
132  bool insideTkVol(const Cylinder& cylin) const ;
134  bool insideTkVol(const Plane& plane) const ;
135 
137  Propagator* getTkPropagator() const ;
139  Propagator* getGenPropagator() const ;
141  virtual const MagneticField* magneticField() const {return theField;}
142 
143  private:
145  static void initTkVolume(float epsilon);
146 
149  const MagneticField* theField;
150  static ReferenceCountingPointer<Cylinder> & theTkVolume();
151 
152  protected:
153 
154 };
155 
156 #endif // SMARTPROPAGATOR_H
157 
158 
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
void setPropagationDirection(PropagationDirection dir) const
setting the direction fo both components
Propagator * theGenProp
PropagationDirection
Definition: Plane.h:17
virtual SmartPropagator * clone() const
Virtual constructor (using copy c&#39;tor)
Propagator * theTkProp
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
virtual const MagneticField * magneticField() const
return the magneticField
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
virtual void setPropagationDirection(PropagationDirection dir) const
Definition: Propagator.h:134
dbl *** dir
Definition: mlp_gen.cc:35
const double epsilon
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Surface &surface) const
Unlimited (trivial) bounds.