#include <AnalyticalPropagator.h>
Public Member Functions | |
AnalyticalPropagator (const MagneticField *field, PropagationDirection dir=alongMomentum, float maxDPhi=1.6, bool isOld=true) | |
AnalyticalPropagator * | clone () const override |
bool | setMaxDirectionChange (float phiMax) override |
void | setMaxRelativeChangeInBz (const float maxDBz) |
~AnalyticalPropagator () 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< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const |
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 void | setPropagationDirection (PropagationDirection dir) |
virtual | ~Propagator () |
Private Types | |
typedef std::pair< TrajectoryStateOnSurface, double > | TsosWP |
Private Member Functions | |
const MagneticField * | magneticField () const override |
std::pair< TrajectoryStateOnSurface, double > | propagatedStateWithPath (const FreeTrajectoryState &fts, const Surface &surface, const GlobalTrajectoryParameters >p, const double &s) const |
propagation of errors (if needed) and generation of a new TSOS More... | |
bool | propagateParametersOnCylinder (const FreeTrajectoryState &fts, const Cylinder &cylinder, GlobalPoint &x, GlobalVector &p, double &s) const |
parameter propagation to cylinder (returns position, momentum and path length) More... | |
bool | propagateParametersOnPlane (const FreeTrajectoryState &fts, const Plane &plane, GlobalPoint &x, GlobalVector &p, double &s) const |
parameter propagation to plane (returns position, momentum and path length) More... | |
bool | propagateWithHelixCrossing (HelixPlaneCrossing &, const Plane &, const float, GlobalPoint &, GlobalVector &, double &s) const |
helix parameter propagation to a plane using HelixPlaneCrossing More... | |
bool | propagateWithLineCrossing (const GlobalPoint &, const GlobalVector &, const Plane &, GlobalPoint &, double &) const |
straight line parameter propagation to a plane More... | |
bool | propagateWithLineCrossing (const GlobalPoint &, const GlobalVector &, const Cylinder &, GlobalPoint &, double &) const |
straight line parameter propagation to a cylinder More... | |
std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &fts, const Plane &plane) const override |
propagation to plane with path length More... | |
std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &fts, const Cylinder &cylinder) const override |
propagation to cylinder with path length More... | |
Private Attributes | |
bool | isOldPropagationType |
const MagneticField * | theField |
float | theMaxDBzRatio |
float | theMaxDPhi2 |
(Mostly) analytical helix propagation to cylindrical or planar surfaces. Based on GtfGeometricalPropagator with successive replacement of components (currently: propagation to arbitrary plane).
Definition at line 23 of file AnalyticalPropagator.h.
|
private |
Definition at line 119 of file AnalyticalPropagator.h.
|
inline |
Definition at line 27 of file AnalyticalPropagator.h.
Referenced by clone().
|
inlineoverride |
Definition at line 36 of file AnalyticalPropagator.h.
References Propagator::propagate(), propagateWithPath(), and Propagator::propagateWithPath().
|
inlineoverridevirtual |
Implements Propagator.
Definition at line 70 of file AnalyticalPropagator.h.
References AnalyticalPropagator().
|
inlineoverrideprivatevirtual |
|
private |
propagation of errors (if needed) and generation of a new TSOS
Definition at line 110 of file AnalyticalPropagator.cc.
References SurfaceSideDefinition::afterSurface, alongMomentum, SurfaceSideDefinition::beforeSurface, FreeTrajectoryState::curvilinearError(), FreeTrajectoryState::hasError(), AnalyticalCurvilinearJacobian::jacobian(), CurvilinearTrajectoryError::matrix(), GlobalTrajectoryParameters::momentum(), FreeTrajectoryState::parameters(), GlobalTrajectoryParameters::position(), and alignCSCRings::s.
Referenced by setMaxRelativeChangeInBz().
|
private |
parameter propagation to cylinder (returns position, momentum and path length)
Definition at line 144 of file AnalyticalPropagator.cc.
References funct::abs(), constexpr, MillePedeFileConverter_cfg::e, f, PV3DBase< T, PVType, FrameType >::mag(), FreeTrajectoryState::momentum(), AlCaHLTBitMon_ParallelJobs::p, GloballyPositioned< T >::position(), FreeTrajectoryState::position(), alignCSCRings::s, tolerance, FreeTrajectoryState::transverseCurvature(), Vector3DBase< T, FrameTag >::unit(), UNLIKELY, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by setMaxRelativeChangeInBz().
|
private |
parameter propagation to plane (returns position, momentum and path length)
Definition at line 188 of file AnalyticalPropagator.cc.
References funct::abs(), dir, MillePedeFileConverter_cfg::e, f, LIKELY, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), Basic3DVector< T >::mag(), FreeTrajectoryState::momentum(), oppositeToMomentum, AlCaHLTBitMon_ParallelJobs::p, StraightLineBarrelCylinderCrossing::pathLength(), StraightLinePlaneCrossing::pathLength(), perp(), Geom::Phi< T >::phi(), PV3DBase< T, PVType, FrameType >::phi(), StraightLineBarrelCylinderCrossing::position(), StraightLinePlaneCrossing::position(), FreeTrajectoryState::position(), propagateWithLineCrossing(), alignCSCRings::s, indexGen::s2, tolerance, FreeTrajectoryState::transverseCurvature(), and UNLIKELY.
Referenced by setMaxRelativeChangeInBz().
|
private |
helix parameter propagation to a plane using HelixPlaneCrossing
Definition at line 404 of file AnalyticalPropagator.cc.
References HelixPlaneCrossing::direction(), PV3DBase< T, PVType, FrameType >::mag(), HelixPlaneCrossing::pathLength(), HelixPlaneCrossing::position(), and UNLIKELY.
Referenced by setMaxRelativeChangeInBz().
|
private |
straight line parameter propagation to a plane
Referenced by propagateParametersOnPlane(), and setMaxRelativeChangeInBz().
|
private |
straight line parameter propagation to a cylinder
|
overrideprivatevirtual |
propagation to plane with path length
Implements Propagator.
Referenced by DualBzeroTrajectoryFactory::propagateExternal(), DualTrajectoryFactory::propagateExternal(), and ~AnalyticalPropagator().
|
overrideprivatevirtual |
propagation to cylinder with path length
Implements Propagator.
|
inlineoverridevirtual |
limitation of change in transverse direction (to avoid loops).
Reimplemented from Propagator.
Definition at line 65 of file AnalyticalPropagator.h.
References AlignmentTrackSelector_cfi::phiMax, and theMaxDPhi2.
|
inline |
Set the maximum relative change in Bz (Bz_at_end-Bz_at_start)/Bz_at_start for a single propagation. The default is no limit. NB: this propagator assumes constant, non-zero magnetic field parallel to the z-axis!
Definition at line 79 of file AnalyticalPropagator.h.
References dso_internal, AlCaHLTBitMon_ParallelJobs::p, propagatedStateWithPath(), propagateParametersOnCylinder(), propagateParametersOnPlane(), propagateWithHelixCrossing(), propagateWithLineCrossing(), alignCSCRings::s, theMaxDBzRatio, and x.
|
private |
Definition at line 123 of file AnalyticalPropagator.h.
|
private |
Definition at line 122 of file AnalyticalPropagator.h.
Referenced by magneticField().
|
private |
Definition at line 121 of file AnalyticalPropagator.h.
Referenced by setMaxRelativeChangeInBz().
|
private |
Definition at line 120 of file AnalyticalPropagator.h.
Referenced by setMaxDirectionChange().