|
| 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 &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 |
|
template<typename STA , typename SUR > |
TrajectoryStateOnSurface | propagate (STA const &state, SUR const &surface) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Cylinder &) const=0 |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Plane &) const=0 |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Surface &) 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 std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &sur) const final |
|
bool | setMaxDirectionChange (float phiMax) override |
|
void | setMaxRelativeChangeInBz (const float maxDBz) |
|
| ~AnalyticalPropagator () override |
|
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 |
|
template<typename STA , typename SUR > |
TrajectoryStateOnSurface | propagate (STA const &state, SUR const &surface) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Surface &) 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 std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Cylinder &sur) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Plane &sur) const |
|
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const TrajectoryStateOnSurface &tsos, const Surface &sur) const final |
|
virtual PropagationDirection | propagationDirection () const final |
|
| Propagator (PropagationDirection dir=alongMomentum) |
|
virtual void | setPropagationDirection (PropagationDirection dir) |
|
virtual | ~Propagator () |
|
|
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 Cylinder &, GlobalPoint &, double &) const |
| straight line parameter propagation to a cylinder More...
|
|
bool | propagateWithLineCrossing (const GlobalPoint &, const GlobalVector &, const Plane &, GlobalPoint &, double &) const |
| straight line parameter propagation to a plane More...
|
|
std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &fts, const Cylinder &cylinder) const override |
| propagation to cylinder with path length More...
|
|
std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &fts, const Plane &plane) const override |
| propagation to plane with path length More...
|
|
(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.
parameter propagation to cylinder (returns position, momentum and path length)
Definition at line 139 of file AnalyticalPropagator.cc.
162 auto rdiff =
x.perp() - cylinder.radius();
169 if UNLIKELY (!cylinderCrossing.hasSolution())
172 s = cylinderCrossing.pathLength();
174 x = cylinderCrossing.position();
176 p = cylinderCrossing.direction().unit() * fts.
momentum().
mag();
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, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
parameter propagation to plane (returns position, momentum and path length)
Definition at line 180 of file AnalyticalPropagator.cc.
215 LogDebug(
"AnalyticalPropagator") <<
"In AnaliticalProp, calling HAPC "
217 <<
"plane is centered in xyz: " << plane.position().x() <<
" , "
218 << plane.position().y() <<
" , " << plane.position().z() <<
"\n";
226 LogDebug(
"AnalyticalPropagator") <<
"gp1 before calling planeCrossing1: " << gp1 <<
"\n";
237 double dphi1 = fabs(fts.
momentum().
phi() - gm1.phi());
238 LogDebug(
"AnalyticalPropagator") <<
"check1, s1, dphi, gp1: " << check1 <<
" , " << s1 <<
" , " << dphi1 <<
" , "
243 xGen = (*planeCrossing1).position(s1 +
tolerance);
244 pGen = (*planeCrossing1).direction(s1 +
tolerance);
262 LogDebug(
"AnalyticalPropagator") <<
"failed also second attempt. No idea what to do, then bailout"
266 pGen *= gm1.
mag() / pGen.
mag();
285 edm::LogError(
"AnalyticalPropagator") <<
"LOGIC ERROR: I should not have entered here!"
290 LogDebug(
"AnalyticalPropagator") <<
"check2, s2, gp2: " << check2 <<
" , " << s2 <<
" , " << gp2 <<
"\n";
292 double dist1 = (plane.position() - gp1).
perp();
293 double dist2 = (plane.position() - gp2).
perp();
299 if (dist1 < 2 * dist2) {
304 }
else if (dist2 < 2 * dist1) {
310 if (fabs(s1) < fabs(s2)) {
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(), and UNLIKELY.