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