20 theDeltaEta(conf.getParameter<double>(
"deltaEta")),
21 theDeltaPhi(conf.getParameter<double>(
"deltaPhi")),
22 theProximityPropagatorName(conf.getParameter<std::
string>(
"propagatorProximity")),
23 theProximityPropagator(
nullptr),
79 const std::vector<const DetLayer*>& nl,
81 std::vector<TM>&
result,
int& invalidHits,
83 for (std::vector<const DetLayer*>::const_iterator il = nl.begin();
84 il != nl.end(); il++) {
86 TSOS stateToUse = currentState;
89 LogDebug(
"CkfPattern")<<
" self propagating in findCompatibleMeasurements.\n from: \n"<<stateToUse;
94 stateToUse = middle.
extrapolate(stateToUse, center, *prop);
96 if (!stateToUse.
isValid())
continue;
97 LogDebug(
"CkfPattern")<<
"to: "<<stateToUse;
101 std::vector<TM>
tmp =
102 layerMeasurements.measurements((**il),stateToUse, *prop, *
theEstimator);
105 LogDebug(
"CkfPattern")<<
"only an invalid hit is found. trying differently";
108 LogDebug(
"CkfPattern")<<tmp.size()<<
" measurements returned by LayerMeasurements";
115 if ( result.empty()) result = tmp;
118 result.insert( result.end()-invalidHits, tmp.begin(), tmp.end());
124 LogDebug(
"CkfPattern")<<
"starting from:\n"
135 std::vector<TrajectoryMeasurement> &
result)
const
140 std::vector<const DetLayer*> nl;
144 LogDebug(
"CkfPattern")<<
"using JR patch for no measurement case";
151 const Surface * surface=&g->surface();
161 LogDebug(
"CkfPattern")<<
"using the layer of the seed first.";
179 if (result.size()==0 || (
unsigned int)invalidHits==result.size())
182 LogDebug(
"CkfPattern")<<
"Need to go to next layer to get measurements";
186 LogDebug(
"CkfPattern")<<
" there was no next layer with wellInside. Use the next with no check.";
220 if ( result.size() > 1) {
225 bool afterInvalid =
false;
226 for (std::vector<TM>::const_iterator
i=result.begin();
227 i!=result.end();
i++) {
228 if ( !
i->recHit().isValid()) afterInvalid =
true;
229 if (afterInvalid &&
i->recHit().isValid()) {
230 edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: valid hit after invalid!" ;
const Propagator * theProximityPropagator
void rescaleError(double factor)
T getParameter(std::string const &) const
const TrackingGeometry * geomTracker() const
ConstRecHitPointer const & recHit() const
bool empty() const
True if trajectory has no measurements.
virtual void findCompatibleMeasurements(const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const
double theRescaleErrorIfFail
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
GlobalPoint globalPosition() const
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
const TrajectoryMeasurement & lastMeasurement() const
virtual ~MuonCkfTrajectoryBuilder()
PropagationDirection direction() const
const std::string theProximityPropagatorName
FreeTrajectoryState const * freeState(bool withErrors=true) const
void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
unsigned int detId() const
MuonCkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector &iC)
const MeasurementTracker & measurementTracker() const
const MeasurementTrackerEvent * theMeasurementTracker
void collectMeasurement(const DetLayer *layer, const std::vector< const DetLayer * > &nl, const TrajectoryStateOnSurface ¤tState, std::vector< TM > &result, int &invalidHits, const Propagator *) const
PTrajectoryStateOnDet const & startingState() const
std::unique_ptr< Chi2MeasurementEstimatorBase > theEtaPhiEstimator
virtual const GeomDet * idToDet(DetId) const =0
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&...args) const
NavigationDirection.
T const * product() const
bool check(const edm::EventSetup &iSetup)
edm::ESWatcher< BaseCkfTrajectoryBuilder::Chi2MeasurementEstimatorRecord > theEstimatorWatcher
std::vector< std::vector< double > > tmp
GlobalVector globalMomentum() const
const NavigationSchool * theNavigationSchool
TrajectoryStateOnSurface const & updatedState() const
void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
const Chi2MeasurementEstimatorBase * theEstimator