| The Gaudi Framework v27r1

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

- File List
- File Members

HepRndmBaseEngine.h
Go to the documentation of this file.
1 //====================================================================
2 // CLHEP Basic Random Engine definition file
3 //--------------------------------------------------------------------
4 //
5 // Package : HepRndm ( The LHCb Offline System)
6 // Author : M.Frank
7 // History :
8 // +---------+----------------------------------------------+---------
9 // | Date | Comment | Who
10 // +---------+----------------------------------------------+---------
11 // | 29/10/99| Initial version | MF
12 // +---------+----------------------------------------------+---------
13 //
14 //====================================================================
15 #ifndef HEPRNDM_HEPRNDMBASEENGINE_H
16 #define HEPRNDM_HEPRNDMBASEENGINE_H 1
17
18 // Framework include files
19 #include "RndmEngine.h"
20 #include "CLHEP/Random/Random.h"
21
22 // Forward declarations
23 namespace CLHEP {
24 class HepRandomEngine;
25 }
26
27 namespace HepRndm {
28
29 class BaseEngine : public RndmEngine {
30 protected:
31 std::unique_ptr<CLHEP::HepRandomEngine> m_hepEngine;
32 public:
33 BaseEngine(const std::string& name, ISvcLocator* loc)
34 : RndmEngine( name, loc ) { }
35 ~BaseEngine() override = default;
36 CLHEP::HepRandomEngine* hepEngine() { return m_hepEngine.get(); }
37 const CLHEP::HepRandomEngine* hepEngine() const { return m_hepEngine.get(); }
38 // Retrieve single random number
39 double rndm() const override { return m_hepEngine->flat(); }
40
41 StatusCode finalize() override {
42 if (m_hepEngine) CLHEP::HepRandom::setTheEngine(nullptr);
43 m_hepEngine.reset();
44 return RndmEngine::finalize();
45 }
46
47 protected:
48 void initEngine() { m_hepEngine = createEngine(); }
49 virtual std::unique_ptr<CLHEP::HepRandomEngine> createEngine() = 0;
50 };
51 }
52 #endif // HEPRNDM_HEPRNDMBASEENGINE_H
ISvcLocator
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
HepRndm::BaseEngine::initEngine
void initEngine()
Definition: HepRndmBaseEngine.h:48
HepRndm::BaseEngine::finalize
StatusCode finalize() override
Service override: finalization.
Definition: HepRndmBaseEngine.h:41
HepRndm::BaseEngine::m_hepEngine
std::unique_ptr< CLHEP::HepRandomEngine > m_hepEngine
Definition: HepRndmBaseEngine.h:31
HepRndm::BaseEngine::createEngine
virtual std::unique_ptr< CLHEP::HepRandomEngine > createEngine()=0
std::string
STL class.
HepRndm::BaseEngine::rndm
double rndm() const override
Single shot returning single random number.
Definition: HepRndmBaseEngine.h:39
Service::name
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:319
RndmEngine::finalize
virtual StatusCode finalize()
Service override: finalization.
Definition: RndmEngine.cpp:56
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
HepRndm::BaseEngine::hepEngine
const CLHEP::HepRandomEngine * hepEngine() const
Definition: HepRndmBaseEngine.h:37
HepRndm::BaseEngine::BaseEngine
BaseEngine(const std::string &name, ISvcLocator *loc)
Definition: HepRndmBaseEngine.h:33
std::unique_ptr::reset
T reset(T...args)
HepRndm
Definition: HepRndmBaseEngine.h:27
std::unique_ptr::get
T get(T...args)
std::unique_ptr< CLHEP::HepRandomEngine >
HepRndm::BaseEngine::~BaseEngine
~BaseEngine() override=default
CLHEP
Definition: IFuncMinimum.h:16
RndmEngine.h
HepRndm::BaseEngine
Definition: HepRndmBaseEngine.h:29
RndmEngine
Random Generator engine definition.
Definition: RndmEngine.h:46
HepRndm::BaseEngine::hepEngine
CLHEP::HepRandomEngine * hepEngine()
Definition: HepRndmBaseEngine.h:36