CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::modules::TrackFullCloneSelectorBase< Selector > Class Template Reference

#include <TrackFullCloneSelectorBase.h>

Inheritance diagram for reco::modules::TrackFullCloneSelectorBase< Selector >:
edm::stream::EDProducer<> edm::stream::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 TrackFullCloneSelectorBase (const edm::ParameterSet &cfg)
 constructor More...
 
virtual ~TrackFullCloneSelectorBase ()
 destructor More...
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
- Public Member Functions inherited from edm::stream::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDProducerBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void produce (edm::Event &evt, const edm::EventSetup &es) override
 process one event More...
 

Private 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::EDGetTokenT
< reco::TrackCollection
hSrcTrackToken_
 source collection label More...
 
edm::EDGetTokenT< std::vector
< Trajectory > > 
hTrajToken_
 
edm::EDGetTokenT
< TrajTrackAssociationCollection
hTTAssToken_
 
Selector selector_
 filter event More...
 
std::auto_ptr
< TrackingRecHitCollection
selHits_
 
std::auto_ptr
< reco::TrackExtraCollection
selTrackExtras_
 
std::auto_ptr
< reco::TrackCollection
selTracks_
 
std::auto_ptr< std::vector
< Trajectory > > 
selTrajs_
 
std::auto_ptr
< TrajTrackAssociationCollection
selTTAss_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDProducerBase
typedef EDProducerAdaptorBase ModuleType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::stream::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

template<typename Selector>
class reco::modules::TrackFullCloneSelectorBase< Selector >

Definition at line 36 of file TrackFullCloneSelectorBase.h.

Constructor & Destructor Documentation

template<typename Selector >
reco::modules::TrackFullCloneSelectorBase< Selector >::TrackFullCloneSelectorBase ( const edm::ParameterSet cfg)
inlineexplicit

constructor

Definition at line 39 of file TrackFullCloneSelectorBase.h.

References HLT_25ns14e33_v1_cff::alias, reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_, reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_, edm::ParameterSet::getParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

39  :
40  hSrcTrackToken_( consumes<reco::TrackCollection>( cfg.template getParameter<edm::InputTag>( "src" ) ) ),
41  hTrajToken_( mayConsume< std::vector<Trajectory> >( cfg.template getParameter<edm::InputTag>( "src" ) ) ),
42  hTTAssToken_( mayConsume< TrajTrackAssociationCollection >( cfg.template getParameter<edm::InputTag>( "src" ) ) ),
43  copyExtras_(cfg.template getUntrackedParameter<bool>("copyExtras", false)),
44  copyTrajectories_(cfg.template getUntrackedParameter<bool>("copyTrajectories", false)),
45  selector_( cfg, consumesCollector() ) {
46  std::string alias( cfg.getParameter<std::string>( "@module_label" ) );
47  produces<reco::TrackCollection>().setBranchAlias( alias + "Tracks" );
48  if (copyExtras_) {
49  produces<reco::TrackExtraCollection>().setBranchAlias( alias + "TrackExtras" );
50  produces<TrackingRecHitCollection>().setBranchAlias( alias + "RecHits" );
51  if (copyTrajectories_) {
52  produces< std::vector<Trajectory> >().setBranchAlias( alias + "Trajectories" );
53  produces< TrajTrackAssociationCollection >().setBranchAlias( alias + "TrajectoryTrackAssociations" );
54  }
55  }
56  }
T getParameter(std::string const &) const
edm::EDGetTokenT< std::vector< Trajectory > > hTrajToken_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
edm::EDGetTokenT< reco::TrackCollection > hSrcTrackToken_
source collection label
bool copyTrajectories_
copy also trajectories and trajectory-&gt;track associations
edm::EDGetTokenT< TrajTrackAssociationCollection > hTTAssToken_
EDGetTokenT< ProductType > mayConsume(edm::InputTag const &tag)
template<typename Selector >
virtual reco::modules::TrackFullCloneSelectorBase< Selector >::~TrackFullCloneSelectorBase ( )
inlinevirtual

destructor

Definition at line 58 of file TrackFullCloneSelectorBase.h.

58 { }

Member Function Documentation

template<typename Selector >
void reco::modules::TrackFullCloneSelectorBase< Selector >::produce ( edm::Event evt,
const edm::EventSetup es 
)
inlineoverrideprivatevirtual

process one event

Implements edm::stream::EDProducerBase.

Definition at line 62 of file TrackFullCloneSelectorBase.h.

References edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > >::const_iterator, reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_, reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_, cond::rpcobimon::current, edm::Event::getByToken(), goodTracks_cfi::goodTracks, reco::modules::TrackFullCloneSelectorBase< Selector >::hSrcTrackToken_, reco::modules::TrackFullCloneSelectorBase< Selector >::hTrajToken_, reco::modules::TrackFullCloneSelectorBase< Selector >::hTTAssToken_, i, reco::Track::innerDetId(), reco::Track::innerMomentum(), reco::Track::innerOk(), reco::Track::innerPosition(), reco::Track::innerStateCovariance(), edm::Ref< C, T, F >::key(), match(), gen::n, reco::Track::outerDetId(), reco::Track::outerMomentum(), reco::Track::outerOk(), reco::Track::outerPosition(), reco::Track::outerStateCovariance(), edm::Event::put(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), reco::Track::seedDirection(), reco::modules::TrackFullCloneSelectorBase< Selector >::selector_, reco::modules::TrackFullCloneSelectorBase< Selector >::selHits_, reco::modules::TrackFullCloneSelectorBase< Selector >::selTrackExtras_, reco::modules::TrackFullCloneSelectorBase< Selector >::selTracks_, reco::modules::TrackFullCloneSelectorBase< Selector >::selTrajs_, reco::modules::TrackFullCloneSelectorBase< Selector >::selTTAss_, and reco::TrackExtraBase::setHits().

Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().

62  {
64  evt.getByToken( hSrcTrackToken_, hSrcTrack );
65 
66  selTracks_ = std::auto_ptr<reco::TrackCollection>(new reco::TrackCollection());
67  if (copyExtras_) {
68  selTrackExtras_ = std::auto_ptr<reco::TrackExtraCollection>(new reco::TrackExtraCollection());
69  selHits_ = std::auto_ptr<TrackingRecHitCollection>(new TrackingRecHitCollection());
70  }
71 
72  TrackRefProd rTracks = evt.template getRefBeforePut<TrackCollection>();
73 
75  TrackExtraRefProd rTrackExtras;
76  if (copyExtras_) {
77  rHits = evt.template getRefBeforePut<TrackingRecHitCollection>();
78  rTrackExtras = evt.template getRefBeforePut<TrackExtraCollection>();
79  }
80 
81  typedef reco::TrackRef::key_type TrackRefKey;
82  std::map<TrackRefKey, reco::TrackRef > goodTracks;
83  TrackRefKey current = 0;
84 
85  selector_.init(evt,es);
86  for (reco::TrackCollection::const_iterator it = hSrcTrack->begin(), ed = hSrcTrack->end(); it != ed; ++it, ++current) {
87  const reco::Track & trk = * it;
88  if (!selector_(trk)) continue;
89 
90  selTracks_->push_back( Track( trk ) ); // clone and store
91  if (!copyExtras_) continue;
92 
93  // TrackExtras
94  selTrackExtras_->push_back( TrackExtra( trk.outerPosition(), trk.outerMomentum(), trk.outerOk(),
95  trk.innerPosition(), trk.innerMomentum(), trk.innerOk(),
96  trk.outerStateCovariance(), trk.outerDetId(),
97  trk.innerStateCovariance(), trk.innerDetId(),
98  trk.seedDirection() ) );
99  selTracks_->back().setExtra( TrackExtraRef( rTrackExtras, selTrackExtras_->size() - 1) );
100  TrackExtra & tx = selTrackExtras_->back();
101  // TrackingRecHits
102  auto const firstHitIndex = selHits_->size();
103  for( trackingRecHit_iterator hit = trk.recHitsBegin(); hit != trk.recHitsEnd(); ++ hit ) {
104  selHits_->push_back( (*hit)->clone() );
105  }
106  tx.setHits( rHits, firstHitIndex, selHits_->size() - firstHitIndex );
107 
108  if (copyTrajectories_) {
109  goodTracks[current] = reco::TrackRef(rTracks, selTracks_->size() - 1);
110  }
111  }
112  if ( copyTrajectories_ ) {
115  evt.getByToken(hTTAssToken_, hTTAss);
116  evt.getByToken(hTrajToken_, hTraj);
117  edm::RefProd< std::vector<Trajectory> > TrajRefProd = evt.template getRefBeforePut< std::vector<Trajectory> >();
118  selTrajs_ = std::auto_ptr< std::vector<Trajectory> >(new std::vector<Trajectory>());
119  selTTAss_ = std::auto_ptr< TrajTrackAssociationCollection >(new TrajTrackAssociationCollection());
120  for (size_t i = 0, n = hTraj->size(); i < n; ++i) {
121  edm::Ref< std::vector<Trajectory> > trajRef(hTraj, i);
123  if (match != hTTAss->end()) {
124  const edm::Ref<reco::TrackCollection> &trkRef = match->val;
125  TrackRefKey oldKey = trkRef.key();
126  std::map<TrackRefKey, reco::TrackRef>::iterator getref = goodTracks.find(oldKey);
127  if (getref != goodTracks.end()) {
128  // do the clone
129  selTrajs_->push_back( Trajectory(*trajRef) );
130  selTTAss_->insert ( edm::Ref< std::vector<Trajectory> >(TrajRefProd, selTrajs_->size() - 1),
131  getref->second );
132  }
133  }
134  }
135  }
136 
137  evt.put(selTracks_);
138  if (copyExtras_) {
139  evt.put(selTrackExtras_);
140  evt.put(selHits_);
141  if ( copyTrajectories_ ) {
142  evt.put(selTrajs_);
143  evt.put(selTTAss_);
144  }
145  }
146  }
int i
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< std::vector< Trajectory > > hTrajToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
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
key_type key() const
Accessor for product key.
Definition: Ref.h:264
const math::XYZPoint & outerPosition() const
position of the outermost hit
Definition: Track.h:65
std::auto_ptr< reco::TrackExtraCollection > selTrackExtras_
const math::XYZPoint & innerPosition() const
position of the innermost hit
Definition: Track.h:55
edm::RefProd< TrackExtraCollection > TrackExtraRefProd
reference to a TrackExtra collection
Definition: TrackExtraFwd.h:20
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:120
CovarianceMatrix outerStateCovariance() const
outermost trajectory state curvilinear errors
Definition: Track.h:75
std::auto_ptr< TrajTrackAssociationCollection > selTTAss_
unsigned int outerDetId() const
DetId of the detector on which surface the outermost state is located.
Definition: Track.h:94
bool copyExtras_
copy only the tracks, not extras and rechits (for AOD)
edm::RefProd< TrackCollection > TrackRefProd
persistent reference to a Track collection
Definition: TrackFwd.h:23
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:104
edm::AssociationMap< edm::OneToOne< std::vector< Trajectory >, reco::TrackCollection, unsigned short > > TrajTrackAssociationCollection
std::vector< TrackExtra > TrackExtraCollection
collection of TrackExtra objects
Definition: TrackExtraFwd.h:11
edm::OwnVector< TrackingRecHit > TrackingRecHitCollection
collection of TrackingRecHits
const math::XYZVector & outerMomentum() const
momentum vector at the outermost hit position
Definition: Track.h:70
bool outerOk() const
return true if the outermost hit is valid
Definition: Track.h:45
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:20
CovarianceMatrix innerStateCovariance() const
innermost trajectory state curvilinear errors
Definition: Track.h:80
edm::EDGetTokenT< reco::TrackCollection > hSrcTrackToken_
source collection label
std::auto_ptr< std::vector< Trajectory > > selTrajs_
bool copyTrajectories_
copy also trajectories and trajectory-&gt;track associations
const math::XYZVector & innerMomentum() const
momentum vector at the innermost hit position
Definition: Track.h:60
std::auto_ptr< reco::TrackCollection > selTracks_
edm::EDGetTokenT< TrajTrackAssociationCollection > hTTAssToken_
PropagationDirection seedDirection() const
direction of how the hits were sorted in the original seed
Definition: Track.h:204
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
std::auto_ptr< TrackingRecHitCollection > selHits_
unsigned int innerDetId() const
DetId of the detector on which surface the innermost state is located.
Definition: Track.h:99
boost::remove_cv< typename boost::remove_reference< argument_type >::type >::type key_type
Definition: Ref.h:168
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

Member Data Documentation

template<typename Selector >
bool reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_
private
template<typename Selector >
bool reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_
private
template<typename Selector >
edm::EDGetTokenT<reco::TrackCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::hSrcTrackToken_
private

source collection label

Definition at line 148 of file TrackFullCloneSelectorBase.h.

Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().

template<typename Selector >
edm::EDGetTokenT< std::vector<Trajectory> > reco::modules::TrackFullCloneSelectorBase< Selector >::hTrajToken_
private
template<typename Selector >
Selector reco::modules::TrackFullCloneSelectorBase< Selector >::selector_
private
template<typename Selector >
std::auto_ptr<TrackingRecHitCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selHits_
private
template<typename Selector >
std::auto_ptr<reco::TrackExtraCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selTrackExtras_
private
template<typename Selector >
std::auto_ptr<reco::TrackCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selTracks_
private
template<typename Selector >
std::auto_ptr< std::vector<Trajectory> > reco::modules::TrackFullCloneSelectorBase< Selector >::selTrajs_
private
template<typename Selector >
std::auto_ptr< TrajTrackAssociationCollection > reco::modules::TrackFullCloneSelectorBase< Selector >::selTTAss_
private