CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes
TrackCollectionCloner::Producer Struct Reference

#include <TrackCollectionCloner.h>

Public Member Functions

void operator() (Tokens const &tokens, std::vector< unsigned int > const &selected)
 process one event More...
 
 Producer (edm::Event &ievt, TrackCollectionCloner const &cloner)
 
 ~Producer ()
 

Public Attributes

bool copyExtras_
 copy only the tracks, not extras and rechits (for AOD) More...
 
bool copyTrajectories_
 copy also trajectories and trajectory->track associations More...
 
edm::Eventevt
 the event More...
 
std::unique_ptr
< TrackingRecHitCollection
selHits_
 
std::unique_ptr
< reco::TrackExtraCollection
selTrackExtras_
 
std::unique_ptr
< reco::TrackCollection
selTracks_
 
std::unique_ptr< std::vector
< Trajectory > > 
selTrajs_
 
std::unique_ptr
< TrajTrackAssociationCollection
selTTAss_
 

Detailed Description

Definition at line 53 of file TrackCollectionCloner.h.

Constructor & Destructor Documentation

TrackCollectionCloner::Producer::Producer ( edm::Event ievt,
TrackCollectionCloner const &  cloner 
)

Definition at line 4 of file TrackCollectionCloner.cc.

References copyExtras_, copyTrajectories_, evt, edm::Event::getRefBeforePut(), selHits_, selTrackExtras_, selTracks_, selTrajs_, and selTTAss_.

4  :
5  copyExtras_(cloner.copyExtras_), copyTrajectories_(cloner.copyTrajectories_), evt(ievt) {
6  selTracks_ = std::make_unique<reco::TrackCollection>();
7  if (copyExtras_) {
8  selTrackExtras_ = std::make_unique<reco::TrackExtraCollection>();
9  selHits_ = std::make_unique<TrackingRecHitCollection>();
10  }
11  if ( copyTrajectories_ ) {
12  selTrajs_ = std::make_unique< std::vector<Trajectory> >();
13  selTTAss_ = std::make_unique< TrajTrackAssociationCollection >(evt.getRefBeforePut< std::vector<Trajectory> >(), evt.getRefBeforePut<reco::TrackCollection>());
14  }
15 
16 }
std::unique_ptr< std::vector< Trajectory > > selTrajs_
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
std::unique_ptr< reco::TrackCollection > selTracks_
std::unique_ptr< TrackingRecHitCollection > selHits_
bool copyTrajectories_
copy also trajectories and trajectory-&gt;track associations
RefProd< PROD > getRefBeforePut()
Definition: Event.h:140
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_
TrackCollectionCloner::Producer::~Producer ( )

Definition at line 75 of file TrackCollectionCloner.cc.

References assert(), TrackCollectionCloner::copyExtras_, TrackCollectionCloner::copyTrajectories_, and eostools::move().

75  {
76  selTracks_->shrink_to_fit();
77  auto tsize = selTracks_->size();
79  if (copyExtras_) {
80  selTrackExtras_->shrink_to_fit();
81  assert(selTrackExtras_->size()==tsize);
82  selHits_->shrink_to_fit();
85  }
86  if ( copyTrajectories_ ) {
87  selTrajs_->shrink_to_fit();
88  assert(selTrajs_->size()==tsize);
89  assert(selTTAss_->size()==tsize);
92 
93  }
94 }
std::unique_ptr< std::vector< Trajectory > > selTrajs_
assert(m_qm.get())
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
std::unique_ptr< reco::TrackCollection > selTracks_
std::unique_ptr< TrackingRecHitCollection > selHits_
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
bool copyTrajectories_
copy also trajectories and trajectory-&gt;track associations
def move
Definition: eostools.py:510
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_

Member Function Documentation

void TrackCollectionCloner::Producer::operator() ( Tokens const &  tokens,
std::vector< unsigned int > const &  selected 
)

process one event

Definition at line 20 of file TrackCollectionCloner.cc.

References assert(), TrackCollectionCloner::copyExtras_, TrackCollectionCloner::copyTrajectories_, relval_steps::k, TrackCollectionTokens::tracks(), and TrackCollectionTokens::trajectories().

20  {
21 
22  auto rTracks = evt.getRefBeforePut<reco::TrackCollection>();
23 
25  reco::TrackExtraRefProd rTrackExtras;
26  if (copyExtras_) {
29  }
30 
32  if ( copyTrajectories_ ) {
33  trajRefProd = evt.getRefBeforePut< std::vector<Trajectory> >();
34  }
35 
36  std::vector<Trajectory> dummy;
37 
38  auto const & trajIn = copyTrajectories_ ? tokens.trajectories(evt) : dummy;
39 
40  auto const & tracksIn = tokens.tracks(evt);
41  for (auto k : selected) {
42  auto const & trk = tracksIn[k];
43  selTracks_->emplace_back( trk ); // clone and store
44  if (copyTrajectories_) {
45  // we assume tracks and trajectories are one-to-one and the assocMap is useless
46  selTrajs_->emplace_back(trajIn[k]);
47  assert(selTrajs_->back().measurements().size()==trk.recHitsSize());
48  selTTAss_->insert ( edm::Ref< std::vector<Trajectory> >(trajRefProd, selTrajs_->size() - 1),
49  reco::TrackRef(rTracks, selTracks_->size() - 1)
50  );
51  }
52 
53  if (!copyExtras_) continue;
54 
55  // TrackExtras
56  selTrackExtras_->emplace_back( trk.outerPosition(), trk.outerMomentum(), trk.outerOk(),
57  trk.innerPosition(), trk.innerMomentum(), trk.innerOk(),
58  trk.outerStateCovariance(), trk.outerDetId(),
59  trk.innerStateCovariance(), trk.innerDetId(),
60  trk.seedDirection(), trk.seedRef()
61  );
62  selTracks_->back().setExtra( reco::TrackExtraRef( rTrackExtras, selTrackExtras_->size() - 1) );
63  auto & tx = selTrackExtras_->back();
64  tx.setResiduals(trk.residuals());
65  auto nh1=trk.recHitsSize();
66  tx.setHits(rHits,selHits_->size(),nh1);
67  // TrackingRecHits
68  for( auto hit = trk.recHitsBegin(); hit != trk.recHitsEnd(); ++ hit ) {
69  selHits_->push_back( (*hit)->clone() );
70  }
71  }
72 
73 }
std::unique_ptr< std::vector< Trajectory > > selTrajs_
assert(m_qm.get())
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
std::unique_ptr< reco::TrackCollection > selTracks_
std::unique_ptr< TrackingRecHitCollection > selHits_
bool copyTrajectories_
copy also trajectories and trajectory-&gt;track associations
RefProd< PROD > getRefBeforePut()
Definition: Event.h:140
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:11
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
std::unique_ptr< TrajTrackAssociationCollection > selTTAss_

Member Data Documentation

bool TrackCollectionCloner::Producer::copyExtras_

copy only the tracks, not extras and rechits (for AOD)

Definition at line 61 of file TrackCollectionCloner.h.

Referenced by Producer().

bool TrackCollectionCloner::Producer::copyTrajectories_

copy also trajectories and trajectory->track associations

Definition at line 63 of file TrackCollectionCloner.h.

Referenced by Producer().

edm::Event& TrackCollectionCloner::Producer::evt

the event

Definition at line 66 of file TrackCollectionCloner.h.

Referenced by Producer().

std::unique_ptr<TrackingRecHitCollection> TrackCollectionCloner::Producer::selHits_

Definition at line 70 of file TrackCollectionCloner.h.

Referenced by Producer().

std::unique_ptr<reco::TrackExtraCollection> TrackCollectionCloner::Producer::selTrackExtras_

Definition at line 69 of file TrackCollectionCloner.h.

Referenced by Producer().

std::unique_ptr<reco::TrackCollection> TrackCollectionCloner::Producer::selTracks_

Definition at line 68 of file TrackCollectionCloner.h.

Referenced by Producer().

std::unique_ptr< std::vector<Trajectory> > TrackCollectionCloner::Producer::selTrajs_

Definition at line 71 of file TrackCollectionCloner.h.

Referenced by Producer().

std::unique_ptr< TrajTrackAssociationCollection > TrackCollectionCloner::Producer::selTTAss_

Definition at line 72 of file TrackCollectionCloner.h.

Referenced by Producer().