Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Random/RandStudentT.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 //                         --- RandStudentT ---
  6 //                          class header file
  7 // -----------------------------------------------------------------------
  8 
  9 // Class defining methods for shooting Student's t- distributed random 
 10 // values, given a number of degrees of freedom a (default=1.0).
 11 // Default values are used for operator()().
 12 
 13 // Valid input values are a > 0.  When invalid values are presented, the
 14 // code silently returns DBL_MAX from <float.h> which is the same as
 15 // MAXDOUBLE in <values.h> on systems where the latter exists.
 16 
 17 // =======================================================================
 18 // John Marraffino - Created: Based on the C-Rand package
 19 //                   by Ernst Stadlober and Franz Niederl of the Technical
 20 //                   University of Graz, Austria : 12th May 1998
 21 //                 - Removed <values.h> because that won't work
 22 //                   on NT : 26th Jun 1998
 23 // Gabriele Cosmo  - Fixed minor bug on inline definition for shoot()
 24 //                   methods. Created .icc file : 20th Aug 1998
 25 //                 - Removed useless methods and data: 5th Jan 1999
 26 // M Fischler      - put and get to/from streams 12/10/04
 27 // =======================================================================
 28 
 29 #ifndef RandStudentT_h
 30 #define RandStudentT_h 1
 31 
 32 #include "CLHEP/Random/Random.h"
 33 #include "CLHEP/Utility/memory.h"
 34 
 35 namespace CLHEP {
 36 
 37 /**
 38  * @author
 39  * @ingroup random
 40  */
 41 class RandStudentT : public HepRandom {
 42 
 43 public:
 44 
 45   inline RandStudentT ( HepRandomEngine& anEngine, double a=1.0 );
 46   inline RandStudentT ( HepRandomEngine* anEngine, double a=1.0 );
 47   // These constructors should be used to instantiate a RandStudentT
 48   // distribution object defining a local engine for it.
 49   // The static generator will be skipped using the non-static methods
 50   // defined below.
 51   // If the engine is passed by pointer the corresponding engine object
 52   // will be deleted by the RandStudentT destructor.
 53   // If the engine is passed by reference the corresponding engine object
 54   // will not be deleted by the RandStudentT destructor.
 55 
 56   virtual ~RandStudentT();
 57   // Destructor
 58 
 59   // Save and restore to/from streams
 60   
 61   std::ostream & put ( std::ostream & os ) const;
 62   std::istream & get ( std::istream & is );
 63 
 64   // Static methods to shoot random values using the static generator
 65 
 66   static  inline double shoot();
 67 
 68   static  double shoot( double a );
 69 
 70   static  void shootArray ( const int size, double* vect,
 71                             double a=1.0 );
 72 
 73   //  Static methods to shoot random values using a given engine
 74   //  by-passing the static generator.
 75 
 76   static  inline double shoot( HepRandomEngine* anEngine );
 77 
 78   static  double shoot( HepRandomEngine* anEngine, 
 79                            double a );
 80 
 81   static  void shootArray ( HepRandomEngine* anEngine, const int size,
 82                             double* vect, double a=1.0 );
 83 
 84   //  Methods using the localEngine to shoot random values, by-passing
 85   //  the static generator.
 86 
 87   inline double fire();
 88 
 89   double fire( double a );
 90   
 91   void fireArray ( const int size, double* vect );
 92   void fireArray ( const int size, double* vect, double a );
 93   double operator()();
 94   double operator()( double a );
 95 
 96   std::string name() const;
 97   HepRandomEngine & engine();
 98 
 99   static std::string distributionName() {return "RandStudentT";}  
100   // Provides the name of this distribution class
101 
102 
103 private:
104 
105   std::shared_ptr<HepRandomEngine> localEngine;
106   double defaultA;
107 
108 };
109 
110 }  // namespace CLHEP
111 
112 #include "CLHEP/Random/RandStudentT.icc"
113 
114 #endif
115