![]() |
![]() |
#include <TrackFullCloneSelectorBase.h>
Public Member Functions | |
TrackFullCloneSelectorBase (const edm::ParameterSet &cfg) | |
constructor | |
virtual | ~TrackFullCloneSelectorBase () |
destructor | |
Private Member Functions | |
void | produce (edm::Event &evt, const edm::EventSetup &es) |
process one event | |
Private Attributes | |
bool | copyExtras_ |
copy only the tracks, not extras and rechits (for AOD) | |
bool | copyTrajectories_ |
copy also trajectories and trajectory->track associations | |
Selector | selector_ |
filter event | |
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_ |
edm::InputTag | src_ |
source collection label |
Definition at line 35 of file TrackFullCloneSelectorBase.h.
reco::modules::TrackFullCloneSelectorBase< Selector >::TrackFullCloneSelectorBase | ( | const edm::ParameterSet & | cfg | ) | [inline, explicit] |
constructor
Definition at line 38 of file TrackFullCloneSelectorBase.h.
References reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_, reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_, and edm::ParameterSet::getParameter().
: src_( cfg.template getParameter<edm::InputTag>( "src" ) ), copyExtras_(cfg.template getUntrackedParameter<bool>("copyExtras", false)), copyTrajectories_(cfg.template getUntrackedParameter<bool>("copyTrajectories", false)), selector_( cfg ) { std::string alias( cfg.getParameter<std::string>( "@module_label" ) ); produces<reco::TrackCollection>().setBranchAlias( alias + "Tracks" ); if (copyExtras_) { produces<reco::TrackExtraCollection>().setBranchAlias( alias + "TrackExtras" ); produces<TrackingRecHitCollection>().setBranchAlias( alias + "RecHits" ); if (copyTrajectories_) { produces< std::vector<Trajectory> >().setBranchAlias( alias + "Trajectories" ); produces< TrajTrackAssociationCollection >().setBranchAlias( alias + "TrajectoryTrackAssociations" ); } } }
virtual reco::modules::TrackFullCloneSelectorBase< Selector >::~TrackFullCloneSelectorBase | ( | ) | [inline, virtual] |
void reco::modules::TrackFullCloneSelectorBase< Selector >::produce | ( | edm::Event & | evt, |
const edm::EventSetup & | es | ||
) | [inline, private, virtual] |
process one event
Implements edm::EDProducer.
Definition at line 59 of file TrackFullCloneSelectorBase.h.
References reco::TrackExtraBase::add(), reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_, reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_, cond::rpcobimon::current, edm::Event::getByLabel(), ZElectronSkim_cff::goodTracks, i, reco::Track::innerDetId(), reco::Track::innerMomentum(), reco::Track::innerOk(), reco::Track::innerPosition(), reco::Track::innerStateCovariance(), edm::Ref< C, T, F >::key(), match(), 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::modules::TrackFullCloneSelectorBase< Selector >::src_.
{ edm::Handle<reco::TrackCollection> hSrcTrack; edm::Handle< std::vector<Trajectory> > hTraj; edm::Handle< TrajTrackAssociationCollection > hTTAss; evt.getByLabel( src_, hSrcTrack ); selTracks_ = std::auto_ptr<reco::TrackCollection>(new reco::TrackCollection()); if (copyExtras_) { selTrackExtras_ = std::auto_ptr<reco::TrackExtraCollection>(new reco::TrackExtraCollection()); selHits_ = std::auto_ptr<TrackingRecHitCollection>(new TrackingRecHitCollection()); } TrackRefProd rTracks = evt.template getRefBeforePut<TrackCollection>(); TrackingRecHitRefProd rHits; TrackExtraRefProd rTrackExtras; if (copyExtras_) { rHits = evt.template getRefBeforePut<TrackingRecHitCollection>(); rTrackExtras = evt.template getRefBeforePut<TrackExtraCollection>(); } typedef reco::TrackRef::key_type TrackRefKey; std::map<TrackRefKey, reco::TrackRef > goodTracks; TrackRefKey current = 0; for (reco::TrackCollection::const_iterator it = hSrcTrack->begin(), ed = hSrcTrack->end(); it != ed; ++it, ++current) { const reco::Track & trk = * it; if (!selector_(trk, evt)) continue; selTracks_->push_back( Track( trk ) ); // clone and store if (!copyExtras_) continue; // TrackExtras selTrackExtras_->push_back( TrackExtra( trk.outerPosition(), trk.outerMomentum(), trk.outerOk(), trk.innerPosition(), trk.innerMomentum(), trk.innerOk(), trk.outerStateCovariance(), trk.outerDetId(), trk.innerStateCovariance(), trk.innerDetId(), trk.seedDirection() ) ); selTracks_->back().setExtra( TrackExtraRef( rTrackExtras, selTrackExtras_->size() - 1) ); TrackExtra & tx = selTrackExtras_->back(); // TrackingRecHits for( trackingRecHit_iterator hit = trk.recHitsBegin(); hit != trk.recHitsEnd(); ++ hit ) { selHits_->push_back( (*hit)->clone() ); tx.add( TrackingRecHitRef( rHits, selHits_->size() - 1) ); } if (copyTrajectories_) { goodTracks[current] = reco::TrackRef(rTracks, selTracks_->size() - 1); } } if ( copyTrajectories_ ) { edm::Handle< std::vector<Trajectory> > hTraj; edm::Handle< TrajTrackAssociationCollection > hTTAss; evt.getByLabel(src_, hTTAss); evt.getByLabel(src_, hTraj); edm::RefProd< std::vector<Trajectory> > TrajRefProd = evt.template getRefBeforePut< std::vector<Trajectory> >(); selTrajs_ = std::auto_ptr< std::vector<Trajectory> >(new std::vector<Trajectory>()); selTTAss_ = std::auto_ptr< TrajTrackAssociationCollection >(new TrajTrackAssociationCollection()); for (size_t i = 0, n = hTraj->size(); i < n; ++i) { edm::Ref< std::vector<Trajectory> > trajRef(hTraj, i); TrajTrackAssociationCollection::const_iterator match = hTTAss->find(trajRef); if (match != hTTAss->end()) { const edm::Ref<reco::TrackCollection> &trkRef = match->val; TrackRefKey oldKey = trkRef.key(); std::map<TrackRefKey, reco::TrackRef>::iterator getref = goodTracks.find(oldKey); if (getref != goodTracks.end()) { // do the clone selTrajs_->push_back( Trajectory(*trajRef) ); selTTAss_->insert ( edm::Ref< std::vector<Trajectory> >(TrajRefProd, selTrajs_->size() - 1), getref->second ); } } } } evt.put(selTracks_); if (copyExtras_) { evt.put(selTrackExtras_); evt.put(selHits_); if ( copyTrajectories_ ) { evt.put(selTrajs_); evt.put(selTTAss_); } } }
bool reco::modules::TrackFullCloneSelectorBase< Selector >::copyExtras_ [private] |
copy only the tracks, not extras and rechits (for AOD)
Definition at line 146 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce(), and reco::modules::TrackFullCloneSelectorBase< Selector >::TrackFullCloneSelectorBase().
bool reco::modules::TrackFullCloneSelectorBase< Selector >::copyTrajectories_ [private] |
copy also trajectories and trajectory->track associations
Definition at line 148 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce(), and reco::modules::TrackFullCloneSelectorBase< Selector >::TrackFullCloneSelectorBase().
Selector reco::modules::TrackFullCloneSelectorBase< Selector >::selector_ [private] |
filter event
Definition at line 150 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
std::auto_ptr<TrackingRecHitCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selHits_ [private] |
Definition at line 154 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
std::auto_ptr<reco::TrackExtraCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selTrackExtras_ [private] |
Definition at line 153 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
std::auto_ptr<reco::TrackCollection> reco::modules::TrackFullCloneSelectorBase< Selector >::selTracks_ [private] |
Definition at line 152 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
std::auto_ptr< std::vector<Trajectory> > reco::modules::TrackFullCloneSelectorBase< Selector >::selTrajs_ [private] |
Definition at line 155 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
std::auto_ptr< TrajTrackAssociationCollection > reco::modules::TrackFullCloneSelectorBase< Selector >::selTTAss_ [private] |
Definition at line 156 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().
edm::InputTag reco::modules::TrackFullCloneSelectorBase< Selector >::src_ [private] |
source collection label
Definition at line 144 of file TrackFullCloneSelectorBase.h.
Referenced by reco::modules::TrackFullCloneSelectorBase< Selector >::produce().