The Gaudi Framework  master (594c33fa)
HepRndm::Generator< Rndm::DefinedPdf > Class Reference
Inheritance diagram for HepRndm::Generator< Rndm::DefinedPdf >:
Collaboration diagram for HepRndm::Generator< Rndm::DefinedPdf >:

Public Member Functions

 Generator (IInterface *engine)
 Standard Constructor. More...
 
StatusCode initialize (const IRndmGen::Param &par) override
 Initialize the generator. More...
 
StatusCode finalize () override
 Finalize the generator. More...
 
double shoot () const override
 Single shot. More...
 
- Public Member Functions inherited from RndmGen
StatusCode initialize (const IRndmGen::Param &par) override
 IRndmGen implementation
More...
 
StatusCode finalize () override
 Finalize the generator. More...
 
const InterfaceIDtype () const override
 Random number generator type. More...
 
long ID () const override
 Random number generator ID. More...
 
const IRndmGen::Paramparameters () const override
 Access to random number generator parameters. More...
 
StatusCode shootArray (std::vector< double > &array, long howmany, long start) const override
 Multiple shots returning vector with random number according to specified distribution. More...
 
- Public Member Functions inherited from implements< IRndmGen >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 implements ()=default
 Default constructor. More...
 
 implements (const implements &)
 Copy constructor (zero the reference count) More...
 
implementsoperator= (const implements &)
 Assignment operator (do not touch the reference count). More...
 
unsigned long addRef () override
 Reference Interface instance
More...
 
unsigned long release () override
 Release Interface instance
More...
 
unsigned long refCount () const override
 Current reference count
More...
 

Protected Attributes

std::unique_ptr< RandGeneral > m_generator
 
HepRandomEngine * m_hepEngine = nullptr
 
- Protected Attributes inherited from RndmGen
std::unique_ptr< IRndmGen::Paramm_params
 Generation parameters. More...
 
SmartIF< IRndmEnginem_engine
 Hosting service: Access must always be possible. More...
 
- Protected Attributes inherited from implements< IRndmGen >
std::atomic_ulong m_refCount
 Reference counter
More...
 

Additional Inherited Members

- Public Types inherited from implements< IRndmGen >
using base_class = implements< Interfaces... >
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
using iids = typename extend_interfaces_base::ext_iids
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 
- Protected Member Functions inherited from RndmGen
 RndmGen (IInterface *engine)
 Standard Constructor. More...
 

Detailed Description

Definition at line 294 of file HepRndmGenerators.cpp.

Constructor & Destructor Documentation

◆ Generator()

Standard Constructor.

Definition at line 301 of file HepRndmGenerators.cpp.

301 : RndmGen( engine ) {}

Member Function Documentation

◆ finalize()

StatusCode HepRndm::Generator< Rndm::DefinedPdf >::finalize ( )
inlineoverride

Finalize the generator.

Definition at line 321 of file HepRndmGenerators.cpp.

321  {
322  m_generator.reset();
323  return RndmGen::finalize();
324  }

◆ initialize()

StatusCode HepRndm::Generator< Rndm::DefinedPdf >::initialize ( const IRndmGen::Param par)
inlineoverride

Initialize the generator.

Definition at line 303 of file HepRndmGenerators.cpp.

303  {
304  StatusCode status = RndmGen::initialize( par );
305  if ( status.isSuccess() ) {
306  try {
307  Rndm::DefinedPdf* specs = dynamic_cast<Rndm::DefinedPdf*>( m_params.get() );
308  if ( specs ) {
309  m_generator.reset( new RandGeneral( &specs->pdf()[0], specs->pdf().size(), specs->interpolation() ) );
310  BaseEngine* engine = dynamic_cast<BaseEngine*>( m_engine.get() );
311  if ( engine ) {
312  m_hepEngine = engine->hepEngine();
313  if ( m_hepEngine ) { return StatusCode::SUCCESS; }
314  }
315  }
316  } catch ( ... ) {}
317  }
318  return StatusCode::FAILURE;
319  }

◆ shoot()

double HepRndm::Generator< Rndm::DefinedPdf >::shoot ( ) const
inlineoverride

Single shot.

Definition at line 326 of file HepRndmGenerators.cpp.

326 { return m_generator->shoot( m_hepEngine ); }

Member Data Documentation

◆ m_generator

std::unique_ptr<RandGeneral> HepRndm::Generator< Rndm::DefinedPdf >::m_generator
protected

Definition at line 296 of file HepRndmGenerators.cpp.

◆ m_hepEngine

HepRandomEngine* HepRndm::Generator< Rndm::DefinedPdf >::m_hepEngine = nullptr
protected

Definition at line 297 of file HepRndmGenerators.cpp.


The documentation for this class was generated from the following file:
Rndm::DefinedPdf::interpolation
long interpolation() const
Access interpolation type.
Definition: RndmGenerators.h:315
RndmGen::finalize
StatusCode finalize() override
Finalize the generator.
Definition: RndmGen.cpp:41
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
std::vector::size
T size(T... args)
std::unique_ptr::get
T get(T... args)
std::unique_ptr::reset
T reset(T... args)
RndmGen::RndmGen
RndmGen(IInterface *engine)
Standard Constructor.
Definition: RndmGen.cpp:33
compareOutputFiles.par
par
Definition: compareOutputFiles.py:477
RndmGen::initialize
StatusCode initialize(const IRndmGen::Param &par) override
IRndmGen implementation
Definition: RndmGen.cpp:36
StatusCode
Definition: StatusCode.h:65
Rndm::DefinedPdf::pdf
std::vector< double > & pdf()
Access pdf.
Definition: RndmGenerators.h:313
HepRndm::Generator< Rndm::DefinedPdf >::m_hepEngine
HepRandomEngine * m_hepEngine
Definition: HepRndmGenerators.cpp:297
RndmGen::m_engine
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:57
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
HepRndm::Generator< Rndm::DefinedPdf >::m_generator
std::unique_ptr< RandGeneral > m_generator
Definition: HepRndmGenerators.cpp:296
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
RndmGen::m_params
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:55
Rndm::DefinedPdf
Generate a random number Generator following generally distributed random values, given a user-define...
Definition: RndmGenerators.h:301
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101