38 theInOutFilter(inOutFilter),
39 theUpdatorName(conf.getParameter<std::
string>(
"updator")),
40 thePropagatorAlongName(conf.getParameter<std::
string>(
"propagatorAlong")),
41 thePropagatorOppositeName(conf.getParameter<std::
string>(
"propagatorOpposite")),
42 theEstimatorName(conf.getParameter<std::
string>(
"estimator")),
43 theRecHitBuilderName(conf.getParameter<std::
string>(
"TTRHBuilder"))
45 if (conf.
exists(
"clustersToSkip"))
edm::LogError(
"BaseCkfTrajectoryBuilder") <<
"ERROR: " <<
typeid(*this).name() <<
" has a clustersToSkip parameter set";
72 const GeomDet* hitGeomDet = recHit->det();
78 if (ihit == hitRange.second - 1) {
80 if (&gdet->surface() != &hitGeomDet->
surface()) {
81 edm::LogError(
"CkfPattern") <<
"CkfTrajectoryBuilder error: the seed state is not on the surface of the detector of the last seed hit";
86 result.
emplace(invalidState, outerState, recHit, 0, hitLayer);
92 result.
emplace(invalidState, innerUpdated, recHit, 0, hitLayer);
121 LogTrace(
"BaseCkfTrajectoryBuilder_InfiniteLoop") <<
122 "Cropping Track After 400 Measurements:\n" <<
125 " Found hits: " << traj.
foundHits() <<
", lost hits: " << traj.
lostHits() <<
"\n\n";
163 LogDebug(
"CkfPattern")<<inOut<<
"=inOut option. pushing a Trajectory with: "<<traj.
foundHits()<<
" found hits. "<<traj.
lostHits()
165 result.push_back(std::move(traj));
179 LogDebug(
"CkfPattern")<<inOut<<
"=inOut option. pushing a TempTrajectory with: "<<traj.
foundHits()<<
" found hits. "<<traj.
lostHits()
181 result.push_back(std::move(traj));
192 while (!traj.empty() && !traj.lastMeasurement().recHitR().isValid()) traj.pop();
193 LogDebug(
"CkfPattern")<<inOut<<
"=inOut option. pushing a TempTrajectory with: "<<traj.foundHits()<<
" found hits. "<<traj.lostHits();
195 result.push_back(std::move(traj));
209 const Surface * surface=&g->surface();
226 if ( traj.
empty() ) {
244 std::cerr <<
"ERROR SetEvent called on " <<
typeid(*this).name() << (
theMeasurementTracker ?
" with valid " :
"witout any ") <<
"MeasurementTrackerEvent" << std::endl;
249 std::cerr <<
"ERROR unSet called on " <<
typeid(*this).name() << (
theMeasurementTracker ?
" with valid " :
"witout any ") <<
"MeasurementTrackerEvent" << std::endl;
PropagationDirection direction() const
bool empty() const
True if trajectory has no measurements.
T getParameter(std::string const &) const
virtual FreeTrajectoryState propagate(const FreeTrajectoryState &ftsStart, const GlobalPoint &pDest) const final
const TrackingGeometry * geomTracker() const
TrajectoryStateOnSurface const & predictedState() const
ConstRecHitPointer const & recHit() const
bool empty() const
True if trajectory has no measurements.
void setData(const MeasurementTrackerEvent *data)
virtual void setEvent(const edm::Event &event) const
const std::string theEstimatorName
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
static TrajectoryFilter * createTrajectoryFilter(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
const DataContainer & measurements() 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
const Propagator * thePropagatorAlong
const Plane & surface() const
The nominal surface of the GeomDet.
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
bool qualityFilter(const TempTrajectory &traj, bool inOut=false) const
virtual void setEvent_(const edm::Event &iEvent, const edm::EventSetup &iSetup)=0
PropagationDirection direction() const
DataContainer const & measurements() const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
void seedMeasurements(const TrajectorySeed &seed, TempTrajectory &result) const
Trajectory toTrajectory() const
Convert to a standard Trajectory.
recHitContainer::const_iterator const_iterator
TrajectoryMeasurement const & lastMeasurement() const
FreeTrajectoryState const * freeState(bool withErrors=true) 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
std::unique_ptr< TrajectoryFilter > theInOutFilter
unsigned int detId() const
void addToResult(boost::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) 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
const std::string thePropagatorAlongName
BaseCkfTrajectoryBuilder(const edm::ParameterSet &conf, TrajectoryFilter *filter, TrajectoryFilter *inOutFilter=0)
static std::string dumpCandidate(const Candidate &candidate, bool showErrors=false)
std::shared_ptr< TrackingRecHit const > RecHitPointer
void setSharedSeed(const boost::shared_ptr< const TrajectorySeed > &seed)
StateAndLayers findStateAndLayers(const TrajectorySeed &seed, const TempTrajectory &traj) const
const MeasurementTrackerEvent * theMeasurementTracker
const std::string theUpdatorName
PTrajectoryStateOnDet const & startingState() const
const std::string theRecHitBuilderName
virtual const GeomDet * idToDet(DetId) const =0
virtual ~BaseCkfTrajectoryBuilder()
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&...args) const
NavigationDirection.
std::vector< TempTrajectory > TempTrajectoryContainer
T const * product() const
const Propagator * thePropagatorOpposite
void moveToResult(TempTrajectory &&traj, TempTrajectoryContainer &result, bool inOut=false) const
void emplace(Args &&...args)
virtual const MagneticField * magneticField() const =0
char data[epos_bytes_allocation]
bool toBeContinued(TempTrajectory &traj, bool inOut=false) const
std::pair< TSOS, std::vector< const DetLayer * > > StateAndLayers
const NavigationSchool * theNavigationSchool
const Propagator * backwardPropagator(const TrajectorySeed &seed) const
TrajectoryStateOnSurface const & updatedState() const
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
const GeometricSearchTracker * geometricSearchTracker() const
std::vector< Trajectory > TrajectoryContainer
const std::string thePropagatorOppositeName
T get(const Candidate &c)
const Chi2MeasurementEstimatorBase * theEstimator
std::unique_ptr< TrajectoryFilter > theFilter
TempTrajectory createStartingTrajectory(const TrajectorySeed &seed) const