Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Random/RandBit.h

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 // -*- C++ -*-
  2 //
  3 // -----------------------------------------------------------------------
  4 //                             HEP Random
  5 //                           --- RandBit ---
  6 //                          class header file
  7 // -----------------------------------------------------------------------
  8 // 
  9 
 10 // Class defining methods for shooting Flat or Bit random numbers, double or
 11 // integers.
 12 // It provides methods to fill with double flat values arrays of
 13 // specified size, as well as methods for shooting sequences of 0,1 (bits).
 14 // Default boundaries ]0.1[ for operator()().
 15 
 16 // This is derived from RandFlat and is a drop-in replacement.  However
 17 // the shootBit() and fireBit() methods are stateless (which makes them
 18 // an order of magnitude slower, but allows save/restore engine status
 19 // to work correctly).
 20 
 21 // =======================================================================
 22 // M. Fischler    - Created: 15th Feb 2000
 23 // M Fischler      - put and get to/from streams 12/10/04
 24 // M Fischler      - static save/restore to streams streams 12/20/04
 25 // =======================================================================
 26 
 27 #ifndef RandBit_h
 28 #define RandBit_h 1
 29 
 30 #include "CLHEP/Random/RandFlat.h"
 31 
 32 namespace CLHEP {
 33 
 34 /**
 35  * @author
 36  * @ingroup random
 37  */
 38 class RandBit : public RandFlat {
 39 
 40 public:
 41 
 42   inline RandBit ( HepRandomEngine& anEngine );
 43   inline RandBit ( HepRandomEngine& anEngine, double width );
 44   inline RandBit ( HepRandomEngine& anEngine, double a, double b );
 45   inline RandBit ( HepRandomEngine* anEngine );
 46   inline RandBit ( HepRandomEngine* anEngine, double width );
 47   inline RandBit ( HepRandomEngine* anEngine, double a, double b );
 48   // These constructors should be used to instantiate a RandBit
 49   // distribution object defining a local engine for it.
 50   // The static generator will be skipped using the non-static methods
 51   // defined below.
 52   // If the engine is passed by pointer the corresponding engine object
 53   // will be deleted by the RandBit destructor.
 54   // If the engine is passed by reference the corresponding engine object
 55   // will not be deleted by the RandBit destructor.
 56 
 57   virtual ~RandBit();
 58   // Destructor
 59 
 60   // Other than the Bit routines, constructors, and destructor, everything is
 61   // simply inherited from RandFlat.
 62 
 63   static  inline int shootBit();
 64 
 65   static  inline int shootBit( HepRandomEngine* );
 66 
 67   //  Methods using the localEngine to shoot random values, by-passing
 68   //  the static generator.
 69 
 70   inline int fireBit();
 71 
 72   // Save and restore to/from streams
 73   
 74   std::ostream & put ( std::ostream & os ) const;
 75   std::istream & get ( std::istream & is );
 76 
 77   std::string name() const;
 78 
 79   static std::string distributionName() {return "RandBit";}  
 80   // Provides the name of this distribution class
 81 
 82   static std::ostream& saveFullState ( std::ostream & os ) 
 83   // Saves to stream the state of the engine and cached data.
 84             {return RandFlat::saveFullState(os);}
 85           
 86   static std::istream& restoreFullState ( std::istream & is )
 87   // Restores from stream the state of the engine and cached data.
 88             {return RandFlat::restoreFullState(is);}
 89 
 90   static std::ostream& saveDistState ( std::ostream & os )
 91   // Saves to stream the state of the cached data.
 92             {return RandFlat::saveDistState(os);}
 93 
 94   static std::istream& restoreDistState ( std::istream & is )
 95   // Restores from stream the state of the cached data.
 96             {return RandFlat::restoreDistState(is);}
 97 
 98 
 99 private:
100 
101   // All the engine info, and the default A and B, are in the RandFlat
102   // base class.
103 
104 };
105 
106 }  // namespace CLHEP
107 
108 #include "CLHEP/Random/RandBit.icc"
109 
110 #endif
111