CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
FFTJetPileupEstimator Class Reference

#include <RecoJets/FFTJetProducers/plugins/FFTJetPileupEstimator.cc>

Inheritance diagram for FFTJetPileupEstimator:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 FFTJetPileupEstimator (const edm::ParameterSet &)
 
 ~FFTJetPileupEstimator ()
 
- Public Member Functions inherited from edm::EDProducer
 EDProducer ()
 
virtual ~EDProducer ()
 
- Public Member Functions inherited from edm::ProducerBase
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Protected Member Functions

void beginJob ()
 
void endJob ()
 
void produce (edm::Event &, const edm::EventSetup &)
 
- Protected Member Functions inherited from edm::EDProducer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Member Functions

std::auto_ptr
< reco::FFTJetPileupSummary
calibrateFromConfig (double uncalibrated) const
 
std::auto_ptr
< reco::FFTJetPileupSummary
calibrateFromDB (double uncalibrated, const edm::EventSetup &iSetup) const
 
template<class Ptr >
void checkConfig (const Ptr &ptr, const char *message)
 
 FFTJetPileupEstimator ()
 
 FFTJetPileupEstimator (const FFTJetPileupEstimator &)
 
FFTJetPileupEstimatoroperator= (const FFTJetPileupEstimator &)
 

Private Attributes

std::auto_ptr
< fftjet::Functor1< double,
double > > 
calibrationCurve
 
std::string calibrationCurveName
 
std::string calibTableCategory
 
std::string calibTableRecord
 
double cdfvalue
 
unsigned filterNumber
 
edm::InputTag inputLabel
 
bool loadCalibFromDB
 
std::string outputLabel
 
double ptToDensityFactor
 
std::auto_ptr
< fftjet::Functor1< double,
double > > 
uncertaintyCurve
 
std::string uncertaintyCurveName
 
std::vector< double > uncertaintyZones
 
std::string uncertaintyZonesName
 

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)
 

Detailed Description

Description: applies calibration curve and estimates the actual pileup

Implementation: [Notes on implementation]

Definition at line 47 of file FFTJetPileupEstimator.cc.

Constructor & Destructor Documentation

FFTJetPileupEstimator::FFTJetPileupEstimator ( const edm::ParameterSet ps)
explicit

Definition at line 110 of file FFTJetPileupEstimator.cc.

References calibrationCurve, checkConfig(), fftjetcms::fftjet_Function_parser(), edm::ParameterSet::getParameter(), outputLabel, and uncertaintyCurve.

113  init_param(double, cdfvalue),
114  init_param(double, ptToDensityFactor),
115  init_param(unsigned, filterNumber),
116  init_param(std::vector<double>, uncertaintyZones),
123 {
125  ps.getParameter<edm::ParameterSet>("calibrationCurve"));
126  checkConfig(calibrationCurve, "bad calibration curve definition");
127 
129  ps.getParameter<edm::ParameterSet>("uncertaintyCurve"));
130  checkConfig(uncertaintyCurve, "bad uncertainty curve definition");
131 
132  produces<reco::FFTJetPileupSummary>(outputLabel);
133 }
T getParameter(std::string const &) const
std::auto_ptr< fftjet::Functor1< double, double > > calibrationCurve
std::auto_ptr< fftjet::Functor1< double, double > > fftjet_Function_parser(const edm::ParameterSet &ps)
std::vector< double > uncertaintyZones
std::auto_ptr< fftjet::Functor1< double, double > > uncertaintyCurve
#define init_param(type, varname)
void checkConfig(const Ptr &ptr, const char *message)
FFTJetPileupEstimator::~FFTJetPileupEstimator ( )

Definition at line 136 of file FFTJetPileupEstimator.cc.

137 {
138 }
FFTJetPileupEstimator::FFTJetPileupEstimator ( )
private
FFTJetPileupEstimator::FFTJetPileupEstimator ( const FFTJetPileupEstimator )
private

Member Function Documentation

void FFTJetPileupEstimator::beginJob ( void  )
protectedvirtual

Reimplemented from edm::EDProducer.

Definition at line 180 of file FFTJetPileupEstimator.cc.

181 {
182 }
std::auto_ptr< reco::FFTJetPileupSummary > FFTJetPileupEstimator::calibrateFromConfig ( double  uncalibrated) const
private

Definition at line 191 of file FFTJetPileupEstimator.cc.

References i, ptToDensityFactor, and uncertaintyZones.

Referenced by produce().

192 {
193  const double pileupRho = ptToDensityFactor*(*calibrationCurve)(curve);
194  const double rhoUncert = ptToDensityFactor*(*uncertaintyCurve)(curve);
195 
196  // Determine the uncertainty zone of the estimate. The "curve"
197  // has to be above or equal to uncertaintyZones[i] but below
198  // uncertaintyZones[i + 1] (the second condition is also satisfied
199  // by i == uncertaintyZones.size() - 1). Of course, it is assumed
200  // that the vector of zones is configured appropriately -- the zone
201  // boundaries must be presented in the increasing order.
202  int uncertaintyCode = -1;
203  if (!uncertaintyZones.empty())
204  {
205  const unsigned nZones = uncertaintyZones.size();
206  for (unsigned i = 0; i < nZones; ++i)
207  if (curve >= uncertaintyZones[i])
208  {
209  if (i == nZones - 1U)
210  {
211  uncertaintyCode = i;
212  break;
213  }
214  else if (curve < uncertaintyZones[i + 1])
215  {
216  uncertaintyCode = i;
217  break;
218  }
219  }
220  }
221 
222  return std::auto_ptr<reco::FFTJetPileupSummary>(
223  new reco::FFTJetPileupSummary(curve, pileupRho,
224  rhoUncert, uncertaintyCode));
225 }
int i
Definition: DBlmapReader.cc:9
Summary info for pile-up determined by Gaussian filtering.
std::vector< double > uncertaintyZones
std::auto_ptr< reco::FFTJetPileupSummary > FFTJetPileupEstimator::calibrateFromDB ( double  uncalibrated,
const edm::EventSetup iSetup 
) const
private

Definition at line 229 of file FFTJetPileupEstimator.cc.

References calibrationCurveName, calibTableCategory, calibTableRecord, h, StaticFFTJetRcdMapper< Mapper >::instance(), ptToDensityFactor, uncertaintyCurveName, and uncertaintyZonesName.

Referenced by produce().

231 {
234  iSetup, calibTableRecord, h);
235  boost::shared_ptr<npstat::StorableMultivariateFunctor> uz =
237  boost::shared_ptr<npstat::StorableMultivariateFunctor> cc =
239  boost::shared_ptr<npstat::StorableMultivariateFunctor> uc =
241 
242  const double pileupRho = ptToDensityFactor*(*cc)(&curve, 1U);
243  const double rhoUncert = ptToDensityFactor*(*uc)(&curve, 1U);
244  const int uncertaintyCode = round((*uz)(&curve, 1U));
245 
246  return std::auto_ptr<reco::FFTJetPileupSummary>(
247  new reco::FFTJetPileupSummary(curve, pileupRho,
248  rhoUncert, uncertaintyCode));
249 }
Summary info for pile-up determined by Gaussian filtering.
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
static const Mapper & instance()
template<class Ptr >
void FFTJetPileupEstimator::checkConfig ( const Ptr &  ptr,
const char *  message 
)
inlineprivate

Definition at line 71 of file FFTJetPileupEstimator.cc.

References NULL.

Referenced by FFTJetPileupEstimator().

72  {
73  if (ptr.get() == NULL)
74  throw cms::Exception("FFTJetBadConfig") << message << std::endl;
75  }
#define NULL
Definition: scimark2.h:8
void FFTJetPileupEstimator::endJob ( void  )
protectedvirtual

Reimplemented from edm::EDProducer.

Definition at line 185 of file FFTJetPileupEstimator.cc.

186 {
187 }
FFTJetPileupEstimator& FFTJetPileupEstimator::operator= ( const FFTJetPileupEstimator )
private
void FFTJetPileupEstimator::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
protectedvirtual

Implements edm::EDProducer.

Definition at line 145 of file FFTJetPileupEstimator.cc.

References calibrateFromConfig(), calibrateFromDB(), cdfvalue, reco::DiscretizedEnergyFlow::data(), edm::hlt::Exception, filterNumber, edm::Event::getByLabel(), h, LaserDQM_cfg::input, inputLabel, loadCalibFromDB, reco::DiscretizedEnergyFlow::nEtaBins(), reco::DiscretizedEnergyFlow::nPhiBins(), outputLabel, edm::Event::put(), and edmLumisInFiles::summary.

147 {
149  iEvent.getByLabel(inputLabel, input);
150 
151  const reco::DiscretizedEnergyFlow& h(*input);
152  const unsigned nScales = h.nEtaBins();
153  const unsigned nCdfvalues = h.nPhiBins();
154 
155  const unsigned fixedCdfvalueBin = static_cast<unsigned>(
156  std::floor(cdfvalue*nCdfvalues));
157  if (fixedCdfvalueBin >= nCdfvalues)
158  {
159  throw cms::Exception("FFTJetBadConfig")
160  << "Bad cdf value" << std::endl;
161  }
162  if (filterNumber >= nScales)
163  {
164  throw cms::Exception("FFTJetBadConfig")
165  << "Bad filter number" << std::endl;
166  }
167 
168  // Simple fixed-point pile-up estimate
169  const double curve = h.data()[filterNumber*nCdfvalues + fixedCdfvalueBin];
170 
171  std::auto_ptr<reco::FFTJetPileupSummary> summary;
172  if (loadCalibFromDB)
173  summary = calibrateFromDB(curve, iSetup);
174  else
175  summary = calibrateFromConfig(curve);
176  iEvent.put(summary, outputLabel);
177 }
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:94
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
std::auto_ptr< reco::FFTJetPileupSummary > calibrateFromDB(double uncalibrated, const edm::EventSetup &iSetup) const
std::auto_ptr< reco::FFTJetPileupSummary > calibrateFromConfig(double uncalibrated) const

Member Data Documentation

std::auto_ptr<fftjet::Functor1<double,double> > FFTJetPileupEstimator::calibrationCurve
private

Definition at line 83 of file FFTJetPileupEstimator.cc.

Referenced by FFTJetPileupEstimator().

std::string FFTJetPileupEstimator::calibrationCurveName
private

Definition at line 102 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromDB().

std::string FFTJetPileupEstimator::calibTableCategory
private

Definition at line 100 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromDB().

std::string FFTJetPileupEstimator::calibTableRecord
private

Definition at line 99 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromDB().

double FFTJetPileupEstimator::cdfvalue
private

Definition at line 79 of file FFTJetPileupEstimator.cc.

Referenced by produce().

unsigned FFTJetPileupEstimator::filterNumber
private

Definition at line 81 of file FFTJetPileupEstimator.cc.

Referenced by produce().

edm::InputTag FFTJetPileupEstimator::inputLabel
private

Definition at line 77 of file FFTJetPileupEstimator.cc.

Referenced by produce().

bool FFTJetPileupEstimator::loadCalibFromDB
private

Definition at line 104 of file FFTJetPileupEstimator.cc.

Referenced by produce().

std::string FFTJetPileupEstimator::outputLabel
private

Definition at line 78 of file FFTJetPileupEstimator.cc.

Referenced by FFTJetPileupEstimator(), and produce().

double FFTJetPileupEstimator::ptToDensityFactor
private

Definition at line 80 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromConfig(), and calibrateFromDB().

std::auto_ptr<fftjet::Functor1<double,double> > FFTJetPileupEstimator::uncertaintyCurve
private

Definition at line 84 of file FFTJetPileupEstimator.cc.

Referenced by FFTJetPileupEstimator().

std::string FFTJetPileupEstimator::uncertaintyCurveName
private

Definition at line 103 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromDB().

std::vector<double> FFTJetPileupEstimator::uncertaintyZones
private

Definition at line 82 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromConfig().

std::string FFTJetPileupEstimator::uncertaintyZonesName
private

Definition at line 101 of file FFTJetPileupEstimator.cc.

Referenced by calibrateFromDB().