CMS 3D CMS Logo

Public Member Functions | Private Attributes

GsfElectronCoreProducer Class Reference

#include <GsfElectronCoreProducer.h>

Inheritance diagram for GsfElectronCoreProducer:
GsfElectronCoreBaseProducer edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

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_

Detailed Description

Definition at line 6 of file GsfElectronCoreProducer.h.


Constructor & Destructor Documentation

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.

 {}

Member Function Documentation

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) ;
 }

Member Data Documentation

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