CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
SmartPropagator Class Referencefinal

#include <SmartPropagator.h>

Inheritance diagram for SmartPropagator:
Propagator

Public Member Functions

SmartPropagatorclone () const override
 Virtual constructor (using copy c'tor) More...
 
const PropagatorgetGenPropagator () const
 return the propagator used outside tracker More...
 
const PropagatorgetTkPropagator () const
 return the propagator used inside tracker More...
 
bool insideTkVol (const FreeTrajectoryState &fts) const
 true if a fts is inside tracker volume More...
 
bool insideTkVol (const Surface &surface) const
 true if a surface is inside tracker volume More...
 
bool insideTkVol (const Cylinder &cylin) const
 true if a cylinder is inside tracker volume More...
 
bool insideTkVol (const Plane &plane) const
 true if a plane is inside tracker volume More...
 
const MagneticFieldmagneticField () const override
 return the magneticField More...
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const final
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const final
 
template<typename STA , typename SUR >
TrajectoryStateOnSurface propagate (STA const &state, SUR const &surface) const
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &, const Plane &) const=0
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &sur) const final
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &, const Surface &) const final
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const
 Propagate to PCA to a line (given by 2 points) given a starting point. More...
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const=0
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const
 Propagate to PCA to a line (given by beamSpot position and slope) given a starting point. More...
 
void setPropagationDirection (PropagationDirection dir) override
 setting the direction fo both components More...
 
 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. More...
 
 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. More...
 
 SmartPropagator (const SmartPropagator &)
 Copy constructor. More...
 
 ~SmartPropagator () override
 
- Public Member Functions inherited from Propagator
template<typename STA , typename SUR >
TrajectoryStateOnSurface propagate (STA const &state, SUR const &surface) const
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const final
 
virtual FreeTrajectoryState propagate (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const final
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &, const Surface &) const final
 
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &sur) const final
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest1, const GlobalPoint &pDest2) const
 Propagate to PCA to a line (given by 2 points) given a starting point. More...
 
virtual std::pair< FreeTrajectoryState, double > propagateWithPath (const FreeTrajectoryState &ftsStart, const reco::BeamSpot &beamSpot) const
 Propagate to PCA to a line (given by beamSpot position and slope) given a starting point. More...
 
virtual PropagationDirection propagationDirection () const final
 
 Propagator (PropagationDirection dir=alongMomentum)
 
virtual bool setMaxDirectionChange (float phiMax)
 
virtual ~Propagator ()
 

Private Member Functions

void initTkVolume (float epsilon)
 build the tracker volume More...
 
std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &fts, const Plane &plane) const override
 
std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const FreeTrajectoryState &fts, const Cylinder &cylinder) const override
 
std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const override
 
std::pair< TrajectoryStateOnSurface, double > propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const override
 

Private Attributes

const MagneticFieldtheField
 
PropagatortheGenProp
 
PropagatortheTkProp
 
ReferenceCountingPointer< CylindertheTkVolume
 

Detailed Description

A propagator which use different algorithm to propagate inside or outside tracker

Author
Stefano Lacaprara - INFN Padova author Chang Liu - Purdue University

Modification: 26-Jun-2002 SL: theTkVolume is now a static ReferenceCountingPointer<BoundCylinder> 28-Aug-2002 SL: added methods to unhide Propagator methods 29-Oct-2002 SL: fixed clone and copy constructor, and BoundCylinder are build with CylinderBuilder to enforce the referencePointer

Definition at line 34 of file SmartPropagator.h.

Constructor & Destructor Documentation

◆ SmartPropagator() [1/3]

SmartPropagator::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.

Definition at line 36 of file SmartPropagator.cc.

References geometryDiff::epsilon, and initTkVolume().

Referenced by clone().

41  : Propagator(dir), theTkProp(aTkProp->clone()), theGenProp(aGenProp->clone()), theField(field) {
43 }
Propagator * theGenProp
void initTkVolume(float epsilon)
build the tracker volume
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:46
virtual Propagator * clone() const =0
Propagator * theTkProp
const MagneticField * theField

◆ SmartPropagator() [2/3]

SmartPropagator::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.

Definition at line 45 of file SmartPropagator.cc.

References geometryDiff::epsilon, and initTkVolume().

50  : Propagator(dir), theTkProp(aTkProp.clone()), theGenProp(aGenProp.clone()), theField(field) {
52 }
Propagator * theGenProp
void initTkVolume(float epsilon)
build the tracker volume
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:46
virtual Propagator * clone() const =0
Propagator * theTkProp
const MagneticField * theField

◆ SmartPropagator() [3/3]

SmartPropagator::SmartPropagator ( const SmartPropagator aProp)

Copy constructor.

Definition at line 54 of file SmartPropagator.cc.

References Propagator::clone(), getGenPropagator(), getTkPropagator(), theGenProp, and theTkProp.

55  : Propagator(aProp.propagationDirection()), theTkProp(nullptr), theGenProp(nullptr) {
56  if (aProp.theTkProp)
57  theTkProp = aProp.getTkPropagator()->clone();
58  if (aProp.theGenProp)
59  theTkProp = aProp.getGenPropagator()->clone();
60 
61  //SL since it's a copy constructor, then the TkVolume has been already
62  //initialized
63  // initTkVolume(epsilon);
64 }
Propagator * theGenProp
Propagator(PropagationDirection dir=alongMomentum)
Definition: Propagator.h:46
virtual Propagator * clone() const =0
virtual PropagationDirection propagationDirection() const final
Definition: Propagator.h:139
const Propagator * getTkPropagator() const
return the propagator used inside tracker
Propagator * theTkProp
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ ~SmartPropagator()

SmartPropagator::~SmartPropagator ( )
override

virtual destructor

Definition at line 67 of file SmartPropagator.cc.

References theGenProp, and theTkProp.

67  {
68  delete theTkProp;
69  delete theGenProp;
70 }
Propagator * theGenProp
Propagator * theTkProp

Member Function Documentation

◆ clone()

SmartPropagator* SmartPropagator::clone ( void  ) const
inlineoverridevirtual

Virtual constructor (using copy c'tor)

Implements Propagator.

Definition at line 58 of file SmartPropagator.h.

References getGenPropagator(), getTkPropagator(), magneticField(), and SmartPropagator().

58  {
60  }
const Propagator * getTkPropagator() const
return the propagator used inside tracker
const MagneticField * magneticField() const override
return the magneticField
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.
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ getGenPropagator()

const Propagator * SmartPropagator::getGenPropagator ( ) const

return the propagator used outside tracker

Definition at line 157 of file SmartPropagator.cc.

References theGenProp.

Referenced by clone(), propagateWithPath(), and SmartPropagator().

157 { return theGenProp; }
Propagator * theGenProp

◆ getTkPropagator()

const Propagator * SmartPropagator::getTkPropagator ( ) const

return the propagator used inside tracker

Definition at line 155 of file SmartPropagator.cc.

References theTkProp.

Referenced by clone(), propagateWithPath(), and SmartPropagator().

155 { return theTkProp; }
Propagator * theTkProp

◆ initTkVolume()

void SmartPropagator::initTkVolume ( float  epsilon)
private

build the tracker volume

Definition at line 73 of file SmartPropagator.cc.

References Cylinder::build(), geometryDiff::epsilon, TrackerBounds::halfLength(), TrackerBounds::radius(), CosmicsPD_Skims::radius, makeMuonMisalignmentScenario::rot, and theTkVolume.

Referenced by SmartPropagator().

73  {
74  //
75  // fill tracker dimensions
76  //
77  float radius = TrackerBounds::radius();
78  float r_out = radius + epsilon / 2;
79  float r_in = r_out - epsilon;
80  float z_max = TrackerBounds::halfLength();
81  float z_min = -z_max;
82 
83  Surface::PositionType pos(0, 0, 0); // centered at the global origin
84  Surface::RotationType rot; // unit matrix - barrel cylinder orientation
85 
86  theTkVolume = Cylinder::build(radius, pos, rot, new SimpleCylinderBounds(r_in, r_out, z_min, z_max));
87 }
static float halfLength()
Definition: TrackerBounds.h:33
static float radius()
Definition: TrackerBounds.h:32
static CylinderPointer build(const PositionType &pos, const RotationType &rot, Scalar radius, Bounds *bounds=nullptr)
Definition: Cylinder.h:45
ReferenceCountingPointer< Cylinder > theTkVolume

◆ insideTkVol() [1/4]

bool SmartPropagator::insideTkVol ( const FreeTrajectoryState fts) const

true if a fts is inside tracker volume

Definition at line 125 of file SmartPropagator.cc.

References runTauDisplay::gp, TrackerBounds::halfLength(), FreeTrajectoryState::position(), and TrackerBounds::radius().

Referenced by propagateWithPath().

125  {
126  GlobalPoint gp = fts.position();
127  // LocalPoint lp = theTkVolume()->toLocal(gp);
128  // return theTkVolume()->bounds().inside(lp);
129 
130  return ((gp.perp() <= TrackerBounds::radius() + 10.) && (fabs(gp.z()) <= TrackerBounds::halfLength() + 10.));
131 }
static float halfLength()
Definition: TrackerBounds.h:33
GlobalPoint position() const
static float radius()
Definition: TrackerBounds.h:32

◆ insideTkVol() [2/4]

bool SmartPropagator::insideTkVol ( const Surface surface) const

true if a surface is inside tracker volume

Definition at line 133 of file SmartPropagator.cc.

References runTauDisplay::gp, TrackerBounds::halfLength(), GloballyPositioned< T >::position(), and TrackerBounds::radius().

133  {
134  const GlobalPoint& gp = surface.position();
135  // LocalPoint lp = theTkVolume()->toLocal(gp);
136 
137  // return theTkVolume()->bounds().inside(lp);
138  return ((gp.perp() <= TrackerBounds::radius() + 10.) && (fabs(gp.z()) <= TrackerBounds::halfLength() + 10.));
139 }
static float halfLength()
Definition: TrackerBounds.h:33
static float radius()
Definition: TrackerBounds.h:32
const PositionType & position() const

◆ insideTkVol() [3/4]

bool SmartPropagator::insideTkVol ( const Cylinder cylin) const

true if a cylinder is inside tracker volume

◆ insideTkVol() [4/4]

bool SmartPropagator::insideTkVol ( const Plane plane) const

true if a plane is inside tracker volume

Definition at line 148 of file SmartPropagator.cc.

References runTauDisplay::gp, TrackerBounds::halfLength(), GloballyPositioned< T >::position(), and TrackerBounds::radius().

148  {
149  const GlobalPoint& gp = plane.position();
150  // LocalPoint lp = theTkVolume()->toLocal(gp);
151  // return theTkVolume()->bounds().inside(lp);
152  return ((gp.perp() <= TrackerBounds::radius() + 10.) && (fabs(gp.z()) <= TrackerBounds::halfLength() + 10.));
153 }
static float halfLength()
Definition: TrackerBounds.h:33
static float radius()
Definition: TrackerBounds.h:32
const PositionType & position() const

◆ magneticField()

const MagneticField* SmartPropagator::magneticField ( ) const
inlineoverridevirtual

return the magneticField

Implements Propagator.

Definition at line 100 of file SmartPropagator.h.

References theField.

Referenced by clone().

100 { return theField; }
const MagneticField * theField

◆ propagate() [1/4]

virtual FreeTrajectoryState Propagator::propagate
inlinefinal

Definition at line 109 of file Propagator.h.

109  {
110  return propagateWithPath(ftsStart, pDest).first;
111  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagate() [2/4]

virtual FreeTrajectoryState Propagator::propagate
inlinefinal

Definition at line 112 of file Propagator.h.

114  {
115  return propagateWithPath(ftsStart, pDest1, pDest2).first;
116  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagate() [3/4]

virtual FreeTrajectoryState Propagator::propagate
inlinefinal

Definition at line 117 of file Propagator.h.

118  {
119  return propagateWithPath(ftsStart, beamSpot).first;
120  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagate() [4/4]

template<typename STA , typename SUR >
TrajectoryStateOnSurface Propagator::propagate ( typename STA  ,
typename SUR   
)
inline

Definition at line 50 of file Propagator.h.

Referenced by GlobalTrackerMuonAlignment::analyzeTrackTrack(), and GlobalTrackerMuonAlignment::analyzeTrackTrajectory().

50  {
51  return propagateWithPath(state, surface).first;
52  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagateWithPath() [1/13]

virtual std::pair<TrajectoryStateOnSurface, double> Propagator::propagateWithPath

◆ propagateWithPath() [2/13]

virtual std::pair<TrajectoryStateOnSurface, double> Propagator::propagateWithPath
inline

Definition at line 86 of file Propagator.h.

87  {
88  return propagateWithPath(*tsos.freeState(), sur);
89  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagateWithPath() [3/13]

std::pair< TrajectoryStateOnSurface, double > Propagator::propagateWithPath
final

The methods propagateWithPath() are identical to the corresponding methods propagate() in what concerns the resulting TrajectoryStateOnSurface, but they provide in addition the exact path length along the trajectory.Only use the generic method if the surface type (plane or cylinder) is not known at the calling point.

Definition at line 10 of file Propagator.cc.

11  {
12  // try plane first, most probable case (disk "is a" plane too)
13  const Plane* bp = dynamic_cast<const Plane*>(&sur);
14  if (bp != nullptr)
15  return propagateWithPath(state, *bp);
16 
17  // if not plane try cylinder
18  const Cylinder* bc = dynamic_cast<const Cylinder*>(&sur);
19  if (bc != nullptr)
20  return propagateWithPath(state, *bc);
21 
22  // unknown surface - can't do it!
23  throw PropagationException("The surface is neither Cylinder nor Plane");
24 }
Definition: Plane.h:16
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
Common base class.

◆ propagateWithPath() [4/13]

std::pair< TrajectoryStateOnSurface, double > Propagator::propagateWithPath
final

The following three methods are equivalent to the corresponding methods above, but if the starting state is a TrajectoryStateOnSurface, it's better to use it as such rather than use just the FreeTrajectoryState part. It may help some concrete propagators.Only use the generic method if the surface type (plane or cylinder) is not known at the calling point.

Definition at line 26 of file Propagator.cc.

27  {
28  // try plane first, most probable case (disk "is a" plane too)
29  const Plane* bp = dynamic_cast<const Plane*>(&sur);
30  if (bp != nullptr)
31  return propagateWithPath(state, *bp);
32 
33  // if not plane try cylinder
34  const Cylinder* bc = dynamic_cast<const Cylinder*>(&sur);
35  if (bc != nullptr)
36  return propagateWithPath(state, *bc);
37 
38  // unknown surface - can't do it!
39  throw PropagationException("The surface is neither Cylinder nor Plane");
40 }
Definition: Plane.h:16
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override
Common base class.

◆ propagateWithPath() [5/13]

virtual std::pair<TrajectoryStateOnSurface, double> Propagator::propagateWithPath

◆ propagateWithPath() [6/13]

std::pair< FreeTrajectoryState, double > Propagator::propagateWithPath

Propagate to PCA to a line (given by 2 points) given a starting point.

Definition at line 47 of file Propagator.cc.

49  {
50  throw cms::Exception("Propagator::propagate(FTS,GlobalPoint,GlobalPoint) not implemented");
51  return std::pair<FreeTrajectoryState, double>();
52 }

◆ propagateWithPath() [7/13]

virtual std::pair<TrajectoryStateOnSurface, double> Propagator::propagateWithPath
inline

Definition at line 91 of file Propagator.h.

92  {
93  return propagateWithPath(*tsos.freeState(), sur);
94  }
std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &fts, const Plane &plane) const override

◆ propagateWithPath() [8/13]

std::pair< FreeTrajectoryState, double > Propagator::propagateWithPath

implemented by Stepping Helix Propagate to PCA to point given a starting point

Definition at line 42 of file Propagator.cc.

43  {
44  throw cms::Exception("Propagator::propagate(FTS,GlobalPoint) not implemented");
45  return std::pair<FreeTrajectoryState, double>();
46 }

◆ propagateWithPath() [9/13]

std::pair< FreeTrajectoryState, double > Propagator::propagateWithPath

Propagate to PCA to a line (given by beamSpot position and slope) given a starting point.

Definition at line 53 of file Propagator.cc.

54  {
55  throw cms::Exception("Propagator::propagate(FTS,beamSpot) not implemented");
56  return std::pair<FreeTrajectoryState, double>();
57 }

◆ propagateWithPath() [10/13]

std::pair< TrajectoryStateOnSurface, double > SmartPropagator::propagateWithPath ( const FreeTrajectoryState fts,
const Plane plane 
) const
overrideprivatevirtual

Implements Propagator.

Definition at line 89 of file SmartPropagator.cc.

References getGenPropagator(), getTkPropagator(), insideTkVol(), and Propagator::propagateWithPath().

90  {
91  if (insideTkVol(fts) && insideTkVol(plane)) {
92  return getTkPropagator()->propagateWithPath(fts, plane);
93  } else {
94  return getGenPropagator()->propagateWithPath(fts, plane);
95  }
96 }
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ propagateWithPath() [11/13]

std::pair< TrajectoryStateOnSurface, double > SmartPropagator::propagateWithPath ( const FreeTrajectoryState fts,
const Cylinder cylinder 
) const
overrideprivatevirtual

Implements Propagator.

Definition at line 98 of file SmartPropagator.cc.

References getGenPropagator(), getTkPropagator(), insideTkVol(), and Propagator::propagateWithPath().

99  {
100  if (insideTkVol(fts) && insideTkVol(cylinder)) {
101  return getTkPropagator()->propagateWithPath(fts, cylinder);
102  } else {
103  return getGenPropagator()->propagateWithPath(fts, cylinder);
104  }
105 }
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ propagateWithPath() [12/13]

std::pair< TrajectoryStateOnSurface, double > SmartPropagator::propagateWithPath ( const TrajectoryStateOnSurface tsos,
const Plane sur 
) const
overrideprivatevirtual

Reimplemented from Propagator.

Definition at line 107 of file SmartPropagator.cc.

References TrajectoryStateOnSurface::freeState(), getGenPropagator(), getTkPropagator(), insideTkVol(), and Propagator::propagateWithPath().

108  {
109  if (insideTkVol(*fts.freeState()) && insideTkVol(plane)) {
110  return getTkPropagator()->propagateWithPath(fts, plane);
111  } else {
112  return getGenPropagator()->propagateWithPath(fts, plane);
113  }
114 }
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ propagateWithPath() [13/13]

std::pair< TrajectoryStateOnSurface, double > SmartPropagator::propagateWithPath ( const TrajectoryStateOnSurface tsos,
const Cylinder sur 
) const
overrideprivatevirtual

Reimplemented from Propagator.

Definition at line 116 of file SmartPropagator.cc.

References TrajectoryStateOnSurface::freeState(), getGenPropagator(), getTkPropagator(), insideTkVol(), and Propagator::propagateWithPath().

117  {
118  if (insideTkVol(*fts.freeState()) && insideTkVol(cylinder)) {
119  return getTkPropagator()->propagateWithPath(fts, cylinder);
120  } else {
121  return getGenPropagator()->propagateWithPath(fts, cylinder);
122  }
123 }
bool insideTkVol(const FreeTrajectoryState &fts) const
true if a fts is inside tracker volume
const Propagator * getTkPropagator() const
return the propagator used inside tracker
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
const Propagator * getGenPropagator() const
return the propagator used outside tracker

◆ setPropagationDirection()

void SmartPropagator::setPropagationDirection ( PropagationDirection  dir)
inlineoverridevirtual

setting the direction fo both components

Reimplemented from Propagator.

Definition at line 63 of file SmartPropagator.h.

References DeadROC_duringRun::dir, Propagator::setPropagationDirection(), theGenProp, and theTkProp.

63  {
67  }
Propagator * theGenProp
virtual void setPropagationDirection(PropagationDirection dir)
Definition: Propagator.h:130
Propagator * theTkProp

Member Data Documentation

◆ theField

const MagneticField* SmartPropagator::theField
private

Definition at line 108 of file SmartPropagator.h.

Referenced by magneticField().

◆ theGenProp

Propagator* SmartPropagator::theGenProp
private

◆ theTkProp

Propagator* SmartPropagator::theTkProp
private

◆ theTkVolume

ReferenceCountingPointer<Cylinder> SmartPropagator::theTkVolume
private

Definition at line 109 of file SmartPropagator.h.

Referenced by initTkVolume().