Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
RandStudentT.h
Go to the documentation of this file.
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"
34
35namespace CLHEP {
36
37/**
38 * @author
39 * @ingroup random
40 */
41class RandStudentT : public HepRandom {
42
43public:
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;
98
99 static std::string distributionName() {return "RandStudentT";}
100 // Provides the name of this distribution class
101
102
103private:
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
static void shootArray(const int size, double *vect, double a=1.0)
Definition: RandStudentT.cc:86
virtual ~RandStudentT()
Definition: RandStudentT.cc:33
std::string name() const
Definition: RandStudentT.cc:30
static double shoot(HepRandomEngine *anEngine)
RandStudentT(HepRandomEngine *anEngine, double a=1.0)
void fireArray(const int size, double *vect)
static double shoot()
static std::string distributionName()
Definition: RandStudentT.h:99
HepRandomEngine & engine()
Definition: RandStudentT.cc:31
RandStudentT(HepRandomEngine &anEngine, double a=1.0)
std::istream & get(std::istream &is)
std::ostream & put(std::ostream &os) const
Definition: DoubConv.h:17