![]() |
|
|
Generated: 18 Jul 2008 |
#include <RndmGen.h>
Inheritance diagram for RndmGen:


Description: Definition of a interface for a generic random number generators.
Dependencies:
History :
+---------+----------------------------------------------+--------+
| Date | Comment | Who |
+---------+----------------------------------------------+--------+
| 21/11/99| Initial version. | MF |
+---------+----------------------------------------------+--------+
Author: M.Frank Version: 1.0
Definition at line 39 of file RndmGen.h.
Public Member Functions | |
| unsigned long | addRef () |
| Increase reference count. | |
| unsigned long | release () |
| Decrease reference count. | |
| StatusCode | queryInterface (const InterfaceID &riid, void **ppvInterface) |
| Query interface. | |
| virtual StatusCode | initialize (const IRndmGen::Param &par) |
| Initialize the generator. | |
| virtual StatusCode | finalize () |
| Initialize the generator. | |
| virtual const InterfaceID & | type () const |
| Random number generator type. | |
| virtual const long | ID () const |
| Random number generator ID. | |
| virtual const IRndmGen::Param * | parameters () const |
| Access to random number generator parameters. | |
| virtual double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| virtual StatusCode | shootArray (std::vector< double > &array, long howmany, long start) const |
| Multiple shots returning vector with random number according to specified distribution. | |
Protected Member Functions | |
| RndmGen (IInterface *engine) | |
| Standard Constructor. | |
| virtual | ~RndmGen () |
| Standard Destructor. | |
Protected Attributes | |
| IRndmGen::Param * | m_params |
| Generation parameters. | |
| IRndmEngine * | m_engine |
| Hosting service: Access must always be possible. | |
Private Attributes | |
| unsigned long | m_refCount |
| Reference count. | |
| RndmGen::RndmGen | ( | IInterface * | engine | ) | [protected] |
Standard Constructor.
Definition at line 22 of file RndmGen.cpp.
References StatusCode::ignore(), IID_IRndmEngine, m_engine, and IInterface::queryInterface().
00022 : m_refCount(0), m_params(0), m_engine(0) { 00023 if ( 0 != engine ) { 00024 engine->queryInterface(IID_IRndmEngine, pp_cast<void>(&m_engine)).ignore(); 00025 } 00026 }
| RndmGen::~RndmGen | ( | ) | [protected, virtual] |
| unsigned long RndmGen::addRef | ( | ) | [inline, virtual] |
Increase reference count.
Implements IInterface.
Definition at line 59 of file RndmGen.h.
References m_refCount.
Referenced by queryInterface().
00059 { 00060 return ++m_refCount; 00061 }
| unsigned long RndmGen::release | ( | ) | [inline, virtual] |
Decrease reference count.
Implements IInterface.
Definition at line 64 of file RndmGen.h.
References m_refCount.
00064 { 00065 unsigned long cnt = --m_refCount; 00066 if ( cnt <= 0 ) { 00067 delete this; 00068 } 00069 return cnt; 00070 }
| StatusCode RndmGen::queryInterface | ( | const InterfaceID & | riid, | |
| void ** | ppvInterface | |||
| ) | [virtual] |
Query interface.
Implements IInterface.
Definition at line 37 of file RndmGen.cpp.
References addRef(), StatusCode::FAILURE, IID_IInterface, IID_IRndmGen, and StatusCode::SUCCESS.
00037 { 00038 if ( IID_IRndmGen == riid ) { 00039 *ppvInterface = (IRndmGen*)this; 00040 } 00041 else if ( IID_IInterface == riid ) { 00042 *ppvInterface = (IInterface*)this; 00043 } 00044 else { 00045 return StatusCode::FAILURE; 00046 } 00047 addRef(); 00048 return StatusCode::SUCCESS; 00049 }
| StatusCode RndmGen::initialize | ( | const IRndmGen::Param & | par | ) | [virtual] |
Initialize the generator.
Implements IRndmGen.
Reimplemented in HepRndm::Generator< TYPE >, and HepRndm::Generator< Rndm::DefinedPdf >.
Definition at line 52 of file RndmGen.cpp.
References IRndmGen::Param::clone(), StatusCode::FAILURE, m_engine, m_params, and StatusCode::SUCCESS.
Referenced by HepRndm::Generator< Rndm::DefinedPdf >::initialize(), and HepRndm::Generator< TYPE >::initialize().
00052 { 00053 m_params = par.clone(); 00054 return (0==m_engine) ? StatusCode::FAILURE : StatusCode::SUCCESS; 00055 }
| StatusCode RndmGen::finalize | ( | ) | [virtual] |
Initialize the generator.
Implements IRndmGen.
Reimplemented in HepRndm::Generator< Rndm::DefinedPdf >.
Definition at line 58 of file RndmGen.cpp.
References StatusCode::SUCCESS.
Referenced by HepRndm::Generator< Rndm::DefinedPdf >::finalize().
00058 { 00059 return StatusCode::SUCCESS; 00060 }
| virtual const InterfaceID& RndmGen::type | ( | ) | const [inline, virtual] |
Random number generator type.
Implements IRndmGen.
Definition at line 80 of file RndmGen.h.
References IID_IRndmFlat, m_params, and IRndmGen::Param::type().
00080 { 00081 return (m_params != 0) ? m_params->type() : IID_IRndmFlat; 00082 }
| virtual const long RndmGen::ID | ( | ) | const [inline, virtual] |
| virtual const IRndmGen::Param* RndmGen::parameters | ( | ) | const [inline, virtual] |
| double RndmGen::shoot | ( | ) | const [virtual] |
Single shot returning single random number according to specified distribution.
Implements IRndmGen.
Reimplemented in HepRndm::Generator< TYPE >, HepRndm::Generator< Rndm::DefinedPdf >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, HepRndm::Generator< TYPE >, and HepRndm::Generator< TYPE >.
Definition at line 63 of file RndmGen.cpp.
Referenced by shootArray().
| StatusCode RndmGen::shootArray | ( | std::vector< double > & | array, | |
| long | howmany, | |||
| long | start | |||
| ) | const [virtual] |
Multiple shots returning vector with random number according to specified distribution.
| array | Array containing random numbers | |
| howmany | fill 'howmany' random numbers into array | |
| start | ... starting at position start |
Implements IRndmGen.
Definition at line 68 of file RndmGen.cpp.
References StatusCode::FAILURE, m_engine, std::vector< _Tp, _Alloc >::resize(), shoot(), and StatusCode::SUCCESS.
00068 { 00069 if ( 0 != m_engine ) { 00070 long cnt = start; 00071 array.resize(start+howmany); 00072 for ( long i = start, num = start+howmany; i < num; i++ ) { 00073 array[cnt++] = shoot(); 00074 } 00075 return StatusCode::SUCCESS; 00076 } 00077 return StatusCode::FAILURE; 00078 }
unsigned long RndmGen::m_refCount [private] |
IRndmGen::Param* RndmGen::m_params [protected] |
Generation parameters.
Definition at line 47 of file RndmGen.h.
Referenced by initialize(), HepRndm::Generator< Rndm::DefinedPdf >::initialize(), HepRndm::Generator< TYPE >::initialize(), parameters(), type(), and ~RndmGen().
IRndmEngine* RndmGen::m_engine [protected] |
Hosting service: Access must always be possible.
Definition at line 49 of file RndmGen.h.
Referenced by initialize(), HepRndm::Generator< Rndm::DefinedPdf >::initialize(), HepRndm::Generator< TYPE >::initialize(), RndmGen(), shootArray(), and ~RndmGen().