40 GO4TRACE((15,
"TGo4MbsRandom::TGo4MbsRandom()",__LINE__, __FILE__));
50 GO4TRACE((15,
"TGo4MbsRandom::TGo4MbsRandom(TGo4MbsRandomParameter*)",__LINE__, __FILE__));
63 GO4TRACE((15,
"TGo4MbsRandom::TGo4MbsRandom(const char *)",__LINE__, __FILE__));
72 GO4TRACE((15,
"TGo4MbsRandom::~TGo4MbsRandom()",__LINE__, __FILE__));
78 GO4TRACE((12,
"TGo4MbsRandom::NextEvent()",__LINE__, __FILE__));
80 void *clearfield = (
void *) (
fxEvent+1);
81 size_t clearlen =
fiDLen*2 - 8;
82 memset(clearfield, 0, clearlen);
87 for (Int_t i = 0; i <
fiNumSub; ++i) {
88 int l_val_num = (int)(
get_int(1., 7.)+0.5);
97 subevt->
l_dlen=l_val_num*2+2;
100 Int_t *subdata = (Int_t *) (subevt+1);
101 for (Int_t j = 0; j < l_val_num; ++j) {
114 GO4TRACE((12,
"TGo4MbsRandom::Open()",__LINE__, __FILE__));
126 fxEvent->i_subtype = 1;
127 fxEvent->i_type = 10;
128 fxEvent->i_trigger = 1;
129 fxEvent->l_count = 0;
139 GO4TRACE((12,
"TGo4MbsRandom::Close()",__LINE__, __FILE__));
167 double v1, v2, s, u1;
170 v1 = gRandom->Rndm();
171 return (log(1 - v1) / sigma + mean);
178 v1 = 2. * gRandom->Rndm() - 1.;
179 v2 = 2. * gRandom->Rndm() - 1.;
181 s = v1 * v1 + v2 * v2;
182 }
while (s >= 1.0 || s == 0.0);
184 u1 = sigma * v1 * (sqrt(-2. * log(s) / s)) + mean;
188 return (sigma * v2 * (sqrt(-2. * log(s) / s)) + mean);
199 return ((high-low)*gRandom->Rndm()+low);
double p_dUniform(unsigned *seed)
long rand_event(long choice)
static double fgdSigma2[]
double p_dNormal(double mean, double sigma, unsigned int *seed)
double gauss_rnd(double mean, double sigma)
static void Debug(const char *text,...) GO4_PRINTF_ARGS
Int_t NextEvent() override
double p_dExponential(double lambda, unsigned int *seed)
double get_int(double low, double high)
s_bufhe * GetBufferHeader() override