26 CkfTrajectoryBuilder(conf,updator,propagatorAlong,propagatorOpposite,estimator,RecHitBuilder,filter),
27 theProximityPropagator(propagatorProximity)
88 const std::vector<const DetLayer*>& nl,
90 std::vector<TM>&
result,
int& invalidHits,
92 for (std::vector<const DetLayer*>::const_iterator il = nl.begin();
93 il != nl.end(); il++) {
95 TSOS stateToUse = currentState;
98 LogDebug(
"CkfPattern")<<
" self propagating in findCompatibleMeasurements.\n from: \n"<<stateToUse;
103 stateToUse = middle.
extrapolate(stateToUse, center, *prop);
105 if (!stateToUse.
isValid())
continue;
106 LogDebug(
"CkfPattern")<<
"to: "<<stateToUse;
110 std::vector<TM>
tmp =
111 layerMeasurements.measurements((**il),stateToUse, *prop, *
theEstimator);
114 LogDebug(
"CkfPattern")<<
"only an invalid hit is found. trying differently";
117 LogDebug(
"CkfPattern")<<tmp.size()<<
" measurements returned by LayerMeasurements";
124 if ( result.empty()) result = tmp;
127 result.insert( result.end()-invalidHits, tmp.begin(), tmp.end());
133 LogDebug(
"CkfPattern")<<
"starting from:\n"
144 std::vector<TrajectoryMeasurement> &
result)
const
149 std::vector<const DetLayer*> nl;
153 LogDebug(
"CkfPattern")<<
"using JR patch for no measurement case";
160 const Surface * surface=&g->surface();
170 LogDebug(
"CkfPattern")<<
"using the layer of the seed first.";
188 if (result.size()==0 || (
unsigned int)invalidHits==result.size())
191 LogDebug(
"CkfPattern")<<
"Need to go to next layer to get measurements";
195 LogDebug(
"CkfPattern")<<
" there was no next layer with wellInside. Use the next with no check.";
229 if ( result.size() > 1) {
234 bool afterInvalid =
false;
235 for (std::vector<TM>::const_iterator
i=result.begin();
236 i!=result.end();
i++) {
237 if ( !
i->recHit().isValid()) afterInvalid =
true;
238 if (afterInvalid &&
i->recHit().isValid()) {
239 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.
void setData(const MeasurementTrackerEvent *data)
virtual void findCompatibleMeasurements(const TrajectorySeed &seed, const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const
double theRescaleErrorIfFail
GlobalPoint globalPosition() const
Chi2MeasurementEstimatorBase * theEtaPhiEstimator
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
double dPhi(double phi1, double phi2)
FreeTrajectoryState const * freeState(bool withErrors=true) const
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
unsigned int detId() const
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
virtual const GeomDet * idToDet(DetId) const =0
return(e1-e2)*(e1-e2)+dp *dp
virtual MuonCkfTrajectoryBuilder * clone(const MeasurementTrackerEvent *data) const
std::vector< std::vector< double > > tmp
virtual const MagneticField * magneticField() const =0
char data[epos_bytes_allocation]
GlobalVector globalMomentum() const
MuonCkfTrajectoryBuilder(const edm::ParameterSet &conf, const TrajectoryStateUpdator *updator, const Propagator *propagatorAlong, const Propagator *propagatorOpposite, const Propagator *propagatorProximity, const Chi2MeasurementEstimatorBase *estimator, const TransientTrackingRecHitBuilder *RecHitBuilder, const MeasurementTracker *measurementTracker, const TrajectoryFilter *filter)
TrajectoryStateOnSurface const & updatedState() const
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
std::vector< const DetLayer * > nextLayers(Args &&...args) const
const Chi2MeasurementEstimatorBase * theEstimator
const Propagator * theForwardPropagator