34 thePropagatorAlong(propagatorAlong),thePropagatorOpposite(propagatorOpposite),
35 theEstimator(estimator),theTTRHBuilder(recHitBuilder),
36 theMeasurementTracker(measurementTracker),
38 theForwardPropagator(0),theBackwardPropagator(0),
40 theInOutFilter(inOutFilter)
42 if (conf.
exists(
"clustersToSkip")){
62 ihit != hitRange.second; ihit++) {
71 if (ihit == hitRange.second - 1) {
75 if (&gdet->surface() != &hitGeomDet->
surface()) {
76 edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: the seed state is not on the surface of the detector of the last seed hit";
82 result.push_back(
TM( invalidState, updatedState, recHit, 0, hitLayer));
89 (hitRange.second - 1)->geographicalId()))->surface()),
92 if(innerState.isValid()) {
94 result.push_back(
TM( invalidState, innerUpdated, recHit, 0, hitLayer));
118 std::vector<TM> seedMeas;
120 for (std::vector<TM>::const_iterator
i=seedMeas.begin();
i!=seedMeas.end();
i++)
134 LogTrace(
"BaseCkfTrajectoryBuilder_InfiniteLoop") <<
135 "Cropping Track After 400 Measurements:\n" <<
138 " Found hits: " << traj.
foundHits() <<
", lost hits: " << traj.
lostHits() <<
"\n\n";
144 if (
theInOutFilter == 0)
edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: trying to use dedicated filter for in-out tracking phase, when none specified";
157 if (
theInOutFilter == 0)
edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: trying to use dedicated filter for in-out tracking phase, when none specified";
175 LogDebug(
"CkfPattern")<<inOut<<
"=inOut option. pushing a Trajectory with: "<<traj.
foundHits()<<
" found hits. "<<traj.
lostHits()
177 result.push_back( traj);
189 LogDebug(
"CkfPattern")<<inOut<<
"=inOut option. pushing a TempTrajectory with: "<<traj.
foundHits()<<
" found hits. "<<traj.
lostHits()
191 result.push_back( traj );
205 const Surface * surface=&g->surface();
PropagationDirection direction() const
bool empty() const
True if trajectory has no measurements.
T getParameter(std::string const &) const
const TrajectorySeed & seed() const
Access to the seed used to reconstruct the Trajectory.
const Propagator * theBackwardPropagator
virtual void update(const edm::Event &) const =0
bool empty() const
True if trajectory has no measurements.
virtual void setEvent(const edm::Event &event) const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TransientTrackingRecHit &) const =0
edm::InputTag clustersToSkip_
void addToResult(TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
const DataContainer & measurements() const
virtual std::vector< const DetLayer * > nextLayers(NavigationDirection direction) const
bool exists(std::string const ¶meterName) const
checks if a parameter exists
virtual SubDetector subDetector() const =0
The type of detector (PixelBarrel, PixelEndcap, TIB, TOB, TID, TEC, CSC, DT, RPCBarrel, RPCEndcap)
const TrajectoryStateUpdator * theUpdator
ConstRecHitPointer recHit() const
int foundHits() const
obsolete name, use measurements() instead.
BaseCkfTrajectoryBuilder(const edm::ParameterSet &conf, const TrajectoryStateUpdator *updator, const Propagator *propagatorAlong, const Propagator *propagatorOpposite, const Chi2MeasurementEstimatorBase *estimator, const TransientTrackingRecHitBuilder *RecHitBuilder, const MeasurementTracker *measurementTracker, const TrajectoryFilter *filter, const TrajectoryFilter *inOutFilter=0)
const TrajectoryFilter * theFilter
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
void seedMeasurements(const TrajectorySeed &seed, std::vector< TrajectoryMeasurement > &result) const
const TrajectoryMeasurement & lastMeasurement() const
bool qualityFilter(const TempTrajectory &traj, bool inOut=false) const
const LayerMeasurements * theLayerMeasurements
PropagationDirection direction() const
DataContainer const & measurements() const
virtual void setClusterToSkip(const edm::InputTag &cluster, const edm::Event &event) const =0
FreeTrajectoryState * freeState(bool withErrors=true) const
Trajectory toTrajectory() const
Convert to a standard Trajectory.
recHitContainer::const_iterator const_iterator
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
TrajectoryMeasurement const & lastMeasurement() const
const TransientTrackingRecHitBuilder * theTTRHBuilder
virtual void unset() const
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
std::pair< const_iterator, const_iterator > range
const TrackingGeometry * geomTracker() const
unsigned int detId() const
TrajectoryStateOnSurface updatedState() const
virtual bool qualityFilter(const TempTrajectory &) const =0
TrajectoryStateOnSurface predictedState() const
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
static std::string dumpCandidate(const Candidate &candidate, bool showErrors=false)
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
virtual void unsetClusterToSkip() const =0
const MeasurementTracker * theMeasurementTracker
PTrajectoryStateOnDet const & startingState() const
virtual const GeomDet * idToDet(DetId) const =0
virtual ~BaseCkfTrajectoryBuilder()
std::vector< TempTrajectory > TempTrajectoryContainer
virtual const MagneticField * magneticField() const =0
const BoundPlane & surface() const
The nominal surface of the GeomDet.
bool toBeContinued(TempTrajectory &traj, bool inOut=false) const
std::pair< TSOS, std::vector< const DetLayer * > > StateAndLayers
StateAndLayers findStateAndLayers(const TempTrajectory &traj) const
virtual bool toBeContinued(TempTrajectory &) const =0
const TrajectoryFilter * theInOutFilter
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
virtual void fillSeedHistoDebugger(std::vector< TrajectoryMeasurement >::iterator begin, std::vector< TrajectoryMeasurement >::iterator end) const
std::vector< Trajectory > TrajectoryContainer
TempTrajectory createStartingTrajectory(const TrajectorySeed &seed) const
const Propagator * theForwardPropagator