CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
TrackProducerWithSCAssociation Class Reference

#include <TrackProducerWithSCAssociation.h>

Inheritance diagram for TrackProducerWithSCAssociation:
TrackProducerBase< reco::Track > edm::stream::EDProducer<> AlgoProductTraits< reco::Track >

Public Member Functions

std::vector< reco::TransientTrackgetTransient (edm::Event &, const edm::EventSetup &)
 
void produce (edm::Event &, const edm::EventSetup &) override
 Method where the procduction take place. To be implemented in concrete classes. More...
 
 TrackProducerWithSCAssociation (const edm::ParameterSet &iConfig)
 
- Public Member Functions inherited from TrackProducerBase< reco::Track >
const edm::ParameterSetgetConf () const
 
virtual void getFromES (const edm::EventSetup &, edm::ESHandle< TrackerGeometry > &, edm::ESHandle< MagneticField > &, edm::ESHandle< TrajectoryFitter > &, edm::ESHandle< Propagator > &, edm::ESHandle< MeasurementTracker > &, edm::ESHandle< TransientTrackingRecHitBuilder > &)
 Get needed services from the Event Setup. More...
 
virtual void getFromEvt (edm::Event &, edm::Handle< TrackCandidateCollection > &, reco::BeamSpot &)
 Get TrackCandidateCollection from the Event (needed by TrackProducer) More...
 
virtual void getFromEvt (edm::Event &, edm::Handle< TrackView > &, reco::BeamSpot &)
 Get TrackCollection from the Event (needed by TrackRefitter) More...
 
void setAlias (std::string alias)
 set the aliases of produced collections More...
 
void setClusterRemovalInfo (const edm::InputTag &clusterRemovalInfo)
 Sets the information on cluster removal, and turns it on. More...
 
void setConf (const edm::ParameterSet &conf)
 Set parameter set. More...
 
void setSecondHitPattern (Trajectory *traj, reco::Track &track, const Propagator *prop, const MeasurementTrackerEvent *measTk, const TrackerTopology *ttopo)
 
void setSrc (const edm::EDGetToken &src, const edm::EDGetTokenT< reco::BeamSpot > &bsSrc, const edm::EDGetTokenT< MeasurementTrackerEvent > &mteSrc)
 set label of source collection More...
 
 TrackProducerBase (bool trajectoryInEvent=false)
 Constructor. More...
 
virtual ~TrackProducerBase () noexcept(false)
 Destructor. More...
 
- 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
 

Private Member Functions

void putInEvt (edm::Event &evt, const Propagator *thePropagator, const MeasurementTracker *theMeasTk, std::unique_ptr< TrackingRecHitCollection > selHits, std::unique_ptr< reco::TrackCollection > selTracks, std::unique_ptr< reco::TrackExtraCollection > selTrackExtras, std::unique_ptr< std::vector< Trajectory >> selTrajectories, AlgoProductCollection &algoResults, TransientTrackingRecHitBuilder const *hitBuilder, const TrackerTopology *ttopo)
 

Private Attributes

edm::EDGetTokenT< reco::TrackCandidateCaloClusterPtrAssociationassoc_token
 
std::string conversionTrackCandidateProducer_
 
edm::EDGetTokenT< MeasurementTrackerEventmeasurementTrkToken_
 
std::string myname_
 
bool myTrajectoryInEvent_
 
edm::OrphanHandle< reco::TrackCollectionrTracks_
 
TrackProducerAlgorithm< reco::TracktheAlgo
 
std::string trackCSuperClusterAssociationCollection_
 
std::string trackSuperClusterAssociationCollection_
 
bool validTrackCandidateSCAssociationInput_
 

Additional Inherited Members

- Public Types inherited from TrackProducerBase< reco::Track >
using AlgoProductCollection = typename Base::AlgoProductCollection
 
using Base = AlgoProductTraits< reco::Track >
 
using TrackCollection = typename Base::TrackCollection
 
using TrackView = typename Base::TrackView
 
- Public Types inherited from AlgoProductTraits< reco::Track >
using AlgoProductCollection = std::vector< AlgoProduct >
 
using TrackCollection = std::vector< reco::Track >
 
using TrackView = edm::View< reco::Track >
 
- 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
 
- Protected Attributes inherited from TrackProducerBase< reco::Track >
std::string alias_
 
edm::EDGetTokenT< reco::BeamSpotbsSrc_
 
edm::InputTag clusterRemovalInfo_
 
edm::ParameterSet conf_
 
edm::EDGetTokenT< MeasurementTrackerEventmteSrc_
 
bool rekeyClusterRefs_
 
edm::OrphanHandle< TrackCollectionrTracks_
 
edm::EDGetToken src_
 
edm::ESHandle< NavigationSchooltheSchool
 
bool trajectoryInEvent_
 

Detailed Description

Author
Nancy Marinelli, U. of Notre Dame, US Modified version of TrackProducer by Giuseppe Cerati to have super cluster - conversion track association

Definition at line 19 of file TrackProducerWithSCAssociation.h.

Constructor & Destructor Documentation

◆ TrackProducerWithSCAssociation()

TrackProducerWithSCAssociation::TrackProducerWithSCAssociation ( const edm::ParameterSet iConfig)
explicit

Definition at line 20 of file TrackProducerWithSCAssociation.cc.

21  : TrackProducerBase<reco::Track>(iConfig.getParameter<bool>("TrajectoryInEvent")), theAlgo(iConfig) {
22  setConf(iConfig);
23  setSrc(consumes<TrackCandidateCollection>(iConfig.getParameter<edm::InputTag>("src")),
24  consumes<reco::BeamSpot>(iConfig.getParameter<edm::InputTag>("beamSpot")),
25  consumes<MeasurementTrackerEvent>(iConfig.getParameter<edm::InputTag>("MeasurementTrackerEvent")));
26  setAlias(iConfig.getParameter<std::string>("@module_label"));
27 
28  if (iConfig.exists("clusterRemovalInfo")) {
29  edm::InputTag tag = iConfig.getParameter<edm::InputTag>("clusterRemovalInfo");
30  if (!(tag == edm::InputTag())) {
32  }
33  }
34 
35  myname_ = iConfig.getParameter<std::string>("ComponentName");
37  trackCSuperClusterAssociationCollection_ = iConfig.getParameter<std::string>("trackCandidateSCAssociationCollection");
38  trackSuperClusterAssociationCollection_ = iConfig.getParameter<std::string>("recoTrackSCAssociationCollection");
39  myTrajectoryInEvent_ = iConfig.getParameter<bool>("TrajectoryInEvent");
40 
41  assoc_token = consumes<reco::TrackCandidateCaloClusterPtrAssociation>(
43  measurementTrkToken_ = consumes<MeasurementTrackerEvent>(
44  edm::InputTag("MeasurementTrackerEvent")); //hardcoded because the original was and no time to fix (sigh)
45 
46  //register your products
47  produces<reco::TrackCollection>().setBranchAlias(alias_ + "Tracks");
48  produces<reco::TrackExtraCollection>().setBranchAlias(alias_ + "TrackExtras");
49  produces<TrackingRecHitCollection>().setBranchAlias(alias_ + "RecHits");
50  produces<std::vector<Trajectory>>();
51  produces<TrajTrackAssociationCollection>();
52  // produces< reco::TrackSuperClusterAssociationCollection > (trackSuperClusterAssociationCollection_ );
53  produces<reco::TrackCaloClusterPtrAssociation>(trackSuperClusterAssociationCollection_);
54 }

References TrackProducerBase< reco::Track >::alias_, assoc_token, conversionTrackCandidateProducer_, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), measurementTrkToken_, myname_, myTrajectoryInEvent_, TrackProducerBase< reco::Track >::setAlias(), TrackProducerBase< reco::Track >::setClusterRemovalInfo(), TrackProducerBase< reco::Track >::setConf(), TrackProducerBase< reco::Track >::setSrc(), AlCaHLTBitMon_QueryRunRegistry::string, GlobalPosition_Frontier_DevDB_cff::tag, trackCSuperClusterAssociationCollection_, and trackSuperClusterAssociationCollection_.

Member Function Documentation

◆ getTransient()

std::vector< reco::TransientTrack > TrackProducerWithSCAssociation::getTransient ( edm::Event theEvent,
const edm::EventSetup setup 
)

Definition at line 209 of file TrackProducerWithSCAssociation.cc.

210  {
211  edm::LogInfo("TrackProducerWithSCAssociation") << "Analyzing event number: " << theEvent.id() << "\n";
212  //
213  // create empty output collections
214  //
215  std::vector<reco::TransientTrack> ttks;
216 
217  //
218  //declare and get stuff to be retrieved from ES
219  //
223  edm::ESHandle<Propagator> thePropagator;
226  getFromES(setup, theG, theMF, theFitter, thePropagator, theMeasTk, theBuilder);
227 
228  //
229  //declare and get TrackColection to be retrieved from the event
230  //
231  AlgoProductCollection algoResults;
233 
234  try {
236  getFromEvt(theEvent, theTCCollection, bs);
237 
238  //
239  //run the algorithm
240  //
241  //LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation run the algorithm" << "\n";
243  theMF.product(),
244  *theTCCollection,
245  theFitter.product(),
246  thePropagator.product(),
247  theBuilder.product(),
248  bs,
249  algoResults);
250 
251  } catch (cms::Exception& e) {
252  edm::LogInfo("TrackProducerWithSCAssociation") << "cms::Exception caught!!!"
253  << "\n"
254  << e << "\n";
255  }
256 
257  for (auto& prod : algoResults) {
258  ttks.emplace_back(*prod.track, thePropagator.product()->magneticField());
259  }
260 
261  //LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation end" << "\n";
262 
263  return ttks;
264 }

References cms::cuda::bs, MillePedeFileConverter_cfg::e, TrackProducerBase< reco::Track >::getFromES(), TrackProducerBase< reco::Track >::getFromEvt(), edm::EventBase::id(), Propagator::magneticField(), dumpMFGeometry_cfg::prod, edm::ESHandle< T >::product(), TrackProducerAlgorithm< T >::runWithCandidate(), singleTopDQM_cfi::setup, and theAlgo.

◆ produce()

void TrackProducerWithSCAssociation::produce ( edm::Event ,
const edm::EventSetup  
)
overridevirtual

Method where the procduction take place. To be implemented in concrete classes.

Implements TrackProducerBase< reco::Track >.

Definition at line 56 of file TrackProducerWithSCAssociation.cc.

56  {
57  //edm::LogInfo("TrackProducerWithSCAssociation") << "Analyzing event number: " << theEvent.id() << "\n";
58 
59  //LogDebug("TrackProducerWithSCAssociation") << "Analyzing event number: " << theEvent.id() << "\n";
60  // std::cout << " TrackProducerWithSCAssociation Analyzing event number: " << theEvent.id() << "\n";
61 
62  //
63  // create empty output collections
64  //
65  auto outputRHColl = std::make_unique<TrackingRecHitCollection>();
66  auto outputTColl = std::make_unique<reco::TrackCollection>();
67  auto outputTEColl = std::make_unique<reco::TrackExtraCollection>();
68  auto outputTrajectoryColl = std::make_unique<std::vector<Trajectory>>();
69  // Reco Track - Super Cluster Association
70  auto scTrkAssoc_p = std::make_unique<reco::TrackCaloClusterPtrAssociation>();
71 
72  //
73  //declare and get stuff to be retrieved from ES
74  //
78  edm::ESHandle<Propagator> thePropagator;
81  getFromES(setup, theG, theMF, theFitter, thePropagator, theMeasTk, theBuilder);
82 
84  setup.get<TrackerTopologyRcd>().get(httopo);
85  const TrackerTopology* ttopo = httopo.product();
86 
87  //
88  //declare and get TrackColection to be retrieved from the event
93  theEvent.getByToken(assoc_token, trkCandidateSCAssocHandle);
94  if (!trkCandidateSCAssocHandle.isValid()) {
95  // std::cout << "Error! Can't get the product "<<trackCSuperClusterAssociationCollection_.c_str() << " but keep running. Empty collection will be produced " << "\n";
96  edm::LogError("TrackProducerWithSCAssociation")
97  << "Error! Can't get the product " << trackCSuperClusterAssociationCollection_.c_str()
98  << " but keep running. Empty collection will be produced "
99  << "\n";
101  }
102  reco::TrackCandidateCaloClusterPtrAssociation scTrkCandAssCollection = *(trkCandidateSCAssocHandle.product());
103  if (scTrkCandAssCollection.empty())
105 
106  std::vector<int> tccLocations;
107  AlgoProductCollection algoResults;
109 
110  getFromEvt(theEvent, theTCCollection, bs);
111 
112  if (theTCCollection.failedToGet()) {
113  edm::LogError("TrackProducerWithSCAssociation")
114  << "TrackProducerWithSCAssociation could not get the TrackCandidateCollection.";
115  } else {
116  //
117  //run the algorithm
118  //
119  // LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation run the algorithm" << "\n";
120  // theAlgo.runWithCandidate(theG.product(), theMF.product(), *theTCCollection,
121  // theFitter.product(), thePropagator.product(), theBuilder.product(), algoResults);
122  // we have to copy this method from the algo in order to get the association track-seed
123  // this is ugly temporary code that should be replaced!!!!!
124  // start of copied code ======================================================
125 
126  // std::cout << "TrackProducerWithSCAssociation Number of TrackCandidates: " << theTCCollection->size() << "\n";
127  try {
128  int cont = 0;
129  int tcc = 0;
130 
131  for (TrackCandidateCollection::const_iterator i = theTCCollection->begin(); i != theTCCollection->end(); i++) {
132  const TrackCandidate* theTC = &(*i);
134  const TrajectorySeed& seed = theTC->seed();
135 
136  //convert PTrajectoryStateOnDet to TrajectoryStateOnSurface
137 
138  DetId detId(state.detId());
140  state, &(theG.product()->idToDet(detId)->surface()), theMF.product());
141 
142  //LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation Initial TSOS\n" << theTSOS << "\n";
143 
144  //convert the TrackingRecHit vector to a TransientTrackingRecHit vector
145  //meanwhile computes the number of degrees of freedom
147 
148  float ndof = 0;
149 
150  for (auto const& recHit : theTC->recHits()) {
151  hits.push_back(theBuilder.product()->build(&recHit));
152  }
153 
154  //build Track
155  // LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation going to buildTrack"<< "\n";
156  FitterCloner fc(theFitter.product(), theBuilder.product());
157  bool ok = theAlgo.buildTrack(
158  fc.fitter.get(), thePropagator.product(), algoResults, hits, theTSOS, seed, ndof, bs, theTC->seedRef());
159  // LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation buildTrack result: " << ok << "\n";
160  if (ok) {
161  cont++;
162  tccLocations.push_back(tcc);
163  }
164  tcc++;
165  }
166  edm::LogInfo("TrackProducerWithSCAssociation") << "Number of Tracks found: " << cont << "\n";
167  //LogDebug("TrackProducerWithSCAssociation") << "TrackProducerWithSCAssociation Number of Tracks found: " << cont << "\n";
168  // end of copied code ======================================================
169 
170  } catch (cms::Exception& e) {
171  edm::LogInfo("TrackProducerWithSCAssociation") << "cms::Exception caught!!!"
172  << "\n"
173  << e << "\n";
174  }
175  //
176  //put everything in the event
177  // we copy putInEvt to get OrphanHandle filled...
178  putInEvt(theEvent,
179  thePropagator.product(),
180  theMeasTk.product(),
181  std::move(outputRHColl),
182  std::move(outputTColl),
183  std::move(outputTEColl),
184  std::move(outputTrajectoryColl),
185  algoResults,
186  theBuilder.product(),
187  ttopo);
188 
189  // now construct associationmap and put it in the event
191  int itrack = 0;
192  std::vector<edm::Ptr<reco::CaloCluster>> caloPtrVec;
193  for (AlgoProductCollection::iterator i = algoResults.begin(); i != algoResults.end(); i++) {
194  edm::Ref<TrackCandidateCollection> trackCRef(theTCCollection, tccLocations[itrack]);
195  const edm::Ptr<reco::CaloCluster>& aClus = (*trkCandidateSCAssocHandle)[trackCRef];
196  caloPtrVec.push_back(aClus);
197  itrack++;
198  }
199 
201  filler.insert(rTracks_, caloPtrVec.begin(), caloPtrVec.end());
202  filler.fill();
203  }
204 
205  theEvent.put(std::move(scTrkAssoc_p), trackSuperClusterAssociationCollection_);
206  }
207 }

References assoc_token, cms::cuda::bs, TransientTrackingRecHitBuilder::build(), TrackProducerAlgorithm< T >::buildTrack(), generateEDF::cont, MillePedeFileConverter_cfg::e, edm::ValueMap< T >::empty(), edm::HandleBase::failedToGet(), benchmark_cfg::fc, trigObjTnPSource_cfi::filler, get, edm::Event::getByToken(), TrackProducerBase< reco::Track >::getFromES(), TrackProducerBase< reco::Track >::getFromEvt(), hfClusterShapes_cfi::hits, mps_fire::i, TrackerGeometry::idToDet(), edm::HandleBase::isValid(), eostools::move(), ndof, convertSQLiteXML::ok, edm::Handle< T >::product(), edm::ESHandle< T >::product(), edm::Event::put(), putInEvt(), rpcPointValidation_cfi::recHit, TrackCandidate::recHits(), rTracks_, TrackCandidate::seed(), fileCollector::seed, TrackCandidate::seedRef(), singleTopDQM_cfi::setup, GeomDet::surface(), theAlgo, trackCSuperClusterAssociationCollection_, trackSuperClusterAssociationCollection_, TrackCandidate::trajectoryStateOnDet(), trajectoryStateTransform::transientState(), and validTrackCandidateSCAssociationInput_.

◆ putInEvt()

void TrackProducerWithSCAssociation::putInEvt ( edm::Event evt,
const Propagator thePropagator,
const MeasurementTracker theMeasTk,
std::unique_ptr< TrackingRecHitCollection selHits,
std::unique_ptr< reco::TrackCollection selTracks,
std::unique_ptr< reco::TrackExtraCollection selTrackExtras,
std::unique_ptr< std::vector< Trajectory >>  selTrajectories,
AlgoProductCollection algoResults,
TransientTrackingRecHitBuilder const *  hitBuilder,
const TrackerTopology ttopo 
)
private

Definition at line 268 of file TrackProducerWithSCAssociation.cc.

277  {
280 
283  edm::Ref<std::vector<Trajectory>>::key_type iTjRef = 0;
284  std::map<unsigned int, unsigned int> tjTkMap;
285 
286  for (auto& i : algoResults) {
287  Trajectory* theTraj = i.trajectory;
288  if (myTrajectoryInEvent_) {
289  selTrajectories->push_back(*theTraj);
290  iTjRef++;
291  }
292 
293  reco::Track* theTrack = i.track;
294  PropagationDirection seedDir = i.pDir;
295 
296  //LogDebug("TrackProducer") << "In KfTrackProducerBase::putInEvt - seedDir=" << seedDir;
297 
298  reco::Track t = *theTrack;
299  selTracks->push_back(t);
300  iTkRef++;
301 
302  // Store indices in local map (starts at 0)
303  if (trajectoryInEvent_)
304  tjTkMap[iTjRef - 1] = iTkRef - 1;
305 
306  //sets the outermost and innermost TSOSs
307 
308  TrajectoryStateOnSurface outertsos;
309  TrajectoryStateOnSurface innertsos;
310  unsigned int innerId, outerId;
311 
312  // --- NOTA BENE: the convention is to sort hits and measurements "along the momentum".
313  // This is consistent with innermost and outermost labels only for tracks from LHC collision
314  if (theTraj->direction() == alongMomentum) {
315  outertsos = theTraj->lastMeasurement().updatedState();
316  innertsos = theTraj->firstMeasurement().updatedState();
317  outerId = theTraj->lastMeasurement().recHit()->geographicalId().rawId();
318  innerId = theTraj->firstMeasurement().recHit()->geographicalId().rawId();
319  } else {
320  outertsos = theTraj->firstMeasurement().updatedState();
321  innertsos = theTraj->lastMeasurement().updatedState();
322  outerId = theTraj->firstMeasurement().recHit()->geographicalId().rawId();
323  innerId = theTraj->lastMeasurement().recHit()->geographicalId().rawId();
324  }
325  // ---
326  //build the TrackExtra
327  GlobalPoint v = outertsos.globalParameters().position();
328  GlobalVector p = outertsos.globalParameters().momentum();
329  math::XYZVector outmom(p.x(), p.y(), p.z());
330  math::XYZPoint outpos(v.x(), v.y(), v.z());
331  v = innertsos.globalParameters().position();
332  p = innertsos.globalParameters().momentum();
333  math::XYZVector inmom(p.x(), p.y(), p.z());
334  math::XYZPoint inpos(v.x(), v.y(), v.z());
335 
336  reco::TrackExtraRef teref = reco::TrackExtraRef(rTrackExtras, idx++);
337  reco::Track& track = selTracks->back();
338  track.setExtra(teref);
339 
340  //======= I want to set the second hitPattern here =============
341  if (theSchool.isValid()) {
344  setSecondHitPattern(theTraj, track, thePropagator, &*mte, ttopo);
345  }
346  //==============================================================
347 
348  selTrackExtras->push_back(reco::TrackExtra(outpos,
349  outmom,
350  true,
351  inpos,
352  inmom,
353  true,
354  outertsos.curvilinearError(),
355  outerId,
356  innertsos.curvilinearError(),
357  innerId,
358  seedDir,
359  theTraj->seedRef()));
360 
361  reco::TrackExtra& tx = selTrackExtras->back();
362  // --- NOTA BENE: the convention is to sort hits and measurements "along the momentum".
363  // This is consistent with innermost and outermost labels only for tracks from LHC collisions
364  reco::TrackExtra::TrajParams trajParams;
366  Traj2TrackHits t2t;
367  auto ih = selHits->size();
368  t2t(*theTraj, *selHits, trajParams, chi2s);
369  auto ie = selHits->size();
370  tx.setHits(rHits, ih, ie - ih);
371  tx.setTrajParams(std::move(trajParams), std::move(chi2s));
372  for (; ih < ie; ++ih) {
373  auto const& hit = (*selHits)[ih];
374  track.appendHitPattern(hit, *ttopo);
375  }
376  // ----
377 
378  delete theTrack;
379  delete theTraj;
380  }
381 
382  //LogTrace("TrackingRegressionTest") << "========== TrackProducer Info ===================";
383  //LogDebug("TrackProducerWithSCAssociation") << "number of finalTracks: " << selTracks->size() << std::endl;
384  //for (reco::TrackCollection::const_iterator it = selTracks->begin(); it != selTracks->end(); it++) {
385  //LogDebug("TrackProducerWithSCAssociation") << "track's n valid and invalid hit, chi2, pt : "
386  // << it->found() << " , "
387  // << it->lost() <<" , "
388  // << it->normalizedChi2() << " , "
389  // << it->pt() << std::endl;
390  // }
391  //LogTrace("TrackingRegressionTest") << "=================================================";
392 
393  rTracks_ = evt.put(std::move(selTracks));
394 
395  evt.put(std::move(selTrackExtras));
396  evt.put(std::move(selHits));
397 
398  if (myTrajectoryInEvent_) {
399  edm::OrphanHandle<std::vector<Trajectory>> rTrajs = evt.put(std::move(selTrajectories));
400 
401  // Now Create traj<->tracks association map
402  auto trajTrackMap = std::make_unique<TrajTrackAssociationCollection>(rTrajs, rTracks_);
403  for (std::map<unsigned int, unsigned int>::iterator i = tjTkMap.begin(); i != tjTkMap.end(); i++) {
404  edm::Ref<std::vector<Trajectory>> trajRef(rTrajs, (*i).first);
405  edm::Ref<reco::TrackCollection> tkRef(rTracks_, (*i).second);
406  trajTrackMap->insert(edm::Ref<std::vector<Trajectory>>(rTrajs, (*i).first),
408  }
409  evt.put(std::move(trajTrackMap));
410  }
411 }

References alongMomentum, TrajectoryStateOnSurface::curvilinearError(), Trajectory::direction(), Trajectory::firstMeasurement(), edm::Event::getByToken(), edm::Event::getRefBeforePut(), TrajectoryStateOnSurface::globalParameters(), mps_fire::i, heavyIonCSV_trainingSettings::idx, edm::ESHandleBase::isValid(), Trajectory::lastMeasurement(), measurementTrkToken_, GlobalTrajectoryParameters::momentum(), eostools::move(), myTrajectoryInEvent_, AlCaHLTBitMon_ParallelJobs::p, GlobalTrajectoryParameters::position(), edm::Event::put(), TrajectoryMeasurement::recHit(), rTracks_, Trajectory::seedRef(), reco::TrackExtraBase::setHits(), TrackProducerBase< reco::Track >::setSecondHitPattern(), reco::TrackExtraBase::setTrajParams(), submitPVValidationJobs::t, TrackProducerBase< reco::Track >::theSchool, HLT_FULL_cff::track, TrackProducerBase< reco::Track >::trajectoryInEvent_, TrajectoryMeasurement::updatedState(), and findQualityFiles::v.

Referenced by produce().

Member Data Documentation

◆ assoc_token

edm::EDGetTokenT<reco::TrackCandidateCaloClusterPtrAssociation> TrackProducerWithSCAssociation::assoc_token
private

Definition at line 33 of file TrackProducerWithSCAssociation.h.

Referenced by produce(), and TrackProducerWithSCAssociation().

◆ conversionTrackCandidateProducer_

std::string TrackProducerWithSCAssociation::conversionTrackCandidateProducer_
private

Definition at line 30 of file TrackProducerWithSCAssociation.h.

Referenced by TrackProducerWithSCAssociation().

◆ measurementTrkToken_

edm::EDGetTokenT<MeasurementTrackerEvent> TrackProducerWithSCAssociation::measurementTrkToken_
private

Definition at line 35 of file TrackProducerWithSCAssociation.h.

Referenced by putInEvt(), and TrackProducerWithSCAssociation().

◆ myname_

std::string TrackProducerWithSCAssociation::myname_
private

Definition at line 28 of file TrackProducerWithSCAssociation.h.

Referenced by TrackProducerWithSCAssociation().

◆ myTrajectoryInEvent_

bool TrackProducerWithSCAssociation::myTrajectoryInEvent_
private

Definition at line 36 of file TrackProducerWithSCAssociation.h.

Referenced by putInEvt(), and TrackProducerWithSCAssociation().

◆ rTracks_

edm::OrphanHandle<reco::TrackCollection> TrackProducerWithSCAssociation::rTracks_
private

Definition at line 34 of file TrackProducerWithSCAssociation.h.

Referenced by produce(), and putInEvt().

◆ theAlgo

TrackProducerAlgorithm<reco::Track> TrackProducerWithSCAssociation::theAlgo
private

Definition at line 29 of file TrackProducerWithSCAssociation.h.

Referenced by getTransient(), and produce().

◆ trackCSuperClusterAssociationCollection_

std::string TrackProducerWithSCAssociation::trackCSuperClusterAssociationCollection_
private

Definition at line 31 of file TrackProducerWithSCAssociation.h.

Referenced by produce(), and TrackProducerWithSCAssociation().

◆ trackSuperClusterAssociationCollection_

std::string TrackProducerWithSCAssociation::trackSuperClusterAssociationCollection_
private

Definition at line 32 of file TrackProducerWithSCAssociation.h.

Referenced by produce(), and TrackProducerWithSCAssociation().

◆ validTrackCandidateSCAssociationInput_

bool TrackProducerWithSCAssociation::validTrackCandidateSCAssociationInput_
private

Definition at line 37 of file TrackProducerWithSCAssociation.h.

Referenced by produce().

Vector3DBase
Definition: Vector3DBase.h:8
TrackCandidate::trajectoryStateOnDet
PTrajectoryStateOnDet const & trajectoryStateOnDet() const
Definition: TrackCandidate.h:55
edm::RefProd< TrackingRecHitCollection >
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
edm::Event::getRefBeforePut
RefProd< PROD > getRefBeforePut()
Definition: Event.h:158
TrackProducerWithSCAssociation::trackSuperClusterAssociationCollection_
std::string trackSuperClusterAssociationCollection_
Definition: TrackProducerWithSCAssociation.h:32
TrackProducerBase< reco::Track >::getFromES
virtual void getFromES(const edm::EventSetup &, edm::ESHandle< TrackerGeometry > &, edm::ESHandle< MagneticField > &, edm::ESHandle< TrajectoryFitter > &, edm::ESHandle< Propagator > &, edm::ESHandle< MeasurementTracker > &, edm::ESHandle< TransientTrackingRecHitBuilder > &)
Get needed services from the Event Setup.
TrackProducerBase< reco::Track >::getFromEvt
virtual void getFromEvt(edm::Event &, edm::Handle< TrackCandidateCollection > &, reco::BeamSpot &)
Get TrackCandidateCollection from the Event (needed by TrackProducer)
mps_fire.i
i
Definition: mps_fire.py:428
TrackProducerWithSCAssociation::theAlgo
TrackProducerAlgorithm< reco::Track > theAlgo
Definition: TrackProducerWithSCAssociation.h:29
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11779
edm::Handle::product
T const * product() const
Definition: Handle.h:70
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
Trajectory::seedRef
edm::RefToBase< TrajectorySeed > seedRef(void) const
Definition: Trajectory.h:303
GlobalTrajectoryParameters::position
GlobalPoint position() const
Definition: GlobalTrajectoryParameters.h:60
Trajectory::direction
PropagationDirection const & direction() const
Definition: Trajectory.cc:133
TrackerTopology
Definition: TrackerTopology.h:16
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
TrackProducerBase< reco::Track >::setConf
void setConf(const edm::ParameterSet &conf)
Set parameter set.
Definition: TrackProducerBase.h:71
TrackCandidate::recHits
edm::Range< RecHitContainer::const_iterator > recHits() const
Definition: TrackCandidate.h:57
generateEDF.cont
cont
load Luminosity info ##
Definition: generateEDF.py:629
TrackProducerBase< reco::Track >::AlgoProductCollection
typename Base::AlgoProductCollection AlgoProductCollection
Definition: TrackProducerBase.h:44
TrajectoryMeasurement::updatedState
TrajectoryStateOnSurface const & updatedState() const
Definition: TrajectoryMeasurement.h:184
TrackProducerWithSCAssociation::measurementTrkToken_
edm::EDGetTokenT< MeasurementTrackerEvent > measurementTrkToken_
Definition: TrackProducerWithSCAssociation.h:35
Propagator::magneticField
virtual const MagneticField * magneticField() const =0
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
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
convertSQLiteXML.ok
bool ok
Definition: convertSQLiteXML.py:98
TrackProducerBase< reco::Track >::setSecondHitPattern
void setSecondHitPattern(Trajectory *traj, reco::Track &track, const Propagator *prop, const MeasurementTrackerEvent *measTk, const TrackerTopology *ttopo)
edm::Handle< TrackCandidateCollection >
rpcPointValidation_cfi.recHit
recHit
Definition: rpcPointValidation_cfi.py:7
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
edm::Ref
Definition: AssociativeIterator.h:58
heavyIonCSV_trainingSettings.idx
idx
Definition: heavyIonCSV_trainingSettings.py:5
ndof
Definition: HIMultiTrackSelector.h:49
fileCollector.seed
seed
Definition: fileCollector.py:127
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
edm::ValueMap::empty
bool empty() const
Definition: ValueMap.h:158
TrackProducerBase< reco::Track >::setClusterRemovalInfo
void setClusterRemovalInfo(const edm::InputTag &clusterRemovalInfo)
Sets the information on cluster removal, and turns it on.
Definition: TrackProducerBase.h:89
TrackingRecHit::RecHitContainer
std::vector< ConstRecHitPointer > RecHitContainer
Definition: TrackingRecHit.h:31
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
TrackProducerAlgorithm::runWithCandidate
void runWithCandidate(const TrackingGeometry *, const MagneticField *, const TrackCandidateCollection &, const TrajectoryFitter *, const Propagator *, const TransientTrackingRecHitBuilder *, const reco::BeamSpot &, AlgoProductCollection &)
Run the Final Fit taking TrackCandidates as input.
TrackCandidate::seedRef
edm::RefToBase< TrajectorySeed > seedRef() const
Definition: TrackCandidate.h:74
dumpMFGeometry_cfg.prod
prod
Definition: dumpMFGeometry_cfg.py:24
reco::BeamSpot
Definition: BeamSpot.h:21
reco::Track
Definition: Track.h:27
edm::ESHandle< TrackerGeometry >
reco::TrackExtraCollection
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:10
TrackProducerBase< reco::Track >::setAlias
void setAlias(std::string alias)
set the aliases of produced collections
Definition: TrackProducerBase.h:83
benchmark_cfg.fc
fc
Definition: benchmark_cfg.py:15
edm::Event::getByToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:531
TrackProducerWithSCAssociation::putInEvt
void putInEvt(edm::Event &evt, const Propagator *thePropagator, const MeasurementTracker *theMeasTk, std::unique_ptr< TrackingRecHitCollection > selHits, std::unique_ptr< reco::TrackCollection > selTracks, std::unique_ptr< reco::TrackExtraCollection > selTrackExtras, std::unique_ptr< std::vector< Trajectory >> selTrajectories, AlgoProductCollection &algoResults, TransientTrackingRecHitBuilder const *hitBuilder, const TrackerTopology *ttopo)
Definition: TrackProducerWithSCAssociation.cc:268
Point3DBase< float, GlobalTag >
TrackProducerWithSCAssociation::myTrajectoryInEvent_
bool myTrajectoryInEvent_
Definition: TrackProducerWithSCAssociation.h:36
GlobalTrajectoryParameters::momentum
GlobalVector momentum() const
Definition: GlobalTrajectoryParameters.h:65
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
reco::TrackExtraBase::setTrajParams
void setTrajParams(TrajParams tmps, Chi2sFive chi2s)
Definition: TrackExtraBase.h:36
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
edm::HandleBase::failedToGet
bool failedToGet() const
Definition: HandleBase.h:72
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
TrackCandidate
Definition: TrackCandidate.h:24
Trajectory::lastMeasurement
TrajectoryMeasurement const & lastMeasurement() const
Definition: Trajectory.h:150
trigObjTnPSource_cfi.filler
filler
Definition: trigObjTnPSource_cfi.py:21
Traj2TrackHits
Definition: Traj2TrackHits.h:16
TrackProducerBase< reco::Track >::alias_
std::string alias_
Definition: TrackProducerBase.h:107
math::XYZVector
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:31
reco::TrackExtraRef
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
Definition: TrackExtraFwd.h:16
TrackCandidate::seed
TrajectorySeed const & seed() const
Definition: TrackCandidate.h:60
TrackProducerWithSCAssociation::rTracks_
edm::OrphanHandle< reco::TrackCollection > rTracks_
Definition: TrackProducerWithSCAssociation.h:34
trajectoryStateTransform::transientState
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
Definition: TrajectoryStateTransform.cc:35
edm::Event::put
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
TrackProducerBase< reco::Track >::trajectoryInEvent_
bool trajectoryInEvent_
Definition: TrackProducerBase.h:108
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
edm::Ref::key_type
std::remove_cv< typename std::remove_reference< argument_type >::type >::type key_type
Definition: Ref.h:164
TrackProducerBase< reco::Track >::setSrc
void setSrc(const edm::EDGetToken &src, const edm::EDGetTokenT< reco::BeamSpot > &bsSrc, const edm::EDGetTokenT< MeasurementTrackerEvent > &mteSrc)
set label of source collection
Definition: TrackProducerBase.h:74
reco::TrackExtraBase::setHits
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
Definition: TrackExtraBase.h:30
edm::Ptr
Definition: AssociationVector.h:31
TrajectoryMeasurement::recHit
ConstRecHitPointer const & recHit() const
Definition: TrajectoryMeasurement.h:190
TrackProducerWithSCAssociation::validTrackCandidateSCAssociationInput_
bool validTrackCandidateSCAssociationInput_
Definition: TrackProducerWithSCAssociation.h:37
eostools.move
def move(src, dest)
Definition: eostools.py:511
edm::OrphanHandle
Definition: EDProductfwd.h:39
Trajectory::firstMeasurement
TrajectoryMeasurement const & firstMeasurement() const
Definition: Trajectory.h:166
RunInfoPI::state
state
Definition: RunInfoPayloadInspectoHelper.h:16
FitterCloner
Definition: TrackProducerAlgorithm.h:30
reco::TrackExtraBase::Chi2sFive
std::vector< unsigned char > Chi2sFive
Definition: TrackExtraBase.h:25
Trajectory
Definition: Trajectory.h:38
TrackProducerWithSCAssociation::assoc_token
edm::EDGetTokenT< reco::TrackCandidateCaloClusterPtrAssociation > assoc_token
Definition: TrackProducerWithSCAssociation.h:33
edm::ValueMap
Definition: ValueMap.h:107
TrajectoryStateOnSurface::curvilinearError
const CurvilinearTrajectoryError & curvilinearError() const
Definition: TrajectoryStateOnSurface.h:72
PropagationDirection
PropagationDirection
Definition: PropagationDirection.h:4
edm::EventBase::id
edm::EventID id() const
Definition: EventBase.h:59
TrackProducerWithSCAssociation::trackCSuperClusterAssociationCollection_
std::string trackCSuperClusterAssociationCollection_
Definition: TrackProducerWithSCAssociation.h:31
TrajectorySeed
Definition: TrajectorySeed.h:18
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TrackProducerWithSCAssociation::myname_
std::string myname_
Definition: TrackProducerWithSCAssociation.h:28
TrackProducerAlgorithm::buildTrack
bool buildTrack(const TrajectoryFitter *, const Propagator *, AlgoProductCollection &, TransientTrackingRecHit::RecHitContainer &, TrajectoryStateOnSurface &, const TrajectorySeed &, float, const reco::BeamSpot &, SeedRef seedRef=SeedRef(), int qualityMask=0, signed char nLoops=0)
Construct Tracks to be put in the event.
cms::Exception
Definition: Exception.h:70
edm::helper::Filler
Definition: ValueMap.h:22
TrajectoryStateOnSurface::globalParameters
const GlobalTrajectoryParameters & globalParameters() const
Definition: TrajectoryStateOnSurface.h:64
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
PTrajectoryStateOnDet
Definition: PTrajectoryStateOnDet.h:10
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
TrackProducerBase< reco::Track >
submitPVValidationJobs.t
string t
Definition: submitPVValidationJobs.py:644
reco::TrackExtraBase::TrajParams
std::vector< LocalTrajectoryParameters > TrajParams
Definition: TrackExtraBase.h:24
edm::InputTag
Definition: InputTag.h:15
alongMomentum
Definition: PropagationDirection.h:4
hit
Definition: SiStripHitEffFromCalibTree.cc:88
TrackProducerWithSCAssociation::conversionTrackCandidateProducer_
std::string conversionTrackCandidateProducer_
Definition: TrackProducerWithSCAssociation.h:30
edm::OwnVector< TrackingRecHit >
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
TrackProducerBase< reco::Track >::theSchool
edm::ESHandle< NavigationSchool > theSchool
Definition: TrackProducerBase.h:116