CMS 3D CMS Logo

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

#include <RecoTrackAccumulator.h>

Inheritance diagram for RecoTrackAccumulator:
DigiAccumulatorMixMod

Public Member Functions

void accumulate (edm::Event const &e, edm::EventSetup const &c) override
 
void accumulate (PileUpEventPrincipal const &e, edm::EventSetup const &c, edm::StreamID const &) override
 
void finalizeEvent (edm::Event &e, edm::EventSetup const &c) override
 
void initializeEvent (edm::Event const &e, edm::EventSetup const &c) override
 
 RecoTrackAccumulator (const edm::ParameterSet &conf, edm::ProducesCollector, edm::ConsumesCollector &iC)
 
 ~RecoTrackAccumulator () override
 
- Public Member Functions inherited from DigiAccumulatorMixMod
virtual void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void beginRun (edm::Run const &run, edm::EventSetup const &setup)
 
 DigiAccumulatorMixMod ()
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
 
virtual void endRun (edm::Run const &run, edm::EventSetup const &setup)
 
virtual void finalizeBunchCrossing (edm::Event &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual PileupMixingContentgetEventPileupInfo ()
 
virtual void initializeBunchCrossing (edm::Event const &event, edm::EventSetup const &setup, int bunchCrossing)
 
virtual void StorePileupInformation (std::vector< int > &numInteractionList, std::vector< int > &bunchCrossingList, std::vector< float > &TrueInteractionList, std::vector< edm::EventID > &eventList, int bunchSpace)
 
virtual ~DigiAccumulatorMixMod ()
 

Private Member Functions

template<class T >
void accumulateEvent (const T &e, edm::EventSetup const &c, const edm::InputTag &label)
 

Private Attributes

std::unique_ptr< TrackingRecHitCollectionnewHits_
 
std::unique_ptr< reco::TrackExtraCollectionnewTrackExtras_
 
std::unique_ptr< reco::TrackCollectionnewTracks_
 
std::string outputLabel
 
edm::InputTag pileUpTracksTag
 
TrackingRecHitRefProd rNewHits
 
reco::TrackExtraRefProd rNewTrackExtras
 
reco::TrackRefProd rNewTracks
 
edm::InputTag signalTracksTag
 

Detailed Description

RecoTrackAccumulator accumulates generalTracks from the hard and the pileup events

Author
Andrea Giammanco
Version
Mar 11 2013

Definition at line 33 of file RecoTrackAccumulator.h.

Constructor & Destructor Documentation

◆ RecoTrackAccumulator()

RecoTrackAccumulator::RecoTrackAccumulator ( const edm::ParameterSet conf,
edm::ProducesCollector  producesCollector,
edm::ConsumesCollector iC 
)
explicit

◆ ~RecoTrackAccumulator()

RecoTrackAccumulator::~RecoTrackAccumulator ( )
override

Definition at line 22 of file RecoTrackAccumulator.cc.

22 {}

Member Function Documentation

◆ accumulate() [1/2]

void RecoTrackAccumulator::accumulate ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 35 of file RecoTrackAccumulator.cc.

35  {
37 }

References accumulateEvent(), MillePedeFileConverter_cfg::e, and signalTracksTag.

◆ accumulate() [2/2]

void RecoTrackAccumulator::accumulate ( PileUpEventPrincipal const &  e,
edm::EventSetup const &  c,
edm::StreamID const &   
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 39 of file RecoTrackAccumulator.cc.

41  {
42  if (e.bunchCrossing() == 0) {
44  }
45 }

References accumulateEvent(), MillePedeFileConverter_cfg::e, and pileUpTracksTag.

◆ accumulateEvent()

template<class T >
void RecoTrackAccumulator::accumulateEvent ( const T e,
edm::EventSetup const &  c,
const edm::InputTag label 
)
private

Definition at line 54 of file RecoTrackAccumulator.cc.

54  {
58  e.getByLabel(label, tracks);
59  e.getByLabel(label, hits);
60  e.getByLabel(label, trackExtras);
61 
62  if (!tracks.isValid()) {
63  throw cms::Exception("RecoTrackAccumulator")
64  << "Failed to find track collections with inputTag " << label << std::endl;
65  }
66  if (!hits.isValid()) {
67  throw cms::Exception("RecoTrackAccumulator")
68  << "Failed to find hit collections with inputTag " << label << std::endl;
69  }
70  if (!trackExtras.isValid()) {
71  throw cms::Exception("RecoTrackAccumulator")
72  << "Failed to find trackExtra collections with inputTag " << label << std::endl;
73  }
74 
75  for (size_t t = 0; t < tracks->size(); ++t) {
76  const reco::Track& track = (*tracks)[t];
77  newTracks_->push_back(track);
78  // track extras:
79  auto const& extra = trackExtras->at(track.extra().key());
80  newTrackExtras_->emplace_back(extra.outerPosition(),
81  extra.outerMomentum(),
82  extra.outerOk(),
83  extra.innerPosition(),
84  extra.innerMomentum(),
85  extra.innerOk(),
86  extra.outerStateCovariance(),
87  extra.outerDetId(),
88  extra.innerStateCovariance(),
89  extra.innerDetId(),
90  extra.seedDirection(),
91  //If TrajectorySeeds are needed, then their list must be gotten from the
92  // secondary event directly and looked up similarly to TrackExtras.
93  //We can't use a default constructed RefToBase due to a bug in RefToBase
94  // which causes an seg fault when calling isAvailable on a default constructed one.
96  newTracks_->back().setExtra(reco::TrackExtraRef(rNewTrackExtras, newTracks_->size() - 1));
97  // rechits:
98  // note: extra.recHit(i) does not work for pileup events
99  // probably the Ref does not know its product id applies on a pileup event
100  auto& newExtra = newTrackExtras_->back();
101  auto const firstTrackIndex = newHits_->size();
102  for (unsigned int i = 0; i < extra.recHitsSize(); i++) {
103  newHits_->push_back((*hits)[extra.recHit(i).key()]);
104  }
105  newExtra.setHits(rNewHits, firstTrackIndex, newHits_->size() - firstTrackIndex);
106  newExtra.setTrajParams(extra.trajParams(), extra.chi2sX5());
107  assert(newExtra.recHitsSize() == newExtra.trajParams().size());
108  }
109 }

References cms::cuda::assert(), MillePedeFileConverter_cfg::e, Exception, hfClusterShapes_cfi::hits, mps_fire::i, edm::HandleBase::isValid(), label, newHits_, newTrackExtras_, newTracks_, rNewHits, rNewTrackExtras, OrderedSet::t, HLT_2018_cff::track, and PDWG_EXOHSCP_cff::tracks.

Referenced by accumulate().

◆ finalizeEvent()

void RecoTrackAccumulator::finalizeEvent ( edm::Event e,
edm::EventSetup const &  c 
)
overridevirtual

◆ initializeEvent()

void RecoTrackAccumulator::initializeEvent ( edm::Event const &  e,
edm::EventSetup const &  c 
)
overridevirtual

Implements DigiAccumulatorMixMod.

Definition at line 24 of file RecoTrackAccumulator.cc.

24  {
25  newTracks_ = std::unique_ptr<reco::TrackCollection>(new reco::TrackCollection);
26  newHits_ = std::unique_ptr<TrackingRecHitCollection>(new TrackingRecHitCollection);
27  newTrackExtras_ = std::unique_ptr<reco::TrackExtraCollection>(new reco::TrackExtraCollection);
28 
29  // this is needed to get the ProductId of the TrackExtra and TrackingRecHit and Track collections
30  rNewTracks = const_cast<edm::Event&>(e).getRefBeforePut<reco::TrackCollection>(outputLabel);
31  rNewTrackExtras = const_cast<edm::Event&>(e).getRefBeforePut<reco::TrackExtraCollection>(outputLabel);
32  rNewHits = const_cast<edm::Event&>(e).getRefBeforePut<TrackingRecHitCollection>(outputLabel);
33 }

References MillePedeFileConverter_cfg::e, newHits_, newTrackExtras_, newTracks_, outputLabel, rNewHits, rNewTrackExtras, and rNewTracks.

Member Data Documentation

◆ newHits_

std::unique_ptr<TrackingRecHitCollection> RecoTrackAccumulator::newHits_
private

Definition at line 49 of file RecoTrackAccumulator.h.

Referenced by accumulateEvent(), finalizeEvent(), and initializeEvent().

◆ newTrackExtras_

std::unique_ptr<reco::TrackExtraCollection> RecoTrackAccumulator::newTrackExtras_
private

Definition at line 48 of file RecoTrackAccumulator.h.

Referenced by accumulateEvent(), finalizeEvent(), and initializeEvent().

◆ newTracks_

std::unique_ptr<reco::TrackCollection> RecoTrackAccumulator::newTracks_
private

Definition at line 47 of file RecoTrackAccumulator.h.

Referenced by accumulateEvent(), finalizeEvent(), and initializeEvent().

◆ outputLabel

std::string RecoTrackAccumulator::outputLabel
private

Definition at line 58 of file RecoTrackAccumulator.h.

Referenced by finalizeEvent(), initializeEvent(), and RecoTrackAccumulator().

◆ pileUpTracksTag

edm::InputTag RecoTrackAccumulator::pileUpTracksTag
private

Definition at line 56 of file RecoTrackAccumulator.h.

Referenced by accumulate().

◆ rNewHits

TrackingRecHitRefProd RecoTrackAccumulator::rNewHits
private

Definition at line 53 of file RecoTrackAccumulator.h.

Referenced by accumulateEvent(), and initializeEvent().

◆ rNewTrackExtras

reco::TrackExtraRefProd RecoTrackAccumulator::rNewTrackExtras
private

Definition at line 52 of file RecoTrackAccumulator.h.

Referenced by accumulateEvent(), and initializeEvent().

◆ rNewTracks

reco::TrackRefProd RecoTrackAccumulator::rNewTracks
private

Definition at line 51 of file RecoTrackAccumulator.h.

Referenced by initializeEvent().

◆ signalTracksTag

edm::InputTag RecoTrackAccumulator::signalTracksTag
private

Definition at line 55 of file RecoTrackAccumulator.h.

Referenced by accumulate(), and RecoTrackAccumulator().

PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:355
RecoTrackAccumulator::pileUpTracksTag
edm::InputTag pileUpTracksTag
Definition: RecoTrackAccumulator.h:56
RecoTrackAccumulator::accumulateEvent
void accumulateEvent(const T &e, edm::EventSetup const &c, const edm::InputTag &label)
Definition: RecoTrackAccumulator.cc:54
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
RecoTrackAccumulator::rNewTrackExtras
reco::TrackExtraRefProd rNewTrackExtras
Definition: RecoTrackAccumulator.h:52
cms::cuda::assert
assert(be >=bs)
edm::Handle< reco::TrackCollection >
edm::Ref
Definition: AssociativeIterator.h:58
reco::Track
Definition: Track.h:27
reco::TrackExtraCollection
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:10
RecoTrackAccumulator::newTracks_
std::unique_ptr< reco::TrackCollection > newTracks_
Definition: RecoTrackAccumulator.h:47
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:49
OrderedSet.t
t
Definition: OrderedSet.py:90
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
RecoTrackAccumulator::rNewTracks
reco::TrackRefProd rNewTracks
Definition: RecoTrackAccumulator.h:51
RecoTrackAccumulator::newHits_
std::unique_ptr< TrackingRecHitCollection > newHits_
Definition: RecoTrackAccumulator.h:49
edm::ProducesCollector::produces
ProductRegistryHelper::BranchAliasSetterT< ProductType > produces()
Definition: ProducesCollector.h:52
RecoTrackAccumulator::rNewHits
TrackingRecHitRefProd rNewHits
Definition: RecoTrackAccumulator.h:53
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
eostools.move
def move(src, dest)
Definition: eostools.py:511
RecoTrackAccumulator::newTrackExtras_
std::unique_ptr< reco::TrackExtraCollection > newTrackExtras_
Definition: RecoTrackAccumulator.h:48
RecoTrackAccumulator::signalTracksTag
edm::InputTag signalTracksTag
Definition: RecoTrackAccumulator.h:55
Exception
Definition: hltDiff.cc:246
edm::RefToBase< TrajectorySeed >
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
label
const char * label
Definition: PFTauDecayModeTools.cc:11
edm::OwnVector< TrackingRecHit >
RecoTrackAccumulator::outputLabel
std::string outputLabel
Definition: RecoTrackAccumulator.h:58
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37