![]() |
![]() |
#include <GsfElectronCoreProducer.h>
Public Member Functions | |
GsfElectronCoreProducer (const edm::ParameterSet &) | |
virtual void | produce (edm::Event &, const edm::EventSetup &) |
virtual | ~GsfElectronCoreProducer () |
Private Attributes | |
edm::InputTag | edCoresTag_ |
edm::InputTag | pfSuperClustersTag_ |
edm::InputTag | pfSuperClusterTrackMapTag_ |
Definition at line 6 of file GsfElectronCoreProducer.h.
GsfElectronCoreProducer::GsfElectronCoreProducer | ( | const edm::ParameterSet & | config | ) | [explicit] |
Definition at line 30 of file GsfElectronCoreProducer.cc.
References edCoresTag_, edm::ParameterSet::getParameter(), pfSuperClustersTag_, and pfSuperClusterTrackMapTag_.
: GsfElectronCoreBaseProducer(config) { edCoresTag_ = config.getParameter<edm::InputTag>("ecalDrivenGsfElectronCoresTag") ; pfSuperClustersTag_ = config.getParameter<edm::InputTag>("pfSuperClusters") ; pfSuperClusterTrackMapTag_ = config.getParameter<edm::InputTag>("pfSuperClusterTrackMap") ; }
GsfElectronCoreProducer::~GsfElectronCoreProducer | ( | ) | [virtual] |
Definition at line 92 of file GsfElectronCoreProducer.cc.
{}
void GsfElectronCoreProducer::produce | ( | edm::Event & | event, |
const edm::EventSetup & | setup | ||
) | [virtual] |
Implements edm::EDProducer.
Definition at line 38 of file GsfElectronCoreProducer.cc.
References reco::GsfElectronCore::clone(), edCoresTag_, GsfElectronCoreBaseProducer::fillElectronCore(), reco::GsfElectronCore::gsfTrack(), GsfElectronCoreBaseProducer::gsfTracksH_, i, GsfElectronCoreBaseProducer::initEvent(), edm::Ref< C, T, F >::isNull(), LogDebug, pfSuperClustersTag_, pfSuperClusterTrackMapTag_, edm::Handle< T >::product(), and reco::GsfElectronCore::setPflowSuperCluster().
{ // base input GsfElectronCoreBaseProducer::initEvent(event,setup) ; // output std::auto_ptr<GsfElectronCoreCollection> electrons(new GsfElectronCoreCollection) ; // additional input edm::Handle<GsfElectronCoreCollection> edCoresH ; event.getByLabel(edCoresTag_,edCoresH) ; edm::Handle<SuperClusterCollection> pfClustersH ; event.getByLabel(pfSuperClustersTag_,pfClustersH) ; edm::Handle<edm::ValueMap<reco::SuperClusterRef> > pfClusterTracksH ; event.getByLabel(pfSuperClusterTrackMapTag_,pfClusterTracksH) ; // loop on pure tracker driven tracks const GsfTrackCollection * gsfTrackCollection = gsfTracksH_.product() ; for ( unsigned int i=0 ; i<gsfTrackCollection->size() ; ++i ) { const GsfTrackRef gsfTrackRef = edm::Ref<GsfTrackCollection>(gsfTracksH_,i) ; GsfElectronCore * ele = new GsfElectronCore(gsfTrackRef) ; if (ele->ecalDrivenSeed()) { delete ele ; continue ; } GsfElectronCoreBaseProducer::fillElectronCore(ele) ; ele->setPflowSuperCluster((*pfClusterTracksH)[gsfTrackRef]) ; if (!(ele->superCluster().isNull())) { electrons->push_back(*ele) ; } else { LogDebug("GsfElectronCoreProducer")<<"GsfTrack with no associated CaloCluster." ; } delete ele ; } // clone and complete ecal driven electrons const GsfElectronCoreCollection * edCoresCollection = edCoresH.product() ; GsfElectronCoreCollection::const_iterator edCoreIter ; for ( edCoreIter = edCoresCollection->begin() ; edCoreIter != edCoresCollection->end() ; edCoreIter++ ) { GsfElectronCore * eleCore = edCoreIter->clone() ; const GsfTrackRef & gsfTrackRef = eleCore->gsfTrack() ; eleCore->setPflowSuperCluster((*pfClusterTracksH)[gsfTrackRef]) ; electrons->push_back(*eleCore) ; delete eleCore ; } event.put(electrons) ; }
Definition at line 18 of file GsfElectronCoreProducer.h.
Referenced by GsfElectronCoreProducer(), and produce().
Definition at line 19 of file GsfElectronCoreProducer.h.
Referenced by GsfElectronCoreProducer(), and produce().
Definition at line 20 of file GsfElectronCoreProducer.h.
Referenced by GsfElectronCoreProducer(), and produce().