CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HistogramGenerator Class Reference

#include <HistogramGenerator.h>

Inheritance diagram for HistogramGenerator:
BaseNumericalRandomGenerator

Public Member Functions

double function (double x) override
 The probability density function implementation. More...
 
 HistogramGenerator (TH1 *histo)
 Constructor : initialization of the Random Generator. More...
 
 ~HistogramGenerator () override
 Default destructor. More...
 
- Public Member Functions inherited from BaseNumericalRandomGenerator
 BaseNumericalRandomGenerator (double xmin=0., double xmax=1., int n=1000, int iter=6)
 
double generate (RandomEngineAndDistribution const *) const
 The random generation according to function() More...
 
double generateExp (RandomEngineAndDistribution const *) const
 
double generateLin (RandomEngineAndDistribution const *) const
 
void initialize ()
 The initialization (numerical integarion, inversion) More...
 
bool setSubInterval (double x1, double x2)
 To shoot in a given interval. More...
 
virtual ~BaseNumericalRandomGenerator ()
 Default destructor. More...
 

Private Member Functions

double ersatzt (double x)
 Gamma Function. More...
 

Private Attributes

TH1 * myHisto
 Pointer to the histogram. More...
 
int nbins
 n bins More...
 
TAxis * theXaxis
 the axis More...
 

Additional Inherited Members

- Protected Attributes inherited from BaseNumericalRandomGenerator
double deltar
 
std::vector< double > f
 
int iter
 
int n
 
double rmin
 
std::vector< double > sampling
 
double xmax
 
double xmin
 

Detailed Description

Definition at line 14 of file HistogramGenerator.h.

Constructor & Destructor Documentation

◆ HistogramGenerator()

HistogramGenerator::HistogramGenerator ( TH1 *  histo)
inline

Constructor : initialization of the Random Generator.

Definition at line 17 of file HistogramGenerator.h.

18  : BaseNumericalRandomGenerator(histo->GetXaxis()->GetXmin(), histo->GetXaxis()->GetXmax(), 100000, 3),
19  myHisto(histo),
20  theXaxis(histo->GetXaxis()),
21  nbins(histo->GetXaxis()->GetNbins()) {
22  // std::cout << "Old xmin/xmax = " << xmin << " " << xmax << std::endl;
23  // Drop lowest and highest empty bins
24  double du = (xmax - xmin) / (float)nbins;
25  // Restrict xmin to meaningful values
26  while (function(xmin) <= 0.)
27  xmin += du;
28  // Restrict xmax to meaningful values
29  while (function(xmax) <= 0.)
30  xmax -= du;
31 
32  if (xmin != histo->GetXaxis()->GetXmin())
33  xmin -= du;
34  if (xmax != histo->GetXaxis()->GetXmax())
35  xmax += du;
36 
37  // std::cout << "New xmin/xmax = " << xmin << " " << xmax << std::endl;
38 
39  // std::cout <<" Init " << std::endl;
40  initialize();
41  }

References timingPdfMaker::histo, BaseNumericalRandomGenerator::initialize(), nbins, BaseNumericalRandomGenerator::xmax, and BaseNumericalRandomGenerator::xmin.

◆ ~HistogramGenerator()

HistogramGenerator::~HistogramGenerator ( )
inlineoverride

Default destructor.

Definition at line 44 of file HistogramGenerator.h.

44 {}

Member Function Documentation

◆ ersatzt()

double HistogramGenerator::ersatzt ( double  x)
private

Gamma Function.

Definition at line 5 of file HistogramGenerator.cc.

5  {
6  int ibin = theXaxis->FindBin(x);
7  // std::cout << x << " Bin " << ibin << std::endl;
8  double x1 = myHisto->GetBinLowEdge(ibin);
9  double x2 = x1 + myHisto->GetBinWidth(ibin);
10  double y1 = myHisto->GetBinContent(ibin);
11  double y2;
12  if (ibin < nbins)
13  y2 = myHisto->GetBinContent(ibin + 1);
14  else
15  y2 = y1;
16  // std::cout << " X1 " << x1 <<" X2 " << x2 << " Y1 " <<y1 << " Y2 " << y2 << std::endl;
17  return y2 + (y1 - y2) * (x2 - x) / (x2 - x1);
18 }

References myHisto, nbins, theXaxis, x, testProducerWithPsetDescEmpty_cfi::x1, testProducerWithPsetDescEmpty_cfi::x2, testProducerWithPsetDescEmpty_cfi::y1, and testProducerWithPsetDescEmpty_cfi::y2.

Referenced by function().

◆ function()

double HistogramGenerator::function ( double  x)
inlineoverridevirtual

The probability density function implementation.

Implements BaseNumericalRandomGenerator.

Definition at line 47 of file HistogramGenerator.h.

47 { return ersatzt(x); }

References ersatzt(), and x.

Member Data Documentation

◆ myHisto

TH1* HistogramGenerator::myHisto
private

Pointer to the histogram.

Definition at line 51 of file HistogramGenerator.h.

Referenced by ersatzt().

◆ nbins

int HistogramGenerator::nbins
private

◆ theXaxis

TAxis* HistogramGenerator::theXaxis
private

the axis

Definition at line 54 of file HistogramGenerator.h.

Referenced by ersatzt().

HistogramGenerator::myHisto
TH1 * myHisto
Pointer to the histogram.
Definition: HistogramGenerator.h:51
testProducerWithPsetDescEmpty_cfi.x2
x2
Definition: testProducerWithPsetDescEmpty_cfi.py:28
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:278
DDAxes::x
testProducerWithPsetDescEmpty_cfi.x1
x1
Definition: testProducerWithPsetDescEmpty_cfi.py:33
testProducerWithPsetDescEmpty_cfi.y1
y1
Definition: testProducerWithPsetDescEmpty_cfi.py:29
BaseNumericalRandomGenerator::initialize
void initialize()
The initialization (numerical integarion, inversion)
Definition: BaseNumericalRandomGenerator.cc:13
testProducerWithPsetDescEmpty_cfi.y2
y2
Definition: testProducerWithPsetDescEmpty_cfi.py:30
BaseNumericalRandomGenerator::xmin
double xmin
Definition: BaseNumericalRandomGenerator.h:60
HistogramGenerator::ersatzt
double ersatzt(double x)
Gamma Function.
Definition: HistogramGenerator.cc:5
HistogramGenerator::nbins
int nbins
n bins
Definition: HistogramGenerator.h:57
BaseNumericalRandomGenerator::xmax
double xmax
Definition: BaseNumericalRandomGenerator.h:60
BaseNumericalRandomGenerator::BaseNumericalRandomGenerator
BaseNumericalRandomGenerator(double xmin=0., double xmax=1., int n=1000, int iter=6)
Definition: BaseNumericalRandomGenerator.cc:7
HistogramGenerator::theXaxis
TAxis * theXaxis
the axis
Definition: HistogramGenerator.h:54