CMS 3D CMS Logo

SuperClusterProducer Class Reference

#include <RecoEcal/EgammaClusterProducers/interface/SuperClusterProducer.h>

Inheritance diagram for SuperClusterProducer:

edm::EDProducer edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

virtual void endJob ()
virtual void produce (edm::Event &, const edm::EventSetup &)
 SuperClusterProducer (const edm::ParameterSet &ps)
 ~SuperClusterProducer ()

Private Member Functions

bool counterExceeded () const
void getClusterRefVector (edm::Event &evt, std::string clusterProducer_, std::string clusterCollection_, reco::BasicClusterRefVector *)
void outputValidationInfo (reco::SuperClusterCollection &superclusterCollection)
void produceSuperclustersForECALPart (edm::Event &evt, std::string clusterProducer, std::string clusterCollection, std::string superclusterColection)

Private Attributes

std::string barrelClusterCollection_
std::string barrelClusterProducer_
float barrelEtaSearchRoad_
float barrelPhiSearchRoad_
std::string barrelSuperclusterCollection_
BremRecoveryClusterAlgobremAlgo_p
bool doBarrel_
bool doEndcaps_
std::string endcapClusterCollection_
std::string endcapClusterProducer_
float endcapEtaSearchRoad_
float endcapPhiSearchRoad_
std::string endcapSuperclusterCollection_
int nEvt_
int nMaxPrintout_
int noSuperClusters
float seedTransverseEnergyThreshold_
double totalE
BremRecoveryClusterAlgo::VerbosityLevel verbosity


Detailed Description

Definition at line 20 of file SuperClusterProducer.h.


Constructor & Destructor Documentation

SuperClusterProducer::SuperClusterProducer ( const edm::ParameterSet ps  ) 

Definition at line 24 of file SuperClusterProducer.cc.

References barrelClusterCollection_, barrelClusterProducer_, barrelEtaSearchRoad_, barrelPhiSearchRoad_, barrelSuperclusterCollection_, bremAlgo_p, doBarrel_, doEndcaps_, endcapClusterCollection_, endcapClusterProducer_, endcapEtaSearchRoad_, endcapPhiSearchRoad_, endcapSuperclusterCollection_, edm::ParameterSet::getParameter(), nEvt_, noSuperClusters, BremRecoveryClusterAlgo::pDEBUG, BremRecoveryClusterAlgo::pERROR, BremRecoveryClusterAlgo::pINFO, BremRecoveryClusterAlgo::pWARNING, seedTransverseEnergyThreshold_, totalE, and verbosity.

00025 {
00026   // The verbosity level
00027   std::string verbosityString = ps.getParameter<std::string>("VerbosityLevel");
00028   if      (verbosityString == "DEBUG")   verbosity = BremRecoveryClusterAlgo::pDEBUG;
00029   else if (verbosityString == "WARNING") verbosity = BremRecoveryClusterAlgo::pWARNING;
00030   else if (verbosityString == "INFO")    verbosity = BremRecoveryClusterAlgo::pINFO;
00031   else                                   verbosity = BremRecoveryClusterAlgo::pERROR;
00032 
00033   endcapClusterProducer_ = ps.getParameter<std::string>("endcapClusterProducer");
00034   barrelClusterProducer_ = ps.getParameter<std::string>("barrelClusterProducer");
00035 
00036   endcapClusterCollection_ = ps.getParameter<std::string>("endcapClusterCollection");
00037   barrelClusterCollection_ = ps.getParameter<std::string>("barrelClusterCollection");
00038 
00039   endcapSuperclusterCollection_ = ps.getParameter<std::string>("endcapSuperclusterCollection");
00040   barrelSuperclusterCollection_ = ps.getParameter<std::string>("barrelSuperclusterCollection");
00041 
00042   doBarrel_ = ps.getParameter<bool>("doBarrel");
00043   doEndcaps_ = ps.getParameter<bool>("doEndcaps");
00044 
00045 
00046   barrelEtaSearchRoad_ = ps.getParameter<double>("barrelEtaSearchRoad");
00047   barrelPhiSearchRoad_ = ps.getParameter<double>("barrelPhiSearchRoad");
00048   endcapEtaSearchRoad_ = ps.getParameter<double>("endcapEtaSearchRoad");
00049   endcapPhiSearchRoad_ = ps.getParameter<double>("endcapPhiSearchRoad");
00050   seedTransverseEnergyThreshold_ = ps.getParameter<double>("seedTransverseEnergyThreshold");
00051 
00052   bremAlgo_p = new BremRecoveryClusterAlgo(barrelEtaSearchRoad_, barrelPhiSearchRoad_, 
00053                                          endcapEtaSearchRoad_, endcapPhiSearchRoad_, 
00054                                          seedTransverseEnergyThreshold_, verbosity);
00055 
00056   produces< reco::SuperClusterCollection >(endcapSuperclusterCollection_);
00057   produces< reco::SuperClusterCollection >(barrelSuperclusterCollection_);
00058 
00059   totalE = 0;
00060   noSuperClusters = 0;
00061   nEvt_ = 0;
00062 }

SuperClusterProducer::~SuperClusterProducer (  ) 

Definition at line 65 of file SuperClusterProducer.cc.

References bremAlgo_p.

00066 {
00067   delete bremAlgo_p;
00068 }


Member Function Documentation

bool SuperClusterProducer::counterExceeded (  )  const [inline, private]

Definition at line 72 of file SuperClusterProducer.h.

References nEvt_, and nMaxPrintout_.

00072 { return ((nEvt_ > nMaxPrintout_) || (nMaxPrintout_ < 0));}

void SuperClusterProducer::endJob ( void   )  [virtual]

Reimplemented from edm::EDProducer.

Definition at line 71 of file SuperClusterProducer.cc.

References noSuperClusters, and totalE.

00071                              {
00072   double averEnergy = 0.;
00073   std::ostringstream str;
00074   str << "SuperClusterProducer::endJob()\n"
00075       << "  total # reconstructed super clusters: " << noSuperClusters << "\n"
00076       << "  total energy of all clusters: " << totalE << "\n";
00077   if(noSuperClusters>0) { 
00078     averEnergy = totalE / noSuperClusters;
00079     str << "  average SuperCluster energy = " << averEnergy << "\n";
00080   }
00081   edm::LogInfo("SuperClusterProducerInfo") << str.str() << "\n";
00082 
00083 }

void SuperClusterProducer::getClusterRefVector ( edm::Event evt,
std::string  clusterProducer_,
std::string  clusterCollection_,
reco::BasicClusterRefVector clusterRefVector_p 
) [private]

Definition at line 126 of file SuperClusterProducer.cc.

References edm::Event::getByLabel(), i, edm::Handle< T >::isValid(), edm::Handle< T >::product(), and edm::RefVector< C, T, F >::push_back().

Referenced by produceSuperclustersForECALPart().

00127 {  
00128   edm::Handle<reco::BasicClusterCollection> bccHandle;
00129 
00130   evt.getByLabel(clusterProducer_, clusterCollection_, bccHandle);
00131   if (!(bccHandle.isValid()))
00132     {
00133       edm::LogError("SuperClusterProducerError") << "could not get a handle on the BasicCluster Collection!";
00134       edm::LogError("SuperClusterProducerError") << "Error! can't get the product " << clusterCollection_.c_str(); 
00135       clusterRefVector_p = 0;
00136     }
00137 
00138   const reco::BasicClusterCollection *clusterCollection_p = bccHandle.product();
00139   for (unsigned int i = 0; i < clusterCollection_p->size(); i++)
00140     {
00141       clusterRefVector_p->push_back(reco::BasicClusterRef(bccHandle, i));
00142     }
00143 }                               

void SuperClusterProducer::outputValidationInfo ( reco::SuperClusterCollection superclusterCollection  )  [private]

void SuperClusterProducer::produce ( edm::Event evt,
const edm::EventSetup es 
) [virtual]

Implements edm::EDProducer.

Definition at line 86 of file SuperClusterProducer.cc.

References barrelClusterCollection_, barrelClusterProducer_, barrelSuperclusterCollection_, doBarrel_, doEndcaps_, endcapClusterCollection_, endcapClusterProducer_, endcapSuperclusterCollection_, nEvt_, and produceSuperclustersForECALPart().

void SuperClusterProducer::produceSuperclustersForECALPart ( edm::Event evt,
std::string  clusterProducer,
std::string  clusterCollection,
std::string  superclusterColection 
) [private]

Definition at line 98 of file SuperClusterProducer.cc.

References bremAlgo_p, getClusterRefVector(), it, BremRecoveryClusterAlgo::makeSuperClusters(), noSuperClusters, edm::Event::put(), and totalE.

Referenced by produce().

00102 {
00103   // get the cluster collection out and turn it to a BasicClusterRefVector:
00104   reco::BasicClusterRefVector *clusterRefVector_p = new reco::BasicClusterRefVector;
00105   getClusterRefVector(evt, clusterProducer, clusterCollection, clusterRefVector_p);
00106 
00107   // run the brem recovery and get the SC collection
00108   std::auto_ptr<reco::SuperClusterCollection> 
00109     superclusters_ap(new reco::SuperClusterCollection(bremAlgo_p->makeSuperClusters(*clusterRefVector_p)));
00110 
00111   // count the total energy and the number of superclusters
00112   reco::SuperClusterCollection::iterator it;
00113   for (it = superclusters_ap->begin(); it != superclusters_ap->end(); it++)
00114     {
00115       totalE += it->energy();
00116       noSuperClusters++;
00117     }
00118 
00119   // put the SC collection in the event
00120   evt.put(superclusters_ap, superclusterCollection);
00121 
00122   delete clusterRefVector_p;
00123 }


Member Data Documentation

std::string SuperClusterProducer::barrelClusterCollection_ [private]

Definition at line 40 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

std::string SuperClusterProducer::barrelClusterProducer_ [private]

Definition at line 43 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

float SuperClusterProducer::barrelEtaSearchRoad_ [private]

Definition at line 48 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

float SuperClusterProducer::barrelPhiSearchRoad_ [private]

Definition at line 49 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

std::string SuperClusterProducer::barrelSuperclusterCollection_ [private]

Definition at line 46 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

BremRecoveryClusterAlgo* SuperClusterProducer::bremAlgo_p [private]

Definition at line 57 of file SuperClusterProducer.h.

Referenced by produceSuperclustersForECALPart(), SuperClusterProducer(), and ~SuperClusterProducer().

bool SuperClusterProducer::doBarrel_ [private]

Definition at line 54 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

bool SuperClusterProducer::doEndcaps_ [private]

Definition at line 55 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

std::string SuperClusterProducer::endcapClusterCollection_ [private]

Definition at line 39 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

std::string SuperClusterProducer::endcapClusterProducer_ [private]

Definition at line 42 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

float SuperClusterProducer::endcapEtaSearchRoad_ [private]

Definition at line 50 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

float SuperClusterProducer::endcapPhiSearchRoad_ [private]

Definition at line 51 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

std::string SuperClusterProducer::endcapSuperclusterCollection_ [private]

Definition at line 45 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

int SuperClusterProducer::nEvt_ [private]

Definition at line 35 of file SuperClusterProducer.h.

Referenced by counterExceeded(), produce(), and SuperClusterProducer().

int SuperClusterProducer::nMaxPrintout_ [private]

Definition at line 34 of file SuperClusterProducer.h.

Referenced by counterExceeded().

int SuperClusterProducer::noSuperClusters [private]

Definition at line 60 of file SuperClusterProducer.h.

Referenced by endJob(), produceSuperclustersForECALPart(), and SuperClusterProducer().

float SuperClusterProducer::seedTransverseEnergyThreshold_ [private]

Definition at line 52 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

double SuperClusterProducer::totalE [private]

Definition at line 59 of file SuperClusterProducer.h.

Referenced by endJob(), produceSuperclustersForECALPart(), and SuperClusterProducer().

BremRecoveryClusterAlgo::VerbosityLevel SuperClusterProducer::verbosity [private]

Definition at line 37 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:33:00 2009 for CMSSW by  doxygen 1.5.4