CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

SuperClusterProducer Class Reference

#include <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 getClusterPtrVector (edm::Event &evt, std::string clusterProducer_, std::string clusterCollection_, reco::CaloClusterPtrVector *)
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.

{
  // The verbosity level
  std::string verbosityString = ps.getParameter<std::string>("VerbosityLevel");
  if      (verbosityString == "DEBUG")   verbosity = BremRecoveryClusterAlgo::pDEBUG;
  else if (verbosityString == "WARNING") verbosity = BremRecoveryClusterAlgo::pWARNING;
  else if (verbosityString == "INFO")    verbosity = BremRecoveryClusterAlgo::pINFO;
  else                                   verbosity = BremRecoveryClusterAlgo::pERROR;

  endcapClusterProducer_ = ps.getParameter<std::string>("endcapClusterProducer");
  barrelClusterProducer_ = ps.getParameter<std::string>("barrelClusterProducer");

  endcapClusterCollection_ = ps.getParameter<std::string>("endcapClusterCollection");
  barrelClusterCollection_ = ps.getParameter<std::string>("barrelClusterCollection");

  endcapSuperclusterCollection_ = ps.getParameter<std::string>("endcapSuperclusterCollection");
  barrelSuperclusterCollection_ = ps.getParameter<std::string>("barrelSuperclusterCollection");

  doBarrel_ = ps.getParameter<bool>("doBarrel");
  doEndcaps_ = ps.getParameter<bool>("doEndcaps");


  barrelEtaSearchRoad_ = ps.getParameter<double>("barrelEtaSearchRoad");
  barrelPhiSearchRoad_ = ps.getParameter<double>("barrelPhiSearchRoad");
  endcapEtaSearchRoad_ = ps.getParameter<double>("endcapEtaSearchRoad");
  endcapPhiSearchRoad_ = ps.getParameter<double>("endcapPhiSearchRoad");
  seedTransverseEnergyThreshold_ = ps.getParameter<double>("seedTransverseEnergyThreshold");

  bremAlgo_p = new BremRecoveryClusterAlgo(barrelEtaSearchRoad_, barrelPhiSearchRoad_, 
                                         endcapEtaSearchRoad_, endcapPhiSearchRoad_, 
                                         seedTransverseEnergyThreshold_, verbosity);

  produces< reco::SuperClusterCollection >(endcapSuperclusterCollection_);
  produces< reco::SuperClusterCollection >(barrelSuperclusterCollection_);

  totalE = 0;
  noSuperClusters = 0;
  nEvt_ = 0;
}
SuperClusterProducer::~SuperClusterProducer ( )

Definition at line 65 of file SuperClusterProducer.cc.

References bremAlgo_p.

{
  delete bremAlgo_p;
}

Member Function Documentation

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

Definition at line 72 of file SuperClusterProducer.h.

References nEvt_, and nMaxPrintout_.

{ 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.

                             {
  double averEnergy = 0.;
  std::ostringstream str;
  str << "SuperClusterProducer::endJob()\n"
      << "  total # reconstructed super clusters: " << noSuperClusters << "\n"
      << "  total energy of all clusters: " << totalE << "\n";
  if(noSuperClusters>0) { 
    averEnergy = totalE / noSuperClusters;
    str << "  average SuperCluster energy = " << averEnergy << "\n";
  }
  edm::LogInfo("SuperClusterProducerInfo") << str.str() << "\n";

}
void SuperClusterProducer::getClusterPtrVector ( edm::Event evt,
std::string  clusterProducer_,
std::string  clusterCollection_,
reco::CaloClusterPtrVector clusterPtrVector_p 
) [private]

Definition at line 126 of file SuperClusterProducer.cc.

References edm::Event::getByLabel(), i, edm::HandleBase::isValid(), edm::Handle< T >::product(), and edm::PtrVector< T >::push_back().

Referenced by produceSuperclustersForECALPart().

{  
  edm::Handle<reco::BasicClusterCollection> bccHandle;

  evt.getByLabel(clusterProducer_, clusterCollection_, bccHandle);
  if (!(bccHandle.isValid()))
    {
      edm::LogError("SuperClusterProducerError") << "could not get a handle on the BasicCluster Collection!";
      edm::LogError("SuperClusterProducerError") << "Error! can't get the product " << clusterCollection_.c_str(); 
      clusterPtrVector_p = 0;
    }

  const reco::BasicClusterCollection *clusterCollection_p = bccHandle.product();
  for (unsigned int i = 0; i < clusterCollection_p->size(); i++)
    {
      clusterPtrVector_p->push_back(reco::CaloClusterPtr(bccHandle, i));
    }
}                               
void SuperClusterProducer::outputValidationInfo ( reco::SuperClusterCollection superclusterCollection) [private]
void SuperClusterProducer::produce ( edm::Event evt,
const edm::EventSetup es 
) [virtual]
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, getClusterPtrVector(), BremRecoveryClusterAlgo::makeSuperClusters(), noSuperClusters, edm::Event::put(), and totalE.

Referenced by produce().

{
  // get the cluster collection out and turn it to a BasicClusterRefVector:
  reco::CaloClusterPtrVector *clusterPtrVector_p = new reco::CaloClusterPtrVector;
  getClusterPtrVector(evt, clusterProducer, clusterCollection, clusterPtrVector_p);

  // run the brem recovery and get the SC collection
  std::auto_ptr<reco::SuperClusterCollection> 
    superclusters_ap(new reco::SuperClusterCollection(bremAlgo_p->makeSuperClusters(*clusterPtrVector_p)));

  // count the total energy and the number of superclusters
  reco::SuperClusterCollection::iterator it;
  for (it = superclusters_ap->begin(); it != superclusters_ap->end(); it++)
    {
      totalE += it->energy();
      noSuperClusters++;
    }

  // put the SC collection in the event
  evt.put(superclusters_ap, superclusterCollection);

  delete clusterPtrVector_p;
}

Member Data Documentation

Definition at line 40 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 43 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 48 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

Definition at line 49 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

Definition at line 46 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 54 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 55 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 39 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 42 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 50 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

Definition at line 51 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

Definition at line 45 of file SuperClusterProducer.h.

Referenced by produce(), and SuperClusterProducer().

Definition at line 35 of file SuperClusterProducer.h.

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

Definition at line 34 of file SuperClusterProducer.h.

Referenced by counterExceeded().

Definition at line 52 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().

double SuperClusterProducer::totalE [private]

Definition at line 37 of file SuperClusterProducer.h.

Referenced by SuperClusterProducer().