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 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 {
57  }
58 
61  {
65  }
66 
67 
70 
71 
72 
73  private:
74  std::pair<TrajectoryStateOnSurface,double>
76  const Plane& plane) const override;
77 
78 
79  std::pair<TrajectoryStateOnSurface,double>
81  const Cylinder& cylinder) const override;
82 
83  virtual std::pair< TrajectoryStateOnSurface, double>
84  propagateWithPath (const TrajectoryStateOnSurface& tsos, const Plane& sur) const override;
85 
86  virtual std::pair< TrajectoryStateOnSurface, double>
87  propagateWithPath (const TrajectoryStateOnSurface& tsos, const Cylinder& sur) const override;
88 
89  public:
90 
92  bool insideTkVol(const FreeTrajectoryState& fts) const ;
94  bool insideTkVol(const Surface& surface) const ;
96  bool insideTkVol(const Cylinder& cylin) const ;
98  bool insideTkVol(const Plane& plane) const ;
99 
101  const Propagator* getTkPropagator() const ;
103  const Propagator* getGenPropagator() const ;
105  virtual const MagneticField* magneticField() const {return theField;}
106 
107  private:
109  void initTkVolume(float epsilon);
110 
115 
116  protected:
117 
118 };
119 
120 #endif // SMARTPROPAGATOR_H
121 
122 
Propagator * theGenProp
virtual void setPropagationDirection(PropagationDirection dir)
Definition: Propagator.h:140
virtual ~SmartPropagator()
void initTkVolume(float epsilon)
build the tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
PropagationDirection
Definition: Plane.h:17
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
void setPropagationDirection(PropagationDirection dir) override
setting the direction fo both components
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
Propagator * theTkProp
const MagneticField * theField
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
SmartPropagator(const Propagator *aTkProp, const Propagator *aGenProp, const MagneticField *field, PropagationDirection dir=alongMomentum, float epsilon=5)
Defines which propagator is used inside Tk and which outside.
ReferenceCountingPointer< Cylinder > theTkVolume
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:53
virtual const MagneticField * magneticField() const
return the magneticField
dbl *** dir
Definition: mlp_gen.cc:35
const Propagator * getGenPropagator() const
return the propagator used outside tracker
virtual SmartPropagator * clone() const
Virtual constructor (using copy c&#39;tor)