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  theTkProp->setPropagationDirection(dir);
64  theGenProp->setPropagationDirection(dir);
65  }
66 
67 
70 
71 
72 
73  private:
74  std::pair<TrajectoryStateOnSurface,double>
75  propagateWithPath(const FreeTrajectoryState& fts,
76  const Plane& plane) const override;
77 
78 
79  std::pair<TrajectoryStateOnSurface,double>
80  propagateWithPath(const FreeTrajectoryState& fts,
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 
113  const MagneticField* theField;
115 
116  protected:
117 
118 };
119 
120 #endif // SMARTPROPAGATOR_H
121 
122 
virtual void setPropagationDirection(PropagationDirection dir)
Definition: Propagator.h:144
ReferenceCountingPointer< Cylinder > theTkVolume
Propagator * theGenProp
PropagationDirection
Definition: Plane.h:17
virtual SmartPropagator * clone() const
Virtual constructor (using copy c&#39;tor)
Propagator * theTkProp
void setPropagationDirection(PropagationDirection dir) override
setting the direction fo both components
virtual const MagneticField * magneticField() const
return the magneticField
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:15
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
Definition: Propagator.h:56
dbl *** dir
Definition: mlp_gen.cc:35
const double epsilon
Unlimited (trivial) bounds.