The Gaudi Framework  master (37c0b60a)
Rndm::DefinedPdf Class Reference

Generate a random number Generator following generally distributed random values, given a user-defined probability distribution function. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/GaudiKernel/RndmGenerators.h>

Inheritance diagram for Rndm::DefinedPdf:
Collaboration diagram for Rndm::DefinedPdf:

Public Member Functions

 DefinedPdf (const std::vector< double > &pdf, long intpol)
 Standard Constructor. More...
 
std::vector< double > & pdf ()
 Access pdf. More...
 
long interpolation () const
 Access interpolation type. More...
 
DefinedPdfclone () const override
 Clone parameters. More...
 
- Public Member Functions inherited from IRndmGen::Param
 Param (const InterfaceID &type=IID_IRndmFlat)
 Standard constructor. More...
 
virtual ~Param ()=default
 Standard Destructor. More...
 
virtual const InterfaceIDtype () const
 Parameter's type. More...
 

Static Public Member Functions

static const InterfaceIDtypeID ()
 Identifier for factory. More...
 

Protected Attributes

std::vector< double > m_pdf
 Vector containing probability distribution function. More...
 
long m_interpolation
 Interpolation type. More...
 
- Protected Attributes inherited from IRndmGen::Param
const InterfaceID m_type
 Type of the generator. More...
 

Detailed Description

Generate a random number Generator following generally distributed random values, given a user-defined probability distribution function.

The probability distribution function (Pdf) must be provided by the user as an array of positive real number. The array size must also be provided. The Pdf doesn't need to be normalized to 1. if IntType = 0 ( default value ) a uniform random number is generated. The uniform number is then transformed to the user's distribution using the cumulative probability distribution constructed from his histogram. The cumulative distribution is inverted using a binary search for the nearest bin boundary and a linear interpolation within the bin. Therefore a constant density within each bin is generated. if IntType = 1 no interpolation is performed and the result is a discrete distribution.

Definition at line 301 of file RndmGenerators.h.

Constructor & Destructor Documentation

◆ DefinedPdf()

Rndm::DefinedPdf::DefinedPdf ( const std::vector< double > &  pdf,
long  intpol 
)
inline

Standard Constructor.

Definition at line 310 of file RndmGenerators.h.

311  : IRndmGen::Param( IID_IRndmDefinedPdf ), m_pdf( pdf ), m_interpolation( intpol ) {}

Member Function Documentation

◆ clone()

DefinedPdf* Rndm::DefinedPdf::clone ( ) const
inlineoverridevirtual

Clone parameters.

Implements IRndmGen::Param.

Definition at line 319 of file RndmGenerators.h.

319 { return new DefinedPdf( m_pdf, m_interpolation ); }

◆ interpolation()

long Rndm::DefinedPdf::interpolation ( ) const
inline

Access interpolation type.

Definition at line 315 of file RndmGenerators.h.

315 { return m_interpolation; }

◆ pdf()

std::vector<double>& Rndm::DefinedPdf::pdf ( )
inline

Access pdf.

Definition at line 313 of file RndmGenerators.h.

313 { return m_pdf; }

◆ typeID()

static const InterfaceID& Rndm::DefinedPdf::typeID ( )
inlinestatic

Identifier for factory.

Definition at line 317 of file RndmGenerators.h.

317 { return IID_IRndmDefinedPdf; }

Member Data Documentation

◆ m_interpolation

long Rndm::DefinedPdf::m_interpolation
protected

Interpolation type.

Definition at line 306 of file RndmGenerators.h.

◆ m_pdf

std::vector<double> Rndm::DefinedPdf::m_pdf
protected

Vector containing probability distribution function.

Definition at line 304 of file RndmGenerators.h.


The documentation for this class was generated from the following file:
Rndm::DefinedPdf::DefinedPdf
DefinedPdf(const std::vector< double > &pdf, long intpol)
Standard Constructor.
Definition: RndmGenerators.h:310
Rndm::DefinedPdf::m_interpolation
long m_interpolation
Interpolation type.
Definition: RndmGenerators.h:306
Rndm::DefinedPdf::m_pdf
std::vector< double > m_pdf
Vector containing probability distribution function.
Definition: RndmGenerators.h:304
Rndm::DefinedPdf::pdf
std::vector< double > & pdf()
Access pdf.
Definition: RndmGenerators.h:313
IRndmGen::Param
Definition: IRndmGen.h:49