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