Geant4 Cross Reference |
1 // -*- C++ -*- 1 2 // 3 // ------------------------------------------- 4 // HEP Random 5 // --- NonRandomEngine 6 // class header file 7 // ------------------------------------------- 8 9 // This class is present EXCLUSIVELY as a mean 10 // other programs that depend on random number 11 // of "randoms" that the testing program suppl 12 // 13 // The testing program calls setNextRandom (do 14 // value to be produced when flat() is done. 15 // 16 // To protect against accidental use of this N 17 // engine, if setNextRandom () is never called 18 // a random will fail and exit. 19 20 // =========================================== 21 // Mark Fischler - Created: 9/30/99 22 // Mark Fischler methods for distrib. insta 23 // Mark Fischler methods for anonymous save 24 // =========================================== 25 26 #ifndef NonRandomEngine_h 27 #define NonRandomEngine_h 1 28 29 #include "CLHEP/Random/RandomEngine.h" 30 #include <vector> 31 32 namespace CLHEP { 33 34 /** 35 * @author 36 * @ingroup random 37 */ 38 class NonRandomEngine : public HepRandomEngine 39 40 public: 41 42 NonRandomEngine(); 43 virtual ~NonRandomEngine(); 44 // Constructors and destructor 45 46 void setNextRandom (double r); 47 // Preset the next random to be delivered 48 void setRandomSequence (double *s, int n); 49 // Establish a sequence of n next randoms; 50 // replaces setNextRandom n times. 51 void setRandomInterval (double x); 52 // Establish that if there is no sequence ac 53 // random should be bumped by this interval 54 // to the last. x should be between 0 and 1 55 56 double flat(); 57 // It returns the previously established set 58 // by the non-zero randomInterval supplied. 59 // generate an evenly spaced sequence (mod 1 60 61 void flatArray (const int size, double* vect 62 // Fills the array "vect" of specified size 63 64 virtual std::ostream & put (std::ostream & o 65 virtual std::istream & get (std::istream & i 66 static std::string beginTag ( ); 67 virtual std::istream & getState ( std::istre 68 69 std::string name() const; 70 static std::string engineName() {return "Non 71 72 std::vector<unsigned long> put () const; 73 bool get (const std::vector<unsigned long> & 74 bool getState (const std::vector<unsigned lo 75 76 private: 77 78 bool nextHasBeenSet; 79 bool sequenceHasBeenSet; 80 bool intervalHasBeenSet; 81 double nextRandom; 82 std::vector<double> sequence; 83 unsigned int nInSeq; 84 double randomInterval; 85 86 // The following are necessary to fill virtu 87 // be used: 88 89 virtual void setSeed(long , int) {}; 90 virtual void setSeeds(const long * , int) {} 91 virtual void saveStatus( const char * ) cons 92 virtual void restoreStatus( const char * ) { 93 virtual void showStatus() const {}; 94 95 96 }; 97 98 } // namespace CLHEP 99 100 #endif 101