All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
HiveNumbers.cpp
Go to the documentation of this file.
1 // Framework include files
2 #include "GaudiKernel/SmartIF.h"
3 #include "GaudiKernel/IRndmGen.h"
6 #include "HiveNumbers.h"
7 
8 namespace {
9  constexpr double HIVENUMBERS_BUFFER_SIZE=1000;
10 }
11 
13 
14 // Standard constructor
16 : m_buffer_index(0),
17  m_buffer_size(HIVENUMBERS_BUFFER_SIZE),
18  m_generator(0)
19 {
21 }
22 
23 // Copy constructor
25 : m_buffer_index(0),
26  m_buffer_size(HIVENUMBERS_BUFFER_SIZE),
29  if ( 0 != m_generator ) {
31  }
32 }
33 
34 // Construct and initialize the generator
36 : m_buffer_index(0),
37  m_buffer_size(HIVENUMBERS_BUFFER_SIZE),
38  m_generator(0)
39 {
41  StatusCode status = initialize(svc, par);
42  if (!status.isSuccess()) {
43  throw GaudiException ("Initialization failed !", "HiveRndm::HiveNumbers", status);
44  }
45 }
46 
47 // Standard destructor
49  finalize().ignore();
50 }
51 
52 // Initialize the generator
54  const IRndmGen::Param& par) {
55  if ( svc.isValid() && 0 == m_generator ) {
58  return const_cast<IRndmGenSvc*>(svc.get())->generator( par, m_generator );
59  }
60  return StatusCode::FAILURE;
61 }
62 
63 // Initialize the generator
65  if ( 0 != m_generator ) {
68  m_generator = 0;
69  }
70  return StatusCode::SUCCESS;
71 }
72 
73 #if !defined(GAUDI_V22_API) || defined(G22_NEW_SVCLOCATOR)
74 // Construct and initialize the generator
76 : m_buffer_index(0),
77  m_buffer_size(HIVENUMBERS_BUFFER_SIZE),
78  m_generator(0)
79 {
80  StatusCode status = initialize(svc, par);
81  if (!status.isSuccess()) {
82  throw GaudiException ("Initialization failed !", "HiveRndm::HiveNumbers", status);
83  }
84 }
85 #endif
86 // Initialize the generator
88  return initialize(SmartIF<IRndmGenSvc>(svc), par);
89 }
const unsigned int m_buffer_size
Definition: HiveNumbers.h:31
virtual StatusCode finalize()
Finalization.
Definition: HiveNumbers.cpp:64
Define general base for Gaudi exception.
tbb::spin_rw_mutex_v3 HiveNumbersMutex
Definition: HiveNumbers.h:26
virtual StatusCode finalize()=0
Finalize the generator.
bool isSuccess() const
Test for a status code of SUCCESS.
Definition: StatusCode.h:74
std::vector< double > m_buffer
Definition: HiveNumbers.h:32
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:76
IRndmGen * m_generator
Pointer to random number generator.
Definition: HiveNumbers.h:36
Random Generator service interface definition Definition of a interface for a service to access rando...
Definition: IRndmGenSvc.h:35
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
virtual ~HiveNumbers()
Standard destructor.
Definition: HiveNumbers.cpp:48
virtual unsigned long release()=0
Release Interface instance.
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:62
virtual StatusCode initialize(const SmartIF< IRndmGenSvc > &svc, const IRndmGen::Param &par)
Initialization.
Definition: HiveNumbers.cpp:53
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
unsigned int m_buffer_index
Definition: HiveNumbers.h:30
void ignore() const
Definition: StatusCode.h:106
HiveNumbers()
Standard constructor.
Definition: HiveNumbers.cpp:15
static HiveNumbersMutex m_genMutex
Definition: HiveNumbers.h:33
T reserve(T...args)