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

Member Typedef Documentation

Definition at line 37 of file TrackSelector.h.

Constructor & Destructor Documentation

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

Definition at line 9 of file TrackSelector.cc.

References processTrack().

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

Member Function Documentation

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

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

Referenced by size().

104  {
105  using namespace reco;
106 
107  rTracks_ = evt.template getRefBeforePut<TrackCollection>();
108  rTrackExtras_ = evt.template getRefBeforePut<TrackExtraCollection>();
109  rHits_ = evt.template getRefBeforePut<TrackingRecHitCollection>();
110  //--- New: save clusters too
112  = evt.template getRefBeforePut<edmNew::DetSetVector<SiPixelCluster> >();
114  = evt.template getRefBeforePut<edmNew::DetSetVector<SiStripCluster> >();
115 
116  //--- Indices into collections handled with RefProd
117  idx_ = 0;
118  hidx_ = 0;
120 
121  //--- Loop over tracks
122  for( I i = begin; i != end; ++ i ) {
123  //--- Whatever type the iterator i is, deref to reco::Track &
124  const reco::Track & trk = * * i;
125  //--- Clone this track, and store references aside
126  processTrack( trk );
127  }
128  //--- Clone the clusters and fixup refs
130  *selStripClusters_, rStripClusters);
131  }
void processTrack(const reco::Track &trk)
Process a single track.
const std::complex< double > I
Definition: I.h:8
#define end
Definition: vmac.h:37
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:87
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:79
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:75
void clear()
clear records
fixed size matrix
#define begin
Definition: vmac.h:30
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:86
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:74
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
void helper::TrackCollectionStoreManager::processTrack ( const reco::Track trk)
private

Process a single track.

Definition at line 29 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(), put(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), rHits_, rTrackExtras_, reco::Track::seedDirection(), selHits_, selTrackExtras_, selTracks_, reco::TrackExtraBase::setHits(), and DetId::Tracker.

Referenced by cloneAndStore(), and TrackCollectionStoreManager().

30  {
31  selTracks_->push_back( Track( trk ) );
32  selTracks_->back().setExtra( TrackExtraRef( rTrackExtras_, idx_ ++ ) );
33  selTrackExtras_->push_back( TrackExtra( trk.outerPosition(), trk.outerMomentum(), trk.outerOk(),
34  trk.innerPosition(), trk.innerMomentum(), trk.innerOk(),
35  trk.outerStateCovariance(), trk.outerDetId(),
36  trk.innerStateCovariance(), 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();
42  ++ hit, ++ hidx_ ) {
43 
44  selHits_->push_back( (*hit)->clone() );
45  TrackingRecHit * newHit = & (selHits_->back());
46  ++nHitsAdded;
47 
48  //--- Skip the rest for this hit if we don't want to clone the cluster.
49  //--- The copy constructer in the rec hit will copy the link properly.
50  if (cloneClusters() && newHit->isValid()
51  && ((*hit)->geographicalId().det() == DetId::Tracker)) {
53  }
54  } // end of for loop over tracking rec hits on this track
55  tx.setHits( rHits_, firstHitIndex, nHitsAdded );
56 
57  } // end of track, and function
void setHits(TrackingRecHitRefProd const &prod, unsigned firstH, unsigned int nH)
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:71
bool innerOk() const
return true if the innermost hit is valid
Definition: Track.h:50
edm::Ref< TrackExtraCollection > TrackExtraRef
persistent reference to a TrackExtra
Definition: TrackExtraFwd.h:17
void addCluster(TrackingRecHitCollection &hits, size_t index)
add cluster of newHit to list (throws if hit is of unknown type)
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:65
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:55
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:72
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
Definition: Track.h:75
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
Definition: Track.h:94
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:104
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:73
size_t hidx_
index to tracking rec hits
Definition: TrackSelector.h:87
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:70
reco::TrackExtraRefProd rTrackExtras_
Definition: TrackSelector.h:79
bool outerOk() const
return true if the outermost hit is valid
Definition: Track.h:45
const PropagationDirection & seedDirection() const
direction of how the hits were sorted in the original seed
Definition: Track.h:204
CovarianceMatrix innerStateCovariance() const
innermost trajectory state curvilinear errors
Definition: Track.h:80
bool isValid() const
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:60
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
Definition: Track.h:99
size_t idx_
index to track extra coll
Definition: TrackSelector.h:86
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:109
edm::OrphanHandle< reco::TrackCollection > helper::TrackCollectionStoreManager::put ( edm::Event evt)

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

Definition at line 65 of file TrackSelector.cc.

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

Referenced by processTrack(), and setCloneClusters().

65  {
67  h = evt.put(std::move(selTracks_));
69  evt.put(std::move(selHits_));
72  return h;
73  }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:127
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::unique_ptr< reco::TrackCollection > selTracks_
Definition: TrackSelector.h:71
std::unique_ptr< reco::TrackExtraCollection > selTrackExtras_
Definition: TrackSelector.h:72
std::unique_ptr< TrackingRecHitCollection > selHits_
Definition: TrackSelector.h:73
std::unique_ptr< edmNew::DetSetVector< SiPixelCluster > > selPixelClusters_
Definition: TrackSelector.h:75
def move(src, dest)
Definition: eostools.py:510
std::unique_ptr< edmNew::DetSetVector< SiStripCluster > > selStripClusters_
Definition: TrackSelector.h:74
void helper::TrackCollectionStoreManager::setCloneClusters ( bool  w)
inline

Definition at line 48 of file TrackSelector.h.

References cloneClusters_, put(), and w.

48 { cloneClusters_ = w; }
const double w
Definition: UKUtility.cc:23
bool cloneClusters_
Clone clusters, or not? Default: true.
Definition: TrackSelector.h:90
size_t helper::TrackCollectionStoreManager::size ( void  ) const
inline

Get the size.

Definition at line 58 of file TrackSelector.h.

References begin, cloneAndStore(), end, Exhume::I, and selTracks_.

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

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

Member Data Documentation

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 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().

size_t helper::TrackCollectionStoreManager::hidx_
private

index to tracking rec hits

Definition at line 87 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

size_t helper::TrackCollectionStoreManager::idx_
private

index to track extra coll

Definition at line 86 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

TrackingRecHitRefProd helper::TrackCollectionStoreManager::rHits_
private

Definition at line 80 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

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

Definition at line 79 of file TrackSelector.h.

Referenced by cloneAndStore(), and processTrack().

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

Definition at line 78 of file TrackSelector.h.

Referenced by cloneAndStore().

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

Definition at line 73 of file TrackSelector.h.

Referenced by processTrack(), and put().

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

Definition at line 75 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

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

Definition at line 74 of file TrackSelector.h.

Referenced by cloneAndStore(), and put().

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

Definition at line 72 of file TrackSelector.h.

Referenced by processTrack(), and put().

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

Definition at line 71 of file TrackSelector.h.

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