Geant4 Cross Reference |
1 // -*- C++ -*- 1 2 // 3 // ------------------------------------------- 4 // HEP Random 5 // --- HepRandom --- 6 // class header file 7 // ------------------------------------------- 8 // This file is part of Geant4 (simulation too 9 // 10 // It's a singleton instantiated by default wi 11 // It uses an instantiated HepJamesRandom engi 12 // for pseudo-random number generation. HepRan 13 // data member theGenerator and a set of stati 14 // it. By means of theGenerator the user can c 15 // algorithm, get and set the seeds and use an 16 // distribution. 17 // Distribution classes inherit from HepRandom 18 // not-static interfaces. 19 // A static table of uncorrelated seeds is ava 20 // A static method "getTheTableSeeds()" is def 21 // seeds at a given index in the table. 22 23 // =========================================== 24 // Gabriele Cosmo - Created: 5th Sep 1995 25 // - Minor update: 17th May 199 26 // - Poisson now operates on do 27 // - Added methods for engine s 28 // - Fixed default values to se 29 // setTheSeeds() static metho 30 // - Modified HepRandom to act 31 // are kept public for backwa 32 // of seeds from HepRandomEng 33 // - Relocated Poisson and Gaus 34 // initialisation of static g 35 // =========================================== 36 37 #ifndef HepRandom_h 38 #define HepRandom_h 1 39 40 #include "CLHEP/Random/RandomEngine.h" 41 42 namespace CLHEP { 43 44 /** 45 * @author <Gabriele.Cosmo@cern.ch> 46 * @ingroup random 47 */ 48 class HepRandom { 49 50 public: 51 52 HepRandom(); 53 HepRandom(long seed); 54 // Contructors with and without a seed using 55 // (MixMax). 56 57 HepRandom(HepRandomEngine & algorithm); 58 HepRandom(HepRandomEngine * algorithm); 59 // Constructor taking an alternative engine 60 // given the corresponding object will be de 61 // destructor. 62 63 virtual ~HepRandom(); 64 // Destructor 65 66 // implicitly allow compiler-generated copy 67 68 double flat(); 69 // Returns the flat value ( interval ]0...1[ 70 71 void flatArray(const int size, double* vect) 72 // Fills "vect" array of flat random values, 73 74 inline double flat (HepRandomEngine* theNewE 75 // Returns a flat value, given a defined Ran 76 77 inline void flatArray(HepRandomEngine* theNe 78 const int size, double 79 // Fills "vect" array of flat random values, 80 // and a defined Random Engine. 81 82 virtual double operator()(); 83 // To get a flat random number using the ope 84 85 virtual std::string name() const; 86 virtual HepRandomEngine & engine(); 87 88 89 virtual std::ostream & put ( std::ostream & 90 virtual std::istream & get ( std::istream & 91 // Save and restore to/from streams 92 93 // ----------------------------------------- 94 // Static member functions using the static 95 // ----------------------------------------- 96 97 static void setTheSeed(long seed, int lxr=3) 98 // (Re)Initializes the generator with a seed 99 100 static long getTheSeed(); 101 // Gets the current seed of the current gene 102 103 static void setTheSeeds(const long* seeds, i 104 // (Re)Initializes the generator with a zero 105 106 static const long* getTheSeeds(); 107 // Gets the current array of seeds of the cu 108 109 static void getTheTableSeeds (long* seeds, i 110 // Gets the array of seeds in the static see 111 112 static HepRandom * getTheGenerator(); 113 // Return the current static generator. 114 115 static void setTheEngine (HepRandomEngine* t 116 // To set the underlying algorithm object. 117 118 static HepRandomEngine * getTheEngine(); 119 // Returns a pointer to the underlying algor 120 121 static void saveEngineStatus( const char fil 122 // Saves to file the current status of the c 123 124 static void restoreEngineStatus( const char 125 // Restores a saved status (if any) for the 126 127 static std::ostream& saveFullState ( std::os 128 // Saves to stream the state of the engine a 129 130 static std::istream& restoreFullState ( std: 131 // Restores from stream the state of the eng 132 133 static std::ostream& saveDistState ( std::os 134 // Saves to stream the state of the cached d 135 136 static std::istream& restoreDistState ( std: 137 // Restores from stream the state of the cac 138 139 static std::ostream& saveStaticRandomStates 140 // Saves to stream the engine and cached dat 141 142 static std::istream& restoreStaticRandomStat 143 // Restores from stream the engine and cache 144 145 static void showEngineStatus(); 146 // Dumps the current engine status on screen 147 148 static int createInstance(); 149 // used to initialise the default engine 150 151 static std::string distributionName() {retur 152 // Provides the name of this distribution cl 153 154 protected: // -------- Data members ------ 155 156 static const long seedTable[215][2]; 157 // Table of seeds 158 159 }; 160 161 std::ostream & operator<< (std::ostream & os, 162 std::istream & operator>> (std::istream & is, 163 164 } // namespace CLHEP 165 166 #include "CLHEP/Random/Random.icc" 167 168 #endif 169