24 bool cosmicPropagation,
30 muonGeometry_(muonGeometry),
34 whichTrack_(whichTrack),
35 whichState_(whichState),
36 cosmicPropagation_(cosmicPropagation),
46 for (
size_t i = 0;
i <= (
useMB2_ ? 2 : 1); ++
i) {
62 throw cms::Exception(
"Invalid Data") <<
"Input object is not a RecoCandidate.\n";
94 <<
"PropagateToMuon: You must call init(const edm::EventSetup &iSetup) before using this object.\n";
118 <<
"PropagateToMuon: You must call init(const edm::EventSetup &iSetup) before using this object.\n";
121 <<
"I can't propagate simtracks without a vertex, I don't know where to start from.\n";
132 <<
"PropagateToMuon: You must call init(const edm::EventSetup &iSetup) before using this object.\n";
136 if (
start.momentum().mag() == 0)
138 double eta =
start.momentum().eta();
167 for (
int ie = (
useMB2_ ? 2 : 1); ie >= 0; --ie) {
196 ret = dets.front().second;
const BoundDisk * endcapDiskNeg_[3]
WhichTrack whichTrack_
Labels for input collections.
const std::vector< const DetLayer * > & forwardCSCLayers() const
return the forward (+Z) CSC DetLayers, inside-out
edm::ESHandle< Propagator > propagator_
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
const BoundCylinder * barrelCylinder_
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
const bool isValid(const Frame &aFrame, const FrameQuality &aQuality, const uint16_t aExpectedPos)
const math::XYZPoint & outerPosition() const
position of the outermost hit
ret
prodAgent to be discontinued
FreeTrajectoryState startingState(const reco::Candidate &reco) const
Starting state for the propagation.
Global3DPoint GlobalPoint
const std::vector< const DetLayer * > & allDTLayers() const
return the DT DetLayers (barrel), inside-out
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
float charge() const
charge
const math::XYZTLorentzVectorD & momentum() const
edm::ESHandle< Propagator > propagatorAny_
constexpr std::array< uint8_t, layerIndexSize > layer
U second(std::pair< T, U > const &p)
int vertIndex() const
index of the vertex in the Event container (-1 if no vertex)
edm::ESHandle< Propagator > propagatorOpposite_
T const * product() const
GlobalPoint globalPosition() const
TrajectoryStateOnSurface getBestDet(const TrajectoryStateOnSurface &tsos, const DetLayer *station) const
Get the best TSOS on one of the chambres of this DetLayer, or an invalid TSOS if none match...
edm::ESHandle< MagneticField > magfield_
bool isNull() const
Checks for null.
bool cosmicPropagation_
for cosmics, some things change: the along-opposite is not in-out, nor the innermost/outermost states...
const std::vector< const DetLayer * > & backwardCSCLayers() const
return the backward (-Z) CSC DetLayers, inside-out
std::vector< SimVertex > SimVertexContainer
std::pair< float, float > endcapRadii_[3]
edm::ESHandle< MuonDetLayerGeometry > muonGeometry_
static int position[264][3]
virtual reco::TrackRef track() const
reference to a Track
bool fallbackToME1_
Fallback to ME1 if propagation to ME2 fails.
virtual reco::TrackRef combinedMuon() const
reference to a stand-alone muon Track
const BoundDisk * endcapDiskPos_[3]
TrajectoryStateOnSurface extrapolate(const reco::Track &tk) const
Extrapolate reco::Track to the muon station 2, return an invalid TSOS if it fails.
const math::XYZPoint & innerPosition() const
position of the innermost hit
Global3DVector GlobalVector
virtual reco::TrackRef standAloneMuon() const
reference to a stand-alone muon Track