![]() |
![]() |
#include <ConversionTrackProducer.h>
Public Member Functions | |
ConversionTrackProducer (const edm::ParameterSet &conf) | |
virtual void | produce (edm::Event &e, const edm::EventSetup &c) |
virtual | ~ConversionTrackProducer () |
Private Attributes | |
edm::ParameterSet | conf_ |
std::auto_ptr < reco::ConversionTrackCollection > | outputTrks |
Definition at line 36 of file ConversionTrackProducer.h.
ConversionTrackProducer::ConversionTrackProducer | ( | const edm::ParameterSet & | conf | ) | [explicit] |
Definition at line 35 of file ConversionTrackProducer.cc.
: conf_(conf) { produces<reco::ConversionTrackCollection>(); }
ConversionTrackProducer::~ConversionTrackProducer | ( | ) | [virtual] |
Definition at line 44 of file ConversionTrackProducer.cc.
{ }
void ConversionTrackProducer::produce | ( | edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 47 of file ConversionTrackProducer.cc.
References conf_, edm::Event::getByLabel(), edm::ParameterSet::getParameter(), outputTrks, edm::Event::put(), reco::ConversionTrack::setIsArbitratedEcalSeeded(), reco::ConversionTrack::setIsArbitratedMerged(), reco::ConversionTrack::setIsArbitratedMergedEcalGeneral(), reco::ConversionTrack::setIsTrackerOnly(), and reco::ConversionTrack::setTrajRef().
{ // retrieve producer name of input TrackCollection(s) std::string trackProducer = conf_.getParameter<std::string>("TrackProducer"); bool useTrajectory = conf_.getParameter<bool>("useTrajectory"); bool setTrackerOnly = conf_.getParameter<bool>("setTrackerOnly"); bool setArbitratedEcalSeeded = conf_.getParameter<bool>("setArbitratedEcalSeeded"); bool setArbitratedMerged = conf_.getParameter<bool>("setArbitratedMerged"); bool setArbitratedMergedEcalGeneral = conf_.getParameter<bool>("setArbitratedMergedEcalGeneral"); //get input collection (through edm::View) edm::Handle<edm::View<reco::Track> > hTrks; e.getByLabel(trackProducer, hTrks); //get association maps between trajectories and tracks and build temporary maps edm::Handle< TrajTrackAssociationCollection > hTTAss; edm::Handle< edm::AssociationMap<edm::OneToOne<std::vector<Trajectory>, reco::GsfTrackCollection,unsigned short> > > hTTAssGsf; std::map<reco::TrackRef,edm::Ref<std::vector<Trajectory> > > tracktrajmap; std::map<reco::GsfTrackRef,edm::Ref<std::vector<Trajectory> > > gsftracktrajmap; if (useTrajectory) { if (hTrks->size()>0) { if (dynamic_cast<const reco::GsfTrack*>(&hTrks->at(0))) { //fill map for gsf tracks e.getByLabel(trackProducer, hTTAssGsf); for ( edm::AssociationMap<edm::OneToOne<std::vector<Trajectory>, reco::GsfTrackCollection,unsigned short> >::const_iterator iPair = hTTAssGsf->begin(); iPair != hTTAssGsf->end(); ++iPair) { gsftracktrajmap[iPair->val] = iPair->key; } } else { //fill map for standard tracks e.getByLabel(trackProducer, hTTAss); for ( TrajTrackAssociationCollection::const_iterator iPair = hTTAss->begin(); iPair != hTTAss->end(); ++iPair) { tracktrajmap[iPair->val] = iPair->key; } } } } // Step B: create empty output collection outputTrks = std::auto_ptr<reco::ConversionTrackCollection>(new reco::ConversionTrackCollection); // Simple conversion of tracks to conversion tracks, setting appropriate flags from configuration for (edm::RefToBaseVector<reco::Track>::const_iterator it = hTrks->refVector().begin(); it != hTrks->refVector().end(); ++it) { reco::ConversionTrack convTrack(*it); convTrack.setIsTrackerOnly(setTrackerOnly); convTrack.setIsArbitratedEcalSeeded(setArbitratedEcalSeeded); convTrack.setIsArbitratedMerged(setArbitratedMerged); convTrack.setIsArbitratedMergedEcalGeneral(setArbitratedMergedEcalGeneral); //fill trajectory association if configured, using correct map depending on track type if (useTrajectory) { if (gsftracktrajmap.size()) { convTrack.setTrajRef(gsftracktrajmap.find(it->castTo<reco::GsfTrackRef>())->second); } else { convTrack.setTrajRef(tracktrajmap.find(it->castTo<reco::TrackRef>())->second); } } outputTrks->push_back(convTrack); } e.put(outputTrks); return; }//end produce
Definition at line 47 of file ConversionTrackProducer.h.
Referenced by produce().
std::auto_ptr<reco::ConversionTrackCollection> ConversionTrackProducer::outputTrks [private] |
Definition at line 49 of file ConversionTrackProducer.h.
Referenced by produce().