00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RandGamma_h
00025 #define RandGamma_h 1
00026
00027 #include "CLHEP/Random/Random.h"
00028
00033 class RandGamma : public HepRandom {
00034
00035 public:
00036
00037 inline RandGamma ( HepRandomEngine& anEngine, double k=1.0,
00038 double lambda=1.0 );
00039 inline RandGamma ( HepRandomEngine* anEngine, double k=1.0,
00040 double lambda=1.0 );
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 virtual ~RandGamma();
00051
00052
00053
00054
00055 static inline double shoot();
00056
00057 static double shoot( double k, double lambda );
00058
00059 static void shootArray ( const int size, double* vect,
00060 double k=1.0, double lambda=1.0 );
00061
00062
00063
00064
00065 static inline double shoot( HepRandomEngine* anEngine );
00066
00067 static double shoot( HepRandomEngine* anEngine,
00068 double k, double lambda );
00069
00070 static void shootArray ( HepRandomEngine* anEngine, const int size,
00071 double* vect, double k=1.0,
00072 double lambda=1.0 );
00073
00074
00075
00076
00077 inline double fire();
00078
00079 double fire( double k, double lambda );
00080
00081 void fireArray ( const int size, double* vect);
00082 void fireArray ( const int size, double* vect,
00083 double k, double lambda );
00084 inline double operator()();
00085 inline double operator()( double k, double lambda );
00086
00087 private:
00088
00089
00090 RandGamma(const RandGamma& d);
00091
00092 static double genGamma( HepRandomEngine *anEngine, double k,
00093 double lambda );
00094
00095 HepRandomEngine* localEngine;
00096 bool deleteEngine;
00097 const double defaultK;
00098 const double defaultLambda;
00099
00100 };
00101
00102 #include "CLHEP/Random/RandGamma.icc"
00103
00104 #endif