CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
MkFitOutputConverter Class Reference
Inheritance diagram for MkFitOutputConverter:
edm::global::EDProducer<> edm::global::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 MkFitOutputConverter (edm::ParameterSet const &iConfig)
 
 ~MkFitOutputConverter () override=default
 
- Public Member Functions inherited from edm::global::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
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
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () 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
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (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::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (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)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::global::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

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
 

Private Attributes

bool backwardFitInCMSSW_
 
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecordgeomToken_
 
edm::EDGetTokenT< MkFitInputWrapperhitsSeedsToken_
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordmfToken_
 
edm::EDGetTokenT< MeasurementTrackerEventmteToken_
 
std::string propagatorAlongName_
 
edm::ESGetToken< Propagator, TrackingComponentsRecordpropagatorAlongToken_
 
std::string propagatorOppositeName_
 
edm::ESGetToken< Propagator, TrackingComponentsRecordpropagatorOppositeToken_
 
edm::EDPutTokenT< std::vector< SeedStopInfo > > putSeedStopInfoToken_
 
edm::EDPutTokenT< TrackCandidateCollectionputTrackCandidateToken_
 
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
 
edm::EDGetTokenT< MkFitOutputWrappertracksToken_
 
edm::ESGetToken< TrackerTopology, TrackerTopologyRcdttopoToken_
 
std::string ttrhBuilderName_
 
edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecordttrhBuilderToken_
 

Additional Inherited Members

- Public Types inherited from edm::global::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::ProducerBase
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 ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
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 = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 

Detailed Description

Definition at line 61 of file MkFitOutputConverter.cc.

Constructor & Destructor Documentation

◆ MkFitOutputConverter()

MkFitOutputConverter::MkFitOutputConverter ( edm::ParameterSet const &  iConfig)
explicit

Definition at line 117 of file MkFitOutputConverter.cc.

118  : hitsSeedsToken_{consumes<MkFitInputWrapper>(iConfig.getParameter<edm::InputTag>("hitsSeeds"))},
119  tracksToken_{consumes<MkFitOutputWrapper>(iConfig.getParameter<edm::InputTag>("tracks"))},
120  seedToken_{consumes<edm::View<TrajectorySeed>>(iConfig.getParameter<edm::InputTag>("seeds"))},
121  mteToken_{consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("measurementTrackerEvent"))},
122  geomToken_{esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()},
124  esConsumes<Propagator, TrackingComponentsRecord>(iConfig.getParameter<edm::ESInputTag>("propagatorAlong"))},
125  propagatorOppositeToken_{esConsumes<Propagator, TrackingComponentsRecord>(
126  iConfig.getParameter<edm::ESInputTag>("propagatorOpposite"))},
127  ttopoToken_{esConsumes<TrackerTopology, TrackerTopologyRcd>()},
128  mfToken_{esConsumes<MagneticField, IdealMagneticFieldRecord>()},
129  ttrhBuilderToken_{esConsumes<TransientTrackingRecHitBuilder, TransientRecHitRecord>(
130  iConfig.getParameter<edm::ESInputTag>("ttrhBuilder"))},
131  putTrackCandidateToken_{produces<TrackCandidateCollection>()},
132  putSeedStopInfoToken_{produces<std::vector<SeedStopInfo>>()},
133  backwardFitInCMSSW_{iConfig.getParameter<bool>("backwardFitInCMSSW")} {}

References edm::ParameterSet::getParameter().

◆ ~MkFitOutputConverter()

MkFitOutputConverter::~MkFitOutputConverter ( )
overridedefault

Member Function Documentation

◆ backwardFit()

std::pair< TrajectoryStateOnSurface, const GeomDet * > MkFitOutputConverter::backwardFit ( const FreeTrajectoryState fts,
const edm::OwnVector< TrackingRecHit > &  hits,
const Propagator propagatorAlong,
const Propagator propagatorOpposite,
const TkClonerImpl hitCloner,
bool  lastHitWasInvalid,
bool  lastHitWasChanged 
) const
private

Definition at line 381 of file MkFitOutputConverter.cc.

388  {
389  // First filter valid hits as in TransientInitialStateEstimator
391 
392  for (int i = hits.size() - 1; i >= 0; --i) {
393  if (hits[i].det()) {
394  // TransientTrackingRecHit::ConstRecHitContainer has shared_ptr,
395  // and it is passed to backFitter below so it is really needed
396  // to keep the interface. Since we keep the ownership in hits,
397  // let's disable the deleter.
398  firstHits.emplace_back(&(hits[i]), edm::do_nothing_deleter{});
399  }
400  }
401 
402  // Then propagate along to the surface of the last hit to get a TSOS
403  const auto& lastHitSurface = firstHits.front()->det()->surface();
404 
405  const Propagator* tryFirst = &propagatorAlong;
406  const Propagator* trySecond = &propagatorOpposite;
407  if (lastHitWasInvalid || lastHitWasChanged) {
408  LogTrace("MkFitOutputConverter") << "Propagating first opposite, then along, because lastHitWasInvalid? "
409  << lastHitWasInvalid << " or lastHitWasChanged? " << lastHitWasChanged;
410  std::swap(tryFirst, trySecond);
411  } else {
412  const auto lastHitSubdet = firstHits.front()->geographicalId().subdetId();
413  const auto& surfacePos = lastHitSurface.position();
414  const auto& lastHitPos = firstHits.front()->globalPosition();
415  bool doSwitch = false;
416  if (isBarrel(lastHitSubdet)) {
417  doSwitch = (surfacePos.perp2() < lastHitPos.perp2());
418  } else {
419  doSwitch = (surfacePos.z() < lastHitPos.z());
420  }
421  if (doSwitch) {
422  LogTrace("MkFitOutputConverter")
423  << "Propagating first opposite, then along, because surface is inner than the hit; surface perp2 "
424  << surfacePos.perp() << " hit " << lastHitPos.perp2() << " surface z " << surfacePos.z() << " hit "
425  << lastHitPos.z();
426 
427  std::swap(tryFirst, trySecond);
428  }
429  }
430 
431  auto tsosDouble = tryFirst->propagateWithPath(fts, lastHitSurface);
432  if (!tsosDouble.first.isValid()) {
433  LogDebug("MkFitOutputConverter") << "Propagating to startingState failed, trying in another direction next";
434  tsosDouble = trySecond->propagateWithPath(fts, lastHitSurface);
435  }
436  auto& startingState = tsosDouble.first;
437 
438  if (!startingState.isValid()) {
439  edm::LogWarning("MkFitOutputConverter")
440  << "startingState is not valid, FTS was\n"
441  << fts << " last hit surface surface:"
442  << "\n position " << lastHitSurface.position() << "\n phiSpan " << lastHitSurface.phiSpan().first << ","
443  << lastHitSurface.phiSpan().first << "\n rSpan " << lastHitSurface.rSpan().first << ","
444  << lastHitSurface.rSpan().first << "\n zSpan " << lastHitSurface.zSpan().first << ","
445  << lastHitSurface.zSpan().first;
446  return std::pair<TrajectoryStateOnSurface, const GeomDet*>();
447  }
448 
449  // Then return back to the logic from TransientInitialStateEstimator
450  startingState.rescaleError(100.);
451 
452  // avoid cloning
453  KFUpdator const aKFUpdator;
454  Chi2MeasurementEstimator const aChi2MeasurementEstimator(100., 3);
455  KFTrajectoryFitter backFitter(
456  &propagatorAlong, &aKFUpdator, &aChi2MeasurementEstimator, firstHits.size(), nullptr, &hitCloner);
457 
458  // assume for now that the propagation in mkfit always alongMomentum
459  PropagationDirection backFitDirection = oppositeToMomentum;
460 
461  // only direction matters in this context
463 
464  // ignore loopers for now
465  Trajectory fitres = backFitter.fitOne(fakeSeed, firstHits, startingState, TrajectoryFitter::standard);
466 
467  LogDebug("MkFitOutputConverter") << "using a backward fit of :" << firstHits.size() << " hits, starting from:\n"
468  << startingState << " to get the estimate of the initial state of the track.";
469 
470  if (!fitres.isValid()) {
471  edm::LogWarning("MkFitOutputConverter") << "FitTester: first hits fit failed";
472  return std::pair<TrajectoryStateOnSurface, const GeomDet*>();
473  }
474 
475  TrajectoryMeasurement const& firstMeas = fitres.lastMeasurement();
476 
477  // magnetic field can be different!
478  TrajectoryStateOnSurface firstState(firstMeas.updatedState().localParameters(),
479  firstMeas.updatedState().localError(),
480  firstMeas.updatedState().surface(),
481  propagatorAlong.magneticField());
482 
483  firstState.rescaleError(100.);
484 
485  LogDebug("MkFitOutputConverter") << "the initial state is found to be:\n:" << firstState
486  << "\n it's field pointer is: " << firstState.magneticField()
487  << "\n the pointer from the state of the back fit was: "
488  << firstMeas.updatedState().magneticField();
489 
490  return std::make_pair(firstState, firstMeas.recHit()->det());
491 }

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_FULL_cff::propagatorAlong, HLT_FULL_cff::propagatorOpposite, TrajectoryMeasurement::recHit(), TrajectoryStateOnSurface::rescaleError(), TrajectoryFitter::standard, TrajectoryStateOnSurface::surface(), std::swap(), and TrajectoryMeasurement::updatedState().

Referenced by convertCandidates().

◆ convertCandidates()

TrackCandidateCollection MkFitOutputConverter::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
private

Definition at line 223 of file MkFitOutputConverter.cc.

232  {
234  const auto& candidates = backwardFitInCMSSW_ ? mkFitOutput.candidateTracks() : mkFitOutput.fitTracks();
235  output.reserve(candidates.size());
236 
237  LogTrace("MkFitOutputConverter") << "Number of candidates " << mkFitOutput.candidateTracks().size();
238 
239  int candIndex = -1;
240  for (const auto& cand : candidates) {
241  ++candIndex;
242  LogTrace("MkFitOutputConverter") << "Candidate " << candIndex << " pT " << cand.pT() << " eta " << cand.momEta()
243  << " phi " << cand.momPhi() << " chi2 " << cand.chi2();
244 
245  // hits
247  // nTotalHits() gives sum of valid hits (nFoundHits()) and
248  // invalid/missing hits (up to a maximum of 32 inside mkFit,
249  // restriction to be lifted in the future)
250  const int nhits = cand.nTotalHits();
251  bool lastHitInvalid = false;
252  for (int i = 0; i < nhits; ++i) {
253  const auto& hitOnTrack = cand.getHitOnTrack(i);
254  LogTrace("MkFitOutputConverter") << " hit on layer " << hitOnTrack.layer << " index " << hitOnTrack.index;
255  if (hitOnTrack.index < 0) {
256  // See index-desc.txt file in mkFit for description of negative values
257  //
258  // In order to use the regular InvalidTrackingRecHit I'd need
259  // a GeomDet (and "unfortunately" that is needed in
260  // TrackProducer).
261  //
262  // I guess we could take the track state and propagate it to
263  // each layer to find the actual module the track crosses, and
264  // check whether it is active or not to be able to mark
265  // inactive hits
266  const auto* detLayer = detLayers.at(hitOnTrack.layer);
267  if (detLayer == nullptr) {
268  throw cms::Exception("LogicError") << "DetLayer for layer index " << hitOnTrack.layer << " is null!";
269  }
270  // In principle an InvalidTrackingRecHitNoDet could be
271  // inserted here, but it seems that it is best to deal with
272  // them in the TrackProducer.
273  lastHitInvalid = true;
274  } else {
275  recHits.push_back(hitIndexMap.hitPtr(MkFitHitIndexMap::MkFitHit{hitOnTrack.index, hitOnTrack.layer})->clone());
276  LogTrace("MkFitOutputConverter") << " pos " << recHits.back().globalPosition().x() << " "
277  << recHits.back().globalPosition().y() << " "
278  << recHits.back().globalPosition().z() << " mag2 "
279  << recHits.back().globalPosition().mag2() << " detid "
280  << recHits.back().geographicalId().rawId() << " cluster "
281  << hitIndexMap.clusterIndex(
282  MkFitHitIndexMap::MkFitHit{hitOnTrack.index, hitOnTrack.layer});
283  lastHitInvalid = false;
284  }
285  }
286 
287  const auto lastHitId = recHits.back().geographicalId();
288 
289  // MkFit hits are *not* in the order of propagation, sort by 3D radius for now (as we don't have loopers)
290  // TODO: Improve the sorting (extract keys? maybe even bubble sort would work well as the hits are almost in the correct order)
291  recHits.sort([](const auto& a, const auto& b) {
292  const auto asub = a.geographicalId().subdetId();
293  const auto bsub = b.geographicalId().subdetId();
294  if (asub != bsub) {
295  // Subdetector order (BPix, FPix, TIB, TID, TOB, TEC) corresponds also the navigation
296  return asub < bsub;
297  }
298 
299  const auto& apos = a.globalPosition();
300  const auto& bpos = b.globalPosition();
301 
302  if (isBarrel(asub)) {
303  return apos.perp2() < bpos.perp2();
304  }
305  return std::abs(apos.z()) < std::abs(bpos.z());
306  });
307 
308  const bool lastHitChanged = (recHits.back().geographicalId() != lastHitId); // TODO: make use of the bools
309 
310  // seed
311  const auto seedIndex = cand.label();
312  LogTrace("MkFitOutputConverter") << " from seed " << seedIndex << " seed hits";
313  const auto& mkseed = mkFitSeeds.at(cand.label());
314  for (int i = 0; i < mkseed.nTotalHits(); ++i) {
315  const auto& hitOnTrack = mkseed.getHitOnTrack(i);
316  LogTrace("MkFitOutputConverter") << " hit on layer " << hitOnTrack.layer << " index " << hitOnTrack.index;
317  // sanity check for now
318  const auto& candHitOnTrack = cand.getHitOnTrack(i);
319  if (hitOnTrack.layer != candHitOnTrack.layer) {
320  throw cms::Exception("LogicError")
321  << "Candidate " << candIndex << " from seed " << seedIndex << " hit " << i
322  << " has different layer in candidate (" << candHitOnTrack.layer << ") and seed (" << hitOnTrack.layer
323  << ")."
324  << " Hit indices are " << candHitOnTrack.index << " and " << hitOnTrack.index << ", respectively";
325  }
326  if (hitOnTrack.index != candHitOnTrack.index) {
327  throw cms::Exception("LogicError") << "Candidate " << candIndex << " from seed " << seedIndex << " hit " << i
328  << " has different hit index in candidate (" << candHitOnTrack.index
329  << ") and seed (" << hitOnTrack.index << ") on layer " << hitOnTrack.layer;
330  }
331  }
332 
333  // state
334  auto state = cand.state(); // copy because have to modify
335  state.convertFromCCSToCartesian();
336  const auto& param = state.parameters;
337  const auto& err = state.errors;
339  for (int i = 0; i < 6; ++i) {
340  for (int j = i; j < 6; ++j) {
341  cov[i][j] = err.At(i, j);
342  }
343  }
344 
345  auto fts = FreeTrajectoryState(
347  GlobalPoint(param[0], param[1], param[2]), GlobalVector(param[3], param[4], param[5]), state.charge, &mf),
349  if (!fts.curvilinearError().posDef()) {
350  edm::LogWarning("MkFitOutputConverter") << "Curvilinear error not pos-def\n"
351  << fts.curvilinearError().matrix() << "\noriginal 6x6 covariance matrix\n"
352  << cov << "\ncandidate ignored";
353  continue;
354  }
355 
356  auto tsosDet =
358  ? backwardFit(fts, recHits, propagatorAlong, propagatorOpposite, hitCloner, lastHitInvalid, lastHitChanged)
360  if (!tsosDet.first.isValid()) {
361  edm::LogWarning("MkFitOutputConverter")
362  << "Backward fit of candidate " << candIndex << " failed, ignoring the candidate";
363  continue;
364  }
365 
366  // convert to persistent, from CkfTrackCandidateMakerBase
367  auto pstate = trajectoryStateTransform::persistentState(tsosDet.first, tsosDet.second->geographicalId().rawId());
368 
369  output.emplace_back(
370  recHits,
371  seeds.at(seedIndex),
372  pstate,
373  seeds.refAt(seedIndex),
374  0, // mkFit does not produce loopers, so set nLoops=0
375  static_cast<uint8_t>(StopReason::UNINITIALIZED) // TODO: ignore details of stopping reason as well for now
376  );
377  }
378  return output;
379 }

References a, funct::abs(), b, backwardFit(), backwardFitInCMSSW_, HLT_FULL_cff::candidates, MkFitOutputWrapper::candidateTracks(), TrackingRecHit::clone(), MkFitHitIndexMap::clusterIndex(), convertInnermostState(), submitPVResolutionJobs::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_FULL_cff::propagatorAlong, HLT_FULL_cff::propagatorOpposite, FastTrackerRecHitMaskProducer_cfi::recHits, InitialStep_cff::seeds, and UNINITIALIZED.

Referenced by produce().

◆ convertInnermostState()

std::pair< TrajectoryStateOnSurface, const GeomDet * > MkFitOutputConverter::convertInnermostState ( const FreeTrajectoryState fts,
const edm::OwnVector< TrackingRecHit > &  hits,
const Propagator propagatorAlong,
const Propagator propagatorOpposite 
) const
private

Definition at line 493 of file MkFitOutputConverter.cc.

497  {
498  auto det = hits[0].det();
499  if (det == nullptr) {
500  throw cms::Exception("LogicError") << "Got nullptr from the first hit det()";
501  }
502 
503  const auto& firstHitSurface = det->surface();
504 
505  auto tsosDouble = propagatorAlong.propagateWithPath(fts, firstHitSurface);
506  if (!tsosDouble.first.isValid()) {
507  LogDebug("MkFitOutputConverter") << "Propagating to startingState along momentum failed, trying opposite next";
508  tsosDouble = propagatorOpposite.propagateWithPath(fts, firstHitSurface);
509  }
510 
511  return std::make_pair(tsosDouble.first, det);
512 }

References Exception, hfClusterShapes_cfi::hits, LogDebug, HLT_FULL_cff::propagatorAlong, and HLT_FULL_cff::propagatorOpposite.

Referenced by convertCandidates().

◆ createDetLayers()

std::vector< const DetLayer * > MkFitOutputConverter::createDetLayers ( const mkfit::LayerNumberConverter &  lnc,
const GeometricSearchTracker tracker,
const TrackerTopology ttopo 
) const
private

Definition at line 181 of file MkFitOutputConverter.cc.

183  {
184  std::vector<const DetLayer*> dets(lnc.nLayers(), nullptr);
185 
186  auto isPlusSide = [&ttopo](const DetId& detid) {
187  return ttopo.side(detid) == static_cast<unsigned>(TrackerDetSide::PosEndcap);
188  };
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 det rawId " << detId.rawId()
194  << " "
195  << " subdet " << subdet << " layer " << layer << " isStereo " << isStereo;
196  }
197  dets[index] = lay;
198  };
199  constexpr int monoLayer = 0;
200  constexpr int stereoLayer = 1;
201  for (const DetLayer* lay : tracker.allLayers()) {
202  const auto& comp = lay->basicComponents();
203  if (UNLIKELY(comp.empty())) {
204  throw cms::Exception("LogicError") << "Got a tracker layer (subdet " << lay->subDetector()
205  << ") with empty basicComponents.";
206  }
207  // First component is enough for layer and side information
208  const auto& detId = comp.front()->geographicalId();
209  const auto subdet = detId.subdetId();
210  const auto layer = ttopo.layer(detId);
211 
212  // TODO: mono/stereo structure is still hardcoded for phase0/1 strip tracker
213  setDet(subdet, layer, monoLayer, detId, lay);
214  if (((subdet == StripSubdetector::TIB or subdet == StripSubdetector::TOB) and (layer == 1 or layer == 2)) or
215  subdet == StripSubdetector::TID or subdet == StripSubdetector::TEC) {
216  setDet(subdet, layer, stereoLayer, detId, lay);
217  }
218  }
219 
220  return dets;
221 }

References AlCaHLTBitMon_QueryRunRegistry::comp, Exception, phase1PixelTopology::layer, TrackerTopology::layer(), or, PosEndcap, TrackerTopology::side(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, PbPb_ZMuSkimMuonDPG_cff::tracker, and UNLIKELY.

Referenced by produce().

◆ fillDescriptions()

void MkFitOutputConverter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 135 of file MkFitOutputConverter.cc.

135  {
137 
138  desc.add("hitsSeeds", edm::InputTag{"mkFitInputConverter"});
139  desc.add("tracks", edm::InputTag{"mkFitProducer"});
140  desc.add("seeds", edm::InputTag{"initialStepSeeds"});
141  desc.add("measurementTrackerEvent", edm::InputTag{"MeasurementTrackerEvent"});
142  desc.add("ttrhBuilder", edm::ESInputTag{"", "WithTrackAngle"});
143  desc.add("propagatorAlong", edm::ESInputTag{"", "PropagatorWithMaterial"});
144  desc.add("propagatorOpposite", edm::ESInputTag{"", "PropagatorWithMaterialOpposite"});
145  desc.add("backwardFitInCMSSW", false)
146  ->setComment("Do backward fit (to innermost hit) in CMSSW (true) or mkFit (false)");
147 
148  descriptions.addWithDefaultLabel(desc);
149 }

References edm::ConfigurationDescriptions::addWithDefaultLabel(), and submitPVResolutionJobs::desc.

◆ produce()

void MkFitOutputConverter::produce ( edm::StreamID  iID,
edm::Event iEvent,
const edm::EventSetup iSetup 
) const
overrideprivatevirtual

Implements edm::global::EDProducerBase.

Definition at line 151 of file MkFitOutputConverter.cc.

151  {
152  const auto& seeds = iEvent.get(seedToken_);
153  const auto& hitsSeeds = iEvent.get(hitsSeedsToken_);
154  const auto& mte = iEvent.get(mteToken_);
155 
156  const auto& ttrhBuilder = iSetup.getData(ttrhBuilderToken_);
157  const auto* tkBuilder = dynamic_cast<TkTransientTrackingRecHitBuilder const*>(&ttrhBuilder);
158  if (!tkBuilder) {
159  throw cms::Exception("LogicError") << "TTRHBuilder must be of type TkTransientTrackingRecHitBuilder";
160  }
161 
162  // Convert mkfit presentation back to CMSSW
163  const auto detlayers =
164  createDetLayers(hitsSeeds.layerNumberConverter(), *(mte.geometricSearchTracker()), iSetup.getData(ttopoToken_));
167  hitsSeeds.hitIndexMap(),
168  seeds,
169  iSetup.getData(geomToken_),
170  iSetup.getData(mfToken_),
173  tkBuilder->cloner(),
174  detlayers,
175  hitsSeeds.seeds()));
176 
177  // TODO: SeedStopInfo is currently unfilled
178  iEvent.emplace(putSeedStopInfoToken_, seeds.size());
179 }

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_.

Member Data Documentation

◆ backwardFitInCMSSW_

bool MkFitOutputConverter::backwardFitInCMSSW_
private

Definition at line 114 of file MkFitOutputConverter.cc.

Referenced by convertCandidates().

◆ geomToken_

edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> MkFitOutputConverter::geomToken_
private

Definition at line 103 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ hitsSeedsToken_

edm::EDGetTokenT<MkFitInputWrapper> MkFitOutputConverter::hitsSeedsToken_
private

Definition at line 99 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ mfToken_

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> MkFitOutputConverter::mfToken_
private

Definition at line 107 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ mteToken_

edm::EDGetTokenT<MeasurementTrackerEvent> MkFitOutputConverter::mteToken_
private

Definition at line 102 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ propagatorAlongName_

std::string MkFitOutputConverter::propagatorAlongName_
private

Definition at line 112 of file MkFitOutputConverter.cc.

◆ propagatorAlongToken_

edm::ESGetToken<Propagator, TrackingComponentsRecord> MkFitOutputConverter::propagatorAlongToken_
private

Definition at line 104 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ propagatorOppositeName_

std::string MkFitOutputConverter::propagatorOppositeName_
private

Definition at line 113 of file MkFitOutputConverter.cc.

◆ propagatorOppositeToken_

edm::ESGetToken<Propagator, TrackingComponentsRecord> MkFitOutputConverter::propagatorOppositeToken_
private

Definition at line 105 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ putSeedStopInfoToken_

edm::EDPutTokenT<std::vector<SeedStopInfo> > MkFitOutputConverter::putSeedStopInfoToken_
private

Definition at line 110 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ putTrackCandidateToken_

edm::EDPutTokenT<TrackCandidateCollection> MkFitOutputConverter::putTrackCandidateToken_
private

Definition at line 109 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ seedToken_

edm::EDGetTokenT<edm::View<TrajectorySeed> > MkFitOutputConverter::seedToken_
private

Definition at line 101 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ tracksToken_

edm::EDGetTokenT<MkFitOutputWrapper> MkFitOutputConverter::tracksToken_
private

Definition at line 100 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ ttopoToken_

edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> MkFitOutputConverter::ttopoToken_
private

Definition at line 106 of file MkFitOutputConverter.cc.

Referenced by produce().

◆ ttrhBuilderName_

std::string MkFitOutputConverter::ttrhBuilderName_
private

Definition at line 111 of file MkFitOutputConverter.cc.

◆ ttrhBuilderToken_

edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> MkFitOutputConverter::ttrhBuilderToken_
private

Definition at line 108 of file MkFitOutputConverter.cc.

Referenced by produce().

MkFitOutputConverter::propagatorAlongToken_
edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorAlongToken_
Definition: MkFitOutputConverter.cc:104
TrackerTopology::side
unsigned int side(const DetId &id) const
Definition: TrackerTopology.cc:28
mps_fire.i
i
Definition: mps_fire.py:428
edm::ESInputTag
Definition: ESInputTag.h:87
MkFitOutputWrapper::fitTracks
mkfit::TrackVec const & fitTracks() const
Definition: MkFitOutputWrapper.h:23
MkFitOutputConverter::ttrhBuilderToken_
edm::ESGetToken< TransientTrackingRecHitBuilder, TransientRecHitRecord > ttrhBuilderToken_
Definition: MkFitOutputConverter.cc:108
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
DetLayer
Definition: DetLayer.h:21
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
MkFitOutputConverter::backwardFitInCMSSW_
bool backwardFitInCMSSW_
Definition: MkFitOutputConverter.cc:114
edm::do_nothing_deleter
Definition: do_nothing_deleter.h:34
trajectoryStateTransform::persistentState
PTrajectoryStateOnDet persistentState(const TrajectoryStateOnSurface &ts, unsigned int detid)
Definition: TrajectoryStateTransform.cc:14
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
oppositeToMomentum
Definition: PropagationDirection.h:4
TrackerTopology::layer
unsigned int layer(const DetId &id) const
Definition: TrackerTopology.cc:47
InitialStep_cff.hitsSeeds
hitsSeeds
Definition: InitialStep_cff.py:234
MkFitOutputConverter::putSeedStopInfoToken_
edm::EDPutTokenT< std::vector< SeedStopInfo > > putSeedStopInfoToken_
Definition: MkFitOutputConverter.cc:110
MkFitOutputConverter::seedToken_
edm::EDGetTokenT< edm::View< TrajectorySeed > > seedToken_
Definition: MkFitOutputConverter.cc:101
MkFitHitIndexMap::clusterIndex
size_t clusterIndex(MkFitHit hit) const
Get CMSSW cluster index (currently used only for debugging)
Definition: MkFitHitIndexMap.h:64
TrajectoryMeasurement::updatedState
TrajectoryStateOnSurface const & updatedState() const
Definition: TrajectoryMeasurement.h:184
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
GlobalVector
Global3DVector GlobalVector
Definition: GlobalVector.h:10
MkFitOutputConverter::backwardFit
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
Definition: MkFitOutputConverter.cc:381
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
AlCaHLTBitMon_QueryRunRegistry.comp
comp
Definition: AlCaHLTBitMon_QueryRunRegistry.py:249
MkFitOutputConverter::convertInnermostState
std::pair< TrajectoryStateOnSurface, const GeomDet * > convertInnermostState(const FreeTrajectoryState &fts, const edm::OwnVector< TrackingRecHit > &hits, const Propagator &propagatorAlong, const Propagator &propagatorOpposite) const
Definition: MkFitOutputConverter.cc:493
MkFitHitIndexMap::hitPtr
const TrackingRecHit * hitPtr(MkFitHit hit) const
Get CMSSW hit pointer.
Definition: MkFitHitIndexMap.h:61
MkFitOutputConverter::hitsSeedsToken_
edm::EDGetTokenT< MkFitInputWrapper > hitsSeedsToken_
Definition: MkFitOutputConverter.cc:99
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
UNLIKELY
#define UNLIKELY(x)
Definition: Likely.h:21
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MkFitOutputConverter::geomToken_
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Definition: MkFitOutputConverter.cc:103
MkFitOutputConverter::propagatorOppositeToken_
edm::ESGetToken< Propagator, TrackingComponentsRecord > propagatorOppositeToken_
Definition: MkFitOutputConverter.cc:105
std::swap
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
Definition: DataFrameContainer.h:209
AlgebraicSymMatrix66
ROOT::Math::SMatrix< double, 6, 6, ROOT::Math::MatRepSym< double, 6 > > AlgebraicSymMatrix66
Definition: AlgebraicROOTObjects.h:24
Chi2MeasurementEstimator_cfi.Chi2MeasurementEstimator
Chi2MeasurementEstimator
Definition: Chi2MeasurementEstimator_cfi.py:5
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
GlobalTrajectoryParameters
Definition: GlobalTrajectoryParameters.h:15
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
MkFitOutputWrapper::candidateTracks
mkfit::TrackVec const & candidateTracks() const
Definition: MkFitOutputWrapper.h:22
nhits
Definition: HIMultiTrackSelector.h:42
b
double b
Definition: hdecay.h:118
phase1PixelTopology::layer
constexpr std::array< uint8_t, layerIndexSize > layer
Definition: phase1PixelTopology.h:99
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
TrajectoryStateOnSurface::localParameters
const LocalTrajectoryParameters & localParameters() const
Definition: TrajectoryStateOnSurface.h:73
PbPb_ZMuSkimMuonDPG_cff.tracker
tracker
Definition: PbPb_ZMuSkimMuonDPG_cff.py:60
InitialStep_cff.seeds
seeds
Definition: InitialStep_cff.py:231
PixelPluginsPhase0_cfi.isBarrel
isBarrel
Definition: PixelPluginsPhase0_cfi.py:17
TrajectoryFitter::standard
Definition: TrajectoryFitter.h:21
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:233
TrackCandidateCollection
std::vector< TrackCandidate > TrackCandidateCollection
Definition: TrackCandidateCollection.h:7
a
double a
Definition: hdecay.h:119
HLT_FULL_cff.propagatorOpposite
propagatorOpposite
Definition: HLT_FULL_cff.py:116
TrackingRecHit::ConstRecHitContainer
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: TrackingRecHit.h:32
MkFitOutputConverter::putTrackCandidateToken_
edm::EDPutTokenT< TrackCandidateCollection > putTrackCandidateToken_
Definition: MkFitOutputConverter.cc:109
Trajectory::lastMeasurement
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
MkFitOutputConverter::ttopoToken_
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > ttopoToken_
Definition: MkFitOutputConverter.cc:106
cand
Definition: decayParser.h:32
iEvent
int iEvent
Definition: GenABIO.cc:224
submitPVResolutionJobs.err
err
Definition: submitPVResolutionJobs.py:85
TrackingRecHit::clone
virtual TrackingRecHit * clone() const =0
MkFitOutputConverter::tracksToken_
edm::EDGetTokenT< MkFitOutputWrapper > tracksToken_
Definition: MkFitOutputConverter.cc:100
MkFitOutputConverter::mteToken_
edm::EDGetTokenT< MeasurementTrackerEvent > mteToken_
Definition: MkFitOutputConverter.cc:102
TrajectoryStateOnSurface::rescaleError
void rescaleError(double factor)
Definition: TrajectoryStateOnSurface.h:82
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
TrackerDetSide::PosEndcap
TrajectoryMeasurement::recHit
ConstRecHitPointer const & recHit() const
Definition: TrajectoryMeasurement.h:190
HLT_FULL_cff.propagatorAlong
propagatorAlong
Definition: HLT_FULL_cff.py:118
CartesianTrajectoryError
Definition: CartesianTrajectoryError.h:15
MkFitOutputConverter::mfToken_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > mfToken_
Definition: MkFitOutputConverter.cc:107
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
Trajectory
Definition: Trajectory.h:38
HLT_FULL_cff.candidates
candidates
Definition: HLT_FULL_cff.py:54992
StopReason::UNINITIALIZED
Exception
Definition: hltDiff.cc:245
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
MkFitHitIndexMap::MkFitHit::index
int index() const
Definition: MkFitHitIndexMap.h:24
MkFitOutputConverter::convertCandidates
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
Definition: MkFitOutputConverter.cc:223
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
TrajectorySeed
Definition: TrajectorySeed.h:18
or
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
Definition: Activities.doc:12
Propagator::propagateWithPath
virtual std::pair< TrajectoryStateOnSurface, double > propagateWithPath(const FreeTrajectoryState &, const Surface &) const final
Definition: Propagator.cc:10
TrajectoryStateOnSurface::surface
const SurfaceType & surface() const
Definition: TrajectoryStateOnSurface.h:78
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
MkFitHitIndexMap::MkFitHit
Definition: MkFitHitIndexMap.h:19
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
TrajectoryStateOnSurface::localError
const LocalTrajectoryError & localError() const
Definition: TrajectoryStateOnSurface.h:77
TrajectoryMeasurement
Definition: TrajectoryMeasurement.h:25
MkFitOutputConverter::createDetLayers
std::vector< const DetLayer * > createDetLayers(const mkfit::LayerNumberConverter &lnc, const GeometricSearchTracker &tracker, const TrackerTopology &ttopo) const
Definition: MkFitOutputConverter.cc:181
TrajectoryStateOnSurface::magneticField
const MagneticField * magneticField() const
Definition: TrajectoryStateOnSurface.h:62
edm::InputTag
Definition: InputTag.h:15
KFUpdator
Definition: KFUpdator.h:32
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
Trajectory::isValid
bool isValid() const
Definition: Trajectory.h:257
edm::ConfigurationDescriptions::addWithDefaultLabel
void addWithDefaultLabel(ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:87
edm::OwnVector< TrackingRecHit >