The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
HiveRndm::HiveNumbers Class Reference

#include </builds/gaudi/Gaudi/GaudiHive/src/HiveNumbers.h>

Collaboration diagram for HiveRndm::HiveNumbers:

Public Member Functions

 HiveNumbers ()
 Standard constructor.
 
 HiveNumbers (const HiveNumbers &copy)
 Copy constructor.
 
 HiveNumbers (const SmartIF< IRndmGenSvc > &svc, const IRndmGen::Param &par)
 Initializing constructor.
 
virtual ~HiveNumbers ()
 Standard destructor.
 
virtual StatusCode initialize (const SmartIF< IRndmGenSvc > &svc, const IRndmGen::Param &par)
 Initialization.
 
virtual StatusCode finalize ()
 Finalization.
 
 operator bool () const
 Check if the number supply is possible.
 
double operator() ()
 Operator () for the use within STL.
 
double pop ()
 Pop a new number from the buffer.
 
double shoot ()
 Pop a new number from the buffer.
 
StatusCode shootArray (std::vector< double > &array, long num, long start=0)
 Pop a new number from the buffer.
 

Protected Attributes

IRndmGenm_generator
 Pointer to random number generator.
 

Private Attributes

unsigned int m_buffer_index
 
const unsigned int m_buffer_size
 
std::vector< double > m_buffer
 

Static Private Attributes

static HiveNumbersMutex m_genMutex
 

Detailed Description

Definition at line 37 of file HiveNumbers.h.

Constructor & Destructor Documentation

◆ HiveNumbers() [1/3]

HiveRndm::HiveNumbers::HiveNumbers ( )

Standard constructor.

Definition at line 25 of file HiveNumbers.cpp.

25 : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( 0 ) {
26 m_buffer.reserve( m_buffer_size );
27}
const unsigned int m_buffer_size
Definition HiveNumbers.h:40
unsigned int m_buffer_index
Definition HiveNumbers.h:39
IRndmGen * m_generator
Pointer to random number generator.
Definition HiveNumbers.h:46
std::vector< double > m_buffer
Definition HiveNumbers.h:41

◆ HiveNumbers() [2/3]

HiveRndm::HiveNumbers::HiveNumbers ( const HiveNumbers & copy)

Copy constructor.

Definition at line 30 of file HiveNumbers.cpp.

31 : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( copy.m_generator ) {
32 m_buffer.reserve( m_buffer_size );
33 if ( 0 != m_generator ) { m_generator->addRef(); }
34}

◆ HiveNumbers() [3/3]

HiveRndm::HiveNumbers::HiveNumbers ( const SmartIF< IRndmGenSvc > & svc,
const IRndmGen::Param & par )

Initializing constructor.

Definition at line 37 of file HiveNumbers.cpp.

38 : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( 0 ) {
39 m_buffer.reserve( m_buffer_size );
40 StatusCode status = initialize( svc, par );
41 if ( !status.isSuccess() ) { throw GaudiException( "Initialization failed !", "HiveRndm::HiveNumbers", status ); }
42}
virtual StatusCode initialize(const SmartIF< IRndmGenSvc > &svc, const IRndmGen::Param &par)
Initialization.
bool isSuccess() const
Definition StatusCode.h:314

◆ ~HiveNumbers()

HiveRndm::HiveNumbers::~HiveNumbers ( )
virtual

Standard destructor.

Definition at line 45 of file HiveNumbers.cpp.

45{ finalize().ignore(); }
virtual StatusCode finalize()
Finalization.
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition StatusCode.h:139

Member Function Documentation

◆ finalize()

StatusCode HiveRndm::HiveNumbers::finalize ( )
virtual

Finalization.

Definition at line 58 of file HiveNumbers.cpp.

58 {
59 if ( 0 != m_generator ) {
60 m_generator->finalize().ignore();
61 m_generator->release();
62 m_generator = 0;
63 }
65}
constexpr static const auto SUCCESS
Definition StatusCode.h:99

◆ initialize()

StatusCode HiveRndm::HiveNumbers::initialize ( const SmartIF< IRndmGenSvc > & svc,
const IRndmGen::Param & par )
virtual

Initialization.

Fix-Me
: this is a hack, but I do not have the time to review the correct constantness of all the methods

Definition at line 48 of file HiveNumbers.cpp.

48 {
49 if ( svc.isValid() && 0 == m_generator ) {
52 return svc->generator( par, m_generator );
53 }
55}
virtual StatusCode generator(const IRndmGen::Param &par, IRndmGen *&refpGen)=0
Add a Generator factory.
bool isValid() const
Allow for check if smart pointer is valid.
Definition SmartIF.h:69
constexpr static const auto FAILURE
Definition StatusCode.h:100

◆ operator bool()

HiveRndm::HiveNumbers::operator bool ( ) const
inline

Check if the number supply is possible.

Definition at line 62 of file HiveNumbers.h.

62{ return m_generator != 0; }

◆ operator()()

double HiveRndm::HiveNumbers::operator() ( )
inline

Operator () for the use within STL.

Definition at line 64 of file HiveNumbers.h.

64{ return this->shoot(); }
double shoot()
Pop a new number from the buffer.
Definition HiveNumbers.h:68

◆ pop()

double HiveRndm::HiveNumbers::pop ( )
inline

Pop a new number from the buffer.

Definition at line 66 of file HiveNumbers.h.

66{ return this->shoot(); }

◆ shoot()

double HiveRndm::HiveNumbers::shoot ( )
inline

Pop a new number from the buffer.

Definition at line 68 of file HiveNumbers.h.

68 {
69 if ( 0 != m_generator ) {
70 if ( m_buffer_index == 0 ) { // we are out of numbers
71 this->shootArray( m_buffer, m_buffer_size ).ignore( /* AUTOMATICALLY ADDED FOR gaudi/Gaudi!763 */ );
73 }
74 const double number = m_buffer[m_buffer_index];
76 return number;
77 }
78 return -1;
79 }
StatusCode shootArray(std::vector< double > &array, long num, long start=0)
Pop a new number from the buffer.
Definition HiveNumbers.h:81

◆ shootArray()

StatusCode HiveRndm::HiveNumbers::shootArray ( std::vector< double > & array,
long num,
long start = 0 )
inline

Pop a new number from the buffer.

Definition at line 81 of file HiveNumbers.h.

81 {
82 if ( 0 != m_generator ) {
83 StatusCode status;
84 {
85 HiveNumbersMutex::scoped_lock lock( m_genMutex );
86 status = m_generator->shootArray( array, num, start );
87 }
88 return status;
89 }
91 }
static HiveNumbersMutex m_genMutex
Definition HiveNumbers.h:42

Member Data Documentation

◆ m_buffer

std::vector<double> HiveRndm::HiveNumbers::m_buffer
private

Definition at line 41 of file HiveNumbers.h.

◆ m_buffer_index

unsigned int HiveRndm::HiveNumbers::m_buffer_index
private

Definition at line 39 of file HiveNumbers.h.

◆ m_buffer_size

const unsigned int HiveRndm::HiveNumbers::m_buffer_size
private

Definition at line 40 of file HiveNumbers.h.

◆ m_generator

IRndmGen* HiveRndm::HiveNumbers::m_generator
protected

Pointer to random number generator.

Definition at line 46 of file HiveNumbers.h.

◆ m_genMutex

HiveRndm::HiveNumbersMutex HiveRndm::HiveNumbers::m_genMutex
staticprivate

Definition at line 42 of file HiveNumbers.h.


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