Belle II Software  release-05-02-19
RandomEngine.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2015 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Martin Ritter *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #pragma once
12 #ifndef SIMULATION_KERNEL_RANDOMENGINE_H
13 #define SIMULATION_KERNEL_RANDOMENGINE_H
14 
15 #include <CLHEP/Random/Random.h>
16 #include <framework/core/RandomGenerator.h>
17 
18 namespace Belle2 {
24  class RandomEngine final: public CLHEP::HepRandomEngine {
25  public:
27  RandomEngine(): CLHEP::HepRandomEngine() {}
29  double flat() override final { return dynamic_cast<RandomGenerator&>(*gRandom).random01(); }
34  void flatArray(const int size, double* vect) override final { dynamic_cast<RandomGenerator&>(*gRandom).RndmArray(size, vect); }
36  void setSeed(long, int) override final {}
38  void setSeeds(const long*, int) override final {}
40  void saveStatus(const char[]) const override final {}
42  void restoreStatus(const char[]) override final {}
44  void showStatus() const override final {}
46  std::string name() const override final { return "Belle2::RandomGenerator"; }
48  std::vector<unsigned long> put() const override final { return std::vector<unsigned long>(); }
50  std::ostream& put(std::ostream& o) const override final { return o; }
52  bool get(const std::vector<unsigned long>&) override final { return false; }
54  std::istream& get(std::istream& i) override final { return i; }
55  };
56 
58 } //Belle2 namespace
59 #endif // SIMULATION_KERNEL_RANDOMENGINE_H
Belle2::RandomEngine::setSeeds
void setSeeds(const long *, int) override final
set array of seed values, ignored
Definition: RandomEngine.h:38
Belle2::RandomEngine::RandomEngine
RandomEngine()
Constructor expecting a reference to the Belle2::RandomGenerator.
Definition: RandomEngine.h:27
Belle2::RandomEngine::put
std::vector< unsigned long > put() const override final
put call, whatever that does.
Definition: RandomEngine.h:48
Belle2::RandomEngine::flat
double flat() override final
return a flat distributed double in (0,1), both excluded
Definition: RandomEngine.h:29
Belle2::RandomGenerator
Fast Random number Generator using on xorshift1024* [arXiv:1402.6246].
Definition: RandomGenerator.h:47
Belle2::RandomEngine::flatArray
void flatArray(const int size, double *vect) override final
fill an array of doubles with values in (0,1), both exluded
Definition: RandomEngine.h:34
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::RandomEngine::get
std::istream & get(std::istream &i) override final
get call, I assume same as above
Definition: RandomEngine.h:54
Belle2::RandomEngine::showStatus
void showStatus() const override final
show status, ignored
Definition: RandomEngine.h:44
Belle2::RandomEngine::put
std::ostream & put(std::ostream &o) const override final
put call, whatever that does.
Definition: RandomEngine.h:50
Belle2::RandomEngine::get
bool get(const std::vector< unsigned long > &) override final
get call, I assume same as above
Definition: RandomEngine.h:52
Belle2::RandomGenerator::random01
double random01()
Generate a random double value between 0 and 1, both limits excluded.
Definition: RandomGenerator.h:250
Belle2::RandomEngine::name
std::string name() const override final
return name of the generator
Definition: RandomEngine.h:46
Belle2::RandomGenerator::RndmArray
void RndmArray(Int_t n, Float_t *array)
Fill an array of floats with random values in (0,1), both limits excluded.
Definition: RandomGenerator.h:222
Belle2::RandomEngine::saveStatus
void saveStatus(const char[]) const override final
save status to file, ignored
Definition: RandomEngine.h:40
Belle2::RandomEngine::restoreStatus
void restoreStatus(const char[]) override final
restore status from file, ignored
Definition: RandomEngine.h:42
Belle2::RandomEngine
Interface class to make Geant4 use the Belle2 RandomGenerator.
Definition: RandomEngine.h:24
Belle2::RandomEngine::setSeed
void setSeed(long, int) override final
set the seed, ignored
Definition: RandomEngine.h:36