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
GsfElectronCoreProducer Class Reference

#include <GsfElectronCoreProducer.h>

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

Public Member Functions

 GsfElectronCoreProducer (const edm::ParameterSet &)
 
virtual void produce (edm::Event &, const edm::EventSetup &)
 
virtual ~GsfElectronCoreProducer ()
 
- Public Member Functions inherited from GsfElectronCoreBaseProducer
 GsfElectronCoreBaseProducer (const edm::ParameterSet &conf)
 
virtual ~GsfElectronCoreBaseProducer ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
boost::function< void(const
BranchDescription &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 

Private Member Functions

void produceTrackerDrivenCore (const reco::GsfTrackRef &gsfTrackRef, std::list< reco::GsfElectronCore * > &electrons)
 

Private Attributes

edm::Handle
< reco::GsfElectronCoreCollection
edCoresH_
 
edm::InputTag edCoresTag_
 
edm::Handle
< reco::GsfElectronCoreCollection
pfCoresH_
 
edm::InputTag pfCoresTag_
 

Additional Inherited Members

- Public Types inherited from edm::EDProducer
typedef EDProducer ModuleType
 
typedef WorkerT< EDProducerWorkerType
 
- Public Types inherited from edm::ProducerBase
typedef
ProductRegistryHelper::TypeLabelList 
TypeLabelList
 
- Static Public Member Functions inherited from GsfElectronCoreBaseProducer
static void fillDescription (edm::ParameterSetDescription &)
 
- Static Public Member Functions inherited from edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from GsfElectronCoreBaseProducer
void fillElectronCore (reco::GsfElectronCore *)
 
void initEvent (edm::Event &event, const edm::EventSetup &setup)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
template<class TProducer , class TMethod >
void callWhenNewProductsRegistered (TProducer *iProd, TMethod iMethod)
 
- Protected Attributes inherited from GsfElectronCoreBaseProducer
edm::Handle
< reco::TrackCollection
ctfTracksH_
 
edm::Handle
< reco::GsfPFRecTrackCollection
gsfPfRecTracksH_
 
edm::Handle
< reco::GsfTrackCollection
gsfTracksH_
 
bool useGsfPfRecTracks_
 

Detailed Description

Definition at line 9 of file GsfElectronCoreProducer.h.

Constructor & Destructor Documentation

GsfElectronCoreProducer::GsfElectronCoreProducer ( const edm::ParameterSet config)
explicit

Definition at line 32 of file GsfElectronCoreProducer.cc.

References edCoresTag_, edm::ParameterSet::getParameter(), and pfCoresTag_.

34  {
35  edCoresTag_ = config.getParameter<edm::InputTag>("ecalDrivenGsfElectronCoresTag") ;
36  pfCoresTag_ = config.getParameter<edm::InputTag>("pflowGsfElectronCoresTag") ;
37 // pfSuperClustersTag_ = config.getParameter<edm::InputTag>("pfSuperClusters") ;
38 // pfSuperClusterTrackMapTag_ = config.getParameter<edm::InputTag>("pfSuperClusterTrackMap") ;
39  }
T getParameter(std::string const &) const
GsfElectronCoreBaseProducer(const edm::ParameterSet &conf)
GsfElectronCoreProducer::~GsfElectronCoreProducer ( )
virtual

Definition at line 138 of file GsfElectronCoreProducer.cc.

139  {}

Member Function Documentation

void GsfElectronCoreProducer::produce ( edm::Event event,
const edm::EventSetup setup 
)
virtual

Implements edm::EDProducer.

Definition at line 41 of file GsfElectronCoreProducer.cc.

References runEdmFileComparison::collection, edCoresH_, edCoresTag_, HI_PhotonSkim_cff::electrons, funct::false, newFWLiteAna::found, GsfElectronCoreBaseProducer::gsfPfRecTracksH_, GsfElectronCoreBaseProducer::gsfTracksH_, i, GsfElectronCoreBaseProducer::initEvent(), LogDebug, pfCoresH_, pfCoresTag_, produceTrackerDrivenCore(), edm::Handle< T >::product(), funct::true, and GsfElectronCoreBaseProducer::useGsfPfRecTracks_.

42  {
43  // base input
45 
46  // transient output
47  std::list<GsfElectronCore *> electrons ;
48 
49  // event input
50  event.getByLabel(edCoresTag_,edCoresH_) ;
51  event.getByLabel(pfCoresTag_,pfCoresH_) ;
52 // event.getByLabel(pfSuperClustersTag_,pfClustersH_) ;
53 // event.getByLabel(pfSuperClusterTrackMapTag_,pfClusterTracksH_) ;
54 
55  // loop on pure tracker driven tracks
57  {
58  const GsfPFRecTrackCollection * gsfPfRecTrackCollection = gsfPfRecTracksH_.product() ;
59  GsfPFRecTrackCollection::const_iterator gsfPfRecTrack ;
60  for ( gsfPfRecTrack=gsfPfRecTrackCollection->begin() ;
61  gsfPfRecTrack!=gsfPfRecTrackCollection->end() ;
62  ++gsfPfRecTrack )
63  {
64  const GsfTrackRef gsfTrackRef = gsfPfRecTrack->gsfTrackRef() ;
65  produceTrackerDrivenCore(gsfTrackRef,electrons) ;
66  }
67  }
68  else
69  {
70  const GsfTrackCollection * gsfTrackCollection = gsfTracksH_.product() ;
71  for ( unsigned int i=0 ; i<gsfTrackCollection->size() ; ++i )
72  {
74  produceTrackerDrivenCore(gsfTrackRef,electrons) ;
75  }
76  }
77 
78  // clone ecal driven electrons
79  const GsfElectronCoreCollection * edCoresCollection = edCoresH_.product() ;
80  GsfElectronCoreCollection::const_iterator edCoreIter ;
81  for
82  ( edCoreIter = edCoresCollection->begin() ;
83  edCoreIter != edCoresCollection->end() ;
84  edCoreIter++ )
85  { electrons.push_back(edCoreIter->clone()) ; }
86 
87  // add pflow info
88  const GsfElectronCoreCollection * pfCoresCollection = pfCoresH_.product() ;
89  GsfElectronCoreCollection::const_iterator pfCoreIter ;
90  std::list<GsfElectronCore *>::iterator eleCore ;
91  bool found ;
92  for ( eleCore = electrons.begin() ; eleCore != electrons.end() ; eleCore++ )
93  {
94 // (*eleCore)->setPflowSuperCluster((*pfClusterTracksH_)[(*eleCore)->gsfTrack()]) ;
95  found = false ;
96  for
97  ( pfCoreIter = pfCoresCollection->begin() ;
98  pfCoreIter != pfCoresCollection->end() ;
99  pfCoreIter++ )
100  {
101  if (pfCoreIter->gsfTrack()==(*eleCore)->gsfTrack())
102  {
103  if (found)
104  {
105  edm::LogWarning("GsfElectronCoreProducer")<<"associated pfGsfElectronCore already found" ;
106  }
107  else
108  {
109  found = true ;
110  (*eleCore)->setPflowSuperCluster(pfCoreIter->pflowSuperCluster()) ;
111  }
112  }
113  }
114  }
115 
116  // store
117  std::auto_ptr<GsfElectronCoreCollection> collection(new GsfElectronCoreCollection) ;
118  for ( eleCore = electrons.begin() ; eleCore != electrons.end() ; eleCore++ )
119  {
120  if ((*eleCore)->superCluster().isNull())
121  { LogDebug("GsfElectronCoreProducer")<<"GsfTrack with no associated SuperCluster at all." ; }
122  else
123  { collection->push_back(**eleCore) ; }
124  delete (*eleCore) ;
125  }
126  event.put(collection) ;
127  }
#define LogDebug(id)
void initEvent(edm::Event &event, const edm::EventSetup &setup)
int i
Definition: DBlmapReader.cc:9
edm::Handle< reco::GsfElectronCoreCollection > edCoresH_
void produceTrackerDrivenCore(const reco::GsfTrackRef &gsfTrackRef, std::list< reco::GsfElectronCore * > &electrons)
edm::Handle< reco::GsfTrackCollection > gsfTracksH_
std::vector< GsfPFRecTrack > GsfPFRecTrackCollection
collection of GsfPFRecTrack objects
std::vector< GsfElectronCore > GsfElectronCoreCollection
std::vector< GsfTrack > GsfTrackCollection
collection of GsfTracks
Definition: GsfTrackFwd.h:9
T const * product() const
Definition: Handle.h:74
edm::Handle< reco::GsfPFRecTrackCollection > gsfPfRecTracksH_
edm::Handle< reco::GsfElectronCoreCollection > pfCoresH_
void GsfElectronCoreProducer::produceTrackerDrivenCore ( const reco::GsfTrackRef gsfTrackRef,
std::list< reco::GsfElectronCore * > &  electrons 
)
private

Definition at line 129 of file GsfElectronCoreProducer.cc.

References reco::GsfElectronCore::ecalDrivenSeed(), GsfElectronCoreBaseProducer::fillElectronCore(), and hitfit::return.

Referenced by produce().

130  {
131  GsfElectronCore * eleCore = new GsfElectronCore(gsfTrackRef) ;
132  if (eleCore->ecalDrivenSeed())
133  { delete eleCore ; return ; }
135  electrons.push_back(eleCore) ;
136  }
bool ecalDrivenSeed() const
void fillElectronCore(reco::GsfElectronCore *)

Member Data Documentation

edm::Handle<reco::GsfElectronCoreCollection> GsfElectronCoreProducer::edCoresH_
private

Definition at line 26 of file GsfElectronCoreProducer.h.

Referenced by produce().

edm::InputTag GsfElectronCoreProducer::edCoresTag_
private

Definition at line 21 of file GsfElectronCoreProducer.h.

Referenced by GsfElectronCoreProducer(), and produce().

edm::Handle<reco::GsfElectronCoreCollection> GsfElectronCoreProducer::pfCoresH_
private

Definition at line 27 of file GsfElectronCoreProducer.h.

Referenced by produce().

edm::InputTag GsfElectronCoreProducer::pfCoresTag_
private

Definition at line 22 of file GsfElectronCoreProducer.h.

Referenced by GsfElectronCoreProducer(), and produce().