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 BoundCylinder;
32 class BoundPlane;
33 
34 
35 /* Class SmartPropagator Interface */
36 
37 class SmartPropagator : 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 {
59  }
60 
63  {
67  }
68 
69 
70  /* Operations as propagator*/
72  const Surface& surface) const;
73 
75  const Surface& surface) const {
76  return Propagator::propagate(tsos,surface);
77  }
78 
80  const Plane& plane) const;
81 
83  const Plane& plane) const {
84  return Propagator::propagate(tsos, plane);
85  }
86 
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>
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>
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 BoundCylinder& 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 
151 
152  protected:
153 
154 };
155 
156 #endif // SMARTPROPAGATOR_H
157 
158 
Propagator * theGenProp
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Surface &surface) const
virtual ~SmartPropagator()
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
static void initTkVolume(float epsilon)
build the tracker volume
SmartPropagator(Propagator *aTkProp, Propagator *aGenProp, const MagneticField *field, PropagationDirection dir=alongMomentum, float epsilon=5)
Defines which propagator is used inside Tk and which outside.
Propagator * getTkPropagator() const
return the propagator used inside tracker
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Surface &surface) const
TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
PropagationDirection
Definition: Plane.h:17
static ReferenceCountingPointer< BoundCylinder > & theTkVolume()
void setPropagationDirection(PropagationDirection dir) const
setting the direction fo both components
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:77
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
Propagator * theTkProp
const MagneticField * theField
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
Definition: Propagator.cc:12
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Cylinder &cylinder) const
Propagator * getGenPropagator() const
return the propagator used outside tracker
virtual const MagneticField * magneticField() const
return the magneticField
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
TrajectoryStateOnSurface propagate(const FreeTrajectoryState &fts, const Surface &surface) const
virtual void setPropagationDirection(PropagationDirection dir) const
Definition: Propagator.h:132
dbl *** dir
Definition: mlp_gen.cc:35
const double epsilon
virtual SmartPropagator * clone() const
Virtual constructor (using copy c&#39;tor)