CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Member Functions | Private Attributes
TrackExtenderWithMTDT< TrackCollection > Class Template Reference
Inheritance diagram for TrackExtenderWithMTDT< TrackCollection >:
edm::stream::EDProducer<>

Public Types

typedef edm::View< TrackTypeInputCollection
 
typedef TrackCollection::value_type TrackType
 
- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Public Member Functions

reco::Track buildTrack (const reco::Track &, const Trajectory &, const Trajectory &, const reco::BeamSpot &, const MagneticField *field, const Propagator *prop, bool hasMTD, float &pathLength, float &tmtdOut, float &sigmatmtdOut) const
 
reco::TrackExtra buildTrackExtra (const Trajectory &trajectory) const
 
RefitDirection::GeometricalDirection checkRecHitsOrdering (TransientTrackingRecHit::ConstRecHitContainer const &recHits) const
 
string dumpLayer (const DetLayer *layer) const
 
void fillMatchingHits (const DetLayer *, const TrajectoryStateOnSurface &, const Trajectory &, const double, const double, const MTDTrackingDetSetVector &, const Propagator *, const reco::BeamSpot &, const double &, const bool, TransientTrackingRecHit::ConstRecHitContainer &, MTDHitMatchingInfo &) const
 
template<class H , class T >
void fillValueMap (edm::Event &iEvent, const H &handle, const std::vector< T > &vec, const edm::EDPutToken &token) const
 
void produce (edm::Event &ev, const edm::EventSetup &es) final
 
 TrackExtenderWithMTDT (const ParameterSet &pset)
 
TransientTrackingRecHit::ConstRecHitContainer tryBTLLayers (const TrajectoryStateOnSurface &, const Trajectory &traj, const double, const double, const MTDTrackingDetSetVector &, const MTDDetLayerGeometry *, const MagneticField *field, const Propagator *prop, const reco::BeamSpot &bs, const double vtxTime, const bool matchVertex, MTDHitMatchingInfo &bestHit) const
 
TransientTrackingRecHit::ConstRecHitContainer tryETLLayers (const TrajectoryStateOnSurface &, const Trajectory &traj, const double, const double, const MTDTrackingDetSetVector &, const MTDDetLayerGeometry *, const MagneticField *field, const Propagator *prop, const reco::BeamSpot &bs, const double vtxTime, const bool matchVertex, MTDHitMatchingInfo &bestHit) const
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::EDPutToken assocOrigTrkToken
 
edm::EDPutToken betaOrigTrkToken
 
const float bsTimeSpread_
 
edm::EDGetTokenT< reco::BeamSpotbsToken_
 
const float btlChi2Cut_
 
edm::EDPutToken btlMatchChi2Token
 
edm::EDPutToken btlMatchTimeChi2Token
 
const float btlTimeChi2Cut_
 
edm::ESHandle< TransientTrackBuilderbuilder_
 
const float dzCut_
 
const float estMaxChi2_
 
const float estMaxNSigma_
 
const float etlChi2Cut_
 
edm::EDPutToken etlMatchChi2Token
 
edm::EDPutToken etlMatchTimeChi2Token
 
const float etlTimeChi2Cut_
 
edm::EDGetTokenT< GlobalPointgenVtxPositionToken_
 
edm::EDGetTokenT< float > genVtxTimeToken_
 
edm::ESHandle< GlobalTrackingGeometrygtg_
 
edm::ESHandle< TransientTrackingRecHitBuilderhitbuilder_
 
edm::EDGetTokenT< MTDTrackingDetSetVectorhitsToken_
 
const std::string mtdRecHitBuilder_
 
edm::EDPutToken pathLengthOrigTrkToken
 
edm::EDPutToken pathLengthToken
 
edm::EDPutToken pOrigTrkToken
 
const std::string propagator_
 
edm::EDPutToken sigmat0OrigTrkToken
 
edm::EDPutToken sigmatmtdOrigTrkToken
 
edm::EDPutToken sigmatmtdToken
 
edm::EDPutToken t0OrigTrkToken
 
std::unique_ptr< MeasurementEstimatortheEstimator
 
std::unique_ptr< TrackTransformertheTransformer
 
edm::EDPutToken tmtdOrigTrkToken
 
edm::EDPutToken tmtdToken
 
edm::EDGetTokenT< InputCollectiontracksToken_
 
const std::string transientTrackBuilder_
 
const bool updateExtra_
 
const bool updatePattern_
 
const bool updateTraj_
 
const bool useSimVertex_
 
const bool useVertex_
 
edm::EDGetTokenT< VertexCollectionvtxToken_
 

Detailed Description

template<class TrackCollection>
class TrackExtenderWithMTDT< TrackCollection >

Definition at line 283 of file TrackExtenderWithMTD.cc.

Member Typedef Documentation

◆ InputCollection

template<class TrackCollection >
typedef edm::View<TrackType> TrackExtenderWithMTDT< TrackCollection >::InputCollection

Definition at line 286 of file TrackExtenderWithMTD.cc.

◆ TrackType

template<class TrackCollection >
typedef TrackCollection::value_type TrackExtenderWithMTDT< TrackCollection >::TrackType

Definition at line 285 of file TrackExtenderWithMTD.cc.

Constructor & Destructor Documentation

◆ TrackExtenderWithMTDT()

template<class TrackCollection >
TrackExtenderWithMTDT< TrackCollection >::TrackExtenderWithMTDT ( const ParameterSet pset)

Definition at line 414 of file TrackExtenderWithMTD.cc.

415  : tracksToken_(consumes<InputCollection>(iConfig.getParameter<edm::InputTag>("tracksSrc"))),
416  hitsToken_(consumes<MTDTrackingDetSetVector>(iConfig.getParameter<edm::InputTag>("hitsSrc"))),
417  bsToken_(consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpotSrc"))),
418  updateTraj_(iConfig.getParameter<bool>("updateTrackTrajectory")),
419  updateExtra_(iConfig.getParameter<bool>("updateTrackExtra")),
420  updatePattern_(iConfig.getParameter<bool>("updateTrackHitPattern")),
421  mtdRecHitBuilder_(iConfig.getParameter<std::string>("MTDRecHitBuilder")),
422  propagator_(iConfig.getParameter<std::string>("Propagator")),
423  transientTrackBuilder_(iConfig.getParameter<std::string>("TransientTrackBuilder")),
424  estMaxChi2_(iConfig.getParameter<double>("estimatorMaxChi2")),
425  estMaxNSigma_(iConfig.getParameter<double>("estimatorMaxNSigma")),
426  btlChi2Cut_(iConfig.getParameter<double>("btlChi2Cut")),
427  btlTimeChi2Cut_(iConfig.getParameter<double>("btlTimeChi2Cut")),
428  etlChi2Cut_(iConfig.getParameter<double>("etlChi2Cut")),
429  etlTimeChi2Cut_(iConfig.getParameter<double>("etlTimeChi2Cut")),
430  useVertex_(iConfig.getParameter<bool>("useVertex")),
431  useSimVertex_(iConfig.getParameter<bool>("useSimVertex")),
432  dzCut_(iConfig.getParameter<double>("dZCut")),
433  bsTimeSpread_(iConfig.getParameter<double>("bsTimeSpread")) {
434  if (useVertex_) {
435  if (useSimVertex_) {
436  genVtxPositionToken_ = consumes<GlobalPoint>(iConfig.getParameter<edm::InputTag>("genVtxPositionSrc"));
437  genVtxTimeToken_ = consumes<float>(iConfig.getParameter<edm::InputTag>("genVtxTimeSrc"));
438  } else
439  vtxToken_ = consumes<VertexCollection>(iConfig.getParameter<edm::InputTag>("vtxSrc"));
440  }
441 
442  theEstimator = std::make_unique<Chi2MeasurementEstimator>(estMaxChi2_, estMaxNSigma_);
443  theTransformer = std::make_unique<TrackTransformer>(iConfig.getParameterSet("TrackTransformer"));
444 
445  btlMatchChi2Token = produces<edm::ValueMap<float>>("btlMatchChi2");
446  etlMatchChi2Token = produces<edm::ValueMap<float>>("etlMatchChi2");
447  btlMatchTimeChi2Token = produces<edm::ValueMap<float>>("btlMatchTimeChi2");
448  etlMatchTimeChi2Token = produces<edm::ValueMap<float>>("etlMatchTimeChi2");
449  pathLengthToken = produces<edm::ValueMap<float>>("pathLength");
450  tmtdToken = produces<edm::ValueMap<float>>("tmtd");
451  sigmatmtdToken = produces<edm::ValueMap<float>>("sigmatmtd");
452  pOrigTrkToken = produces<edm::ValueMap<float>>("generalTrackp");
453  betaOrigTrkToken = produces<edm::ValueMap<float>>("generalTrackBeta");
454  t0OrigTrkToken = produces<edm::ValueMap<float>>("generalTrackt0");
455  sigmat0OrigTrkToken = produces<edm::ValueMap<float>>("generalTracksigmat0");
456  pathLengthOrigTrkToken = produces<edm::ValueMap<float>>("generalTrackPathLength");
457  tmtdOrigTrkToken = produces<edm::ValueMap<float>>("generalTracktmtd");
458  sigmatmtdOrigTrkToken = produces<edm::ValueMap<float>>("generalTracksigmatmtd");
459  assocOrigTrkToken = produces<edm::ValueMap<int>>("generalTrackassoc");
460 
461  produces<edm::OwnVector<TrackingRecHit>>();
462  produces<reco::TrackExtraCollection>();
463  produces<TrackCollection>();
464 }

References TrackExtenderWithMTDT< TrackCollection >::assocOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::betaOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::btlMatchChi2Token, TrackExtenderWithMTDT< TrackCollection >::btlMatchTimeChi2Token, TrackExtenderWithMTDT< TrackCollection >::estMaxChi2_, TrackExtenderWithMTDT< TrackCollection >::estMaxNSigma_, TrackExtenderWithMTDT< TrackCollection >::etlMatchChi2Token, TrackExtenderWithMTDT< TrackCollection >::etlMatchTimeChi2Token, TrackExtenderWithMTDT< TrackCollection >::genVtxPositionToken_, TrackExtenderWithMTDT< TrackCollection >::genVtxTimeToken_, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), TrackExtenderWithMTDT< TrackCollection >::pathLengthOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::pathLengthToken, TrackExtenderWithMTDT< TrackCollection >::pOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::sigmat0OrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::sigmatmtdOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::sigmatmtdToken, TrackExtenderWithMTDT< TrackCollection >::t0OrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::theEstimator, TrackExtenderWithMTDT< TrackCollection >::theTransformer, TrackExtenderWithMTDT< TrackCollection >::tmtdOrigTrkToken, TrackExtenderWithMTDT< TrackCollection >::tmtdToken, TrackExtenderWithMTDT< TrackCollection >::useSimVertex_, TrackExtenderWithMTDT< TrackCollection >::useVertex_, and TrackExtenderWithMTDT< TrackCollection >::vtxToken_.

Member Function Documentation

◆ buildTrack()

template<class TrackCollection >
reco::Track TrackExtenderWithMTDT< TrackCollection >::buildTrack ( const reco::Track orig,
const Trajectory traj,
const Trajectory trajWithMtd,
const reco::BeamSpot bs,
const MagneticField field,
const Propagator prop,
bool  hasMTD,
float &  pathLength,
float &  tmtdOut,
float &  sigmatmtdOut 
) const

Definition at line 951 of file TrackExtenderWithMTD.cc.

960  {
962  bool tsbcl_status = getTrajectoryStateClosestToBeamLine(traj, bs, thePropagator, tscbl);
963 
964  if (!tsbcl_status)
965  return reco::Track();
966 
968  math::XYZPoint pos(v.x(), v.y(), v.z());
970  math::XYZVector mom(p.x(), p.y(), p.z());
971 
972  int ndof = traj.ndof();
973 
974  double t0 = 0.;
975  double covt0t0 = -1.;
976  pathLengthOut = -1.f; // if there is no MTD flag the pathlength with -1
977  tmtdOut = 0.f;
978  sigmatmtdOut = -1.f;
979  double betaOut = 0.;
980  double covbetabeta = -1.;
981 
982  //compute path length for time backpropagation, using first MTD hit for the momentum
983  if (hasMTD) {
984  double pathlength;
985  bool validpropagation = trackPathLength(trajWithMtd, bs, thePropagator, pathlength);
986  double thit = 0.;
987  double thiterror = -1.;
988  bool validmtd = false;
989 
990  //need to better handle the cases with >1 hit in MTD
991  for (auto const& hit : trajWithMtd.measurements()) {
992  bool ismtd = hit.recHit()->geographicalId().det() == DetId::Forward &&
993  ForwardSubdetector(hit.recHit()->geographicalId().subdetId()) == FastTime;
994  if (ismtd) {
995  const MTDTrackingRecHit* mtdhit = static_cast<const MTDTrackingRecHit*>(hit.recHit()->hit());
996  thit = mtdhit->time();
997  thiterror = mtdhit->timeError();
998  validmtd = true;
999  break;
1000  }
1001  }
1002 
1003  if (validmtd && validpropagation) {
1004  //here add the PID uncertainty for later use in the 1st step of 4D vtx reconstruction
1005  TrackTofPidInfo tofInfo = computeTrackTofPidInfo(p.mag2(), pathlength, thit, thiterror, 0., 0., true);
1006  pathLengthOut = pathlength; // set path length if we've got a timing hit
1007  tmtdOut = thit;
1008  sigmatmtdOut = thiterror;
1009  t0 = tofInfo.dt;
1010  covt0t0 = tofInfo.dterror * tofInfo.dterror;
1011  betaOut = tofInfo.beta_pi;
1012  covbetabeta = tofInfo.betaerror * tofInfo.betaerror;
1013  }
1014  }
1015 
1016  return reco::Track(traj.chiSquared(),
1017  int(ndof),
1018  pos,
1019  mom,
1020  tscbl.trackStateAtPCA().charge(),
1022  orig.algo(),
1024  t0,
1025  betaOut,
1026  covt0t0,
1027  covbetabeta);
1028 }

References reco::TrackBase::algo(), cms::cuda::bs, FreeTrajectoryState::charge(), Trajectory::chiSquared(), FreeTrajectoryState::curvilinearError(), FastTime, DetId::Forward, createfilelist::int, Trajectory::measurements(), FreeTrajectoryState::momentum(), ndof, Trajectory::ndof(), AlCaHLTBitMon_ParallelJobs::p, FreeTrajectoryState::position(), FrontierCondition_GT_autoExpress_cfi::t0, MTDTrackingRecHit::time(), MTDTrackingRecHit::timeError(), TrajectoryStateClosestToBeamLine::trackStateAtPCA(), reco::TrackBase::undefQuality, and findQualityFiles::v.

◆ buildTrackExtra()

template<class TrackCollection >
reco::TrackExtra TrackExtenderWithMTDT< TrackCollection >::buildTrackExtra ( const Trajectory trajectory) const

Definition at line 1031 of file TrackExtenderWithMTD.cc.

1031  {
1032  static const string metname = "TrackExtenderWithMTD";
1033 
1034  const Trajectory::RecHitContainer transRecHits = trajectory.recHits();
1035 
1036  // put the collection of TrackingRecHit in the event
1037 
1038  // sets the outermost and innermost TSOSs
1039  // ToDo: validation for track states with MTD
1040  TrajectoryStateOnSurface outerTSOS;
1041  TrajectoryStateOnSurface innerTSOS;
1042  unsigned int innerId = 0, outerId = 0;
1044  DetId outerDetId;
1045 
1046  if (trajectory.direction() == alongMomentum) {
1047  LogTrace(metname) << "alongMomentum";
1048  outerTSOS = trajectory.lastMeasurement().updatedState();
1049  innerTSOS = trajectory.firstMeasurement().updatedState();
1050  outerId = trajectory.lastMeasurement().recHit()->geographicalId().rawId();
1051  innerId = trajectory.firstMeasurement().recHit()->geographicalId().rawId();
1052  outerRecHit = trajectory.lastMeasurement().recHit();
1053  outerDetId = trajectory.lastMeasurement().recHit()->geographicalId();
1054  } else if (trajectory.direction() == oppositeToMomentum) {
1055  LogTrace(metname) << "oppositeToMomentum";
1056  outerTSOS = trajectory.firstMeasurement().updatedState();
1057  innerTSOS = trajectory.lastMeasurement().updatedState();
1058  outerId = trajectory.firstMeasurement().recHit()->geographicalId().rawId();
1059  innerId = trajectory.lastMeasurement().recHit()->geographicalId().rawId();
1060  outerRecHit = trajectory.firstMeasurement().recHit();
1061  outerDetId = trajectory.firstMeasurement().recHit()->geographicalId();
1062  } else
1063  LogError(metname) << "Wrong propagation direction!";
1064 
1065  const GeomDet* outerDet = gtg_->idToDet(outerDetId);
1066  GlobalPoint outerTSOSPos = outerTSOS.globalParameters().position();
1067  bool inside = outerDet->surface().bounds().inside(outerDet->toLocal(outerTSOSPos));
1068 
1069  GlobalPoint hitPos =
1070  (outerRecHit->isValid()) ? outerRecHit->globalPosition() : outerTSOS.globalParameters().position();
1071 
1072  if (!inside) {
1073  LogTrace(metname) << "The Global Muon outerMostMeasurementState is not compatible with the recHit detector!"
1074  << " Setting outerMost postition to recHit position if recHit isValid: "
1075  << outerRecHit->isValid();
1076  LogTrace(metname) << "From " << outerTSOSPos << " to " << hitPos;
1077  }
1078 
1079  //build the TrackExtra
1080  GlobalPoint v = (inside) ? outerTSOSPos : hitPos;
1081  GlobalVector p = outerTSOS.globalParameters().momentum();
1082  math::XYZPoint outpos(v.x(), v.y(), v.z());
1083  math::XYZVector outmom(p.x(), p.y(), p.z());
1084 
1085  v = innerTSOS.globalParameters().position();
1086  p = innerTSOS.globalParameters().momentum();
1087  math::XYZPoint inpos(v.x(), v.y(), v.z());
1088  math::XYZVector inmom(p.x(), p.y(), p.z());
1089 
1090  reco::TrackExtra trackExtra(outpos,
1091  outmom,
1092  true,
1093  inpos,
1094  inmom,
1095  true,
1096  outerTSOS.curvilinearError(),
1097  outerId,
1098  innerTSOS.curvilinearError(),
1099  innerId,
1100  trajectory.direction(),
1101  trajectory.seedRef());
1102 
1103  return trackExtra;
1104 }

References alongMomentum, Surface::bounds(), TrajectoryStateOnSurface::curvilinearError(), Trajectory::direction(), Trajectory::firstMeasurement(), TrajectoryStateOnSurface::globalParameters(), Bounds::inside(), Trajectory::lastMeasurement(), LogTrace, metname, GlobalTrajectoryParameters::momentum(), oppositeToMomentum, AlCaHLTBitMon_ParallelJobs::p, GlobalTrajectoryParameters::position(), TrajectoryMeasurement::recHit(), Trajectory::recHits(), Trajectory::seedRef(), GeomDet::surface(), GeomDet::toLocal(), TrajectoryMeasurement::updatedState(), and findQualityFiles::v.

◆ checkRecHitsOrdering()

template<class TrackCollection >
RefitDirection::GeometricalDirection TrackExtenderWithMTDT< TrackCollection >::checkRecHitsOrdering ( TransientTrackingRecHit::ConstRecHitContainer const &  recHits) const
inline

Definition at line 336 of file TrackExtenderWithMTD.cc.

337  {
338  if (!recHits.empty()) {
339  GlobalPoint first = gtg_->idToDet(recHits.front()->geographicalId())->position();
340  GlobalPoint last = gtg_->idToDet(recHits.back()->geographicalId())->position();
341 
342  // maybe perp2?
343  auto rFirst = first.mag2();
344  auto rLast = last.mag2();
345  if (rFirst < rLast)
347  if (rFirst > rLast)
349  }
350  LogDebug("TrackExtenderWithMTD") << "Impossible to determine the rechits order" << endl;
352  }

References dqmdumpme::first, RefitDirection::insideOut, dqmdumpme::last, LogDebug, RefitDirection::outsideIn, position, FastTrackerRecHitMaskProducer_cfi::recHits, and RefitDirection::undetermined.

◆ dumpLayer()

template<class TrackCollection >
string TrackExtenderWithMTDT< TrackCollection >::dumpLayer ( const DetLayer layer) const

Definition at line 1107 of file TrackExtenderWithMTD.cc.

1107  {
1108  stringstream output;
1109 
1110  const BoundSurface* sur = nullptr;
1111  const BoundCylinder* bc = nullptr;
1112  const BoundDisk* bd = nullptr;
1113 
1114  sur = &(layer->surface());
1115  if ((bc = dynamic_cast<const BoundCylinder*>(sur))) {
1116  output << " Cylinder of radius: " << bc->radius() << endl;
1117  } else if ((bd = dynamic_cast<const BoundDisk*>(sur))) {
1118  output << " Disk at: " << bd->position().z() << endl;
1119  }
1120  return output.str();
1121 }

References convertSQLitetoXML_cfg::output, and GeometricSearchDet::surface().

◆ fillDescriptions()

template<class TrackCollection >
void TrackExtenderWithMTDT< TrackCollection >::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 467 of file TrackExtenderWithMTD.cc.

467  {
469  desc.add<edm::InputTag>("tracksSrc", edm::InputTag("generalTracks"));
470  desc.add<edm::InputTag>("hitsSrc", edm::InputTag("mtdTrackingRecHits"));
471  desc.add<edm::InputTag>("beamSpotSrc", edm::InputTag("offlineBeamSpot"));
472  desc.add<edm::InputTag>("genVtxPositionSrc", edm::InputTag("genParticles:xyz0"));
473  desc.add<edm::InputTag>("genVtxTimeSrc", edm::InputTag("genParticles:t0"));
474  desc.add<edm::InputTag>("vtxSrc", edm::InputTag("offlinePrimaryVertices4D"));
475  desc.add<bool>("updateTrackTrajectory", true);
476  desc.add<bool>("updateTrackExtra", true);
477  desc.add<bool>("updateTrackHitPattern", true);
478  desc.add<std::string>("TransientTrackBuilder", "TransientTrackBuilder");
479  desc.add<std::string>("MTDRecHitBuilder", "MTDRecHitBuilder");
480  desc.add<std::string>("Propagator", "PropagatorWithMaterialForMTD");
482  false,
483  "KFFitterForRefitInsideOut",
484  "KFSmootherForRefitInsideOut",
485  "PropagatorWithMaterialForMTD",
486  "alongMomentum",
487  true,
488  "WithTrackAngle",
489  "MuonRecHitBuilder",
490  "MTDRecHitBuilder");
491  desc.add<edm::ParameterSetDescription>("TrackTransformer", transDesc);
492  desc.add<double>("estimatorMaxChi2", 500.);
493  desc.add<double>("estimatorMaxNSigma", 10.);
494  desc.add<double>("btlChi2Cut", 50.);
495  desc.add<double>("btlTimeChi2Cut", 10.);
496  desc.add<double>("etlChi2Cut", 50.);
497  desc.add<double>("etlTimeChi2Cut", 10.);
498  desc.add<bool>("useVertex", false);
499  desc.add<bool>("useSimVertex", false);
500  desc.add<double>("dZCut", 0.1);
501  desc.add<double>("bsTimeSpread", 0.2);
502  descriptions.add("trackExtenderWithMTDBase", desc);
503 }

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, TrackTransformer::fillPSetDescription(), HLT_FULL_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

◆ fillMatchingHits()

template<class TrackCollection >
void TrackExtenderWithMTDT< TrackCollection >::fillMatchingHits ( const DetLayer ilay,
const TrajectoryStateOnSurface tsos,
const Trajectory traj,
const double  pmag2,
const double  pathlength0,
const MTDTrackingDetSetVector hits,
const Propagator prop,
const reco::BeamSpot bs,
const double &  vtxTime,
const bool  matchVertex,
TransientTrackingRecHit::ConstRecHitContainer output,
MTDHitMatchingInfo &  bestHit 
) const

Definition at line 882 of file TrackExtenderWithMTD.cc.

893  {
894  std::set<MTDHitMatchingInfo> hitsInLayer;
895  bool hitMatched = false;
896 
897  using namespace std::placeholders;
898  auto find_hits = std::bind(find_hits_in_dets,
899  std::cref(hits),
900  std::cref(traj),
901  ilay,
902  std::cref(tsos),
903  pmag2,
904  pathlength0,
905  _1,
906  std::cref(bs),
908  prop,
909  theEstimator.get(),
910  _2,
911  std::ref(hitsInLayer));
912 
913  if (useVertex_ && matchVertex)
914  find_hits(vtxTime, true);
915  else
916  find_hits(0, false);
917 
918  //just take the first hit because the hits are sorted on their matching quality
919  if (!hitsInLayer.empty()) {
920  //check hits to pass minimum quality matching requirements
921  auto const& firstHit = *hitsInLayer.begin();
922  if (firstHit.estChi2 < etlChi2Cut_ && firstHit.timeChi2 < etlTimeChi2Cut_) {
923  hitMatched = true;
924  output.push_back(hitbuilder_->build(firstHit.hit));
925  if (firstHit < bestHit)
926  bestHit = firstHit;
927  }
928  }
929 
930  if (useVertex_ && matchVertex && !hitMatched) {
931  //try a second search with beamspot hypothesis
932  hitsInLayer.clear();
933  find_hits(0, false);
934  if (!hitsInLayer.empty()) {
935  auto const& firstHit = *hitsInLayer.begin();
936  if (firstHit.timeChi2 < etlTimeChi2Cut_) {
937  if (firstHit.estChi2 < etlChi2Cut_) {
938  hitMatched = true;
939  output.push_back(hitbuilder_->build(firstHit.hit));
940  if (firstHit < bestHit)
941  bestHit = firstHit;
942  }
943  }
944  }
945  }
946 }

References cms::cuda::bs, hfClusterShapes_cfi::hits, and convertSQLitetoXML_cfg::output.

◆ fillValueMap()

template<class TrackCollection >
template<class H , class T >
void TrackExtenderWithMTDT< TrackCollection >::fillValueMap ( edm::Event iEvent,
const H &  handle,
const std::vector< T > &  vec,
const edm::EDPutToken token 
) const

Definition at line 507 of file TrackExtenderWithMTD.cc.

510  {
511  auto out = std::make_unique<edm::ValueMap<T>>();
513  filler.insert(handle, vec.begin(), vec.end());
514  filler.fill();
515  iEvent.put(token, std::move(out));
516 }

References trigObjTnPSource_cfi::filler, patZpeak::handle, iEvent, eostools::move(), MillePedeFileConverter_cfg::out, and unpackBuffers-CaloStage2::token.

◆ produce()

template<class TrackCollection >
void TrackExtenderWithMTDT< TrackCollection >::produce ( edm::Event ev,
const edm::EventSetup es 
)
final

trajs.empty()

setup the track extras

Definition at line 519 of file TrackExtenderWithMTD.cc.

519  {
520  //this produces pieces of the track extra
521  Traj2TrackHits t2t;
522 
523  theTransformer->setServices(es);
524 
525  TrackingRecHitRefProd hitsRefProd = ev.getRefBeforePut<TrackingRecHitCollection>();
526  reco::TrackExtraRefProd extrasRefProd = ev.getRefBeforePut<reco::TrackExtraCollection>();
527 
529 
531  es.get<MTDRecoGeometryRecord>().get(geo);
532 
535 
538 
541  const Propagator* prop = propH.product();
542 
544  es.get<TrackerTopologyRcd>().get(httopo);
545  const TrackerTopology& ttopo = *httopo;
546 
547  auto output = std::make_unique<TrackCollection>();
548  auto extras = std::make_unique<reco::TrackExtraCollection>();
549  auto outhits = std::make_unique<edm::OwnVector<TrackingRecHit>>();
550 
551  std::vector<float> btlMatchChi2;
552  std::vector<float> etlMatchChi2;
553  std::vector<float> btlMatchTimeChi2;
554  std::vector<float> etlMatchTimeChi2;
555  std::vector<float> pathLengthsRaw;
556  std::vector<float> tmtdRaw;
557  std::vector<float> sigmatmtdRaw;
558  std::vector<float> pOrigTrkRaw;
559  std::vector<float> betaOrigTrkRaw;
560  std::vector<float> t0OrigTrkRaw;
561  std::vector<float> sigmat0OrigTrkRaw;
562  std::vector<float> pathLengthsOrigTrkRaw;
563  std::vector<float> tmtdOrigTrkRaw;
564  std::vector<float> sigmatmtdOrigTrkRaw;
565  std::vector<int> assocOrigTrkRaw;
566 
567  auto const tracksH = ev.getHandle(tracksToken_);
568  const auto& tracks = *tracksH;
569 
570  //MTD hits DetSet
571  const auto& hits = ev.get(hitsToken_);
572 
573  //beam spot
574  const auto& bs = ev.get(bsToken_);
575 
576  const Vertex* pv = nullptr;
577  if (useVertex_ && !useSimVertex_) {
578  auto const& vtxs = ev.get(vtxToken_);
579  if (!vtxs.empty())
580  pv = &vtxs[0];
581  }
582 
583  std::unique_ptr<math::XYZTLorentzVectorF> genPV(nullptr);
584  if (useVertex_ && useSimVertex_) {
585  const auto& genVtxPosition = ev.get(genVtxPositionToken_);
586  const auto& genVtxTime = ev.get(genVtxTimeToken_);
587  genPV = std::make_unique<math::XYZTLorentzVectorF>(
588  genVtxPosition.x(), genVtxPosition.y(), genVtxPosition.z(), genVtxTime);
589  }
590 
591  double vtxTime = 0.;
592  if (useVertex_) {
593  if (useSimVertex_ && genPV) {
594  vtxTime = genPV->t();
595  } else if (pv)
596  vtxTime = pv->t(); //already in ns
597  }
598 
599  std::vector<unsigned> track_indices;
600  unsigned itrack = 0;
601 
602  for (const auto& track : tracks) {
603  double trackVtxTime = 0.;
604  if (useVertex_) {
605  double dz;
606  if (useSimVertex_)
607  dz = std::abs(track.dz(math::XYZPoint(*genPV)));
608  else
609  dz = std::abs(track.dz(pv->position()));
610 
611  if (dz < dzCut_)
612  trackVtxTime = vtxTime;
613  }
614 
615  reco::TransientTrack ttrack(track, magfield.product(), gtg_);
616  const auto& trajs = theTransformer->transform(track);
617  auto thits = theTransformer->getTransientRecHits(ttrack);
619  MTDHitMatchingInfo mBTL, mETL;
620  if (!trajs.empty()) {
621  // get the outermost trajectory point on the track
624  bool tscbl_status = getTrajectoryStateClosestToBeamLine(trajs.front(), bs, prop, tscbl);
625 
626  if (tscbl_status) {
627  double pmag2 = tscbl.trackStateAtPCA().momentum().mag2();
628  double pathlength0;
629  trackPathLength(trajs.front(), tscbl, prop, pathlength0);
630 
631  const auto& btlhits = tryBTLLayers(tsos,
632  trajs.front(),
633  pmag2,
634  pathlength0,
635  hits,
636  geo.product(),
637  magfield.product(),
638  prop,
639  bs,
640  trackVtxTime,
641  trackVtxTime != 0.,
642  mBTL);
643  mtdthits.insert(mtdthits.end(), btlhits.begin(), btlhits.end());
644 
645  // in the future this should include an intermediate refit before propagating to the ETL
646  // for now it is ok
647  const auto& etlhits = tryETLLayers(tsos,
648  trajs.front(),
649  pmag2,
650  pathlength0,
651  hits,
652  geo.product(),
653  magfield.product(),
654  prop,
655  bs,
656  trackVtxTime,
657  trackVtxTime != 0.,
658  mETL);
659  mtdthits.insert(mtdthits.end(), etlhits.begin(), etlhits.end());
660  }
661  }
662 
663  auto ordering = checkRecHitsOrdering(thits);
665  thits.insert(thits.end(), mtdthits.begin(), mtdthits.end());
666  } else {
667  std::reverse(mtdthits.begin(), mtdthits.end());
668  mtdthits.insert(mtdthits.end(), thits.begin(), thits.end());
669  thits.swap(mtdthits);
670  }
671 
672  const auto& trajwithmtd = mtdthits.empty() ? trajs : theTransformer->transform(ttrack, thits);
673  float pMap = 0.f, betaMap = 0.f, t0Map = 0.f, sigmat0Map = -1.f, pathLengthMap = -1.f, tmtdMap = 0.f,
674  sigmatmtdMap = -1.f;
675  int iMap = -1;
676 
677  for (const auto& trj : trajwithmtd) {
678  const auto& thetrj = (updateTraj_ ? trj : trajs.front());
679  float pathLength = 0.f, tmtd = 0.f, sigmatmtd = -1.f;
681  thetrj,
682  trj,
683  bs,
684  magfield.product(),
685  prop,
686  !trajwithmtd.empty() && !mtdthits.empty(),
687  pathLength,
688  tmtd,
689  sigmatmtd);
690  if (result.ndof() >= 0) {
692  reco::TrackExtra::TrajParams trajParams;
694  size_t hitsstart = outhits->size();
695  if (updatePattern_) {
696  t2t(trj, *outhits, trajParams, chi2s); // this fills the output hit collection
697  } else {
698  t2t(thetrj, *outhits, trajParams, chi2s);
699  }
700  size_t hitsend = outhits->size();
701  extras->push_back(buildTrackExtra(trj)); // always push back the fully built extra, update by setting in track
702  extras->back().setHits(hitsRefProd, hitsstart, hitsend - hitsstart);
703  extras->back().setTrajParams(trajParams, chi2s);
704  //create the track
705  output->push_back(result);
706  btlMatchChi2.push_back(mBTL.hit ? mBTL.estChi2 : -1);
707  etlMatchChi2.push_back(mETL.hit ? mETL.estChi2 : -1);
708  btlMatchTimeChi2.push_back(mBTL.hit ? mBTL.timeChi2 : -1);
709  etlMatchTimeChi2.push_back(mETL.hit ? mETL.timeChi2 : -1);
710  pathLengthsRaw.push_back(pathLength);
711  tmtdRaw.push_back(tmtd);
712  sigmatmtdRaw.push_back(sigmatmtd);
713  pathLengthMap = pathLength;
714  tmtdMap = tmtd;
715  sigmatmtdMap = sigmatmtd;
716  auto& backtrack = output->back();
717  iMap = output->size() - 1;
718  pMap = backtrack.p();
719  betaMap = backtrack.beta();
720  t0Map = backtrack.t0();
721  sigmat0Map = std::copysign(std::sqrt(std::abs(backtrack.covt0t0())), backtrack.covt0t0());
722  reco::TrackExtraRef extraRef(extrasRefProd, extras->size() - 1);
723  backtrack.setExtra((updateExtra_ ? extraRef : track.extra()));
724  for (unsigned ihit = hitsstart; ihit < hitsend; ++ihit) {
725  backtrack.appendHitPattern((*outhits)[ihit], ttopo);
726  }
727  } else {
728  LogTrace("TrackExtenderWithMTD") << "Error in the MTD track refitting. This should not happen";
729  }
730  }
731 
732  pOrigTrkRaw.push_back(pMap);
733  betaOrigTrkRaw.push_back(betaMap);
734  t0OrigTrkRaw.push_back(t0Map);
735  sigmat0OrigTrkRaw.push_back(sigmat0Map);
736  pathLengthsOrigTrkRaw.push_back(pathLengthMap);
737  tmtdOrigTrkRaw.push_back(tmtdMap);
738  sigmatmtdOrigTrkRaw.push_back(sigmatmtdMap);
739  assocOrigTrkRaw.push_back(iMap);
740  ++itrack;
741  }
742 
743  auto outTrksHandle = ev.put(std::move(output));
744  ev.put(std::move(extras));
745  ev.put(std::move(outhits));
746 
747  fillValueMap(ev, outTrksHandle, btlMatchChi2, btlMatchChi2Token);
748  fillValueMap(ev, outTrksHandle, etlMatchChi2, etlMatchChi2Token);
749  fillValueMap(ev, outTrksHandle, btlMatchTimeChi2, btlMatchTimeChi2Token);
750  fillValueMap(ev, outTrksHandle, etlMatchTimeChi2, etlMatchTimeChi2Token);
751  fillValueMap(ev, outTrksHandle, pathLengthsRaw, pathLengthToken);
752  fillValueMap(ev, outTrksHandle, tmtdRaw, tmtdToken);
753  fillValueMap(ev, outTrksHandle, sigmatmtdRaw, sigmatmtdToken);
754  fillValueMap(ev, tracksH, pOrigTrkRaw, pOrigTrkToken);
755  fillValueMap(ev, tracksH, betaOrigTrkRaw, betaOrigTrkToken);
756  fillValueMap(ev, tracksH, t0OrigTrkRaw, t0OrigTrkToken);
757  fillValueMap(ev, tracksH, sigmat0OrigTrkRaw, sigmat0OrigTrkToken);
758  fillValueMap(ev, tracksH, pathLengthsOrigTrkRaw, pathLengthOrigTrkToken);
759  fillValueMap(ev, tracksH, tmtdOrigTrkRaw, tmtdOrigTrkToken);
760  fillValueMap(ev, tracksH, sigmatmtdOrigTrkRaw, sigmatmtdOrigTrkToken);
761  fillValueMap(ev, tracksH, assocOrigTrkRaw, assocOrigTrkToken);
762 }

References funct::abs(), cms::cuda::bs, PVValHelper::dz, ev, edm::EventSetup::get(), get, hfClusterShapes_cfi::hits, RefitDirection::insideOut, LogTrace, PV3DBase< T, PVType, FrameType >::mag2(), volumeBasedMagneticField_160812_cfi::magfield, FreeTrajectoryState::momentum(), eostools::move(), config::ordering, convertSQLitetoXML_cfg::output, edm::ESHandle< T >::product(), MetAnalyzer::pv(), mps_fire::result, groupFilesInBlocks::reverse, mathSSE::sqrt(), HLT_FULL_cff::track, PDWG_EXOHSCP_cff::tracks, and TrajectoryStateClosestToBeamLine::trackStateAtPCA().

◆ tryBTLLayers()

template<class TrackCollection >
TransientTrackingRecHit::ConstRecHitContainer TrackExtenderWithMTDT< TrackCollection >::tryBTLLayers ( const TrajectoryStateOnSurface tsos,
const Trajectory traj,
const double  pmag2,
const double  pathlength0,
const MTDTrackingDetSetVector hits,
const MTDDetLayerGeometry geo,
const MagneticField field,
const Propagator prop,
const reco::BeamSpot bs,
const double  vtxTime,
const bool  matchVertex,
MTDHitMatchingInfo &  bestHit 
) const

Definition at line 829 of file TrackExtenderWithMTD.cc.

841  {
842  const vector<const DetLayer*>& layers = geo->allBTLLayers();
843 
845  bestHit = MTDHitMatchingInfo();
846  for (const DetLayer* ilay : layers)
847  fillMatchingHits(ilay, tsos, traj, pmag2, pathlength0, hits, prop, bs, vtxTime, matchVertex, output, bestHit);
848  return output;
849 }

References MTDDetLayerGeometry::allBTLLayers(), cms::cuda::bs, hfClusterShapes_cfi::hits, hgcalTopologyTester_cfi::layers, and convertSQLitetoXML_cfg::output.

◆ tryETLLayers()

template<class TrackCollection >
TransientTrackingRecHit::ConstRecHitContainer TrackExtenderWithMTDT< TrackCollection >::tryETLLayers ( const TrajectoryStateOnSurface tsos,
const Trajectory traj,
const double  pmag2,
const double  pathlength0,
const MTDTrackingDetSetVector hits,
const MTDDetLayerGeometry geo,
const MagneticField field,
const Propagator prop,
const reco::BeamSpot bs,
const double  vtxTime,
const bool  matchVertex,
MTDHitMatchingInfo &  bestHit 
) const

Definition at line 852 of file TrackExtenderWithMTD.cc.

864  {
865  const vector<const DetLayer*>& layers = geo->allETLLayers();
866 
868  bestHit = MTDHitMatchingInfo();
869  for (const DetLayer* ilay : layers) {
870  const BoundDisk& disk = static_cast<const MTDRingForwardDoubleLayer*>(ilay)->specificSurface();
871  const double diskZ = disk.position().z();
872 
873  if (tsos.globalPosition().z() * diskZ < 0)
874  continue; // only propagate to the disk that's on the same side
875 
876  fillMatchingHits(ilay, tsos, traj, pmag2, pathlength0, hits, prop, bs, vtxTime, matchVertex, output, bestHit);
877  }
878  return output;
879 }

References MTDDetLayerGeometry::allETLLayers(), cms::cuda::bs, TrajectoryStateOnSurface::globalPosition(), hfClusterShapes_cfi::hits, hgcalTopologyTester_cfi::layers, convertSQLitetoXML_cfg::output, and PV3DBase< T, PVType, FrameType >::z().

Member Data Documentation

◆ assocOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::assocOrigTrkToken
private

◆ betaOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::betaOrigTrkToken
private

◆ bsTimeSpread_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::bsTimeSpread_
private

Definition at line 410 of file TrackExtenderWithMTD.cc.

◆ bsToken_

template<class TrackCollection >
edm::EDGetTokenT<reco::BeamSpot> TrackExtenderWithMTDT< TrackCollection >::bsToken_
private

Definition at line 387 of file TrackExtenderWithMTD.cc.

◆ btlChi2Cut_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::btlChi2Cut_
private

Definition at line 402 of file TrackExtenderWithMTD.cc.

◆ btlMatchChi2Token

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::btlMatchChi2Token
private

◆ btlMatchTimeChi2Token

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::btlMatchTimeChi2Token
private

◆ btlTimeChi2Cut_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::btlTimeChi2Cut_
private

Definition at line 403 of file TrackExtenderWithMTD.cc.

◆ builder_

template<class TrackCollection >
edm::ESHandle<TransientTrackBuilder> TrackExtenderWithMTDT< TrackCollection >::builder_
private

Definition at line 396 of file TrackExtenderWithMTD.cc.

◆ dzCut_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::dzCut_
private

Definition at line 409 of file TrackExtenderWithMTD.cc.

◆ estMaxChi2_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::estMaxChi2_
private

◆ estMaxNSigma_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::estMaxNSigma_
private

◆ etlChi2Cut_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::etlChi2Cut_
private

Definition at line 404 of file TrackExtenderWithMTD.cc.

◆ etlMatchChi2Token

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::etlMatchChi2Token
private

◆ etlMatchTimeChi2Token

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::etlMatchTimeChi2Token
private

◆ etlTimeChi2Cut_

template<class TrackCollection >
const float TrackExtenderWithMTDT< TrackCollection >::etlTimeChi2Cut_
private

Definition at line 405 of file TrackExtenderWithMTD.cc.

◆ genVtxPositionToken_

template<class TrackCollection >
edm::EDGetTokenT<GlobalPoint> TrackExtenderWithMTDT< TrackCollection >::genVtxPositionToken_
private

◆ genVtxTimeToken_

template<class TrackCollection >
edm::EDGetTokenT<float> TrackExtenderWithMTDT< TrackCollection >::genVtxTimeToken_
private

◆ gtg_

template<class TrackCollection >
edm::ESHandle<GlobalTrackingGeometry> TrackExtenderWithMTDT< TrackCollection >::gtg_
private

Definition at line 398 of file TrackExtenderWithMTD.cc.

◆ hitbuilder_

template<class TrackCollection >
edm::ESHandle<TransientTrackingRecHitBuilder> TrackExtenderWithMTDT< TrackCollection >::hitbuilder_
private

Definition at line 397 of file TrackExtenderWithMTD.cc.

◆ hitsToken_

template<class TrackCollection >
edm::EDGetTokenT<MTDTrackingDetSetVector> TrackExtenderWithMTDT< TrackCollection >::hitsToken_
private

Definition at line 386 of file TrackExtenderWithMTD.cc.

◆ mtdRecHitBuilder_

template<class TrackCollection >
const std::string TrackExtenderWithMTDT< TrackCollection >::mtdRecHitBuilder_
private

Definition at line 393 of file TrackExtenderWithMTD.cc.

◆ pathLengthOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::pathLengthOrigTrkToken
private

◆ pathLengthToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::pathLengthToken
private

◆ pOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::pOrigTrkToken
private

◆ propagator_

template<class TrackCollection >
const std::string TrackExtenderWithMTDT< TrackCollection >::propagator_
private

Definition at line 393 of file TrackExtenderWithMTD.cc.

◆ sigmat0OrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::sigmat0OrigTrkToken
private

◆ sigmatmtdOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::sigmatmtdOrigTrkToken
private

◆ sigmatmtdToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::sigmatmtdToken
private

◆ t0OrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::t0OrigTrkToken
private

◆ theEstimator

template<class TrackCollection >
std::unique_ptr<MeasurementEstimator> TrackExtenderWithMTDT< TrackCollection >::theEstimator
private

◆ theTransformer

template<class TrackCollection >
std::unique_ptr<TrackTransformer> TrackExtenderWithMTDT< TrackCollection >::theTransformer
private

◆ tmtdOrigTrkToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::tmtdOrigTrkToken
private

◆ tmtdToken

template<class TrackCollection >
edm::EDPutToken TrackExtenderWithMTDT< TrackCollection >::tmtdToken
private

◆ tracksToken_

template<class TrackCollection >
edm::EDGetTokenT<InputCollection> TrackExtenderWithMTDT< TrackCollection >::tracksToken_
private

Definition at line 385 of file TrackExtenderWithMTD.cc.

◆ transientTrackBuilder_

template<class TrackCollection >
const std::string TrackExtenderWithMTDT< TrackCollection >::transientTrackBuilder_
private

Definition at line 393 of file TrackExtenderWithMTD.cc.

◆ updateExtra_

template<class TrackCollection >
const bool TrackExtenderWithMTDT< TrackCollection >::updateExtra_
private

Definition at line 392 of file TrackExtenderWithMTD.cc.

◆ updatePattern_

template<class TrackCollection >
const bool TrackExtenderWithMTDT< TrackCollection >::updatePattern_
private

Definition at line 392 of file TrackExtenderWithMTD.cc.

◆ updateTraj_

template<class TrackCollection >
const bool TrackExtenderWithMTDT< TrackCollection >::updateTraj_
private

Definition at line 392 of file TrackExtenderWithMTD.cc.

◆ useSimVertex_

template<class TrackCollection >
const bool TrackExtenderWithMTDT< TrackCollection >::useSimVertex_
private

◆ useVertex_

template<class TrackCollection >
const bool TrackExtenderWithMTDT< TrackCollection >::useVertex_
private

◆ vtxToken_

template<class TrackCollection >
edm::EDGetTokenT<VertexCollection> TrackExtenderWithMTDT< TrackCollection >::vtxToken_
private
Vector3DBase
Definition: Vector3DBase.h:8
edm::RefProd< TrackingRecHitCollection >
TrackExtenderWithMTDT::etlMatchChi2Token
edm::EDPutToken etlMatchChi2Token
Definition: TrackExtenderWithMTD.cc:370
TrackExtenderWithMTDT::theEstimator
std::unique_ptr< MeasurementEstimator > theEstimator
Definition: TrackExtenderWithMTD.cc:394
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrajectoryStateClosestToBeamLine
Definition: TrajectoryStateClosestToBeamLine.h:15
TrackExtenderWithMTDT::genVtxTimeToken_
edm::EDGetTokenT< float > genVtxTimeToken_
Definition: TrackExtenderWithMTD.cc:389
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
TrackExtenderWithMTDT::etlTimeChi2Cut_
const float etlTimeChi2Cut_
Definition: TrackExtenderWithMTD.cc:405
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
GeomDet
Definition: GeomDet.h:27
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
DetLayer
Definition: DetLayer.h:21
Trajectory::seedRef
edm::RefToBase< TrajectorySeed > seedRef(void) const
Definition: Trajectory.h:303
Trajectory::chiSquared
float chiSquared() const
Definition: Trajectory.h:241
GlobalTrajectoryParameters::position
GlobalPoint position() const
Definition: GlobalTrajectoryParameters.h:60
Trajectory::direction
PropagationDirection const & direction() const
Definition: Trajectory.cc:133
convertSQLitetoXML_cfg.output
output
Definition: convertSQLitetoXML_cfg.py:72
TrackExtenderWithMTDT::useSimVertex_
const bool useSimVertex_
Definition: TrackExtenderWithMTD.cc:408
patZpeak.handle
handle
Definition: patZpeak.py:23
ForwardSubdetector
ForwardSubdetector
Definition: ForwardSubdetector.h:4
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
reco::TrackBase::undefQuality
Definition: TrackBase.h:151
deep_tau::DeepTauBase::BasicDiscriminator
BasicDiscriminator
Definition: DeepTauBase.h:115
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
TrackExtenderWithMTDT::estMaxChi2_
const float estMaxChi2_
Definition: TrackExtenderWithMTD.cc:400
pos
Definition: PixelAliasList.h:18
TrackExtenderWithMTDT::btlMatchTimeChi2Token
edm::EDPutToken btlMatchTimeChi2Token
Definition: TrackExtenderWithMTD.cc:371
FreeTrajectoryState::charge
TrackCharge charge() const
Definition: FreeTrajectoryState.h:69
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
TrackExtenderWithMTDT::updateExtra_
const bool updateExtra_
Definition: TrackExtenderWithMTD.cc:392
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
TransientRecHitRecord
Definition: TransientRecHitRecord.h:14
TrackExtenderWithMTDT::sigmatmtdToken
edm::EDPutToken sigmatmtdToken
Definition: TrackExtenderWithMTD.cc:375
oppositeToMomentum
Definition: PropagationDirection.h:4
GlobalTrackingGeometryRecord
Definition: GlobalTrackingGeometryRecord.h:17
Surface
Definition: Surface.h:36
TrackExtenderWithMTDT::tmtdOrigTrkToken
edm::EDPutToken tmtdOrigTrkToken
Definition: TrackExtenderWithMTD.cc:381
TrajectoryMeasurement::updatedState
TrajectoryStateOnSurface const & updatedState() const
Definition: TrajectoryMeasurement.h:184
TrackExtenderWithMTDT::btlMatchChi2Token
edm::EDPutToken btlMatchChi2Token
Definition: TrackExtenderWithMTD.cc:369
TrackExtenderWithMTDT::updatePattern_
const bool updatePattern_
Definition: TrackExtenderWithMTD.cc:392
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
TrackExtenderWithMTDT::builder_
edm::ESHandle< TransientTrackBuilder > builder_
Definition: TrackExtenderWithMTD.cc:396
findQualityFiles.v
v
Definition: findQualityFiles.py:179
TransientTrackingRecHitBuilder::build
virtual RecHitPointer build(const TrackingRecHit *p) const =0
build a tracking rechit from an existing rechit
TrackExtenderWithMTDT::genVtxPositionToken_
edm::EDGetTokenT< GlobalPoint > genVtxPositionToken_
Definition: TrackExtenderWithMTD.cc:388
PV3DBase::mag2
T mag2() const
Definition: PV3DBase.h:63
TrackExtenderWithMTDT::pathLengthToken
edm::EDPutToken pathLengthToken
Definition: TrackExtenderWithMTD.cc:373
dqmdumpme.first
first
Definition: dqmdumpme.py:55
BoundDisk
TrackExtenderWithMTDT::bsTimeSpread_
const float bsTimeSpread_
Definition: TrackExtenderWithMTD.cc:410
TrackExtenderWithMTDT::buildTrack
reco::Track buildTrack(const reco::Track &, const Trajectory &, const Trajectory &, const reco::BeamSpot &, const MagneticField *field, const Propagator *prop, bool hasMTD, float &pathLength, float &tmtdOut, float &sigmatmtdOut) const
Definition: TrackExtenderWithMTD.cc:951
TrackExtenderWithMTDT::fillMatchingHits
void fillMatchingHits(const DetLayer *, const TrajectoryStateOnSurface &, const Trajectory &, const double, const double, const MTDTrackingDetSetVector &, const Propagator *, const reco::BeamSpot &, const double &, const bool, TransientTrackingRecHit::ConstRecHitContainer &, MTDHitMatchingInfo &) const
Definition: TrackExtenderWithMTD.cc:882
groupFilesInBlocks.reverse
reverse
Definition: groupFilesInBlocks.py:131
edm::Ref< TrackExtraCollection >
TrackExtenderWithMTDT::updateTraj_
const bool updateTraj_
Definition: TrackExtenderWithMTD.cc:392
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
ndof
Definition: HIMultiTrackSelector.h:49
TrackExtenderWithMTDT::buildTrackExtra
reco::TrackExtra buildTrackExtra(const Trajectory &trajectory) const
Definition: TrackExtenderWithMTD.cc:1031
TrackExtenderWithMTDT::estMaxNSigma_
const float estMaxNSigma_
Definition: TrackExtenderWithMTD.cc:401
TrackExtenderWithMTDT::useVertex_
const bool useVertex_
Definition: TrackExtenderWithMTD.cc:407
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
Propagator
Definition: Propagator.h:44
DetId
Definition: DetId.h:17
reco::TrackExtra
Definition: TrackExtra.h:26
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
cms::cuda::bs
bs
Definition: HistoContainer.h:127
dqmdumpme.last
last
Definition: dqmdumpme.py:56
TrackExtenderWithMTDT::tryETLLayers
TransientTrackingRecHit::ConstRecHitContainer tryETLLayers(const TrajectoryStateOnSurface &, const Trajectory &traj, const double, const double, const MTDTrackingDetSetVector &, const MTDDetLayerGeometry *, const MagneticField *field, const Propagator *prop, const reco::BeamSpot &bs, const double vtxTime, const bool matchVertex, MTDHitMatchingInfo &bestHit) const
Definition: TrackExtenderWithMTD.cc:852
TrackExtenderWithMTDT::vtxToken_
edm::EDGetTokenT< VertexCollection > vtxToken_
Definition: TrackExtenderWithMTD.cc:390
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
config.ordering
ordering
Definition: config.py:7
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
TrackExtenderWithMTDT::t0OrigTrkToken
edm::EDPutToken t0OrigTrkToken
Definition: TrackExtenderWithMTD.cc:378
FrontierCondition_GT_autoExpress_cfi.t0
t0
Definition: FrontierCondition_GT_autoExpress_cfi.py:148
Bounds::inside
virtual bool inside(const Local3DPoint &) const =0
Determine if the point is inside the bounds.
FreeTrajectoryState::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: FreeTrajectoryState.h:89
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
TransientTrackRecord
Definition: TransientTrackRecord.h:11
reco::Track
Definition: Track.h:27
edm::ESHandle< MTDDetLayerGeometry >
reco::TrackExtraCollection
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:10
TrackExtenderWithMTDT::hitbuilder_
edm::ESHandle< TransientTrackingRecHitBuilder > hitbuilder_
Definition: TrackExtenderWithMTD.cc:397
TrackExtenderWithMTDT::fillValueMap
void fillValueMap(edm::Event &iEvent, const H &handle, const std::vector< T > &vec, const edm::EDPutToken &token) const
Definition: TrackExtenderWithMTD.cc:507
Point3DBase< float, GlobalTag >
TrackExtenderWithMTDT::assocOrigTrkToken
edm::EDPutToken assocOrigTrkToken
Definition: TrackExtenderWithMTD.cc:383
GeomDet::toLocal
LocalPoint toLocal(const GlobalPoint &gp) const
Conversion to the R.F. of the GeomDet.
Definition: GeomDet.h:58
TrackExtenderWithMTDT::bsToken_
edm::EDGetTokenT< reco::BeamSpot > bsToken_
Definition: TrackExtenderWithMTD.cc:387
MTDTrackingRecHit::timeError
float timeError() const
Definition: MTDTrackingRecHit.h:28
GlobalTrajectoryParameters::momentum
GlobalVector momentum() const
Definition: GlobalTrajectoryParameters.h:65
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
FastTrackerRecHitMaskProducer_cfi.recHits
recHits
Definition: FastTrackerRecHitMaskProducer_cfi.py:8
RefitDirection::undetermined
Definition: RefitDirection.h:15
TrackExtenderWithMTDT::propagator_
const std::string propagator_
Definition: TrackExtenderWithMTD.cc:393
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:223
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
TrackExtenderWithMTDT::gtg_
edm::ESHandle< GlobalTrackingGeometry > gtg_
Definition: TrackExtenderWithMTD.cc:398
Trajectory::ndof
int ndof(bool bon=true) const
Definition: Trajectory.cc:97
TrackExtenderWithMTDT::theTransformer
std::unique_ptr< TrackTransformer > theTransformer
Definition: TrackExtenderWithMTD.cc:395
Trajectory::RecHitContainer
ConstRecHitContainer RecHitContainer
Definition: Trajectory.h:42
TrackExtenderWithMTDT::sigmatmtdOrigTrkToken
edm::EDPutToken sigmatmtdOrigTrkToken
Definition: TrackExtenderWithMTD.cc:382
TrackingRecHit::ConstRecHitContainer
std::vector< ConstRecHitPointer > ConstRecHitContainer
Definition: TrackingRecHit.h:32
TrackExtenderWithMTDT::hitsToken_
edm::EDGetTokenT< MTDTrackingDetSetVector > hitsToken_
Definition: TrackExtenderWithMTD.cc:386
Trajectory::lastMeasurement
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
Traj2TrackHits
Definition: Traj2TrackHits.h:16
TrackExtenderWithMTDT::mtdRecHitBuilder_
const std::string mtdRecHitBuilder_
Definition: TrackExtenderWithMTD.cc:393
FastTime
Definition: ForwardSubdetector.h:6
TrackExtenderWithMTDT::tracksToken_
edm::EDGetTokenT< InputCollection > tracksToken_
Definition: TrackExtenderWithMTD.cc:385
MTDTrackingRecHit
A 2D TrackerRecHit with time and time error information.
Definition: MTDTrackingRecHit.h:10
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
position
static int position[264][3]
Definition: ReadPGInfo.cc:289
TrackExtenderWithMTDT::sigmat0OrigTrkToken
edm::EDPutToken sigmat0OrigTrkToken
Definition: TrackExtenderWithMTD.cc:379
createfilelist.int
int
Definition: createfilelist.py:10
MetAnalyzer.pv
def pv(vc)
Definition: MetAnalyzer.py:7
iEvent
int iEvent
Definition: GenABIO.cc:224
TrackExtenderWithMTDT::betaOrigTrkToken
edm::EDPutToken betaOrigTrkToken
Definition: TrackExtenderWithMTD.cc:377
reco::TransientTrack::outermostMeasurementState
TrajectoryStateOnSurface outermostMeasurementState() const
Definition: TransientTrack.h:86
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
TrackExtenderWithMTDT::tryBTLLayers
TransientTrackingRecHit::ConstRecHitContainer tryBTLLayers(const TrajectoryStateOnSurface &, const Trajectory &traj, const double, const double, const MTDTrackingDetSetVector &, const MTDDetLayerGeometry *, const MagneticField *field, const Propagator *prop, const reco::BeamSpot &bs, const double vtxTime, const bool matchVertex, MTDHitMatchingInfo &bestHit) const
Definition: TrackExtenderWithMTD.cc:829
MTDDetLayerGeometry::allBTLLayers
const std::vector< const DetLayer * > & allBTLLayers() const
return the BTL DetLayers (barrel), inside-out
Definition: MTDDetLayerGeometry.cc:70
MTDTrackingRecHit::time
float time() const
Definition: MTDTrackingRecHit.h:27
MTDRecoGeometryRecord
Definition: MTDRecoGeometryRecord.h:18
TrackTransformer::fillPSetDescription
static void fillPSetDescription(edm::ParameterSetDescription &descriptions, bool DoPredictionsOnly=false, const std::string &Fitter="KFFitterForRefitInsideOut", const std::string &Smoother="KFSmootherForRefitInsideOut", const std::string &Propagator="SmartPropagatorAnyRK", const std::string &RefitDirection="alongMomentum", bool RefitRPCHits=true, const std::string &TrackerRecHitBuilder="WithTrackAngle", const std::string &MuonRecHitBuilder="MuonRecHitBuilder", const std::string &MTDRecHitBuilder="MTDRecHitBuilder")
fillDescriptions
Definition: TrackTransformer.cc:58
Trajectory::measurements
DataContainer const & measurements() const
Definition: Trajectory.h:178
reco::TrackBase::algo
TrackAlgorithm algo() const
Definition: TrackBase.h:547
TrajectoryMeasurement::recHit
ConstRecHitPointer const & recHit() const
Definition: TrajectoryMeasurement.h:190
Trajectory::recHits
ConstRecHitContainer recHits() const
Definition: Trajectory.h:186
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
eostools.move
def move(src, dest)
Definition: eostools.py:511
TrackExtenderWithMTDT::transientTrackBuilder_
const std::string transientTrackBuilder_
Definition: TrackExtenderWithMTD.cc:393
Trajectory::firstMeasurement
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
reco::TransientTrack
Definition: TransientTrack.h:19
TrackExtenderWithMTDT::pathLengthOrigTrkToken
edm::EDPutToken pathLengthOrigTrkToken
Definition: TrackExtenderWithMTD.cc:380
reco::TrackExtraBase::Chi2sFive
std::vector< unsigned char > Chi2sFive
Definition: TrackExtraBase.h:25
TrajectoryMeasurement::ConstRecHitPointer
TrackingRecHit::ConstRecHitPointer ConstRecHitPointer
Definition: TrajectoryMeasurement.h:28
PVValHelper::dz
Definition: PVValidationHelpers.h:50
TrackExtenderWithMTDT::checkRecHitsOrdering
RefitDirection::GeometricalDirection checkRecHitsOrdering(TransientTrackingRecHit::ConstRecHitContainer const &recHits) const
Definition: TrackExtenderWithMTD.cc:336
ev
bool ev
Definition: Hydjet2Hadronizer.cc:95
TrajectoryStateOnSurface::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: TrajectoryStateOnSurface.h:72
TrackExtenderWithMTDT::pOrigTrkToken
edm::EDPutToken pOrigTrkToken
Definition: TrackExtenderWithMTD.cc:376
GlobalTrackingGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GlobalTrackingGeometry.cc:44
RefitDirection::insideOut
Definition: RefitDirection.h:15
GeometricSearchDet::surface
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
BoundCylinder
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
TransientTrackBuilder::build
reco::TransientTrack build(const reco::Track *p) const
Definition: TransientTrackBuilder.cc:20
MTDDetLayerGeometry::allETLLayers
const std::vector< const DetLayer * > & allETLLayers() const
return the ETL DetLayers (endcap), -Z to +Z
Definition: MTDDetLayerGeometry.cc:72
mps_fire.result
result
Definition: mps_fire.py:311
TrackExtenderWithMTDT::etlMatchTimeChi2Token
edm::EDPutToken etlMatchTimeChi2Token
Definition: TrackExtenderWithMTD.cc:372
edm::helper::Filler
Definition: ValueMap.h:22
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:224
TrajectoryStateOnSurface::globalParameters
const GlobalTrajectoryParameters & globalParameters() const
Definition: TrajectoryStateOnSurface.h:64
TrackExtenderWithMTDT::btlChi2Cut_
const float btlChi2Cut_
Definition: TrackExtenderWithMTD.cc:402
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
TrackExtenderWithMTDT::dzCut_
const float dzCut_
Definition: TrackExtenderWithMTD.cc:409
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition: TrajectoryStateClosestToBeamLine.h:32
DetId::Forward
Definition: DetId.h:30
TrackExtenderWithMTDT::btlTimeChi2Cut_
const float btlTimeChi2Cut_
Definition: TrackExtenderWithMTD.cc:403
volumeBasedMagneticField_160812_cfi.magfield
magfield
Definition: volumeBasedMagneticField_160812_cfi.py:11
RefitDirection::outsideIn
Definition: RefitDirection.h:15
reco::TrackExtraBase::TrajParams
std::vector< LocalTrajectoryParameters > TrajParams
Definition: TrackExtraBase.h:24
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
TrackExtenderWithMTDT::etlChi2Cut_
const float etlChi2Cut_
Definition: TrackExtenderWithMTD.cc:404
reco::Vertex
Definition: Vertex.h:35
TrackExtenderWithMTDT::tmtdToken
edm::EDPutToken tmtdToken
Definition: TrackExtenderWithMTD.cc:374
hit
Definition: SiStripHitEffFromCalibTree.cc:88
edm::OwnVector< TrackingRecHit >
metname
const std::string metname
Definition: MuonSeedOrcaPatternRecognition.cc:40
unpackBuffers-CaloStage2.token
token
Definition: unpackBuffers-CaloStage2.py:318
TrackingComponentsRecord
Definition: TrackingComponentsRecord.h:12