Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v31r0 (aeb156f0)
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 "HiveNumbers.h"
4 #include "GaudiKernel/IRndmGen.h"
6 #include "GaudiKernel/SmartIF.h"
7 
8 namespace {
9  constexpr double HIVENUMBERS_BUFFER_SIZE = 1000;
10 }
11 
13 
14 // Standard constructor
15 HiveRndm::HiveNumbers::HiveNumbers() : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( 0 ) {
17 }
18 
19 // Copy constructor
21  : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( copy.m_generator ) {
23  if ( 0 != m_generator ) { m_generator->addRef(); }
24 }
25 
26 // Construct and initialize the generator
28  : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( 0 ) {
30  StatusCode status = initialize( svc, par );
31  if ( !status.isSuccess() ) { throw GaudiException( "Initialization failed !", "HiveRndm::HiveNumbers", status ); }
32 }
33 
34 // Standard destructor
36 
37 // Initialize the generator
39  if ( svc.isValid() && 0 == m_generator ) {
42  return svc->generator( par, m_generator );
43  }
44  return StatusCode::FAILURE;
45 }
46 
47 // Initialize the generator
49  if ( 0 != m_generator ) {
52  m_generator = 0;
53  }
54  return StatusCode::SUCCESS;
55 }
56 
57 #if !defined( GAUDI_V22_API ) || defined( G22_NEW_SVCLOCATOR )
58 // Construct and initialize the generator
60  : m_buffer_index( 0 ), m_buffer_size( HIVENUMBERS_BUFFER_SIZE ), m_generator( 0 ) {
61  StatusCode status = initialize( svc, par );
62  if ( !status.isSuccess() ) { throw GaudiException( "Initialization failed !", "HiveRndm::HiveNumbers", status ); }
63 }
64 #endif
65 // Initialize the generator
67  return initialize( SmartIF<IRndmGenSvc>( svc ), par );
68 }
const unsigned int m_buffer_size
Definition: HiveNumbers.h:31
virtual StatusCode finalize()
Finalization.
Definition: HiveNumbers.cpp:48
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
Definition: StatusCode.h:267
virtual StatusCode generator(const IRndmGen::Param &par, IRndmGen *&refpGen)=0
Add a Generator factory.
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
std::vector< double > m_buffer
Definition: HiveNumbers.h:32
IRndmGen * m_generator
Pointer to random number generator.
Definition: HiveNumbers.h:37
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:50
virtual ~HiveNumbers()
Standard destructor.
Definition: HiveNumbers.cpp:35
virtual unsigned long release()=0
Release Interface instance.
bool isValid() const
Allow for check if smart pointer is valid.
Definition: SmartIF.h:62
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:153
virtual StatusCode initialize(const SmartIF< IRndmGenSvc > &svc, const IRndmGen::Param &par)
Initialization.
Definition: HiveNumbers.cpp:38
constexpr static const auto FAILURE
Definition: StatusCode.h:86
virtual unsigned long addRef()=0
Increment the reference count of Interface instance.
unsigned int m_buffer_index
Definition: HiveNumbers.h:30
HiveNumbers()
Standard constructor.
Definition: HiveNumbers.cpp:15
static HiveNumbersMutex m_genMutex
Definition: HiveNumbers.h:33
T reserve(T...args)