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 RandBinomial_h
00025 #define RandBinomial_h 1
00026
00027 #include "CLHEP/Random/Random.h"
00028
00033 class RandBinomial : public HepRandom {
00034
00035 public:
00036
00037 inline RandBinomial ( HepRandomEngine& anEngine, long n=1,
00038 double p=0.5 );
00039 inline RandBinomial ( HepRandomEngine* anEngine, long n=1,
00040 double p=0.5 );
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 virtual ~RandBinomial();
00051
00052
00053
00054
00055 static inline double shoot();
00056
00057 static double shoot( long n, double p );
00058
00059 static void shootArray ( const int size, double* vect,
00060 long n=1, double p=0.5 );
00061
00062
00063
00064
00065 static inline double shoot( HepRandomEngine* anEngine );
00066
00067 static double shoot( HepRandomEngine* anEngine,
00068 long n, double p );
00069
00070 static void shootArray ( HepRandomEngine* anEngine, const int size,
00071 double* vect, long n=1,
00072 double p=0.5 );
00073
00074
00075
00076
00077 inline double fire();
00078
00079 double fire( long n, double p );
00080
00081 void fireArray ( const int size, double* vect);
00082 void fireArray ( const int size, double* vect,
00083 long n, double p );
00084 inline double operator()();
00085 inline double operator()( long n, double p );
00086
00087 private:
00088
00089
00090 RandBinomial(const RandBinomial& d);
00091
00092 static double genBinomial( HepRandomEngine *anEngine, long n, double p );
00093
00094 HepRandomEngine* localEngine;
00095 bool deleteEngine;
00096 const long defaultN;
00097 const double defaultP;
00098
00099 };
00100
00101 #include "CLHEP/Random/RandBinomial.icc"
00102
00103 #endif