![]() |
|
|
Generated: 8 Jan 2009 |
#include <RndmGen.h>


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 () |
| IInterface implementation. | |
| unsigned long | release () |
| Decrease reference count. | |
| StatusCode | queryInterface (const InterfaceID &riid, void **ppvInterface) |
| Query interface. | |
| virtual StatusCode | initialize (const IRndmGen::Param &par) |
| IRndmGen implementation. | |
| virtual StatusCode | finalize () |
| Initialize the generator. | |
| virtual const InterfaceID & | type () const |
| Random number generator type. | |
| virtual 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.
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] |
IInterface implementation.
Increase reference count
Implements IInterface.
Definition at line 59 of file RndmGen.h.
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.
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.
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] |
IRndmGen implementation.
Initialize the generator.
Initialize the generator
Implements IRndmGen.
Reimplemented in HepRndm::Generator< TYPE >, and HepRndm::Generator< Rndm::DefinedPdf >.
Definition at line 52 of file RndmGen.cpp.
00052 { 00053 m_params = par.clone(); 00054 return (0==m_engine) ? StatusCode::FAILURE : StatusCode::SUCCESS; 00055 }
| StatusCode RndmGen::finalize | ( | void | ) | [virtual] |
Initialize the generator.
Initialize the RndmGen.
Implements IRndmGen.
Reimplemented in HepRndm::Generator< Rndm::DefinedPdf >.
Definition at line 58 of file RndmGen.cpp.
00058 { 00059 return StatusCode::SUCCESS; 00060 }
| virtual const InterfaceID& RndmGen::type | ( | ) | const [inline, virtual] |
| virtual 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.
| 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.
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] |
IRndmEngine* RndmGen::m_engine [protected] |