HepRndm::Generator< Rndm::DefinedPdf > Class Template Reference
Inheritance diagram for HepRndm::Generator< Rndm::DefinedPdf >:
Collaboration diagram for HepRndm::Generator< Rndm::DefinedPdf >:

Public Member Functions

 Generator (IInterface *engine)
 Standard Constructor. More...
 
virtual ~Generator ()=default
 Standard Destructor. More...
 
virtual StatusCode initialize (const IRndmGen::Param &par)
 Initialize the generator. More...
 
virtual StatusCode finalize ()
 Finalize the generator. More...
 
virtual double shoot () const
 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< Interfaces >
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::string > getInterfaceNames () 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...
 
 ~implements () override=default
 Virtual destructor. 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...
 
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::string > getInterfaceNames () 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...
 
 ~implements () override=default
 Virtual destructor. 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...
 
- Public Member Functions inherited from extend_interfaces< Interfaces...>
 ~extend_interfaces () override=default
 Virtual destructor. More...
 
 ~extend_interfaces () override=default
 Virtual destructor. 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< Interfaces >
unsigned long m_refCount = 0
 Reference counter. More...
 

Additional Inherited Members

- Public Types inherited from implements< Interfaces >
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
 
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...
 
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...
 
 ~RndmGen () override=default
 Standard Destructor. More...
 

Detailed Description

template<>
class HepRndm::Generator< Rndm::DefinedPdf >

Definition at line 340 of file HepRndmGenerators.cpp.

Constructor & Destructor Documentation

Standard Constructor.

Definition at line 346 of file HepRndmGenerators.cpp.

347  : RndmGen (engine) {
348  }
RndmGen(IInterface *engine)
Standard Constructor.
Definition: RndmGen.cpp:23
virtual HepRndm::Generator< Rndm::DefinedPdf >::~Generator ( )
virtualdefault

Standard Destructor.

Member Function Documentation

virtual StatusCode HepRndm::Generator< Rndm::DefinedPdf >::finalize ( )
inlinevirtual

Finalize the generator.

Definition at line 376 of file HepRndmGenerators.cpp.

376  {
377  m_generator.reset();
378  return RndmGen::finalize();
379  }
std::unique_ptr< RandGeneral > m_generator
StatusCode finalize() override
Finalize the generator.
Definition: RndmGen.cpp:33
virtual StatusCode HepRndm::Generator< Rndm::DefinedPdf >::initialize ( const IRndmGen::Param par)
inlinevirtual

Initialize the generator.

Definition at line 352 of file HepRndmGenerators.cpp.

352  {
353  StatusCode status = RndmGen::initialize(par);
354  if ( status.isSuccess() ) {
355  try {
356  Rndm::DefinedPdf* specs = dynamic_cast<Rndm::DefinedPdf*>(m_params.get());
357  if ( specs ) {
358  m_generator.reset( new RandGeneral( &specs->pdf()[0],
359  specs->pdf().size(),
360  specs->interpolation()) );
361  BaseEngine* engine = dynamic_cast<BaseEngine*>(m_engine.get());
362  if ( engine ) {
363  m_hepEngine = engine->hepEngine();
364  if ( m_hepEngine ) {
365  return StatusCode::SUCCESS;
366  }
367  }
368  }
369  }
370  catch (...) {
371  }
372  }
373  return StatusCode::FAILURE;
374  }
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:76
std::unique_ptr< RandGeneral > m_generator
long interpolation() const
Access interpolation type.
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:47
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode initialize(const IRndmGen::Param &par) override
IRndmGen implementation.
Definition: RndmGen.cpp:28
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:45
Generate a random number Generator following generally distributed random values, given a user-define...
std::vector< double > & pdf()
Access pdf.
virtual double HepRndm::Generator< Rndm::DefinedPdf >::shoot ( ) const
inlinevirtual

Single shot.

Definition at line 381 of file HepRndmGenerators.cpp.

381  {
382  return m_generator->shoot(m_hepEngine);
383  }
std::unique_ptr< RandGeneral > m_generator

Member Data Documentation

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

Definition at line 342 of file HepRndmGenerators.cpp.

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

Definition at line 343 of file HepRndmGenerators.cpp.


The documentation for this class was generated from the following file: