| The Gaudi Framework v28r2p1 (f1a77ff4)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

RndmGen.cpp
Go to the documentation of this file.
1 //====================================================================
2 // Random RndmGen class implementation
3 //--------------------------------------------------------------------
4 //
5 // Package : Gaudi/RndmGen ( The LHCb Offline System)
6 // Author : M.Frank
7 // History :
8 // +---------+----------------------------------------------+--------+
9 // | Date | Comment | Who |
10 // +---------+----------------------------------------------+--------+
11 // | 21/11/99| Initial version. | MF |
12 // +---------+----------------------------------------------+--------+
13 //====================================================================
14 #define GAUDI_RANDOMGENSVC_RNDMGEN_CPP
15
16 #include <cfloat>
17 #include <algorithm>
18 #include "GaudiKernel/ISvcLocator.h"
19 #include "GaudiKernel/IRndmEngine.h"
20 #include "RndmGen.h"
21
23 RndmGen::RndmGen(IInterface* engine)
24 : m_engine{ engine }
25 { }
26
28 StatusCode RndmGen::initialize(const IRndmGen::Param& par) {
29 m_params.reset(par.clone());
30 return m_engine ? StatusCode::SUCCESS : StatusCode::FAILURE;
31 }
32
33 StatusCode RndmGen::finalize() {
34 return StatusCode::SUCCESS;
35 }
36
38 StatusCode RndmGen::shootArray( std::vector<double>& array, long howmany, long start) const {
39 if ( !m_engine ) return StatusCode::FAILURE;
40 array.resize(start+howmany);
41 std::generate_n( std::next( std::begin(array), start ), howmany, [&](){ return this->shoot(); } );
42 return StatusCode::SUCCESS;
43 }
StatusCode::SUCCESS
Definition: StatusCode.h:30
StatusCode::FAILURE
Definition: StatusCode.h:29
RndmGen::RndmGen
RndmGen(IInterface *engine)
Standard Constructor.
Definition: RndmGen.cpp:23
std::vector::resize
T resize(T...args)
IRndmEngine.h
compareOutputFiles.par
string par
Definition: compareOutputFiles.py:386
IRndmGen::Param::clone
virtual Param * clone() const =0
Clone parameters.
RndmGen::m_engine
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:47
std::next
T next(T...args)
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IRndmGen::Param
Definition: IRndmGen.h:40
RndmGen::shootArray
StatusCode shootArray(std::vector< double > &array, long howmany, long start) const override
Multiple shots returning vector with random number according to specified distribution.
Definition: RndmGen.cpp:38
IInterface
Definition of the basic interface.
Definition: IInterface.h:234
RndmGen::initialize
StatusCode initialize(const IRndmGen::Param &par) override
IRndmGen implementation.
Definition: RndmGen.cpp:28
std::generate_n
T generate_n(T...args)
IOTest.start
start
Definition: IOTest.py:88
std::unique_ptr::reset
T reset(T...args)
RndmGen.h
RndmGen::finalize
StatusCode finalize() override
Finalize the generator.
Definition: RndmGen.cpp:33
Containers::array
struct GAUDI_API array
Parametrisation class for redirection array - like implementation.
Definition: KeyedObjectManager.h:27
std::vector< double >
std::begin
T begin(T...args)
RndmGen::m_params
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:45
ISvcLocator.h