#include <Propagator.h>
Public Member Functions | |
virtual Propagator * | clone () const =0 |
virtual const MagneticField * | magneticField () const =0 |
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 FreeTrajectoryState &, const Plane &) const =0 |
virtual std::pair< TrajectoryStateOnSurface, double > | propagateWithPath (const FreeTrajectoryState &, const Cylinder &) 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 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 bool | setMaxDirectionChange (float phiMax) |
virtual void | setPropagationDirection (PropagationDirection dir) |
virtual | ~Propagator () |
Private Attributes | |
PropagationDirection | theDir |
Basic tool for "propagation" of trajectory states to surfaces. If the starting state has an error matrix the errors will be also propagated. If you want to propagate just the parameters, construct a starting state that does not have errors. In case of propagation failure (e.g. when the trajectory does not cross the destination surface) and invalid state is returned. Always check the returned state with isValid() before using it!
The propagation can be "alongMomentum" or "oppositeToMomentum" (see setPropagationDirection() below). The difference between the two is the sign of energy loss: the trajectory momentum decreases "alongMomentum" and increases "oppositeToMomentum". In both directions extrapolation errors and multiple scattering errors increase. Propagation "oppositeToMomentum" is convenient for fitting a track "backwards", sterting from the last measurement.
The propagator interface promises to take you to "any surface" but you should check the concrete propagator you are using for additional limitations.
derived classes have to implement the PropagateWithPath for Plane and Cylinder
Definition at line 43 of file Propagator.h.
|
inlineexplicit |
Definition at line 46 of file Propagator.h.
|
virtual |
Definition at line 9 of file Propagator.cc.
|
pure virtual |
Implemented in GsfPropagatorWithMaterial, PropagatorWithMaterial, SteppingHelixPropagator, Geant4ePropagator, AnalyticalPropagator, GsfPropagatorAdapter, SmartPropagator, RKPropagatorInS, BeamHaloPropagator, StraightLinePropagator, RKPropagatorInR, and RKPropagatorInZ.
Referenced by SiPixelHitEfficiencySource::analyze(), BeamHaloPropagator::BeamHaloPropagator(), MuonSimHitProducer::beginRun(), TrackEfficiencyMonitor::compatibleLayers(), TrajectoryExtrapolatorToLine::extrapolate(), HLTMuonPointingFilter::filter(), TrackEfficiencyMonitor::findNextLayer(), KFTrajectorySmoother::KFTrajectorySmoother(), SetPropagationDirection(), SmartPropagator::SmartPropagator(), TrackEfficiencyMonitor::trackerAcceptance(), PerigeeRefittedTrackState::trajectoryStateOnSurface(), and KinematicRefittedTrackState::trajectoryStateOnSurface().
|
pure virtual |
Implemented in AnalyticalPropagator, SmartPropagator, GsfPropagatorWithMaterial, PropagatorWithMaterial, SteppingHelixPropagator, BeamHaloPropagator, Geant4ePropagator, GsfPropagatorAdapter, RKPropagatorInS, StraightLinePropagator, RKPropagatorInR, and RKPropagatorInZ.
Referenced by AnalyticalTrajectoryExtrapolatorToLine::extrapolateSingleState(), TrackProducer::getTransient(), TrackProducerWithSCAssociation::getTransient(), TransientInitialStateEstimator::innerState(), GsfPropagatorAdapter::magneticField(), CosmicRegionalSeedGenerator::regions(), and BaseCkfTrajectoryBuilder::seedMeasurements().
|
inline |
Definition at line 53 of file Propagator.h.
Referenced by CRackTrajectoryBuilder::AddHit(), SiStripElectronSeedGenerator::altCheckHitsAndTSOS(), CkfDebugger::analyseCompatibleMeasurements(), CkfDebugger::analyseRecHitExistance(), ElectronSeedAnalyzer::analyze(), MuonAlignmentAnalyzer::analyze(), TestHits::analyze(), TestSmoothHits::analyze(), TestTrackHits::analyze(), MuonAlignment::analyze(), GlobalTrackerMuonAlignment::analyzeTrackTrack(), GlobalTrackerMuonAlignment::analyzeTrackTrajectory(), CosmicMuonTrajectoryBuilder::build(), SeedFromGenericPairOrTriplet::buildSeed(), SeedForPhotonConversion1Leg::buildSeed(), SeedFromConsecutiveHitsCreator::buildSeed(), SeedForPhotonConversionFromQuadruplets::buildSeed(), SeedForPhotonConversionFromQuadruplets::buildSeedBool(), SiStripElectronSeedGenerator::checkHitsAndTSOS(), ConversionProducer::checkPhi(), ForwardDetLayer::compatible(), MuDetRing::compatible(), BarrelDetLayer::compatible(), MuDetRod::compatible(), MuRingForwardDoubleLayer::compatible(), PixelRod::compatibleDetsV(), TrackEfficiencyMonitor::compatibleLayers(), CkfDebugger::computePulls(), SeedFromNuclearInteraction::construct(), OutInConversionSeedFinder::createSeed(), InOutConversionSeedFinder::createSeed(), L1MuonRecoTreeProducer::cylExtrapTrkSam(), MuonGmtPair::cylExtrapTrkSam(), ResidualRefitting::cylExtrapTrkSam(), MultipleScatteringGeometry::detLayers(), TransverseImpactPointExtrapolator::doExtrapolation(), CSCPairResidualsConstraint::dphidzFromTrack(), PropagateToMuon::extrapolate(), AnalyticalImpactPointExtrapolator::extrapolateFullState(), AnalyticalTrajectoryExtrapolatorToLine::extrapolateFullState(), InOutConversionSeedFinder::fillClusterSeeds(), GsfTrackProducerBase::fillMode(), HLTMuonPointingFilter::filter(), ConversionTrackEcalImpactPoint::find(), SETFilter::findChi2(), TrackEfficiencyMonitor::findNextLayer(), CosmicMuonSmoother::fit(), GsfTrajectoryFitter::fitOne(), ConversionProducer::getTrackImpactPosition(), HDetIdAssociator::getTrajectory(), TrajSeedMatcher::getTrajStateFromPoint(), TrajSeedMatcher::getTrajStateFromVtx(), GlobalTrajectoryBuilderBase::getTransientRecHits(), SeedFromProtoTrack::init(), CosmicMuonTrajectoryBuilder::intermediateState(), GeomDetCompatibilityChecker::isCompatible(), SteppingHelixPropagator::magneticField(), TSGForRoadSearch::makeSeeds_0(), TSGForRoadSearch::makeSeeds_4(), SeedMatcher::matchSimTrack(), MatcherUsingTracksAlgorithm::matchWithPropagation(), MuonResidualsFromTrack::MuonResidualsFromTrack(), StateOnTrackerBound::operator()(), ElectronSeedGenerator::prepareElTrackSeed(), ME0SegmentMatcher::produce(), TrackCandidateProducer::produce(), ConvBremSeedProducer::produce(), TrackerToMuonPropagator::produce(), cms::CkfTrackCandidateMakerBase::produceBase(), TrackingRecHitPropagator::project(), RecHitPropagator::propagate(), CachedTrajectory::propagate(), spr::propagateCalo(), spr::propagateHCAL(), MuonTrajectoryUpdator::propagateState(), cms::MuonTCMETValueMapProducer::propagateTrack(), spr::propagateTrackerEnd(), TCMETAlgo::propagateTrackToCalorimeterFace(), TrackExtrapolator::propagateTrackToVolume(), TkConvValidator::recalculateMomentumAtFittedVertex(), KFBasedPixelFitter::run(), BaseCkfTrajectoryBuilder::seedMeasurements(), SeedGeneratorForCRack::seeds(), SeedGeneratorForCosmics::seeds(), SimpleCosmicBONSeeder::seeds(), BeamHaloPropagator::setPropagationDirection(), SmartPropagator::setPropagationDirection(), CosmicMuonSmoother::smooth(), PropagateToMuon::startingState(), CosmicMuonUtilities::stepPropagate(), L1MuonRecoTreeProducer::surfExtrapTrkSam(), MuonGmtPair::surfExtrapTrkSam(), TrackEfficiencyMonitor::testSTATracks(), TrackEfficiencyMonitor::testTrackerTracks(), TrackEfficiencyMonitor::trackerAcceptance(), InOutConversionTrackFinder::tracks(), OutInConversionTrackFinder::tracks(), TracktoRPC::TracktoRPC(), KFTrajectorySmoother::trajectory(), TrajectoryAtInvalidHit::TrajectoryAtInvalidHit(), PerigeeRefittedTrackState::trajectoryStateOnSurface(), KinematicRefittedTrackState::trajectoryStateOnSurface(), TrackTransformer::transform(), SETFilter::transform(), ResidualRefitting::trkExtrap(), AnalyticalPropagator::~AnalyticalPropagator(), GsfPropagatorAdapter::~GsfPropagatorAdapter(), GsfPropagatorWithMaterial::~GsfPropagatorWithMaterial(), RKPropagatorInS::~RKPropagatorInS(), and StraightLinePropagator::~StraightLinePropagator().
|
inlinefinalvirtual |
Definition at line 115 of file Propagator.h.
|
inlinefinalvirtual |
Definition at line 119 of file Propagator.h.
|
inlinefinalvirtual |
Definition at line 124 of file Propagator.h.
|
finalvirtual |
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 15 of file Propagator.cc.
Referenced by CSCTimingExtractor::fillTiming(), DTTimingExtractor::fillTiming(), SteppingHelixPropagator::magneticField(), MuonSimHitProducer::produce(), ReferenceTrajectory::propagate(), CosmicGenFilterHelix::propagateToCutCylinder(), GsfPropagatorAdapter::propagateWithPath(), PropagatorWithMaterial::propagateWithPath(), BeamHaloPropagator::propagateWithPath(), SmartPropagator::propagateWithPath(), propagateWithPath(), BeamHaloPropagator::setPropagationDirection(), SmartPropagator::setPropagationDirection(), AnalyticalPropagator::~AnalyticalPropagator(), GsfPropagatorAdapter::~GsfPropagatorAdapter(), GsfPropagatorWithMaterial::~GsfPropagatorWithMaterial(), RKPropagatorInS::~RKPropagatorInS(), and StraightLinePropagator::~StraightLinePropagator().
|
pure virtual |
|
pure virtual |
|
finalvirtual |
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 31 of file Propagator.cc.
References propagateWithPath().
|
inlinevirtual |
Reimplemented in SmartPropagator, Geant4ePropagator, PropagatorWithMaterial, GsfPropagatorWithMaterial, and GsfPropagatorAdapter.
Definition at line 91 of file Propagator.h.
References TrajectoryStateOnSurface::freeState().
|
inlinevirtual |
Reimplemented in SmartPropagator, Geant4ePropagator, PropagatorWithMaterial, GsfPropagatorWithMaterial, and GsfPropagatorAdapter.
Definition at line 96 of file Propagator.h.
References ecalDrivenElectronSeedsParameters_cff::beamSpot, and TrajectoryStateOnSurface::freeState().
|
virtual |
implemented by Stepping Helix Propagate to PCA to point given a starting point
Reimplemented in SteppingHelixPropagator.
Definition at line 48 of file Propagator.cc.
References Exception.
|
virtual |
Propagate to PCA to a line (given by 2 points) given a starting point.
Reimplemented in SteppingHelixPropagator.
Definition at line 54 of file Propagator.cc.
References Exception.
|
virtual |
Propagate to PCA to a line (given by beamSpot position and slope) given a starting point.
Reimplemented in SteppingHelixPropagator.
Definition at line 61 of file Propagator.cc.
References Exception.
|
inlinefinalvirtual |
Returns the current value of the propagation direction. If you need to know the actual direction used for a given propagation in case "propagationDirection() == anyDirection", you should use propagateWithPath. A positive sign of path lengt means "alongMomentum", an egeative sign means "oppositeToMomentum".
Definition at line 151 of file Propagator.h.
Referenced by GroupedCkfTrajectoryBuilder::advanceOneLayer(), LayerCrossingSide::barrelSide(), BeamHaloPropagator::clone(), OutInConversionSeedFinder::completeSeed(), Geant4ePropagator::configurePropagation(), GsfPropagatorWithMaterial::convoluteWithMaterial(), BeamHaloPropagator::directionCheck(), LayerCrossingSide::endcapSide(), HLTMuonPointingFilter::filter(), PixelForwardLayer::groupedCompatibleDetsV(), PixelForwardLayerPhase1::groupedCompatibleDetsV(), TECLayer::groupedCompatibleDetsV(), Phase2EndcapLayer::groupedCompatibleDetsV(), TIDRing::groupedCompatibleDetsV(), CompositeTECWedge::groupedCompatibleDetsV(), TBLayer::groupedCompatibleDetsV(), TIBRing::groupedCompatibleDetsV(), Phase2EndcapRing::groupedCompatibleDetsV(), TOBRod::groupedCompatibleDetsV(), PixelBlade::groupedCompatibleDetsV(), Phase1PixelBlade::groupedCompatibleDetsV(), Phase2OTBarrelRod::groupedCompatibleDetsV(), CompositeTECPetal::groupedCompatibleDetsV(), GeomDetCompatibilityChecker::isCompatible(), StraightLinePropagator::jacobian(), PropagatorWithMaterial::materialAtSource(), GsfPropagatorWithMaterial::materialAtSource(), SteppingHelixPropagator::propagate(), Geant4ePropagator::propagateGeneric(), StraightLinePropagator::propagateParametersOnCylinder(), RKPropagatorInS::propagateParametersOnCylinder(), RKPropagatorInS::propagateParametersOnPlane(), RKPropagatorInS::propagateWithPath(), GsfPropagatorWithMaterial::propagateWithPath(), PropagatorWithMaterial::propagateWithPath(), TIDLayer::ringIndicesByCrossingProximity(), Phase2EndcapLayer::ringIndicesByCrossingProximity(), SteppingHelixPropagator::setIState(), OutInConversionSeedFinder::startSeed(), and KFTrajectorySmoother::trajectory().
|
inlinevirtual |
Set the maximal change of direction (integrated along the path) for any single propagation. If reaching of the destination surface requires change of direction that exceeds this value the Propagator returns an invalid state. For example, a track may reach a forward plane after many spirals, which may be undesirable for a track reconstructor. Setting this value to pi will force the propagation to fail. The default value is "no limit". The method returnd true if the concrete propagator respects the limit, false otherwise.
Reimplemented in GsfPropagatorWithMaterial, AnalyticalPropagator, PropagatorWithMaterial, and GsfPropagatorAdapter.
Definition at line 165 of file Propagator.h.
References clone(), and seedCreatorFromRegionConsecutiveHitsEDProducer_cff::magneticField.
Referenced by GsfPropagatorAdapter::setMaxDirectionChange(), and PropagatorWithMaterial::setMaxDirectionChange().
|
inlinevirtual |
The propagation direction can now be set for every propagator. There is no more distinction between unidirectional and bidirectional at class level. The value "anyDiriction" for PropagationDirection provides the functionality of the ex-BidirectionalPropagator. The values "alongMomentum" and "oppositeToMomentum" provide the functionality of the ex-UnidirectionalPropagator.
Reimplemented in GsfPropagatorWithMaterial, PropagatorWithMaterial, SmartPropagator, GsfPropagatorAdapter, and BeamHaloPropagator.
Definition at line 140 of file Propagator.h.
References dir.
Referenced by AnalyticalImpactPointExtrapolator::AnalyticalImpactPointExtrapolator(), AnalyticalTrajectoryExtrapolatorToLine::AnalyticalTrajectoryExtrapolatorToLine(), SiPixelHitEfficiencySource::analyze(), TrackEfficiencyMonitor::compatibleLayers(), BeamHaloPropagator::directionCheck(), TrackEfficiencyMonitor::findNextLayer(), SimpleNavigableLayer::propagator(), BeamHaloPropagator::setPropagationDirection(), GsfPropagatorAdapter::setPropagationDirection(), SmartPropagator::setPropagationDirection(), PropagatorWithMaterial::setPropagationDirection(), GsfPropagatorWithMaterial::setPropagationDirection(), TrackEfficiencyMonitor::trackerAcceptance(), TransverseImpactPointExtrapolator::TransverseImpactPointExtrapolator(), and TSCBLBuilderWithPropagator::TSCBLBuilderWithPropagator().
|
private |
Definition at line 173 of file Propagator.h.