20 theDeltaEta(conf.getParameter<double>(
"deltaEta")),
21 theDeltaPhi(conf.getParameter<double>(
"deltaPhi")),
22 theProximityPropagatorName(conf.getParameter<
std::
string>(
"propagatorProximity")),
23 theProximityPropagator(nullptr),
25 theEtaPhiEstimator(nullptr) {
35 iDesc.
add<
double>(
"deltaEta", .1);
36 iDesc.
add<
double>(
"deltaPhi", .1);
37 iDesc.
add<
std::string>(
"propagatorProximity",
"SteppingHelixPropagatorAny");
38 iDesc.
add<
bool>(
"useSeedLayer",
false);
39 iDesc.
add<
double>(
"rescaleErrorIfFail", 1.);
83 const std::vector<const DetLayer*>& nl,
88 for (std::vector<const DetLayer*>::const_iterator il = nl.begin(); il != nl.end(); il++) {
89 TSOS stateToUse = currentState;
92 LogDebug(
"CkfPattern") <<
" self propagating in findCompatibleMeasurements.\n from: \n" << stateToUse;
97 stateToUse = middle.
extrapolate(stateToUse, center, *prop);
101 LogDebug(
"CkfPattern") <<
"to: " << stateToUse;
105 std::vector<TM>
tmp = layerMeasurements.measurements((**il), stateToUse, *prop, *
theEstimator);
108 LogDebug(
"CkfPattern") <<
"only an invalid hit is found. trying differently";
111 LogDebug(
"CkfPattern") <<
tmp.size() <<
" measurements returned by LayerMeasurements";
128 LogDebug(
"CkfPattern") <<
"starting from:\n" 136 std::vector<TrajectoryMeasurement>&
result)
const {
139 std::vector<const DetLayer*> nl;
142 LogDebug(
"CkfPattern") <<
"using JR patch for no measurement case";
149 const Surface* surface = &
g->surface();
160 LogDebug(
"CkfPattern") <<
"using the layer of the seed first.";
179 LogDebug(
"CkfPattern") <<
"Need to go to next layer to get measurements";
183 LogDebug(
"CkfPattern") <<
" there was no next layer with wellInside. Use the next with no check.";
196 <<
" to find measurements on next layers.";
209 LogDebug(
"CkfPattern") <<
" no next layers... going " << traj.
direction() <<
"\n from: \n" 224 bool afterInvalid =
false;
225 for (std::vector<TM>::const_iterator
i =
result.begin();
i !=
result.end();
i++) {
226 if (!
i->recHit().isValid())
228 if (afterInvalid &&
i->recHit().isValid()) {
229 edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: valid hit after invalid!";
const Propagator * theProximityPropagator
void rescaleError(double factor)
PropagationDirection direction() const
T getParameter(std::string const &) const
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
double theRescaleErrorIfFail
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorToken
Log< level::Error, false > LogError
static std::string dumpMeasurements(const std::vector< TrajectoryMeasurement > &v)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
unsigned int detId() const
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
GlobalPoint globalPosition() const
void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
~MuonCkfTrajectoryBuilder() override
const TrajectoryMeasurement & lastMeasurement() const
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&... args) const
MuonCkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector &iC)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
const TrackerGeomDet * idToDet(DetId) const override
const MeasurementTrackerEvent * theMeasurementTracker
std::unique_ptr< Chi2MeasurementEstimatorBase > theEtaPhiEstimator
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
void findCompatibleMeasurements(const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const override
GlobalVector globalMomentum() const
TrajectoryStateOnSurface const & updatedState() const
const GeometricSearchTracker * geometricSearchTracker() const
edm::ESWatcher< BaseCkfTrajectoryBuilder::Chi2MeasurementEstimatorRecord > theEstimatorWatcher
const MeasurementTracker & measurementTracker() const
void collectMeasurement(const DetLayer *layer, const std::vector< const DetLayer *> &nl, const TrajectoryStateOnSurface ¤tState, std::vector< TM > &result, int &invalidHits, const Propagator *) const
FreeTrajectoryState const * freeState(bool withErrors=true) const
const NavigationSchool * theNavigationSchool
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
const TrackerGeometry * geomTracker() const
void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
const Chi2MeasurementEstimatorBase * theEstimator
ConstRecHitPointer const & recHit() const
bool empty() const
True if trajectory has no measurements.