#include <AnalyticalPropagator.h>
Public Member Functions | |
AnalyticalPropagator (const MagneticField *field, PropagationDirection dir=alongMomentum, float maxDPhi=1.6, bool isOld=true) | |
AnalyticalPropagator * | clone () const override |
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 TrajectoryStateOnSurface &tsos, const Surface &sur) 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 FreeTrajectoryState &, const Plane &) 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... | |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Surface &) const final |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const=0 |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const |
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 22 of file AnalyticalPropagator.h.
|
private |
Definition at line 106 of file AnalyticalPropagator.h.
|
inline |
Definition at line 24 of file AnalyticalPropagator.h.
Referenced by clone().
|
inlineoverride |
Definition at line 34 of file AnalyticalPropagator.h.
|
inlineoverridevirtual |
Implements Propagator.
Definition at line 64 of file AnalyticalPropagator.h.
References AnalyticalPropagator().
|
inlineoverrideprivatevirtual |
|
inlinefinal |
Definition at line 117 of file Propagator.h.
|
inline |
Definition at line 50 of file Propagator.h.
Referenced by HGCalTBGeometry::neighborZ(), HGCalGeometry::neighborZ(), TrackingRecHitPropagator::project(), RecHitPropagator::propagate(), spr::propagateCalo(), spr::propagateHCAL(), cms::MuonTCMETValueMapProducer::propagateTrack(), spr::propagateTrackerEnd(), TCMETAlgo::propagateTrackToCalorimeterFace(), PerigeeRefittedTrackState::trajectoryStateOnSurface(), and KinematicRefittedTrackState::trajectoryStateOnSurface().
|
inlinefinal |
Definition at line 109 of file Propagator.h.
|
inlinefinal |
Definition at line 112 of file Propagator.h.
|
private |
propagation of errors (if needed) and generation of a new TSOS
Definition at line 106 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.
|
private |
parameter propagation to cylinder (returns position, momentum and path length)
Definition at line 139 of file AnalyticalPropagator.cc.
References funct::abs(), MillePedeFileConverter_cfg::e, f, PV3DBase< T, PVType, FrameType >::mag(), FreeTrajectoryState::momentum(), AlCaHLTBitMon_ParallelJobs::p, GloballyPositioned< T >::position(), FreeTrajectoryState::position(), alignCSCRings::s, tolerance, FreeTrajectoryState::transverseCurvature(), UNLIKELY, x, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
|
private |
parameter propagation to plane (returns position, momentum and path length)
Definition at line 180 of file AnalyticalPropagator.cc.
References funct::abs(), MillePedeFileConverter_cfg::e, f, LIKELY, LogDebug, PV3DBase< T, PVType, FrameType >::mag(), Basic3DVector< T >::mag(), FreeTrajectoryState::momentum(), oppositeToMomentum, AlCaHLTBitMon_ParallelJobs::p, perp(), PV3DBase< T, PVType, FrameType >::phi(), FreeTrajectoryState::position(), alignCSCRings::s, tolerance, FreeTrajectoryState::transverseCurvature(), UNLIKELY, and x.
|
private |
helix parameter propagation to a plane using HelixPlaneCrossing
Definition at line 372 of file AnalyticalPropagator.cc.
References HelixPlaneCrossing::direction(), PV3DBase< T, PVType, FrameType >::mag(), AlCaHLTBitMon_ParallelJobs::p, HelixPlaneCrossing::pathLength(), HelixPlaneCrossing::position(), alignCSCRings::s, UNLIKELY, and x.
|
private |
straight line parameter propagation to a plane
|
private |
straight line parameter propagation to a cylinder
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.
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.
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.
|
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.
virtual 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.
virtual std::pair<TrajectoryStateOnSurface, double> Propagator::propagateWithPath |
|
inline |
Definition at line 91 of file Propagator.h.
|
inline |
Definition at line 86 of file Propagator.h.
|
overrideprivatevirtual |
propagation to plane with path length
Implements Propagator.
|
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 59 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 70 of file AnalyticalPropagator.h.
References theMaxDBzRatio.
|
private |
Definition at line 110 of file AnalyticalPropagator.h.
|
private |
Definition at line 109 of file AnalyticalPropagator.h.
Referenced by magneticField().
|
private |
Definition at line 108 of file AnalyticalPropagator.h.
Referenced by setMaxRelativeChangeInBz().
|
private |
Definition at line 107 of file AnalyticalPropagator.h.
Referenced by setMaxDirectionChange().