CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
helper::TrackCollectionStoreManager Struct Reference

Class to manage copying of RecHits and Clusters from Tracks. More...

#include <TrackSelector.h>

Public Types

typedef reco::TrackCollection collection
 

Public Member Functions

template<typename I >
void cloneAndStore (const I &begin, const I &end, edm::Event &evt)
 Method to clone tracks, track extras and their hits and clusters. typename I = this is an interator over a track collection, **I needs to dereference into a Track. More...
 
bool cloneClusters ()
 
edm::OrphanHandle< reco::TrackCollectionput (edm::Event &evt)
 Put tracks, track extras and hits+clusters into the event. More...
 
void setCloneClusters (bool w)
 
size_t size () const
 Get the size. More...
 
 TrackCollectionStoreManager (const edm::Handle< reco::TrackCollection > &)
 

Private Member Functions

void processTrack (const reco::Track &trk)
 Process a single track. More...
 

Private Attributes

bool cloneClusters_
 Clone clusters, or not? Default: true. More...
 
ClusterStorer clusterStorer_
 
size_t hidx_
 index to tracking rec hits More...
 
size_t idx_
 index to track extra coll More...
 
TrackingRecHitRefProd rHits_
 
reco::TrackExtraRefProd rTrackExtras_
 
reco::TrackRefProd rTracks_
 
std::unique_ptr< TrackingRecHitCollectionselHits_
 
std::unique_ptr< edmNew::DetSetVector< Phase2TrackerCluster1D > > selPhase2OTClusters_
 
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
 
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
 
std::unique_ptr< reco::TrackExtraCollectionselTrackExtras_
 
std::unique_ptr< reco::TrackCollectionselTracks_
 

Detailed Description

Class to manage copying of RecHits and Clusters from Tracks.

Definition at line 35 of file TrackSelector.h.

Member Typedef Documentation

◆ collection

typedef reco::TrackCollection helper::TrackCollectionStoreManager::collection

Definition at line 37 of file TrackSelector.h.

Constructor & Destructor Documentation

◆ TrackCollectionStoreManager()

helper::TrackCollectionStoreManager::TrackCollectionStoreManager ( const edm::Handle< reco::TrackCollection > &  )

Definition at line 7 of file TrackSelector.cc.

14  rTracks_(),
15  rTrackExtras_(),
16  rHits_(),
18  idx_(0),
19  hidx_(0),
20  cloneClusters_(true) {}
std::unique_ptr< edmNew::DetSetVector< Phase2TrackerCluster1D > > selPhase2OTClusters_
Definition: TrackSelector.h:75
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:70
bool cloneClusters_
Clone clusters, or not? Default: true.
Definition: TrackSelector.h:90
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:71
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:72
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:10
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:87
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:73
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:79
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:74
size_t idx_
index to track extra coll
Definition: TrackSelector.h:86

Member Function Documentation

◆ cloneAndStore()

template<typename I >
void helper::TrackCollectionStoreManager::cloneAndStore ( const I &  begin,
const I &  end,
edm::Event evt 
)

Method to clone tracks, track extras and their hits and clusters. typename I = this is an interator over a track collection, **I needs to dereference into a Track.

< index to track extra coll

< index to tracking rec hits

Definition at line 101 of file TrackSelector.h.

References helper::ClusterStorer::clear(), clusterStorer_, hidx_, Exhume::I, mps_fire::i, idx_, helper::ClusterStorer::processAllClusters(), processTrack(), rHits_, rTrackExtras_, rTracks_, selPhase2OTClusters_, selPixelClusters_, selStripClusters_, and trk.

101  {
102  using namespace reco;
103 
104  rTracks_ = evt.template getRefBeforePut<TrackCollection>();
105  rTrackExtras_ = evt.template getRefBeforePut<TrackExtraCollection>();
106  rHits_ = evt.template getRefBeforePut<TrackingRecHitCollection>();
107  //--- New: save clusters too
109  evt.template getRefBeforePut<edmNew::DetSetVector<SiPixelCluster> >();
111  evt.template getRefBeforePut<edmNew::DetSetVector<SiStripCluster> >();
113  evt.template getRefBeforePut<edmNew::DetSetVector<Phase2TrackerCluster1D> >();
114 
115  //--- Indices into collections handled with RefProd
116  idx_ = 0;
117  hidx_ = 0;
119 
120  //--- Loop over tracks
121  for (I i = begin; i != end; ++i) {
122  //--- Whatever type the iterator i is, deref to reco::Track &
123  const reco::Track& trk = **i;
124  //--- Clone this track, and store references aside
125  processTrack(trk);
126  }
127  //--- Clone the clusters and fixup refs
129  rPixelClusters,
131  rStripClusters,
133  rPhase2OTClusters);
134  }
std::unique_ptr< edmNew::DetSetVector< Phase2TrackerCluster1D > > selPhase2OTClusters_
Definition: TrackSelector.h:75
Trktree trk
Definition: Trktree.cc:2
void processTrack(const reco::Track &trk)
Process a single track.
const std::complex< double > I
Definition: I.h:8
void processAllClusters(edmNew::DetSetVector< SiPixelCluster > &pixelDsvToFill, edm::RefProd< edmNew::DetSetVector< SiPixelCluster > > refPixelClusters, edmNew::DetSetVector< SiStripCluster > &stripDsvToFill, edm::RefProd< edmNew::DetSetVector< SiStripCluster > > refStripClusters, edmNew::DetSetVector< Phase2TrackerCluster1D > &phase2OTDsvToFill, edm::RefProd< edmNew::DetSetVector< Phase2TrackerCluster1D > > refPhase2OTClusters)
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:87
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:73
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:79
void clear()
clear records
fixed size matrix
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:74
size_t idx_
index to track extra coll
Definition: TrackSelector.h:86

◆ cloneClusters()

bool helper::TrackCollectionStoreManager::cloneClusters ( )
inline

Use these to turn off/on the cloning of clusters. The default is to clone them. To not clone (and save space in a quick local job, do: setCloneClusters(false);

Definition at line 47 of file TrackSelector.h.

References cloneClusters_.

Referenced by processTrack().

47 { return cloneClusters_; }
bool cloneClusters_
Clone clusters, or not? Default: true.
Definition: TrackSelector.h:90

◆ processTrack()

void helper::TrackCollectionStoreManager::processTrack ( const reco::Track trk)
private

Process a single track.

Definition at line 25 of file TrackSelector.cc.

References helper::ClusterStorer::addCluster(), cloneClusters(), clusterStorer_, hidx_, idx_, TrackingRecHit::isValid(), rHits_, rTrackExtras_, selHits_, selTrackExtras_, selTracks_, reco::TrackExtraBase::setHits(), DetId::Tracker, and trk.

Referenced by cloneAndStore().

25  {
26  selTracks_->push_back(Track(trk));
27  selTracks_->back().setExtra(TrackExtraRef(rTrackExtras_, idx_++));
28  selTrackExtras_->push_back(TrackExtra(trk.outerPosition(),
29  trk.outerMomentum(),
30  trk.outerOk(),
31  trk.innerPosition(),
32  trk.innerMomentum(),
33  trk.innerOk(),
34  trk.outerStateCovariance(),
35  trk.outerDetId(),
36  trk.innerStateCovariance(),
37  trk.innerDetId(),
38  trk.seedDirection()));
39  TrackExtra& tx = selTrackExtras_->back();
40  auto const firstHitIndex = hidx_;
41  unsigned int nHitsAdded = 0;
42  for (trackingRecHit_iterator hit = trk.recHitsBegin(); hit != trk.recHitsEnd(); ++hit, ++hidx_) {
43  selHits_->push_back((*hit)->clone());
44  TrackingRecHit* newHit = &(selHits_->back());
45  ++nHitsAdded;
46 
47  //--- Skip the rest for this hit if we don't want to clone the cluster.
48  //--- The copy constructer in the rec hit will copy the link properly.
49  if (cloneClusters() && newHit->isValid() && ((*hit)->geographicalId().det() == DetId::Tracker)) {
51  }
52  } // end of for loop over tracking rec hits on this track
53  tx.setHits(rHits_, firstHitIndex, nHitsAdded);
54 
55  } // end of track, and function
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
Trktree trk
Definition: Trktree.cc:2
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:70
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
Definition: TrackExtraFwd.h:16
void addCluster(TrackingRecHitCollection &hits, size_t index)
add cluster of newHit to list (throws if hit is of unknown type)
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:71
bool isValid() const
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:72
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:87
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:79
size_t idx_
index to track extra coll
Definition: TrackSelector.h:86

◆ put()

edm::OrphanHandle< reco::TrackCollection > helper::TrackCollectionStoreManager::put ( edm::Event evt)

Put tracks, track extras and hits+clusters into the event.

Definition at line 60 of file TrackSelector.cc.

References h, eostools::move(), edm::Event::put(), selHits_, selPhase2OTClusters_, selPixelClusters_, selStripClusters_, selTrackExtras_, and selTracks_.

60  {
63  evt.put(std::move(selHits_));
67  return h;
68  }
std::unique_ptr< edmNew::DetSetVector< Phase2TrackerCluster1D > > selPhase2OTClusters_
Definition: TrackSelector.h:75
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:70
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:71
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:72
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:73
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:74
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
def move(src, dest)
Definition: eostools.py:511

◆ setCloneClusters()

void helper::TrackCollectionStoreManager::setCloneClusters ( bool  w)
inline

Definition at line 48 of file TrackSelector.h.

References cloneClusters_, and w().

48 { cloneClusters_ = w; }
T w() const
bool cloneClusters_
Clone clusters, or not? Default: true.
Definition: TrackSelector.h:90

◆ size()

size_t helper::TrackCollectionStoreManager::size ( void  ) const
inline

Get the size.

Definition at line 58 of file TrackSelector.h.

References selTracks_.

Referenced by ntupleDataFormat._Collection::__iter__(), and ntupleDataFormat._Collection::__len__().

58 { return selTracks_->size(); }
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:70

Member Data Documentation

◆ cloneClusters_

bool helper::TrackCollectionStoreManager::cloneClusters_
private

Clone clusters, or not? Default: true.

Definition at line 90 of file TrackSelector.h.

Referenced by cloneClusters(), and setCloneClusters().

◆ clusterStorer_

ClusterStorer helper::TrackCollectionStoreManager::clusterStorer_
private

Helper to treat copies of selected clusters and make the hits refer to the output cluster collections:

Definition at line 83 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ hidx_

size_t helper::TrackCollectionStoreManager::hidx_
private

index to tracking rec hits

Definition at line 87 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ idx_

size_t helper::TrackCollectionStoreManager::idx_
private

index to track extra coll

Definition at line 86 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rHits_

TrackingRecHitRefProd helper::TrackCollectionStoreManager::rHits_
private

Definition at line 80 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rTrackExtras_

reco::TrackExtraRefProd helper::TrackCollectionStoreManager::rTrackExtras_
private

Definition at line 79 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rTracks_

reco::TrackRefProd helper::TrackCollectionStoreManager::rTracks_
private

Definition at line 78 of file TrackSelector.h.

Referenced by cloneAndStore().

◆ selHits_

std::unique_ptr<TrackingRecHitCollection> helper::TrackCollectionStoreManager::selHits_
private

Definition at line 72 of file TrackSelector.h.

Referenced by processTrack(), and put().

◆ selPhase2OTClusters_

std::unique_ptr<edmNew::DetSetVector<Phase2TrackerCluster1D> > helper::TrackCollectionStoreManager::selPhase2OTClusters_
private

Definition at line 75 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

◆ selPixelClusters_

std::unique_ptr<edmNew::DetSetVector<SiPixelCluster> > helper::TrackCollectionStoreManager::selPixelClusters_
private

Definition at line 74 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

◆ selStripClusters_

std::unique_ptr<edmNew::DetSetVector<SiStripCluster> > helper::TrackCollectionStoreManager::selStripClusters_
private

Definition at line 73 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

◆ selTrackExtras_

std::unique_ptr<reco::TrackExtraCollection> helper::TrackCollectionStoreManager::selTrackExtras_
private

Definition at line 71 of file TrackSelector.h.

Referenced by processTrack(), and put().

◆ selTracks_

std::unique_ptr<reco::TrackCollection> helper::TrackCollectionStoreManager::selTracks_
private

Definition at line 70 of file TrackSelector.h.

Referenced by processTrack(), put(), and size().