|
| 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 145 of file AnalyticalPropagator.cc.
168 auto rdiff =
x.perp() - cylinder.radius();
176 UNLIKELY(!cylinderCrossing.hasSolution())
return false;
178 s = cylinderCrossing.pathLength();
180 x = cylinderCrossing.position();
182 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 186 of file AnalyticalPropagator.cc.
223 LogDebug(
"AnalyticalPropagator") <<
"In AnaliticalProp, calling HAPC "
225 <<
"plane is centered in xyz: " << plane.position().x() <<
" , "
226 << plane.position().y() <<
" , " << plane.position().z() <<
"\n";
234 LogDebug(
"AnalyticalPropagator") <<
"gp1 before calling planeCrossing1: " << gp1 <<
"\n";
245 double dphi1 = fabs(fts.
momentum().
phi() - gm1.phi());
246 LogDebug(
"AnalyticalPropagator") <<
"check1, s1, dphi, gp1: " << check1 <<
" , " << s1 <<
" , " << dphi1 <<
" , "
251 xGen = (*planeCrossing1).position(s1 +
tolerance);
252 pGen = (*planeCrossing1).direction(s1 +
tolerance);
270 LogDebug(
"AnalyticalPropagator") <<
"failed also second attempt. No idea what to do, then bailout"
274 pGen *= gm1.
mag() / pGen.
mag();
293 edm::LogError(
"AnalyticalPropagator") <<
"LOGIC ERROR: I should not have entered here!"
298 LogDebug(
"AnalyticalPropagator") <<
"check2, s2, gp2: " << check2 <<
" , " <<
s2 <<
" , " << gp2 <<
"\n";
300 double dist1 = (plane.position() - gp1).
perp();
301 double dist2 = (plane.position() - gp2).
perp();
307 if (dist1 < 2 * dist2) {
312 }
else if (dist2 < 2 * dist1) {
318 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, indexGen::s2, tolerance, FreeTrajectoryState::transverseCurvature(), and UNLIKELY.