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 
21 /* Collaborating Class Declarations */
28 
29 class Cylinder;
30 class Plane;
31 
32 
33 /* Class SmartPropagator Interface */
34 
35 class SmartPropagator GCC11_FINAL : public Propagator {
36 
37  public:
38 
39  /* Constructor */
41  SmartPropagator(const Propagator* aTkProp, const Propagator* aGenProp, const MagneticField* field,
43 
45  SmartPropagator(const Propagator& aTkProp, const Propagator& aGenProp,const MagneticField* field,
47 
50 
52  virtual ~SmartPropagator() ;
53 
55  virtual SmartPropagator* clone() const {
56  return new SmartPropagator(getTkPropagator(),getGenPropagator(),magneticField());
57  }
58 
61  {
63  getTkPropagator()->setPropagationDirection(dir);
64  getGenPropagator()->setPropagationDirection(dir);
65  }
66 
67 
68  /* Operations as propagator*/
69  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
70  const Surface& surface) const;
71 
73  const Surface& surface) const {
74  return Propagator::propagate(tsos,surface);
75  }
76 
77  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
78  const Plane& plane) const;
79 
81  const Plane& plane) const {
82  return Propagator::propagate(tsos, plane);
83  }
84 
85  TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts,
86  const Cylinder& cylinder) const;
87 
89  const Cylinder& cylinder) const {
90  return Propagator::propagate(tsos, cylinder);
91  }
92 
93  std::pair<TrajectoryStateOnSurface,double>
95  const Surface& surface) const {
96  return Propagator::propagateWithPath(fts,surface);
97  }
98 
99  std::pair<TrajectoryStateOnSurface,double>
101  const Surface& surface) const {
102  return Propagator::propagateWithPath(tsos,surface);
103  }
104 
105  std::pair<TrajectoryStateOnSurface,double>
106  propagateWithPath(const FreeTrajectoryState& fts,
107  const Plane& plane) const;
108 
109  std::pair<TrajectoryStateOnSurface,double>
111  const Plane& plane) const {
112  return Propagator::propagateWithPath(tsos, plane);
113  }
114 
115  std::pair<TrajectoryStateOnSurface,double>
116  propagateWithPath(const FreeTrajectoryState& fts,
117  const Cylinder& cylinder) const;
118 
119  std::pair<TrajectoryStateOnSurface,double>
121  const Cylinder& cylinder) const {
122  return Propagator::propagateWithPath(tsos, cylinder);
123  }
124 
126  bool insideTkVol(const FreeTrajectoryState& fts) const ;
128  bool insideTkVol(const Surface& surface) const ;
130  bool insideTkVol(const Cylinder& cylin) const ;
132  bool insideTkVol(const Plane& plane) const ;
133 
135  const Propagator* getTkPropagator() const ;
137  const Propagator* getGenPropagator() const ;
139  virtual const MagneticField* magneticField() const {return theField;}
140 
141  private:
143  void initTkVolume(float epsilon);
144 
147  const MagneticField* theField;
149 
150  protected:
151 
152 };
153 
154 #endif // SMARTPROPAGATOR_H
155 
156 
ReferenceCountingPointer< Cylinder > theTkVolume
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)
tuple field
Definition: statics.py:62
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.