The Gaudi Framework  master (37c0b60a)
HepRndm::Generator< TYPE > Class Template Reference

#include </builds/gaudi/Gaudi/GaudiSvc/src/RndmGenSvc/HepRndmGenerator.h>

Inheritance diagram for HepRndm::Generator< TYPE >:
Collaboration diagram for HepRndm::Generator< TYPE >:

Public Types

typedef TYPE Parameters
 
- Public Types inherited from implements< IRndmGen >
using base_class = implements< Interfaces... >
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
using iids = typename extend_interfaces_base::ext_iids
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 

Public Member Functions

 Generator (IInterface *engine)
 
StatusCode initialize (const IRndmGen::Param &par) override
 Initialize the generator. More...
 
double shoot () const override
 Single shot. More...
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
double shoot () const
 
- Public Member Functions inherited from RndmGen
StatusCode initialize (const IRndmGen::Param &par) override
 IRndmGen implementation
More...
 
StatusCode finalize () override
 Finalize the generator. More...
 
const InterfaceIDtype () const override
 Random number generator type. More...
 
long ID () const override
 Random number generator ID. More...
 
const IRndmGen::Paramparameters () const override
 Access to random number generator parameters. More...
 
StatusCode shootArray (std::vector< double > &array, long howmany, long start) const override
 Multiple shots returning vector with random number according to specified distribution. More...
 
- Public Member Functions inherited from implements< IRndmGen >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
 implements ()=default
 Default constructor. More...
 
 implements (const implements &)
 Copy constructor (zero the reference count) More...
 
implementsoperator= (const implements &)
 Assignment operator (do not touch the reference count). More...
 
unsigned long addRef () override
 Reference Interface instance
More...
 
unsigned long release () override
 Release Interface instance
More...
 
unsigned long refCount () const override
 Current reference count
More...
 

Protected Attributes

CLHEP::HepRandomEngine * m_hepEngine = nullptr
 
TYPE * m_specs = nullptr
 
- Protected Attributes inherited from RndmGen
std::unique_ptr< IRndmGen::Paramm_params
 Generation parameters. More...
 
SmartIF< IRndmEnginem_engine
 Hosting service: Access must always be possible. More...
 
- Protected Attributes inherited from implements< IRndmGen >
std::atomic_ulong m_refCount
 Reference counter
More...
 

Additional Inherited Members

- Protected Member Functions inherited from RndmGen
 RndmGen (IInterface *engine)
 Standard Constructor. More...
 

Detailed Description

template<class TYPE>
class HepRndm::Generator< TYPE >

Definition at line 37 of file HepRndmGenerator.h.

Member Typedef Documentation

◆ Parameters

template<class TYPE >
typedef TYPE HepRndm::Generator< TYPE >::Parameters

Definition at line 39 of file HepRndmGenerator.h.

Constructor & Destructor Documentation

◆ Generator()

template<class TYPE >
HepRndm::Generator< TYPE >::Generator ( IInterface engine)
inline

Definition at line 46 of file HepRndmGenerator.h.

46 : RndmGen( engine ) {}

Member Function Documentation

◆ initialize()

template<class TYPE >
StatusCode HepRndm::Generator< TYPE >::initialize ( const IRndmGen::Param par)
override

Initialize the generator.

Definition at line 55 of file HepRndmGenerator.h.

55  {
57  if ( status.isSuccess() ) {
58  try {
59  m_specs = dynamic_cast<TYPE*>( m_params.get() );
60  if ( m_specs ) {
61  BaseEngine* engine = dynamic_cast<BaseEngine*>( m_engine.get() );
62  if ( engine ) {
63  m_hepEngine = engine->hepEngine();
64  if ( m_hepEngine ) { return StatusCode::SUCCESS; }
65  }
66  }
67  } catch ( ... ) {}
68  }
69  return StatusCode::FAILURE;
70  }

◆ shoot() [1/14]

double HepRndm::Generator< Rndm::Flat >::shoot ( ) const

Definition at line 63 of file HepRndmGenerators.cpp.

63  {
64  return RandFlat::shoot( m_hepEngine, m_specs->minimum(), m_specs->maximum() );
65  }

◆ shoot() [2/14]

double HepRndm::Generator< Rndm::Bit >::shoot ( ) const

Definition at line 69 of file HepRndmGenerators.cpp.

69  {
70  return RandFlat::shootBit( m_hepEngine );
71  }

◆ shoot() [3/14]

double HepRndm::Generator< Rndm::Gauss >::shoot ( ) const

Definition at line 75 of file HepRndmGenerators.cpp.

75  {
76  return RandGaussQ::shoot( m_hepEngine, m_specs->mean(), m_specs->sigma() );
77  }

◆ shoot() [4/14]

double HepRndm::Generator< Rndm::Poisson >::shoot ( ) const

Definition at line 87 of file HepRndmGenerators.cpp.

87  {
88  return RandPoisson::shoot( m_hepEngine, m_specs->mean() );
89  }

◆ shoot() [5/14]

double HepRndm::Generator< Rndm::Exponential >::shoot ( ) const

Definition at line 98 of file HepRndmGenerators.cpp.

98  {
99  return RandExponential::shoot( m_hepEngine, m_specs->mean() );
100  }

◆ shoot() [6/14]

double HepRndm::Generator< Rndm::BreitWigner >::shoot ( ) const

Definition at line 104 of file HepRndmGenerators.cpp.

104  {
105  return RandBreitWigner::shoot( m_hepEngine, m_specs->mean(), m_specs->gamma() );
106  }

◆ shoot() [7/14]

double HepRndm::Generator< Rndm::BreitWignerCutOff >::shoot ( ) const

Definition at line 110 of file HepRndmGenerators.cpp.

110  {
111  return RandBreitWigner::shoot( m_hepEngine, m_specs->mean(), m_specs->gamma(), m_specs->cutOff() );
112  }

◆ shoot() [8/14]

double HepRndm::Generator< Rndm::Chi2 >::shoot ( ) const

Definition at line 116 of file HepRndmGenerators.cpp.

116  {
117  return RandChiSquare::shoot( m_hepEngine, m_specs->nDOF() );
118  }

◆ shoot() [9/14]

double HepRndm::Generator< Rndm::StudentT >::shoot ( ) const

Definition at line 122 of file HepRndmGenerators.cpp.

122  {
123  return RandStudentT::shoot( m_hepEngine, m_specs->aValue() );
124  }

◆ shoot() [10/14]

double HepRndm::Generator< Rndm::Gamma >::shoot ( ) const

Definition at line 127 of file HepRndmGenerators.cpp.

127  {
128  return RandGamma::shoot( m_hepEngine, m_specs->kValue(), m_specs->lambda() );
129  }

◆ shoot() [11/14]

double HepRndm::Generator< Rndm::Binomial >::shoot ( ) const

Definition at line 133 of file HepRndmGenerators.cpp.

133  {
134  return RandBinomial::shoot( m_hepEngine, m_specs->nEvent(), m_specs->probability() );
135  }

◆ shoot() [12/14]

double HepRndm::Generator< Rndm::Landau >::shoot ( ) const

Definition at line 154 of file HepRndmGenerators.cpp.

154  {
155  // Generate a random number following a Landau distribution
156  // with average value mean and rms
157  // Converted by Rene Brun from CERNLIB routine ranlan(G110)
158  static double f[982] = {
159  0, 0, 0, 0, 0, -2.244733, -2.204365, -2.168163, -2.135219, -2.104898,
160  -2.076740, -2.050397, -2.025605, -2.002150, -1.979866, -1.958612, -1.938275, -1.918760, -1.899984, -1.881879,
161  -1.864385, -1.847451, -1.831030, -1.815083, -1.799574, -1.784473, -1.769751, -1.755383, -1.741346, -1.727620,
162  -1.714187, -1.701029, -1.688130, -1.675477, -1.663057, -1.650858, -1.638868, -1.627078, -1.615477, -1.604058,
163  -1.592811, -1.581729, -1.570806, -1.560034, -1.549407, -1.538919, -1.528565, -1.518339, -1.508237, -1.498254,
164  -1.488386, -1.478628, -1.468976, -1.459428, -1.449979, -1.440626, -1.431365, -1.422195, -1.413111, -1.404112,
165  -1.395194, -1.386356, -1.377594, -1.368906, -1.360291, -1.351746, -1.343269, -1.334859, -1.326512, -1.318229,
166  -1.310006, -1.301843, -1.293737, -1.285688, -1.277693, -1.269752, -1.261863, -1.254024, -1.246235, -1.238494,
167  -1.230800, -1.223153, -1.215550, -1.207990, -1.200474, -1.192999, -1.185566, -1.178172, -1.170817, -1.163500,
168  -1.156220, -1.148977, -1.141770, -1.134598, -1.127459, -1.120354, -1.113282, -1.106242, -1.099233, -1.092255,
169  -1.085306, -1.078388, -1.071498, -1.064636, -1.057802, -1.050996, -1.044215, -1.037461, -1.030733, -1.024029,
170  -1.017350, -1.010695, -1.004064, -.997456, -.990871, -.984308, -.977767, -.971247, -.964749, -.958271,
171  -.951813, -.945375, -.938957, -.932558, -.926178, -.919816, -.913472, -.907146, -.900838, -.894547,
172  -.888272, -.882014, -.875773, -.869547, -.863337, -.857142, -.850963, -.844798, -.838648, -.832512,
173  -.826390, -.820282, -.814187, -.808106, -.802038, -.795982, -.789940, -.783909, -.777891, -.771884,
174  -.765889, -.759906, -.753934, -.747973, -.742023, -.736084, -.730155, -.724237, -.718328, -.712429,
175  -.706541, -.700661, -.694791, -.688931, -.683079, -.677236, -.671402, -.665576, -.659759, -.653950,
176  -.648149, -.642356, -.636570, -.630793, -.625022, -.619259, -.613503, -.607754, -.602012, -.596276,
177  -.590548, -.584825, -.579109, -.573399, -.567695, -.561997, -.556305, -.550618, -.544937, -.539262,
178  -.533592, -.527926, -.522266, -.516611, -.510961, -.505315, -.499674, -.494037, -.488405, -.482777,
179  -.477153, -.471533, -.465917, -.460305, -.454697, -.449092, -.443491, -.437893, -.432299, -.426707,
180  -.421119, -.415534, -.409951, -.404372, -.398795, -.393221, -.387649, -.382080, -.376513, -.370949,
181  -.365387, -.359826, -.354268, -.348712, -.343157, -.337604, -.332053, -.326503, -.320955, -.315408,
182  -.309863, -.304318, -.298775, -.293233, -.287692, -.282152, -.276613, -.271074, -.265536, -.259999,
183  -.254462, -.248926, -.243389, -.237854, -.232318, -.226783, -.221247, -.215712, -.210176, -.204641,
184  -.199105, -.193568, -.188032, -.182495, -.176957, -.171419, -.165880, -.160341, -.154800, -.149259,
185  -.143717, -.138173, -.132629, -.127083, -.121537, -.115989, -.110439, -.104889, -.099336, -.093782,
186  -.088227, -.082670, -.077111, -.071550, -.065987, -.060423, -.054856, -.049288, -.043717, -.038144,
187  -.032569, -.026991, -.021411, -.015828, -.010243, -.004656, .000934, .006527, .012123, .017722,
188  .023323, .028928, .034535, .040146, .045759, .051376, .056997, .062620, .068247, .073877,
189  .079511, .085149, .090790, .096435, .102083, .107736, .113392, .119052, .124716, .130385,
190  .136057, .141734, .147414, .153100, .158789, .164483, .170181, .175884, .181592, .187304,
191  .193021, .198743, .204469, .210201, .215937, .221678, .227425, .233177, .238933, .244696,
192  .250463, .256236, .262014, .267798, .273587, .279382, .285183, .290989, .296801, .302619,
193  .308443, .314273, .320109, .325951, .331799, .337654, .343515, .349382, .355255, .361135,
194  .367022, .372915, .378815, .384721, .390634, .396554, .402481, .408415, .414356, .420304,
195  .426260, .432222, .438192, .444169, .450153, .456145, .462144, .468151, .474166, .480188,
196  .486218, .492256, .498302, .504356, .510418, .516488, .522566, .528653, .534747, .540850,
197  .546962, .553082, .559210, .565347, .571493, .577648, .583811, .589983, .596164, .602355,
198  .608554, .614762, .620980, .627207, .633444, .639689, .645945, .652210, .658484, .664768,
199  .671062, .677366, .683680, .690004, .696338, .702682, .709036, .715400, .721775, .728160,
200  .734556, .740963, .747379, .753807, .760246, .766695, .773155, .779627, .786109, .792603,
201  .799107, .805624, .812151, .818690, .825241, .831803, .838377, .844962, .851560, .858170,
202  .864791, .871425, .878071, .884729, .891399, .898082, .904778, .911486, .918206, .924940,
203  .931686, .938446, .945218, .952003, .958802, .965614, .972439, .979278, .986130, .992996,
204  .999875, 1.006769, 1.013676, 1.020597, 1.027533, 1.034482, 1.041446, 1.048424, 1.055417, 1.062424,
205  1.069446, 1.076482, 1.083534, 1.090600, 1.097681, 1.104778, 1.111889, 1.119016, 1.126159, 1.133316,
206  1.140490, 1.147679, 1.154884, 1.162105, 1.169342, 1.176595, 1.183864, 1.191149, 1.198451, 1.205770,
207  1.213105, 1.220457, 1.227826, 1.235211, 1.242614, 1.250034, 1.257471, 1.264926, 1.272398, 1.279888,
208  1.287395, 1.294921, 1.302464, 1.310026, 1.317605, 1.325203, 1.332819, 1.340454, 1.348108, 1.355780,
209  1.363472, 1.371182, 1.378912, 1.386660, 1.394429, 1.402216, 1.410024, 1.417851, 1.425698, 1.433565,
210  1.441453, 1.449360, 1.457288, 1.465237, 1.473206, 1.481196, 1.489208, 1.497240, 1.505293, 1.513368,
211  1.521465, 1.529583, 1.537723, 1.545885, 1.554068, 1.562275, 1.570503, 1.578754, 1.587028, 1.595325,
212  1.603644, 1.611987, 1.620353, 1.628743, 1.637156, 1.645593, 1.654053, 1.662538, 1.671047, 1.679581,
213  1.688139, 1.696721, 1.705329, 1.713961, 1.722619, 1.731303, 1.740011, 1.748746, 1.757506, 1.766293,
214  1.775106, 1.783945, 1.792810, 1.801703, 1.810623, 1.819569, 1.828543, 1.837545, 1.846574, 1.855631,
215  1.864717, 1.873830, 1.882972, 1.892143, 1.901343, 1.910572, 1.919830, 1.929117, 1.938434, 1.947781,
216  1.957158, 1.966566, 1.976004, 1.985473, 1.994972, 2.004503, 2.014065, 2.023659, 2.033285, 2.042943,
217  2.052633, 2.062355, 2.072110, 2.081899, 2.091720, 2.101575, 2.111464, 2.121386, 2.131343, 2.141334,
218  2.151360, 2.161421, 2.171517, 2.181648, 2.191815, 2.202018, 2.212257, 2.222533, 2.232845, 2.243195,
219  2.253582, 2.264006, 2.274468, 2.284968, 2.295507, 2.306084, 2.316701, 2.327356, 2.338051, 2.348786,
220  2.359562, 2.370377, 2.381234, 2.392131, 2.403070, 2.414051, 2.425073, 2.436138, 2.447246, 2.458397,
221  2.469591, 2.480828, 2.492110, 2.503436, 2.514807, 2.526222, 2.537684, 2.549190, 2.560743, 2.572343,
222  2.583989, 2.595682, 2.607423, 2.619212, 2.631050, 2.642936, 2.654871, 2.666855, 2.678890, 2.690975,
223  2.703110, 2.715297, 2.727535, 2.739825, 2.752168, 2.764563, 2.777012, 2.789514, 2.802070, 2.814681,
224  2.827347, 2.840069, 2.852846, 2.865680, 2.878570, 2.891518, 2.904524, 2.917588, 2.930712, 2.943894,
225  2.957136, 2.970439, 2.983802, 2.997227, 3.010714, 3.024263, 3.037875, 3.051551, 3.065290, 3.079095,
226  3.092965, 3.106900, 3.120902, 3.134971, 3.149107, 3.163312, 3.177585, 3.191928, 3.206340, 3.220824,
227  3.235378, 3.250005, 3.264704, 3.279477, 3.294323, 3.309244, 3.324240, 3.339312, 3.354461, 3.369687,
228  3.384992, 3.400375, 3.415838, 3.431381, 3.447005, 3.462711, 3.478500, 3.494372, 3.510328, 3.526370,
229  3.542497, 3.558711, 3.575012, 3.591402, 3.607881, 3.624450, 3.641111, 3.657863, 3.674708, 3.691646,
230  3.708680, 3.725809, 3.743034, 3.760357, 3.777779, 3.795300, 3.812921, 3.830645, 3.848470, 3.866400,
231  3.884434, 3.902574, 3.920821, 3.939176, 3.957640, 3.976215, 3.994901, 4.013699, 4.032612, 4.051639,
232  4.070783, 4.090045, 4.109425, 4.128925, 4.148547, 4.168292, 4.188160, 4.208154, 4.228275, 4.248524,
233  4.268903, 4.289413, 4.310056, 4.330832, 4.351745, 4.372794, 4.393982, 4.415310, 4.436781, 4.458395,
234  4.480154, 4.502060, 4.524114, 4.546319, 4.568676, 4.591187, 4.613854, 4.636678, 4.659662, 4.682807,
235  4.706116, 4.729590, 4.753231, 4.777041, 4.801024, 4.825179, 4.849511, 4.874020, 4.898710, 4.923582,
236  4.948639, 4.973883, 4.999316, 5.024942, 5.050761, 5.076778, 5.102993, 5.129411, 5.156034, 5.182864,
237  5.209903, 5.237156, 5.264625, 5.292312, 5.320220, 5.348354, 5.376714, 5.405306, 5.434131, 5.463193,
238  5.492496, 5.522042, 5.551836, 5.581880, 5.612178, 5.642734, 5.673552, 5.704634, 5.735986, 5.767610,
239  5.799512, 5.831694, 5.864161, 5.896918, 5.929968, 5.963316, 5.996967, 6.030925, 6.065194, 6.099780,
240  6.134687, 6.169921, 6.205486, 6.241387, 6.277630, 6.314220, 6.351163, 6.388465, 6.426130, 6.464166,
241  6.502578, 6.541371, 6.580553, 6.620130, 6.660109, 6.700495, 6.741297, 6.782520, 6.824173, 6.866262,
242  6.908795, 6.951780, 6.995225, 7.039137, 7.083525, 7.128398, 7.173764, 7.219632, 7.266011, 7.312910,
243  7.360339, 7.408308, 7.456827, 7.505905, 7.555554, 7.605785, 7.656608, 7.708035, 7.760077, 7.812747,
244  7.866057, 7.920019, 7.974647, 8.029953, 8.085952, 8.142657, 8.200083, 8.258245, 8.317158, 8.376837,
245  8.437300, 8.498562, 8.560641, 8.623554, 8.687319, 8.751955, 8.817481, 8.883916, 8.951282, 9.019600,
246  9.088889, 9.159174, 9.230477, 9.302822, 9.376233, 9.450735, 9.526355, 9.603118, 9.681054, 9.760191,
247  9.840558, 9.922186, 10.005107, 10.089353, 10.174959, 10.261958, 10.350389, 10.440287, 10.531693, 10.624646,
248  10.719188, 10.815362, 10.913214, 11.012789, 11.114137, 11.217307, 11.322352, 11.429325, 11.538283, 11.649285,
249  11.762390, 11.877664, 11.995170, 12.114979, 12.237161, 12.361791, 12.488946, 12.618708, 12.751161, 12.886394,
250  13.024498, 13.165570, 13.309711, 13.457026, 13.607625, 13.761625, 13.919145, 14.080314, 14.245263, 14.414134,
251  14.587072, 14.764233, 14.945778, 15.131877, 15.322712, 15.518470, 15.719353, 15.925570, 16.137345, 16.354912,
252  16.578520, 16.808433, 17.044929, 17.288305, 17.538873, 17.796967, 18.062943, 18.337176, 18.620068, 18.912049,
253  19.213574, 19.525133, 19.847249, 20.180480, 20.525429, 20.882738, 21.253102, 21.637266, 22.036036, 22.450278,
254  22.880933, 23.329017, 23.795634, 24.281981, 24.789364, 25.319207, 25.873062, 26.452634, 27.059789, 27.696581,
255  28.365274, 29.068370, 29.808638, 30.589157, 31.413354, 32.285060, 33.208568, 34.188705, 35.230920, 36.341388,
256  37.527131, 38.796172, 40.157721, 41.622399, 43.202525, 44.912465, 46.769077, 48.792279, 51.005773, 53.437996,
257  56.123356, 59.103894 };
258 
259  if ( m_specs->sigma() > 0 ) {
260  double mean = m_specs->mean();
261  double sigma = m_specs->sigma();
262  double x = RandFlat::shoot( m_hepEngine, 0., 1. );
263  double u = 1000.0 * x;
264  long i = long( u );
265  double ranlan, v;
266  u -= i;
267  if ( i >= 70 && i < 800 ) {
268  ranlan = f[i - 1] + u * ( f[i] - f[i - 1] );
269  } else if ( i >= 7 && i <= 980 ) {
270  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] ) );
271  } else if ( i < 7 ) {
272  v = log( x );
273  u = 1 / v;
274  ranlan = ( ( 0.99858950 + ( 3.45213058E1 + 1.70854528E1 * u ) * u ) /
275  ( 1 + ( 3.41760202E1 + 4.01244582 * u ) * u ) ) *
276  ( -log( -0.91893853 - v ) - 1 );
277  } else {
278  u = 1 - x;
279  v = u * u;
280  if ( x <= 0.999 ) {
281  ranlan = ( 1.00060006 + 2.63991156E2 * u + 4.37320068E3 * v ) /
282  ( ( 1 + 2.57368075E2 * u + 3.41448018E3 * v ) * u );
283  } else {
284  ranlan = ( 1.00001538 + 6.07514119E3 * u + 7.34266409E5 * v ) /
285  ( ( 1 + 6.06511919E3 * u + 6.94021044E5 * v ) * u );
286  }
287  }
288  return mean + sigma * ranlan;
289  }
290  return DBL_MAX;
291  }

◆ shoot() [13/14]

double HepRndm::Generator< Rndm::GaussianTail >::shoot ( ) const

Definition at line 331 of file HepRndmGenerators.cpp.

331  {
332  /* Code obtained and adapted from GSL
333  gsl_ran_gaussian_tail (const gsl_rng * r, const double a, const double sigma)
334  Returns a gaussian random variable larger than a
335  This implementation does one-sided upper-tailed deviates.
336  */
337  double a = m_specs->cut();
338  double sigma = m_specs->sigma();
339  double s = a / sigma;
340  if ( s < 1 ) {
341  /* For small s, use a direct rejection method. The limit s < 1
342  can be adjusted to optimise the overall efficiency */
343  double x;
344  do {
345  // x = gsl_ran_gaussian (r, 1.0);
346  x = RandGaussQ::shoot( m_hepEngine, 0.0, 1.0 );
347  } while ( x < s );
348  return x * sigma;
349  } else {
350  /* Use the "supertail" deviates from the last two steps
351  * of Marsaglia's rectangle-wedge-tail method, as described
352  * in Knuth, v2, 3rd ed, pp 123-128. (See also exercise 11, p139,
353  * and the solution, p586.)
354  */
355  double u, v, x;
356  do {
357  // u = gsl_rng_uniform (r);
358  u = RandFlat::shoot( m_hepEngine );
359  do {
360  // v = gsl_rng_uniform (r);
361  v = RandFlat::shoot( m_hepEngine );
362  } while ( std::abs( v ) < std::numeric_limits<double>::epsilon() * m_specs->cut() );
363  x = sqrt( s * s - 2 * log( v ) );
364  } while ( x * u > s );
365  return x * sigma;
366  }
367  }

◆ shoot() [14/14]

template<class TYPE >
double HepRndm::Generator< TYPE >::shoot ( ) const
override

Single shot.

Member Data Documentation

◆ m_hepEngine

template<class TYPE >
CLHEP::HepRandomEngine* HepRndm::Generator< TYPE >::m_hepEngine = nullptr
protected

Definition at line 42 of file HepRndmGenerator.h.

◆ m_specs

template<class TYPE >
TYPE* HepRndm::Generator< TYPE >::m_specs = nullptr
protected

Definition at line 43 of file HepRndmGenerator.h.


The documentation for this class was generated from the following file:
Gaudi::Accumulators::sqrt
auto sqrt(std::chrono::duration< Rep, Period > d)
sqrt for std::chrono::duration
Definition: Counters.h:34
Gaudi.Configuration.log
log
Definition: Configuration.py:28
HepRndm::Generator::m_specs
TYPE * m_specs
Definition: HepRndmGenerator.h:43
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
gaudirun.s
string s
Definition: gaudirun.py:346
HepRndm::Generator::m_hepEngine
CLHEP::HepRandomEngine * m_hepEngine
Definition: HepRndmGenerator.h:42
std::unique_ptr::get
T get(T... args)
std::abs
Gaudi::ParticleID abs(const Gaudi::ParticleID &p)
Return the absolute value for a PID.
Definition: ParticleID.h:191
RndmGen::RndmGen
RndmGen(IInterface *engine)
Standard Constructor.
Definition: RndmGen.cpp:33
compareOutputFiles.par
par
Definition: compareOutputFiles.py:477
RndmGen::initialize
StatusCode initialize(const IRndmGen::Param &par) override
IRndmGen implementation
Definition: RndmGen.cpp:36
StatusCode
Definition: StatusCode.h:65
RndmGen::m_engine
SmartIF< IRndmEngine > m_engine
Hosting service: Access must always be possible.
Definition: RndmGen.h:57
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
RndmGen::m_params
std::unique_ptr< IRndmGen::Param > m_params
Generation parameters.
Definition: RndmGen.h:55
Properties.v
v
Definition: Properties.py:122
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
std::numeric_limits