19 useSimpleGeometry_(iConfig.getParameter<bool>(
"useSimpleGeometry")),
20 whichTrack_(None), whichState_(AtVertex),
21 cosmicPropagation_(iConfig.existsAs<bool>(
"cosmicPropagationHypothesis") ? iConfig.getParameter<bool>(
"cosmicPropagationHypothesis") :
false)
23 std::string whichTrack = iConfig.
getParameter<std::string>(
"useTrack");
28 else throw cms::Exception(
"Configuration") <<
"Parameter 'useTrack' must be 'none', 'tracker', 'muon', 'global'\n";
30 std::string whichState = iConfig.
getParameter<std::string>(
"useState");
34 else throw cms::Exception(
"Configuration") <<
"Parameter 'useState' must be 'atVertex', 'innermost', 'outermost'\n";
37 throw cms::Exception(
"Configuration") <<
"When using 'cosmicPropagationHypothesis' useTrack must not be 'none', and the state must not be 'atVertex'\n";
69 if (rc == 0)
throw cms::Exception(
"Invalid Data") <<
"Input object is not a RecoCandidate.\n";
143 if (!
final.isValid()) {
163 ret = dets.front().second;
T getParameter(std::string const &) const
edm::ESHandle< Propagator > propagator_
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
PropagateToMuon(const edm::ParameterSet &iConfig)
const BoundCylinder * barrelCylinder_
TrajectoryStateOnSurface extrapolate(const reco::Track &tk) const
Extrapolate reco::Track to the muon station 2, return an invalid TSOS if it fails.
const BoundDisk * endcapDiskNeg_
virtual float length() const =0
FreeTrajectoryState startingState(const reco::Candidate &reco) const
Starting state for the propagation.
std::pair< float, float > endcapRadii_
virtual double pz() const =0
z coordinate of momentum vector
Global3DPoint GlobalPoint
virtual double vx() const =0
x coordinate of vertex position
GlobalPoint globalPosition() const
PreciseFloatType< T, U >::Type dot(const Vector3DBase< U, FrameTag > &v) const
virtual reco::TrackRef standAloneMuon() const
reference to a stand-alone muon Track
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...
const math::XYZPoint & outerPosition() const
position of the outermost hit
virtual std::vector< DetWithState > compatibleDets(const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
virtual double vy() const =0
y coordinate of vertex position
edm::ESHandle< Propagator > propagatorAny_
virtual reco::TrackRef track() const
reference to a Track
const math::XYZPoint & innerPosition() const
position of the innermost hit
edm::ESHandle< Propagator > propagatorOpposite_
bool isNull() const
Checks for null.
Scalar radius() const
Radius of the cylinder.
const BoundDisk * endcapDiskPos_
edm::ESHandle< MagneticField > magfield_
virtual int charge() const =0
electric charge
virtual double py() const =0
y coordinate of momentum vector
GlobalVector momentum() const
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
virtual double px() const =0
x coordinate of momentum vector
bool cosmicPropagation_
for cosmics, some things change: the along-opposite is not in-out, nor the innermost/outermost states...
GlobalPoint position() const
const Bounds & bounds() const
T const * product() const
void init(const edm::EventSetup &iSetup)
Call this method at the beginning of each run, to initialize geometry, magnetic field and propagators...
virtual double vz() const =0
z coordinate of vertex position
edm::ESHandle< MuonDetLayerGeometry > muonGeometry_
bool useSimpleGeometry_
Labels for input collections.
float outerRadius() const
The outer radius of the disk.
float innerRadius() const
The inner radius of the disk.
const PositionType & position() const
Global3DVector GlobalVector
virtual reco::TrackRef combinedMuon() const
reference to a stand-alone muon Track