The Gaudi Framework  v29r0 (ff2e7097)
RndmGen Class Reference

Random Generator definition. More...

#include <src/RndmGenSvc/RndmGen.h>

Inheritance diagram for RndmGen:
Collaboration diagram for RndmGen:

Public Member Functions

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...
 
 ~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...
 

Protected Member Functions

 RndmGen (IInterface *engine)
 Standard Constructor. More...
 
 ~RndmGen () override=default
 Standard Destructor. More...
 

Protected Attributes

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...
 

Detailed Description

Random Generator definition.

Description: Definition of a interface for a generic random number generators.

Dependencies:

  • Generic Service interface: Gaudi/Interfaces/IInterface.h

History :

+---------+----------------------------------------------+--------+
|    Date |                 Comment                      | Who    |
+---------+----------------------------------------------+--------+
| 21/11/99| Initial version.                             | MF     |
+---------+----------------------------------------------+--------+

Author: M.Frank Version: 1.0

Definition at line 41 of file RndmGen.h.

Constructor & Destructor Documentation

RndmGen::RndmGen ( IInterface engine)
protected

Standard Constructor.

Definition at line 23 of file RndmGen.cpp.

23 : m_engine{engine} {}
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:48
RndmGen::~RndmGen ( )
overrideprotecteddefault

Standard Destructor.

Member Function Documentation

StatusCode RndmGen::finalize ( )
override

Finalize the generator.

Definition at line 32 of file RndmGen.cpp.

long RndmGen::ID ( ) const
inlineoverride

Random number generator ID.

Definition at line 64 of file RndmGen.h.

64 { return long( this ); }
StatusCode RndmGen::initialize ( const IRndmGen::Param par)
override

IRndmGen implementation.

Initialize the generator.

Initialize the generator

Definition at line 26 of file RndmGen.cpp.

27 {
28  m_params.reset( par.clone() );
30 }
virtual Param * clone() const =0
Clone parameters.
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:48
T reset(T...args)
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:46
const IRndmGen::Param* RndmGen::parameters ( ) const
inlineoverride

Access to random number generator parameters.

Definition at line 66 of file RndmGen.h.

66 { return m_params.get(); }
T get(T...args)
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:46
StatusCode RndmGen::shootArray ( std::vector< double > &  array,
long  howmany,
long  start 
) const
override

Multiple shots returning vector with random number according to specified distribution.

Parameters
arrayArray containing random numbers
howmanyfill 'howmany' random numbers into array
start... starting at position start

Definition at line 35 of file RndmGen.cpp.

36 {
37  if ( !m_engine ) return StatusCode::FAILURE;
38  array.resize( start + howmany );
39  std::generate_n( std::next( std::begin( array ), start ), howmany, [&]() { return this->shoot(); } );
40  return StatusCode::SUCCESS;
41 }
T resize(T...args)
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:48
T next(T...args)
T generate_n(T...args)
start
Definition: IOTest.py:99
T begin(T...args)
const InterfaceID& RndmGen::type ( ) const
inlineoverride

Random number generator type.

Definition at line 62 of file RndmGen.h.

62 { return ( m_params != 0 ) ? m_params->type() : IID_IRndmFlat; }
virtual const InterfaceID & type() const
Parameter&#39;s type.
Definition: IRndmGen.h:52
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:46

Member Data Documentation

SmartIF<IRndmEngine> RndmGen::m_engine
protected

Hosting service: Access must always be possible.

Definition at line 48 of file RndmGen.h.

std::unique_ptr<IRndmGen::Param> RndmGen::m_params
protected

Generation parameters.

Definition at line 46 of file RndmGen.h.


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