28 std::unique_ptr<TrajectoryFilter>
filter,
29 std::unique_ptr<TrajectoryFilter> inOutFilter)
30 : theSeedAs5DHit(conf.getParameter<bool>(
"seedAs5DHit")),
31 theFilter(std::
move(filter)),
32 theInOutFilter(std::
move(inOutFilter)),
35 thePropagatorOppositeToken(
39 if (conf.
exists(
"clustersToSkip"))
41 <<
"ERROR: " <<
typeid(*this).name() <<
" has a clustersToSkip parameter set";
47 iDesc.
add<
bool>(
"seedAs5DHit",
false);
49 iDesc.
add<
std::string>(
"propagatorAlong",
"PropagatorWithMaterial");
50 iDesc.
add<
std::string>(
"propagatorOpposite",
"PropagatorWithMaterialOpposite");
69 TSOS invalidState(gdet->surface());
71 result.
emplace(invalidState, outerState, recHit, 0, hitLayer);
77 const GeomDet* hitGeomDet = recHit->det();
84 if (&gdet->surface() != &hitGeomDet->
surface()) {
86 <<
"CkfTrajectoryBuilder error: the seed state is not on the surface of the detector of the last seed hit";
91 result.
emplace(invalidState, outerState, recHit, 0, hitLayer);
102 result.
emplace(invalidState, innerUpdated, recHit, 0, hitLayer);
124 LogTrace(
"BaseCkfTrajectoryBuilder_InfiniteLoop")
125 <<
"Cropping Track After 400 Measurements:\n"
128 <<
" Found hits: " << traj.
foundHits() <<
", lost hits: " << traj.
lostHits() <<
"\n\n";
164 LogDebug(
"CkfPattern") << inOut <<
"=inOut option. pushing a Trajectory with: " << traj.
foundHits() <<
" found hits. "
181 LogDebug(
"CkfPattern") << inOut <<
"=inOut option. pushing a TempTrajectory with: " << traj.
foundHits()
182 <<
" found hits. " << traj.
lostHits()
193 while (!traj.empty() && !traj.lastMeasurement().recHitR().isValid())
195 LogDebug(
"CkfPattern") << inOut <<
"=inOut option. pushing a TempTrajectory with: " << traj.foundHits()
196 <<
" found hits. " << traj.lostHits();
208 const Surface* surface = &g->surface();
228 std::cerr <<
"ERROR SetEvent called on " <<
typeid(*this).name()
229 << (
theMeasurementTracker ?
" with valid " :
"witout any ") <<
"MeasurementTrackerEvent" << std::endl;
233 std::cerr <<
"ERROR unSet called on " <<
typeid(*this).name()
234 << (
theMeasurementTracker ?
" with valid " :
"witout any ") <<
"MeasurementTrackerEvent" << std::endl;
PropagationDirection direction() const
bool empty() const
True if trajectory has no measurements.
~BaseCkfTrajectoryBuilder() override
TrajectoryStateOnSurface const & predictedState() const
ConstRecHitPointer const & recHit() const
bool empty() const
True if trajectory has no measurements.
uint16_t *__restrict__ id
void setData(const MeasurementTrackerEvent *data)
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorAlongToken
const Propagator * forwardPropagator(const TrajectorySeed &seed) const
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
void addToResult(std::shared_ptr< const TrajectorySeed > const &seed, TempTrajectory &traj, TrajectoryContainer &result, bool inOut=false) const
Log< level::Error, false > LogError
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
void seedMeasurements(const TrajectorySeed &seed, TempTrajectory &result, bool as5D) const
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
bool getData(T &iHolder) const
PropagationDirection direction() const
DataContainer const & measurements() const
virtual TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const =0
Trajectory toTrajectory() const
Convert to a standard Trajectory.
TrajectoryMeasurement const & lastMeasurement() const
FreeTrajectoryState const * freeState(bool withErrors=true) const
const TransientTrackingRecHitBuilder * theTTRHBuilder
const edm::ESGetToken< Chi2MeasurementEstimatorBase, TrackingComponentsRecord > theEstimatorToken
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
static std::unique_ptr< TrajectoryFilter > createTrajectoryFilter(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
std::unique_ptr< TrajectoryFilter > theInOutFilter
unsigned int detId() const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillPSetDescription(edm::ParameterSetDescription &iDesc)
const TrackerGeomDet * idToDet(DetId) const override
static std::string dumpCandidate(const Candidate &candidate, bool showErrors=false)
std::shared_ptr< TrackingRecHit const > RecHitPointer
StateAndLayers findStateAndLayers(const TrajectorySeed &seed, const TempTrajectory &traj) const
RecHitRange recHits() const
const MeasurementTrackerEvent * theMeasurementTracker
const TrackerGeometry * geomTracker() const
const edm::ESGetToken< Propagator, TrackingComponentsRecord > thePropagatorOppositeToken
PTrajectoryStateOnDet const & startingState() const
std::pair< TSOS, std::vector< const DetLayer * > > StateAndLayers
std::vector< const DetLayer * > nextLayers(const DetLayer &detLayer, Args &&...args) const
std::vector< TempTrajectory > TempTrajectoryContainer
T getParameter(std::string const &) const
TrajectoryStateOnSurface propagate(STA const &state, SUR const &surface) const
void setSharedSeed(const std::shared_ptr< const TrajectorySeed > &seed)
const Propagator * thePropagatorOpposite
void moveToResult(TempTrajectory &&traj, TempTrajectoryContainer &result, bool inOut=false) const
BaseCkfTrajectoryBuilder(const edm::ParameterSet &conf, edm::ConsumesCollector iC, std::unique_ptr< TrajectoryFilter > filter, std::unique_ptr< TrajectoryFilter > inOutFilter=nullptr)
void emplace(Args &&...args)
virtual const MagneticField * magneticField() const =0
unsigned int nHits() const
char data[epos_bytes_allocation]
bool toBeContinued(TempTrajectory &traj, bool inOut=false) const
const NavigationSchool * theNavigationSchool
const Propagator * backwardPropagator(const TrajectorySeed &seed) const
TrajectoryStateOnSurface const & updatedState() const
void unset() const override
const edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > theRecHitBuilderToken
const DetLayer * lastLayer() const
Redundant method, returns the layer of lastMeasurement() .
void setEvent(const edm::Event &event) const override
const edm::ESGetToken< TrajectoryStateUpdator, TrackingComponentsRecord > theUpdatorToken
const GeometricSearchTracker * geometricSearchTracker() const
std::vector< Trajectory > TrajectoryContainer
const Chi2MeasurementEstimatorBase * theEstimator
std::unique_ptr< TrajectoryFilter > theFilter
TempTrajectory createStartingTrajectory(const TrajectorySeed &seed) const