25 CkfTrajectoryBuilder(conf,updator,propagatorAlong,propagatorOpposite,estimator,RecHitBuilder,measurementTracker,filter),
26 theProximityPropagator(propagatorProximity)
76 const std::vector<const DetLayer*>& nl,
78 std::vector<TM>&
result,
int& invalidHits,
80 for (std::vector<const DetLayer*>::const_iterator il = nl.begin();
81 il != nl.end(); il++) {
83 TSOS stateToUse = currentState;
86 LogDebug(
"CkfPattern")<<
" self propagating in findCompatibleMeasurements.\n from: \n"<<stateToUse;
91 stateToUse = middle.
extrapolate(stateToUse, center, *prop);
93 if (!stateToUse.
isValid())
continue;
94 LogDebug(
"CkfPattern")<<
"to: "<<stateToUse;
101 LogDebug(
"CkfPattern")<<
"only an invalid hit is found. trying differently";
104 LogDebug(
"CkfPattern")<<tmp.size()<<
" measurements returned by LayerMeasurements";
111 if ( result.empty()) result = tmp;
114 result.insert( result.end()-invalidHits, tmp.begin(), tmp.end());
120 LogDebug(
"CkfPattern")<<
"starting from:\n"
130 std::vector<TrajectoryMeasurement> &
result)
const
135 std::vector<const DetLayer*> nl;
139 LogDebug(
"CkfPattern")<<
"using JR patch for no measurement case";
146 const Surface * surface=&g->surface();
156 LogDebug(
"CkfPattern")<<
"using the layer of the seed first.";
174 if (result.size()==0 || (
unsigned int)invalidHits==result.size())
177 LogDebug(
"CkfPattern")<<
"Need to go to next layer to get measurements";
181 LogDebug(
"CkfPattern")<<
" there was no next layer with wellInside. Use the next with no check.";
215 if ( result.size() > 1) {
220 bool afterInvalid =
false;
221 for (std::vector<TM>::const_iterator
i=result.begin();
222 i!=result.end();
i++) {
223 if ( !
i->recHit().isValid()) afterInvalid =
true;
224 if (afterInvalid &&
i->recHit().isValid()) {
225 edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: valid hit after invalid!" ;
const Propagator * theProximityPropagator
void rescaleError(double factor)
T getParameter(std::string const &) const
const TrajectorySeed & seed() const
Access to the seed used to reconstruct the Trajectory.
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
bool empty() const
True if trajectory has no measurements.
double theRescaleErrorIfFail
virtual std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const
GlobalPoint globalPosition() const
ConstRecHitPointer recHit() 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()
const LayerMeasurements * theLayerMeasurements
PropagationDirection direction() const
double dPhi(double phi1, double phi2)
FreeTrajectoryState * freeState(bool withErrors=true) const
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
const TrackingGeometry * geomTracker() const
unsigned int detId() const
TrajectoryStateOnSurface updatedState() const
virtual void findCompatibleMeasurements(const TempTrajectory &traj, std::vector< TrajectoryMeasurement > &result) const
const MeasurementTracker * 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
std::vector< std::vector< double > > tmp
virtual const MagneticField * magneticField() const =0
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)
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
const Chi2MeasurementEstimatorBase * theEstimator
const Propagator * theForwardPropagator