|
|
|
| MkFitOutputConverter (edm::ParameterSet const &iConfig) |
|
| ~MkFitOutputConverter () override=default |
|
| EDProducer ()=default |
|
bool | hasAbilityToProduceInBeginLumis () const final |
|
bool | hasAbilityToProduceInBeginRuns () const final |
|
bool | hasAbilityToProduceInEndLumis () const final |
|
bool | hasAbilityToProduceInEndRuns () const final |
|
bool | wantsGlobalLuminosityBlocks () const final |
|
bool | wantsGlobalRuns () const final |
|
bool | wantsStreamLuminosityBlocks () const final |
|
bool | wantsStreamRuns () const final |
|
| EDProducerBase () |
|
ModuleDescription const & | moduleDescription () const |
|
| ~EDProducerBase () override |
|
void | callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func) |
|
std::vector< edm::ProductResolverIndex > const & | indiciesForPutProducts (BranchType iBranchType) const |
|
| ProducerBase () |
|
std::vector< edm::ProductResolverIndex > const & | putTokenIndexToProductResolverIndex () const |
|
std::vector< bool > const & | recordProvenanceList () const |
|
void | registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &) |
|
std::function< void(BranchDescription const &)> | registrationCallback () const |
| used by the fwk to register list of products More...
|
|
void | resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel) |
|
TypeLabelList const & | typeLabelList () const |
| used by the fwk to register the list of products of this module More...
|
|
| ~ProducerBase () noexcept(false) override |
|
std::vector< ConsumesInfo > | consumesInfo () const |
|
void | convertCurrentProcessAlias (std::string const &processName) |
| Convert "@currentProcess" in InputTag process names to the actual current process name. More...
|
|
| EDConsumerBase () |
|
| EDConsumerBase (EDConsumerBase &&)=default |
|
| EDConsumerBase (EDConsumerBase const &)=delete |
|
ESProxyIndex const * | esGetTokenIndices (edm::Transition iTrans) const |
|
ProductResolverIndexAndSkipBit | indexFrom (EDGetToken, BranchType, TypeID const &) const |
|
void | itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
void | itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const |
|
std::vector< ProductResolverIndexAndSkipBit > const & | itemsToGetFrom (BranchType iType) const |
|
void | labelsForToken (EDGetToken iToken, Labels &oLabels) const |
|
void | modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const |
|
EDConsumerBase & | operator= (EDConsumerBase &&)=default |
|
EDConsumerBase const & | operator= (EDConsumerBase const &)=delete |
|
bool | registeredToConsume (ProductResolverIndex, bool, BranchType) const |
|
bool | registeredToConsumeMany (TypeID const &, BranchType) const |
|
ProductResolverIndexAndSkipBit | uncheckedIndexFrom (EDGetToken) const |
|
void | updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet) |
|
void | updateLookup (eventsetup::ESRecordsToProxyIndices const &) |
|
virtual | ~EDConsumerBase () noexcept(false) |
|
|
std::pair< TrajectoryStateOnSurface, const GeomDet * > | backwardFit (const FreeTrajectoryState &fts, const edm::OwnVector< TrackingRecHit > &hits, const Propagator &propagatorAlong, const Propagator &propagatorOpposite, const TkClonerImpl &hitCloner, bool lastHitWasInvalid, bool lastHitWasChanged) const |
|
TrackCandidateCollection | convertCandidates (const MkFitOutputWrapper &mkFitOutput, const MkFitHitIndexMap &hitIndexMap, const edm::View< TrajectorySeed > &seeds, const TrackerGeometry &geom, const MagneticField &mf, const Propagator &propagatorAlong, const Propagator &propagatorOpposite, const TkClonerImpl &hitCloner, const std::vector< const DetLayer * > &detLayers, const mkfit::TrackVec &mkFitSeeds) const |
|
std::pair< TrajectoryStateOnSurface, const GeomDet * > | convertInnermostState (const FreeTrajectoryState &fts, const edm::OwnVector< TrackingRecHit > &hits, const Propagator &propagatorAlong, const Propagator &propagatorOpposite) const |
|
std::vector< const DetLayer * > | createDetLayers (const mkfit::LayerNumberConverter &lnc, const GeometricSearchTracker &tracker, const TrackerTopology &ttopo) const |
|
void | produce (edm::StreamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override |
|
|
typedef EDProducerBase | ModuleType |
|
using | ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > > |
|
typedef ProductRegistryHelper::TypeLabelList | TypeLabelList |
|
typedef ProductLabels | Labels |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces () |
| declare what type of product will make and with which optional label More...
|
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces () |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces () |
|
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<BranchType B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<Transition B> |
BranchAliasSetter | produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true) |
|
template<typename ProductType , Transition B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<class ProductType > |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
template<typename ProductType , BranchType B> |
BranchAliasSetterT< ProductType > | produces (std::string instanceName) |
|
ProducesCollector | producesCollector () |
|
EDGetToken | consumes (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | consumes (edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | consumes (TypeToGet const &id, edm::InputTag const &tag) |
|
ConsumesCollector | consumesCollector () |
| Use a ConsumesCollector to gather consumes information from helper functions. More...
|
|
template<typename ProductType , BranchType B = InEvent> |
void | consumesMany () |
|
void | consumesMany (const TypeToGet &id) |
|
template<BranchType B> |
void | consumesMany (const TypeToGet &id) |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes () |
|
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event> |
auto | esConsumes (ESInputTag const &tag) |
|
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<BranchType B> |
EDGetToken | mayConsume (const TypeToGet &id, edm::InputTag const &tag) |
|
template<typename ProductType , BranchType B = InEvent> |
EDGetTokenT< ProductType > | mayConsume (edm::InputTag const &tag) |
|
Definition at line 61 of file MkFitOutputConverter.cc.
◆ MkFitOutputConverter()
Definition at line 117 of file MkFitOutputConverter.cc.
121 mteToken_{consumes<MeasurementTrackerEvent>(iConfig.getParameter<
edm::InputTag>(
"measurementTrackerEvent"))},
122 geomToken_{esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()},
124 esConsumes<Propagator, TrackingComponentsRecord>(iConfig.getParameter<
edm::ESInputTag>(
"propagatorAlong"))},
127 ttopoToken_{esConsumes<TrackerTopology, TrackerTopologyRcd>()},
128 mfToken_{esConsumes<MagneticField, IdealMagneticFieldRecord>()},
129 ttrhBuilderToken_{esConsumes<TransientTrackingRecHitBuilder, TransientRecHitRecord>(
References edm::ParameterSet::getParameter().
◆ ~MkFitOutputConverter()
MkFitOutputConverter::~MkFitOutputConverter |
( |
| ) |
|
|
overridedefault |
◆ backwardFit()
Definition at line 380 of file MkFitOutputConverter.cc.
391 for (
int i =
hits.size() - 1;
i >= 0; --
i) {
402 const auto& lastHitSurface = firstHits.front()->det()->surface();
406 if (lastHitWasInvalid || lastHitWasChanged) {
407 LogTrace(
"MkFitOutputConverter") <<
"Propagating first opposite, then along, because lastHitWasInvalid? "
408 << lastHitWasInvalid <<
" or lastHitWasChanged? " << lastHitWasChanged;
411 const auto lastHitSubdet = firstHits.front()->geographicalId().subdetId();
412 const auto& surfacePos = lastHitSurface.position();
413 const auto& lastHitPos = firstHits.front()->globalPosition();
414 bool doSwitch =
false;
416 doSwitch = (surfacePos.perp2() < lastHitPos.perp2());
418 doSwitch = (surfacePos.z() < lastHitPos.z());
422 <<
"Propagating first opposite, then along, because surface is inner than the hit; surface perp2 "
423 << surfacePos.perp() <<
" hit " << lastHitPos.perp2() <<
" surface z " << surfacePos.z() <<
" hit "
431 if (!tsosDouble.first.isValid()) {
432 LogDebug(
"MkFitOutputConverter") <<
"Propagating to startingState failed, trying in another direction next";
435 auto& startingState = tsosDouble.first;
437 if (!startingState.isValid()) {
439 <<
"startingState is not valid, FTS was\n"
440 << fts <<
" last hit surface surface:"
441 <<
"\n position " << lastHitSurface.
position() <<
"\n phiSpan " << lastHitSurface.phiSpan().first <<
","
442 << lastHitSurface.phiSpan().first <<
"\n rSpan " << lastHitSurface.rSpan().first <<
","
443 << lastHitSurface.rSpan().first <<
"\n zSpan " << lastHitSurface.zSpan().first <<
","
444 << lastHitSurface.zSpan().first;
445 return std::pair<TrajectoryStateOnSurface, const GeomDet*>();
449 startingState.rescaleError(100.);
454 KFTrajectoryFitter backFitter(
455 &
propagatorAlong, &aKFUpdator, &aChi2MeasurementEstimator, firstHits.size(),
nullptr, &hitCloner);
466 LogDebug(
"MkFitOutputConverter") <<
"using a backward fit of :" << firstHits.size() <<
" hits, starting from:\n"
467 << startingState <<
" to get the estimate of the initial state of the track.";
470 edm::LogWarning(
"MkFitOutputConverter") <<
"FitTester: first hits fit failed";
471 return std::pair<TrajectoryStateOnSurface, const GeomDet*>();
484 LogDebug(
"MkFitOutputConverter") <<
"the initial state is found to be:\n:" << firstState
485 <<
"\n it's field pointer is: " << firstState.magneticField()
486 <<
"\n the pointer from the state of the back fit was: "
489 return std::make_pair(firstState, firstMeas.
recHit()->det());
References Chi2MeasurementEstimator_cfi::Chi2MeasurementEstimator, hfClusterShapes_cfi::hits, mps_fire::i, PixelPluginsPhase0_cfi::isBarrel, Trajectory::isValid(), Trajectory::lastMeasurement(), TrajectoryStateOnSurface::localError(), TrajectoryStateOnSurface::localParameters(), LogDebug, LogTrace, TrajectoryStateOnSurface::magneticField(), oppositeToMomentum, FreeTrajectoryState::position(), Propagator::propagateWithPath(), HLT_2018_cff::propagatorAlong, HLT_2018_cff::propagatorOpposite, TrajectoryMeasurement::recHit(), TrajectoryStateOnSurface::rescaleError(), TrajectoryFitter::standard, TrajectoryStateOnSurface::surface(), std::swap(), and TrajectoryMeasurement::updatedState().
Referenced by convertCandidates().
◆ convertCandidates()
Definition at line 222 of file MkFitOutputConverter.cc.
241 LogTrace(
"MkFitOutputConverter") <<
"Candidate " << candIndex <<
" pT " <<
cand.pT() <<
" eta " <<
cand.momEta()
242 <<
" phi " <<
cand.momPhi() <<
" chi2 " <<
cand.chi2();
250 bool lastHitInvalid =
false;
252 const auto& hitOnTrack =
cand.getHitOnTrack(
i);
253 LogTrace(
"MkFitOutputConverter") <<
" hit on layer " << hitOnTrack.layer <<
" index " << hitOnTrack.index;
254 if (hitOnTrack.index < 0) {
265 const auto* detLayer = detLayers.at(hitOnTrack.layer);
266 if (detLayer ==
nullptr) {
267 throw cms::Exception(
"LogicError") <<
"DetLayer for layer index " << hitOnTrack.layer <<
" is null!";
272 lastHitInvalid =
true;
275 LogTrace(
"MkFitOutputConverter") <<
" pos " <<
recHits.back().globalPosition().x() <<
" "
276 <<
recHits.back().globalPosition().y() <<
" "
277 <<
recHits.back().globalPosition().z() <<
" mag2 "
278 <<
recHits.back().globalPosition().mag2() <<
" detid "
279 <<
recHits.back().geographicalId().rawId() <<
" cluster "
282 lastHitInvalid =
false;
286 const auto lastHitId =
recHits.back().geographicalId();
290 recHits.sort([](
const auto&
a,
const auto&
b) {
291 const auto asub =
a.geographicalId().subdetId();
292 const auto bsub =
b.geographicalId().subdetId();
298 const auto& apos =
a.globalPosition();
299 const auto& bpos =
b.globalPosition();
302 return apos.perp2() < bpos.perp2();
307 const bool lastHitChanged = (
recHits.back().geographicalId() != lastHitId);
310 const auto seedIndex =
cand.label();
311 LogTrace(
"MkFitOutputConverter") <<
" from seed " << seedIndex <<
" seed hits";
312 const auto& mkseed = mkFitSeeds.at(
cand.label());
313 for (
int i = 0;
i < mkseed.nTotalHits(); ++
i) {
314 const auto& hitOnTrack = mkseed.getHitOnTrack(
i);
315 LogTrace(
"MkFitOutputConverter") <<
" hit on layer " << hitOnTrack.layer <<
" index " << hitOnTrack.index;
317 const auto& candHitOnTrack =
cand.getHitOnTrack(
i);
318 if (hitOnTrack.layer != candHitOnTrack.layer) {
320 <<
"Candidate " << candIndex <<
" from seed " << seedIndex <<
" hit " <<
i
321 <<
" has different layer in candidate (" << candHitOnTrack.layer <<
") and seed (" << hitOnTrack.layer
323 <<
" Hit indices are " << candHitOnTrack.index <<
" and " << hitOnTrack.index <<
", respectively";
325 if (hitOnTrack.index != candHitOnTrack.index) {
326 throw cms::Exception(
"LogicError") <<
"Candidate " << candIndex <<
" from seed " << seedIndex <<
" hit " <<
i
327 <<
" has different hit index in candidate (" << candHitOnTrack.index
328 <<
") and seed (" << hitOnTrack.index <<
") on layer " << hitOnTrack.layer;
333 auto state =
cand.state();
334 state.convertFromCCSToCartesian();
335 const auto& param = state.parameters;
336 const auto&
err = state.errors;
338 for (
int i = 0;
i < 6; ++
i) {
339 for (
int j =
i;
j < 6; ++
j) {
348 if (!fts.curvilinearError().posDef()) {
349 edm::LogWarning(
"MkFitOutputConverter") <<
"Curvilinear error not pos-def\n"
350 << fts.curvilinearError().matrix() <<
"\noriginal 6x6 covariance matrix\n"
351 << cov <<
"\ncandidate ignored";
359 if (!tsosDet.first.isValid()) {
361 <<
"Backward fit of candidate " << candIndex <<
" failed, ignoring the candidate";
372 seeds.refAt(seedIndex),
References a, funct::abs(), b, backwardFit(), backwardFitInCMSSW_, HLT_2018_cff::candidates, MkFitOutputWrapper::candidateTracks(), TrackingRecHit::clone(), MkFitHitIndexMap::clusterIndex(), convertInnermostState(), runTheMatrix::err, Exception, MkFitOutputWrapper::fitTracks(), MkFitHitIndexMap::hitPtr(), mps_fire::i, MkFitHitIndexMap::MkFitHit::index(), PixelPluginsPhase0_cfi::isBarrel, dqmiolumiharvest::j, LogTrace, nhits, convertSQLitetoXML_cfg::output, trajectoryStateTransform::persistentState(), HLT_2018_cff::propagatorAlong, HLT_2018_cff::propagatorOpposite, FastTrackerRecHitMaskProducer_cfi::recHits, InitialStep_cff::seeds, and UNINITIALIZED.
Referenced by produce().
◆ convertInnermostState()
◆ createDetLayers()
Definition at line 181 of file MkFitOutputConverter.cc.
184 std::vector<const DetLayer*> dets(lnc.nLayers(),
nullptr);
186 auto isPlusSide = [&ttopo](
const DetId& detid) {
189 auto setDet = [&lnc, &dets, &isPlusSide](
190 const int subdet,
const int layer,
const int isStereo,
const DetId& detId,
const DetLayer* lay) {
191 const int index = lnc.convertLayerNumber(subdet, layer,
false, isStereo, isPlusSide(detId));
192 if (
index < 0
or static_cast<unsigned>(
index) >= dets.size()) {
193 throw cms::Exception(
"LogicError") <<
"Invalid mkFit layer index " <<
index <<
" for DetId " << detId
194 <<
" subdet " << subdet <<
" layer " << layer <<
" isStereo " << isStereo;
198 constexpr
int monoLayer = 0;
199 constexpr
int stereoLayer = 1;
201 const auto&
comp = lay->basicComponents();
203 throw cms::Exception(
"LogicError") <<
"Got a tracker layer (subdet " << lay->subDetector()
204 <<
") with empty basicComponents.";
207 const auto& detId =
comp.front()->geographicalId();
208 const auto subdet = detId.subdetId();
209 const auto layer = ttopo.
layer(detId);
212 setDet(subdet, layer, monoLayer, detId, lay);
215 setDet(subdet, layer, stereoLayer, detId, lay);
References AlCaHLTBitMon_QueryRunRegistry::comp, Exception, TrackerTopology::layer(), or, PosEndcap, TrackerTopology::side(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, PbPb_ZMuSkimMuonDPG_cff::tracker, and UNLIKELY.
Referenced by produce().
◆ fillDescriptions()
◆ produce()
Implements edm::global::EDProducerBase.
Definition at line 151 of file MkFitOutputConverter.cc.
157 const auto* tkBuilder = dynamic_cast<TkTransientTrackingRecHitBuilder const*>(&ttrhBuilder);
159 throw cms::Exception(
"LogicError") <<
"TTRHBuilder must be of type TkTransientTrackingRecHitBuilder";
163 const auto detlayers =
References convertCandidates(), createDetLayers(), Exception, geomToken_, edm::EventSetup::getData(), InitialStep_cff::hitsSeeds, hitsSeedsToken_, iEvent, mfToken_, mteToken_, propagatorAlongToken_, propagatorOppositeToken_, putSeedStopInfoToken_, putTrackCandidateToken_, InitialStep_cff::seeds, seedToken_, tracksToken_, ttopoToken_, and ttrhBuilderToken_.
◆ backwardFitInCMSSW_
bool MkFitOutputConverter::backwardFitInCMSSW_ |
|
private |
◆ geomToken_
◆ hitsSeedsToken_
◆ mfToken_
◆ mteToken_
◆ propagatorAlongName_
std::string MkFitOutputConverter::propagatorAlongName_ |
|
private |
◆ propagatorAlongToken_
◆ propagatorOppositeName_
std::string MkFitOutputConverter::propagatorOppositeName_ |
|
private |
◆ propagatorOppositeToken_
◆ putSeedStopInfoToken_
◆ putTrackCandidateToken_
◆ seedToken_
◆ tracksToken_
◆ ttopoToken_
◆ ttrhBuilderName_
std::string MkFitOutputConverter::ttrhBuilderName_ |
|
private |
◆ ttrhBuilderToken_
edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorAlongToken_
unsigned int side(const DetId &id) const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
mkfit::TrackVec const & fitTracks() const
edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > ttrhBuilderToken_
unsigned int layer(const DetId &id) const
edm::EDPutTokenT< std::vector< SeedStopInfo > > putSeedStopInfoToken_
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
size_t clusterIndex(MkFitHit hit) const
Get CMSSW cluster index (currently used only for debugging)
TrajectoryStateOnSurface const & updatedState() const
GlobalPoint position() const
Global3DVector GlobalVector
std::pair< TrajectoryStateOnSurface, const GeomDet * > backwardFit(const FreeTrajectoryState &fts, const edm::OwnVector< TrackingRecHit > &hits, const Propagator &propagatorAlong, const Propagator &propagatorOpposite, const TkClonerImpl &hitCloner, bool lastHitWasInvalid, bool lastHitWasChanged) const
std::pair< TrajectoryStateOnSurface, const GeomDet * > convertInnermostState(const FreeTrajectoryState &fts, const edm::OwnVector< TrackingRecHit > &hits, const Propagator &propagatorAlong, const Propagator &propagatorOpposite) const
const TrackingRecHit * hitPtr(MkFitHit hit) const
Get CMSSW hit pointer.
edm::EDGetTokenT< MkFitInputWrapper > hitsSeedsToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorOppositeToken_
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
static constexpr auto TIB
Global3DPoint GlobalPoint
mkfit::TrackVec const & candidateTracks() const
const LocalTrajectoryParameters & localParameters() const
std::vector< TrackCandidate > TrackCandidateCollection
std::vector< ConstRecHitPointer > ConstRecHitContainer
edm::EDPutTokenT< TrackCandidateCollection > putTrackCandidateToken_
TrajectoryMeasurement const & lastMeasurement() const
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttopoToken_
virtual TrackingRecHit * clone() const =0
edm::EDGetTokenT< MkFitOutputWrapper > tracksToken_
edm::EDGetTokenT< MeasurementTrackerEvent > mteToken_
void rescaleError(double factor)
bool getData(T &iHolder) const
ConstRecHitPointer const & recHit() const
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mfToken_
static constexpr auto TEC
TrackCandidateCollection convertCandidates(const MkFitOutputWrapper &mkFitOutput, const MkFitHitIndexMap &hitIndexMap, const edm::View< TrajectorySeed > &seeds, const TrackerGeometry &geom, const MagneticField &mf, const Propagator &propagatorAlong, const Propagator &propagatorOpposite, const TkClonerImpl &hitCloner, const std::vector< const DetLayer * > &detLayers, const mkfit::TrackVec &mkFitSeeds) const
static constexpr auto TOB
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< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
const SurfaceType & surface() const
Abs< T >::type abs(const T &t)
void setComment(std::string const &value)
const LocalTrajectoryError & localError() const
std::vector< const DetLayer * > createDetLayers(const mkfit::LayerNumberConverter &lnc, const GeometricSearchTracker &tracker, const TrackerTopology &ttopo) const
const MagneticField * magneticField() const
static constexpr auto TID
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)