|
Gaudi Framework, version v21r7 |
| Home | Generated: 22 Jan 2010 |
#include <HepRndmGenerator.h>


Public Types | |
| typedef TYPE | Parameters |
Public Member Functions | |
| Generator (IInterface *engine) | |
| virtual | ~Generator () |
| virtual StatusCode | initialize (const IRndmGen::Param &par) |
| Initialize the generator. | |
| virtual double | shoot () const |
| Single shot. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
| template<> | |
| double | shoot () const |
| Single shot returning single random number according to specified distribution. | |
Protected Attributes | |
| CLHEP::HepRandomEngine * | m_hepEngine |
| TYPE * | m_specs |
Definition at line 27 of file HepRndmGenerator.h.
| typedef TYPE HepRndm::Generator< TYPE >::Parameters |
Definition at line 29 of file HepRndmGenerator.h.
| HepRndm::Generator< TYPE >::Generator | ( | IInterface * | engine | ) | [inline] |
Definition at line 42 of file HepRndmGenerator.h.
00043 : RndmGen (engine), m_hepEngine(0), m_specs(0) { 00044 }
| HepRndm::Generator< TYPE >::~Generator | ( | ) | [inline, virtual] |
| StatusCode HepRndm::Generator< TYPE >::initialize | ( | const IRndmGen::Param & | par | ) | [inline, virtual] |
Initialize the generator.
Reimplemented from RndmGen.
Definition at line 50 of file HepRndmGenerator.h.
00050 { 00051 StatusCode status = RndmGen::initialize(par); 00052 if ( status.isSuccess() ) { 00053 try { 00054 m_specs = dynamic_cast<TYPE*>(m_params); 00055 if ( 0 != m_specs ) { 00056 BaseEngine* engine = dynamic_cast<BaseEngine*>(m_engine); 00057 if ( 0 != engine ) { 00058 m_hepEngine = engine->hepEngine(); 00059 if ( 0 != m_hepEngine ) { 00060 return StatusCode::SUCCESS; 00061 } 00062 } 00063 } 00064 } 00065 catch (...) { 00066 } 00067 } 00068 return StatusCode::FAILURE; 00069 }
| virtual double HepRndm::Generator< TYPE >::shoot | ( | ) | const [virtual] |
| double HepRndm::Generator< Rndm::Flat >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 47 of file HepRndmGenerators.cpp.
00047 { 00048 return RandFlat::shoot(m_hepEngine, m_specs->minimum(), m_specs->maximum()); 00049 }
| double HepRndm::Generator< Rndm::Bit >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 52 of file HepRndmGenerators.cpp.
00052 { 00053 return RandFlat::shootBit(m_hepEngine); 00054 }
| double HepRndm::Generator< Rndm::Gauss >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 57 of file HepRndmGenerators.cpp.
00057 { 00058 return RandGaussQ::shoot(m_hepEngine, m_specs->mean(), m_specs->sigma()); 00059 }
| double HepRndm::Generator< Rndm::Poisson >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 62 of file HepRndmGenerators.cpp.
00062 { 00063 return RandPoisson::shoot(m_hepEngine, m_specs->mean()); 00064 }
| double HepRndm::Generator< Rndm::Exponential >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 67 of file HepRndmGenerators.cpp.
00067 { 00068 return RandExponential::shoot(m_hepEngine, m_specs->mean()); 00069 }
| double HepRndm::Generator< Rndm::BreitWigner >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 72 of file HepRndmGenerators.cpp.
00072 { 00073 return RandBreitWigner::shoot(m_hepEngine, m_specs->mean(), m_specs->gamma()); 00074 }
| double HepRndm::Generator< Rndm::BreitWignerCutOff >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 77 of file HepRndmGenerators.cpp.
00077 { 00078 return RandBreitWigner::shoot(m_hepEngine, m_specs->mean(), m_specs->gamma(), m_specs->cutOff()); 00079 }
| double HepRndm::Generator< Rndm::Chi2 >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 82 of file HepRndmGenerators.cpp.
00082 { 00083 return RandChiSquare::shoot(m_hepEngine, m_specs->nDOF()); 00084 }
| double HepRndm::Generator< Rndm::StudentT >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 87 of file HepRndmGenerators.cpp.
00087 { 00088 return RandStudentT::shoot(m_hepEngine, m_specs->aValue()); 00089 }
| double HepRndm::Generator< Rndm::Gamma >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 91 of file HepRndmGenerators.cpp.
00091 { 00092 return RandGamma::shoot(m_hepEngine, m_specs->kValue(), m_specs->lambda()); 00093 }
| double HepRndm::Generator< Rndm::Binomial >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 96 of file HepRndmGenerators.cpp.
00096 { 00097 return RandBinomial::shoot(m_hepEngine, m_specs->nEvent(), m_specs->probability()); 00098 }
| double HepRndm::Generator< Rndm::Landau >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 116 of file HepRndmGenerators.cpp.
00116 { 00117 // Generate a random number following a Landau distribution 00118 // with average value mean and rms 00119 // Converted by Rene Brun from CERNLIB routine ranlan(G110) 00120 static double f[982] = { 00121 0 , 0 , 0 ,0 ,0 ,-2.244733, 00122 -2.204365,-2.168163,-2.135219,-2.104898,-2.076740,-2.050397, 00123 -2.025605,-2.002150,-1.979866,-1.958612,-1.938275,-1.918760, 00124 -1.899984,-1.881879,-1.864385,-1.847451,-1.831030,-1.815083, 00125 -1.799574,-1.784473,-1.769751,-1.755383,-1.741346,-1.727620, 00126 -1.714187,-1.701029,-1.688130,-1.675477,-1.663057,-1.650858, 00127 -1.638868,-1.627078,-1.615477,-1.604058,-1.592811,-1.581729, 00128 -1.570806,-1.560034,-1.549407,-1.538919,-1.528565,-1.518339, 00129 -1.508237,-1.498254,-1.488386,-1.478628,-1.468976,-1.459428, 00130 -1.449979,-1.440626,-1.431365,-1.422195,-1.413111,-1.404112, 00131 -1.395194,-1.386356,-1.377594,-1.368906,-1.360291,-1.351746, 00132 -1.343269,-1.334859,-1.326512,-1.318229,-1.310006,-1.301843, 00133 -1.293737,-1.285688,-1.277693,-1.269752,-1.261863,-1.254024, 00134 -1.246235,-1.238494,-1.230800,-1.223153,-1.215550,-1.207990, 00135 -1.200474,-1.192999,-1.185566,-1.178172,-1.170817,-1.163500, 00136 -1.156220,-1.148977,-1.141770,-1.134598,-1.127459,-1.120354, 00137 -1.113282,-1.106242,-1.099233,-1.092255, 00138 -1.085306,-1.078388,-1.071498,-1.064636,-1.057802,-1.050996, 00139 -1.044215,-1.037461,-1.030733,-1.024029,-1.017350,-1.010695, 00140 -1.004064, -.997456, -.990871, -.984308, -.977767, -.971247, 00141 -.964749, -.958271, -.951813, -.945375, -.938957, -.932558, 00142 -.926178, -.919816, -.913472, -.907146, -.900838, -.894547, 00143 -.888272, -.882014, -.875773, -.869547, -.863337, -.857142, 00144 -.850963, -.844798, -.838648, -.832512, -.826390, -.820282, 00145 -.814187, -.808106, -.802038, -.795982, -.789940, -.783909, 00146 -.777891, -.771884, -.765889, -.759906, -.753934, -.747973, 00147 -.742023, -.736084, -.730155, -.724237, -.718328, -.712429, 00148 -.706541, -.700661, -.694791, -.688931, -.683079, -.677236, 00149 -.671402, -.665576, -.659759, -.653950, -.648149, -.642356, 00150 -.636570, -.630793, -.625022, -.619259, -.613503, -.607754, 00151 -.602012, -.596276, -.590548, -.584825, -.579109, -.573399, 00152 -.567695, -.561997, -.556305, -.550618, -.544937, -.539262, 00153 -.533592, -.527926, -.522266, -.516611, -.510961, -.505315, 00154 -.499674, -.494037, -.488405, -.482777, 00155 -.477153, -.471533, -.465917, -.460305, -.454697, -.449092, 00156 -.443491, -.437893, -.432299, -.426707, -.421119, -.415534, 00157 -.409951, -.404372, -.398795, -.393221, -.387649, -.382080, 00158 -.376513, -.370949, -.365387, -.359826, -.354268, -.348712, 00159 -.343157, -.337604, -.332053, -.326503, -.320955, -.315408, 00160 -.309863, -.304318, -.298775, -.293233, -.287692, -.282152, 00161 -.276613, -.271074, -.265536, -.259999, -.254462, -.248926, 00162 -.243389, -.237854, -.232318, -.226783, -.221247, -.215712, 00163 -.210176, -.204641, -.199105, -.193568, -.188032, -.182495, 00164 -.176957, -.171419, -.165880, -.160341, -.154800, -.149259, 00165 -.143717, -.138173, -.132629, -.127083, -.121537, -.115989, 00166 -.110439, -.104889, -.099336, -.093782, -.088227, -.082670, 00167 -.077111, -.071550, -.065987, -.060423, -.054856, -.049288, 00168 -.043717, -.038144, -.032569, -.026991, -.021411, -.015828, 00169 -.010243, -.004656, .000934, .006527, .012123, .017722, 00170 .023323, .028928, .034535, .040146, .045759, .051376, 00171 .056997, .062620, .068247, .073877, 00172 .079511, .085149, .090790, .096435, .102083, .107736, 00173 .113392, .119052, .124716, .130385, .136057, .141734, 00174 .147414, .153100, .158789, .164483, .170181, .175884, 00175 .181592, .187304, .193021, .198743, .204469, .210201, 00176 .215937, .221678, .227425, .233177, .238933, .244696, 00177 .250463, .256236, .262014, .267798, .273587, .279382, 00178 .285183, .290989, .296801, .302619, .308443, .314273, 00179 .320109, .325951, .331799, .337654, .343515, .349382, 00180 .355255, .361135, .367022, .372915, .378815, .384721, 00181 .390634, .396554, .402481, .408415, .414356, .420304, 00182 .426260, .432222, .438192, .444169, .450153, .456145, 00183 .462144, .468151, .474166, .480188, .486218, .492256, 00184 .498302, .504356, .510418, .516488, .522566, .528653, 00185 .534747, .540850, .546962, .553082, .559210, .565347, 00186 .571493, .577648, .583811, .589983, .596164, .602355, 00187 .608554, .614762, .620980, .627207, .633444, .639689, 00188 .645945, .652210, .658484, .664768, 00189 .671062, .677366, .683680, .690004, .696338, .702682, 00190 .709036, .715400, .721775, .728160, .734556, .740963, 00191 .747379, .753807, .760246, .766695, .773155, .779627, 00192 .786109, .792603, .799107, .805624, .812151, .818690, 00193 .825241, .831803, .838377, .844962, .851560, .858170, 00194 .864791, .871425, .878071, .884729, .891399, .898082, 00195 .904778, .911486, .918206, .924940, .931686, .938446, 00196 .945218, .952003, .958802, .965614, .972439, .979278, 00197 .986130, .992996, .999875, 1.006769, 1.013676, 1.020597, 00198 1.027533, 1.034482, 1.041446, 1.048424, 1.055417, 1.062424, 00199 1.069446, 1.076482, 1.083534, 1.090600, 1.097681, 1.104778, 00200 1.111889, 1.119016, 1.126159, 1.133316, 1.140490, 1.147679, 00201 1.154884, 1.162105, 1.169342, 1.176595, 1.183864, 1.191149, 00202 1.198451, 1.205770, 1.213105, 1.220457, 1.227826, 1.235211, 00203 1.242614, 1.250034, 1.257471, 1.264926, 1.272398, 1.279888, 00204 1.287395, 1.294921, 1.302464, 1.310026, 1.317605, 1.325203, 00205 1.332819, 1.340454, 1.348108, 1.355780, 00206 1.363472, 1.371182, 1.378912, 1.386660, 1.394429, 1.402216, 00207 1.410024, 1.417851, 1.425698, 1.433565, 1.441453, 1.449360, 00208 1.457288, 1.465237, 1.473206, 1.481196, 1.489208, 1.497240, 00209 1.505293, 1.513368, 1.521465, 1.529583, 1.537723, 1.545885, 00210 1.554068, 1.562275, 1.570503, 1.578754, 1.587028, 1.595325, 00211 1.603644, 1.611987, 1.620353, 1.628743, 1.637156, 1.645593, 00212 1.654053, 1.662538, 1.671047, 1.679581, 1.688139, 1.696721, 00213 1.705329, 1.713961, 1.722619, 1.731303, 1.740011, 1.748746, 00214 1.757506, 1.766293, 1.775106, 1.783945, 1.792810, 1.801703, 00215 1.810623, 1.819569, 1.828543, 1.837545, 1.846574, 1.855631, 00216 1.864717, 1.873830, 1.882972, 1.892143, 1.901343, 1.910572, 00217 1.919830, 1.929117, 1.938434, 1.947781, 1.957158, 1.966566, 00218 1.976004, 1.985473, 1.994972, 2.004503, 2.014065, 2.023659, 00219 2.033285, 2.042943, 2.052633, 2.062355, 2.072110, 2.081899, 00220 2.091720, 2.101575, 2.111464, 2.121386, 2.131343, 2.141334, 00221 2.151360, 2.161421, 2.171517, 2.181648, 2.191815, 2.202018, 00222 2.212257, 2.222533, 2.232845, 2.243195, 00223 2.253582, 2.264006, 2.274468, 2.284968, 2.295507, 2.306084, 00224 2.316701, 2.327356, 2.338051, 2.348786, 2.359562, 2.370377, 00225 2.381234, 2.392131, 2.403070, 2.414051, 2.425073, 2.436138, 00226 2.447246, 2.458397, 2.469591, 2.480828, 2.492110, 2.503436, 00227 2.514807, 2.526222, 2.537684, 2.549190, 2.560743, 2.572343, 00228 2.583989, 2.595682, 2.607423, 2.619212, 2.631050, 2.642936, 00229 2.654871, 2.666855, 2.678890, 2.690975, 2.703110, 2.715297, 00230 2.727535, 2.739825, 2.752168, 2.764563, 2.777012, 2.789514, 00231 2.802070, 2.814681, 2.827347, 2.840069, 2.852846, 2.865680, 00232 2.878570, 2.891518, 2.904524, 2.917588, 2.930712, 2.943894, 00233 2.957136, 2.970439, 2.983802, 2.997227, 3.010714, 3.024263, 00234 3.037875, 3.051551, 3.065290, 3.079095, 3.092965, 3.106900, 00235 3.120902, 3.134971, 3.149107, 3.163312, 3.177585, 3.191928, 00236 3.206340, 3.220824, 3.235378, 3.250005, 3.264704, 3.279477, 00237 3.294323, 3.309244, 3.324240, 3.339312, 3.354461, 3.369687, 00238 3.384992, 3.400375, 3.415838, 3.431381, 3.447005, 3.462711, 00239 3.478500, 3.494372, 3.510328, 3.526370, 00240 3.542497, 3.558711, 3.575012, 3.591402, 3.607881, 3.624450, 00241 3.641111, 3.657863, 3.674708, 3.691646, 3.708680, 3.725809, 00242 3.743034, 3.760357, 3.777779, 3.795300, 3.812921, 3.830645, 00243 3.848470, 3.866400, 3.884434, 3.902574, 3.920821, 3.939176, 00244 3.957640, 3.976215, 3.994901, 4.013699, 4.032612, 4.051639, 00245 4.070783, 4.090045, 4.109425, 4.128925, 4.148547, 4.168292, 00246 4.188160, 4.208154, 4.228275, 4.248524, 4.268903, 4.289413, 00247 4.310056, 4.330832, 4.351745, 4.372794, 4.393982, 4.415310, 00248 4.436781, 4.458395, 4.480154, 4.502060, 4.524114, 4.546319, 00249 4.568676, 4.591187, 4.613854, 4.636678, 4.659662, 4.682807, 00250 4.706116, 4.729590, 4.753231, 4.777041, 4.801024, 4.825179, 00251 4.849511, 4.874020, 4.898710, 4.923582, 4.948639, 4.973883, 00252 4.999316, 5.024942, 5.050761, 5.076778, 5.102993, 5.129411, 00253 5.156034, 5.182864, 5.209903, 5.237156, 5.264625, 5.292312, 00254 5.320220, 5.348354, 5.376714, 5.405306, 5.434131, 5.463193, 00255 5.492496, 5.522042, 5.551836, 5.581880, 5.612178, 5.642734, 00256 5.673552, 5.704634, 5.735986, 5.767610, 00257 5.799512, 5.831694, 5.864161, 5.896918, 5.929968, 5.963316, 00258 5.996967, 6.030925, 6.065194, 6.099780, 6.134687, 6.169921, 00259 6.205486, 6.241387, 6.277630, 6.314220, 6.351163, 6.388465, 00260 6.426130, 6.464166, 6.502578, 6.541371, 6.580553, 6.620130, 00261 6.660109, 6.700495, 6.741297, 6.782520, 6.824173, 6.866262, 00262 6.908795, 6.951780, 6.995225, 7.039137, 7.083525, 7.128398, 00263 7.173764, 7.219632, 7.266011, 7.312910, 7.360339, 7.408308, 00264 7.456827, 7.505905, 7.555554, 7.605785, 7.656608, 7.708035, 00265 7.760077, 7.812747, 7.866057, 7.920019, 7.974647, 8.029953, 00266 8.085952, 8.142657, 8.200083, 8.258245, 8.317158, 8.376837, 00267 8.437300, 8.498562, 8.560641, 8.623554, 8.687319, 8.751955, 00268 8.817481, 8.883916, 8.951282, 9.019600, 9.088889, 9.159174, 00269 9.230477, 9.302822, 9.376233, 9.450735, 9.526355, 9.603118, 00270 9.681054, 9.760191, 9.840558, 9.922186,10.005107,10.089353, 00271 10.174959,10.261958,10.350389,10.440287,10.531693,10.624646, 00272 10.719188,10.815362,10.913214,11.012789,11.114137,11.217307, 00273 11.322352,11.429325,11.538283,11.649285, 00274 11.762390,11.877664,11.995170,12.114979,12.237161,12.361791, 00275 12.488946,12.618708,12.751161,12.886394,13.024498,13.165570, 00276 13.309711,13.457026,13.607625,13.761625,13.919145,14.080314, 00277 14.245263,14.414134,14.587072,14.764233,14.945778,15.131877, 00278 15.322712,15.518470,15.719353,15.925570,16.137345,16.354912, 00279 16.578520,16.808433,17.044929,17.288305,17.538873,17.796967, 00280 18.062943,18.337176,18.620068,18.912049,19.213574,19.525133, 00281 19.847249,20.180480,20.525429,20.882738,21.253102,21.637266, 00282 22.036036,22.450278,22.880933,23.329017,23.795634,24.281981, 00283 24.789364,25.319207,25.873062,26.452634,27.059789,27.696581, 00284 28.365274,29.068370,29.808638,30.589157,31.413354,32.285060, 00285 33.208568,34.188705,35.230920,36.341388,37.527131,38.796172, 00286 40.157721,41.622399,43.202525,44.912465,46.769077,48.792279, 00287 51.005773,53.437996,56.123356,59.103894 }; 00288 00289 if ( m_specs->sigma() > 0 ) { 00290 double mean = m_specs->mean(); 00291 double sigma = m_specs->sigma(); 00292 double x = RandFlat::shoot(m_hepEngine, 0., 1.); 00293 double u = 1000.0*x; 00294 long i = long(u); 00295 double ranlan, v; 00296 u -= i; 00297 if (i >= 70 && i < 800) { 00298 ranlan = f[i-1] + u*(f[i] - f[i-1]); 00299 } else if (i >= 7 && i <= 980) { 00300 ranlan = f[i-1] + u*(f[i]-f[i-1]-0.25*(1-u)*(f[i+1]-f[i]-f[i-1]+f[i-2])); 00301 } else if (i < 7) { 00302 v = log(x); 00303 u = 1/v; 00304 ranlan = ((0.99858950+(3.45213058E1+1.70854528E1*u)*u)/ 00305 (1 +(3.41760202E1+4.01244582 *u)*u))* 00306 (-log(-0.91893853-v)-1); 00307 } else { 00308 u = 1-x; 00309 v = u*u; 00310 if (x <= 0.999) { 00311 ranlan = (1.00060006+2.63991156E2*u+4.37320068E3*v)/ 00312 ((1 +2.57368075E2*u+3.41448018E3*v)*u); 00313 } else { 00314 ranlan = (1.00001538+6.07514119E3*u+7.34266409E5*v)/ 00315 ((1 +6.06511919E3*u+6.94021044E5*v)*u); 00316 } 00317 } 00318 return mean + sigma*ranlan; 00319 } 00320 return DBL_MAX; 00321 }
| double HepRndm::Generator< Rndm::GaussianTail >::shoot | ( | ) | const [inline, virtual] |
Single shot returning single random number according to specified distribution.
Reimplemented from RndmGen.
Definition at line 373 of file HepRndmGenerators.cpp.
00373 { 00374 /* Code obtained and adapted from GSL 00375 gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma) 00376 Returns a gaussian random variable larger than a 00377 This implementation does one-sided upper-tailed deviates. 00378 */ 00379 double a = m_specs->cut(); 00380 double sigma = m_specs->sigma(); 00381 double s = a / sigma; 00382 if (s < 1) { 00383 /* For small s, use a direct rejection method. The limit s < 1 00384 can be adjusted to optimise the overall efficiency */ 00385 double x; 00386 do { 00387 //x = gsl_ran_gaussian (r, 1.0); 00388 x = RandGaussQ::shoot(m_hepEngine, 0.0, 1.0); 00389 } while (x < s); 00390 return x * sigma; 00391 } else { 00392 /* Use the "supertail" deviates from the last two steps 00393 * of Marsaglia's rectangle-wedge-tail method, as described 00394 * in Knuth, v2, 3rd ed, pp 123-128. (See also exercise 11, p139, 00395 * and the solution, p586.) 00396 */ 00397 double u, v, x; 00398 do { 00399 // u = gsl_rng_uniform (r); 00400 u = RandFlat::shoot(m_hepEngine); 00401 do { 00402 // v = gsl_rng_uniform (r); 00403 v = RandFlat::shoot(m_hepEngine); 00404 } while (v == 0.0); 00405 x = sqrt (s * s - 2 * log (v)); 00406 } while (x * u > s); 00407 return x * sigma; 00408 } 00409 }
CLHEP::HepRandomEngine* HepRndm::Generator< TYPE >::m_hepEngine [protected] |
Definition at line 31 of file HepRndmGenerator.h.
TYPE* HepRndm::Generator< TYPE >::m_specs [protected] |
Definition at line 32 of file HepRndmGenerator.h.