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 Attributes
SiStripElectronProducer Class Reference

#include <RecoEgamma/EgammaElectronProducers/interface/SiStripElectronProducer.h>

Inheritance diagram for SiStripElectronProducer:
edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

Public Member Functions

virtual void produce (edm::Event &, const edm::EventSetup &)
 
 SiStripElectronProducer (const edm::ParameterSet &)
 
 ~SiStripElectronProducer ()
 
- 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 Attributes

SiStripElectronAlgoalgo_p
 
std::string siHitProducer_
 
std::string siMatchedHitCollection_
 
std::string siRphiHitCollection_
 
std::string siStereoHitCollection_
 
std::string siStripElectronsLabel_
 
std::string superClusterCollection_
 
std::string superClusterProducer_
 
std::string trackCandidatesLabel_
 

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 edm::EDProducer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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)
 

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Definition at line 34 of file SiStripElectronProducer.h.

Constructor & Destructor Documentation

SiStripElectronProducer::SiStripElectronProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 48 of file SiStripElectronProducer.cc.

References algo_p, edm::ParameterSet::getParameter(), LogDebug, siHitProducer_, siMatchedHitCollection_, siRphiHitCollection_, siStereoHitCollection_, siStripElectronsLabel_, superClusterCollection_, superClusterProducer_, and trackCandidatesLabel_.

49 {
50  // register your products
51  siStripElectronsLabel_ = iConfig.getParameter<std::string>("siStripElectronsLabel");
52  trackCandidatesLabel_ = iConfig.getParameter<std::string>("trackCandidatesLabel");
53  produces<reco::SiStripElectronCollection>(siStripElectronsLabel_);
54  produces<TrackCandidateCollection>(trackCandidatesLabel_);
55 
56  // get parameters
57  siHitProducer_ = iConfig.getParameter<std::string>("siHitProducer");
58  siRphiHitCollection_ = iConfig.getParameter<std::string>("siRphiHitCollection");
59  siStereoHitCollection_ = iConfig.getParameter<std::string>("siStereoHitCollection");
60  siMatchedHitCollection_ = iConfig.getParameter<std::string>("siMatchedHitCollection");
61 
62  superClusterProducer_ = iConfig.getParameter<std::string>("superClusterProducer");
63  superClusterCollection_ = iConfig.getParameter<std::string>("superClusterCollection");
64 
66  iConfig.getParameter<int32_t>("maxHitsOnDetId"),
67  iConfig.getParameter<double>("originUncertainty"),
68  iConfig.getParameter<double>("phiBandWidth"), // this is in radians
69  iConfig.getParameter<double>("maxNormResid"),
70  iConfig.getParameter<int32_t>("minHits"),
71  iConfig.getParameter<double>("maxReducedChi2"));
72 
73  LogDebug("") << " Welcome to SiStripElectronProducer " ;
74 
75 }
#define LogDebug(id)
T getParameter(std::string const &) const
SiStripElectronAlgo * algo_p
SiStripElectronProducer::~SiStripElectronProducer ( )

Definition at line 83 of file SiStripElectronProducer.cc.

References algo_p.

84 {
85  // do anything here that needs to be done at desctruction time
86  // (e.g. close files, deallocate resources etc.)
87  delete algo_p;
88 }
SiStripElectronAlgo * algo_p

Member Function Documentation

void SiStripElectronProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
virtual

Implements edm::EDProducer.

Definition at line 108 of file SiStripElectronProducer.cc.

References algo_p, relval_parameters_module::energy, reco::CaloCluster::energy(), SiStripElectronAlgo::findElectron(), edm::EventSetup::get(), edm::Event::getByLabel(), i, LogDebug, SiStripElectronAlgo::prepareEvent(), edm::Handle< T >::product(), edm::Event::put(), siHitProducer_, siMatchedHitCollection_, siRphiHitCollection_, siStereoHitCollection_, siStripElectronsLabel_, superClusterCollection_, superClusterProducer_, and trackCandidatesLabel_.

109 {
110  // Extract data from the event
111  edm::ESHandle<TrackerGeometry> trackerHandle;
112  iSetup.get<TrackerDigiGeometryRecord>().get(trackerHandle);
113 
115  iEvent.getByLabel(siHitProducer_, siRphiHitCollection_, rphiHitsHandle);
116 
118  iEvent.getByLabel(siHitProducer_, siStereoHitCollection_, stereoHitsHandle);
119 
121  iEvent.getByLabel(siHitProducer_, siMatchedHitCollection_, matchedHitsHandle);
122 
123  edm::ESHandle<MagneticField> magneticFieldHandle;
124  iSetup.get<IdealMagneticFieldRecord>().get(magneticFieldHandle);
125 
127  iEvent.getByLabel(superClusterProducer_, superClusterCollection_, superClusterHandle);
128 
129  // Set up SiStripElectronAlgo for this event
130  algo_p->prepareEvent(trackerHandle, rphiHitsHandle, stereoHitsHandle, matchedHitsHandle, magneticFieldHandle);
131 
132  // Prepare the output electron candidates and clouds to be filled
133  std::auto_ptr<reco::SiStripElectronCollection> electronOut(new reco::SiStripElectronCollection);
134  std::auto_ptr<TrackCandidateCollection> trackCandidateOut(new TrackCandidateCollection);
135 
136  // counter for electron candidates
137  int siStripElectCands = 0 ;
138 
139  std::ostringstream str;
140 
141 
142  // Loop over clusters
143  str << "Starting loop over superclusters."<< "\n" << std::endl;
144  for (unsigned int i = 0; i < superClusterHandle.product()->size(); i++) {
145  const reco::SuperCluster* sc = &(*reco::SuperClusterRef(superClusterHandle, i));
146  double energy = sc->energy();
147 
148  if (algo_p->findElectron(*electronOut, *trackCandidateOut, reco::SuperClusterRef(superClusterHandle, i))) {
149  str << "Supercluster energy: " << energy << ", FOUND an electron." << "\n" << std::endl;
150  ++siStripElectCands ;
151  }
152  else {
153  str << "Supercluster energy: " << energy << ", DID NOT FIND an electron."<< "\n" << std::endl;
154  }
155  }
156  str << "Ending loop over superclusters." << "\n" << std::endl;
157 
158  str << " Found " << siStripElectCands
159  << " SiStripElectron Candidates before track fit "
160  << "\n" << std::endl ;
161 
162  LogDebug("SiStripElectronProducer") << str.str();
163 
164  // Put the electron candidates and the tracking trajectories into the event
165  iEvent.put(electronOut, siStripElectronsLabel_);
166  iEvent.put(trackCandidateOut, trackCandidatesLabel_);
167 }
#define LogDebug(id)
int i
Definition: DBlmapReader.cc:9
std::vector< TrackCandidate > TrackCandidateCollection
bool findElectron(reco::SiStripElectronCollection &electronOut, TrackCandidateCollection &trackCandidateOut, const reco::SuperClusterRef &superclusterIn)
edm::Ref< SuperClusterCollection > SuperClusterRef
reference to an object in a collection of SuperCluster objects
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:85
std::vector< SiStripElectron > SiStripElectronCollection
collectin of SiStripElectron objects
double energy() const
cluster energy
Definition: CaloCluster.h:120
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: Handle.h:74
SiStripElectronAlgo * algo_p
void prepareEvent(const edm::ESHandle< TrackerGeometry > &tracker, const edm::Handle< SiStripRecHit2DCollection > &rphiHits, const edm::Handle< SiStripRecHit2DCollection > &stereoHits, const edm::Handle< SiStripMatchedRecHit2DCollection > &matchedHits, const edm::ESHandle< MagneticField > &magneticField)

Member Data Documentation

SiStripElectronAlgo* SiStripElectronProducer::algo_p
private
std::string SiStripElectronProducer::siHitProducer_
private

Definition at line 43 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::siMatchedHitCollection_
private

Definition at line 46 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::siRphiHitCollection_
private

Definition at line 44 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::siStereoHitCollection_
private

Definition at line 45 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::siStripElectronsLabel_
private

Definition at line 49 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::superClusterCollection_
private

Definition at line 48 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::superClusterProducer_
private

Definition at line 47 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().

std::string SiStripElectronProducer::trackCandidatesLabel_
private

Definition at line 50 of file SiStripElectronProducer.h.

Referenced by produce(), and SiStripElectronProducer().