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< 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 34 of file TrackSelector.h.

Member Typedef Documentation

◆ collection

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

Definition at line 36 of file TrackSelector.h.

Constructor & Destructor Documentation

◆ TrackCollectionStoreManager()

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

Definition at line 7 of file TrackSelector.cc.

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

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 99 of file TrackSelector.h.

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

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

◆ 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 46 of file TrackSelector.h.

References cloneClusters_.

Referenced by processTrack().

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

◆ processTrack()

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

Process a single track.

Definition at line 24 of file TrackSelector.cc.

References helper::ClusterStorer::addCluster(), cloneClusters(), clusterStorer_, hidx_, idx_, reco::Track::innerDetId(), reco::Track::innerMomentum(), reco::Track::innerOk(), reco::Track::innerPosition(), reco::Track::innerStateCovariance(), TrackingRecHit::isValid(), reco::Track::outerDetId(), reco::Track::outerMomentum(), reco::Track::outerOk(), reco::Track::outerPosition(), reco::Track::outerStateCovariance(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), rHits_, rTrackExtras_, reco::Track::seedDirection(), selHits_, selTrackExtras_, selTracks_, reco::TrackExtraBase::setHits(), and DetId::Tracker.

Referenced by cloneAndStore().

24  {
25  selTracks_->push_back(Track(trk));
26  selTracks_->back().setExtra(TrackExtraRef(rTrackExtras_, idx_++));
27  selTrackExtras_->push_back(TrackExtra(trk.outerPosition(),
28  trk.outerMomentum(),
29  trk.outerOk(),
30  trk.innerPosition(),
31  trk.innerMomentum(),
32  trk.innerOk(),
34  trk.outerDetId(),
36  trk.innerDetId(),
37  trk.seedDirection()));
38  TrackExtra& tx = selTrackExtras_->back();
39  auto const firstHitIndex = hidx_;
40  unsigned int nHitsAdded = 0;
41  for (trackingRecHit_iterator hit = trk.recHitsBegin(); hit != trk.recHitsEnd(); ++hit, ++hidx_) {
42  selHits_->push_back((*hit)->clone());
43  TrackingRecHit* newHit = &(selHits_->back());
44  ++nHitsAdded;
45 
46  //--- Skip the rest for this hit if we don't want to clone the cluster.
47  //--- The copy constructer in the rec hit will copy the link properly.
48  if (cloneClusters() && newHit->isValid() && ((*hit)->geographicalId().det() == DetId::Tracker)) {
50  }
51  } // end of for loop over tracking rec hits on this track
52  tx.setHits(rHits_, firstHitIndex, nHitsAdded);
53 
54  } // end of track, and function
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
Definition: Track.h:68
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:62
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:65
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:69
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)
CovarianceMatrix innerStateCovariance() const
innermost trajectory state curvilinear errors
Definition: Track.h:71
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:70
bool isValid() const
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:91
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
Definition: Track.h:82
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:71
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:88
bool innerOk() const
return true if the innermost hit is valid
Definition: Track.h:53
const PropagationDirection & seedDirection() const
direction of how the hits were sorted in the original seed
Definition: Track.h:148
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:85
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:77
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
Definition: Track.h:79
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:59
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:56
size_t idx_
index to track extra coll
Definition: TrackSelector.h:84
bool outerOk() const
return true if the outermost hit is valid
Definition: Track.h:50

◆ put()

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

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

Definition at line 59 of file TrackSelector.cc.

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

59  {
62  evt.put(std::move(selHits_));
65  return h;
66  }
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:69
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:70
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:71
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:72
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:73
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 47 of file TrackSelector.h.

References cloneClusters_, and w().

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

◆ size()

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

Get the size.

Definition at line 57 of file TrackSelector.h.

References selTracks_.

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

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

Member Data Documentation

◆ cloneClusters_

bool helper::TrackCollectionStoreManager::cloneClusters_
private

Clone clusters, or not? Default: true.

Definition at line 88 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 81 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ hidx_

size_t helper::TrackCollectionStoreManager::hidx_
private

index to tracking rec hits

Definition at line 85 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ idx_

size_t helper::TrackCollectionStoreManager::idx_
private

index to track extra coll

Definition at line 84 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rHits_

TrackingRecHitRefProd helper::TrackCollectionStoreManager::rHits_
private

Definition at line 78 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rTrackExtras_

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

Definition at line 77 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

◆ rTracks_

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

Definition at line 76 of file TrackSelector.h.

Referenced by cloneAndStore().

◆ selHits_

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

Definition at line 71 of file TrackSelector.h.

Referenced by processTrack(), and put().

◆ selPixelClusters_

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

Definition at line 73 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

◆ selStripClusters_

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

Definition at line 72 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

◆ selTrackExtras_

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

Definition at line 70 of file TrackSelector.h.

Referenced by processTrack(), and put().

◆ selTracks_

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

Definition at line 69 of file TrackSelector.h.

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