| The Gaudi Framework v30r0 (c919700c)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

RndmGenerators.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_RNDMGENGENERATORS_H
2 #define GAUDIKERNEL_RNDMGENGENERATORS_H
3
4 // STL include files
5 #include <vector>
6
7 // Framework include files
8 #include "GaudiKernel/IRndmGen.h"
9 #include "GaudiKernel/SmartIF.h"
10
11 // Forward declarations
12 class IRndmGen;
13 class IRndmGenSvc;
14
15 namespace Rndm
16 {
17
18 template <class TYPE>
19 class Generator;
20
23 class GAUDI_API Gauss : public IRndmGen::Param
24 {
25 protected:
27 friend class Generator<Gauss>;
29 double m_mean;
31 double m_sigma;
32
33 public:
35 Gauss( double m, double s ) : IRndmGen::Param( IID_IRndmGauss ), m_mean( m ), m_sigma( s ) {}
37 ~Gauss() override = default;
39 double mean() const { return m_mean; }
41 double sigma() const { return m_sigma; }
43 static const InterfaceID& typeID() { return IID_IRndmGauss; }
45 Gauss* clone() const override { return new Gauss( m_mean, m_sigma ); }
46 };
47
50 class GAUDI_API Exponential : public IRndmGen::Param
51 {
52 protected:
54 double m_mean;
55
56 public:
58 Exponential( double m ) : IRndmGen::Param( IID_IRndmExponential ), m_mean( m ) {}
60 ~Exponential() override = default;
62 double mean() const { return m_mean; }
64 static const InterfaceID& typeID() { return IID_IRndmExponential; }
66 Exponential* clone() const override { return new Exponential( m_mean ); }
67 };
68
71 class GAUDI_API Chi2 : public IRndmGen::Param
72 {
73 friend class Generator<Chi2>;
74
75 protected:
77 long m_nDOF;
78
79 public:
81 Chi2( long n_dof ) : IRndmGen::Param( IID_IRndmChi2 ), m_nDOF( n_dof ) {}
83 ~Chi2() override = default;
85 long nDOF() const { return m_nDOF; }
87 static const InterfaceID& typeID() { return IID_IRndmChi2; }
89 Chi2* clone() const override { return new Chi2( m_nDOF ); }
90 };
91
94 class GAUDI_API BreitWigner : public IRndmGen::Param
95 {
96 friend class Generator<BreitWigner>;
97
98 protected:
100 double m_mean, m_gamma;
101
102 public:
104 BreitWigner( double m, double g ) : IRndmGen::Param( IID_IRndmBreitWigner ), m_mean( m ), m_gamma( g ) {}
106 ~BreitWigner() override = default;
108 double mean() const { return m_mean; }
110 double gamma() const { return m_gamma; }
112 static const InterfaceID& typeID() { return IID_IRndmBreitWigner; }
114 BreitWigner* clone() const override { return new BreitWigner( m_mean, m_gamma ); }
115 };
116
119 class GAUDI_API Landau : public IRndmGen::Param
120 {
121 friend class Generator<Landau>;
122
123 protected:
125 double m_mean, m_sigma;
126
127 public:
129 Landau( double m, double s ) : IRndmGen::Param( IID_IRndmLandau ), m_mean( m ), m_sigma( s ) {}
131 ~Landau() override = default;
133 double mean() const { return m_mean; }
135 double sigma() const { return m_sigma; }
137 static const InterfaceID& typeID() { return IID_IRndmLandau; }
139 Landau* clone() const override { return new Landau( m_mean, m_sigma ); }
140 };
141
145 class GAUDI_API BreitWignerCutOff : public IRndmGen::Param
146 {
147 friend class Generator<BreitWignerCutOff>;
148
149 protected:
151 double m_mean, m_gamma, m_cut;
152
153 public:
155 BreitWignerCutOff( double m, double g, double c )
156 : IRndmGen::Param( IID_IRndmBreitWignerCutOff ), m_mean( m ), m_gamma( g ), m_cut( c )
157 {
158 }
160 ~BreitWignerCutOff() override = default;
162 double mean() const { return m_mean; }
164 double gamma() const { return m_gamma; }
166 double cutOff() const { return m_cut; }
168 static const InterfaceID& typeID() { return IID_IRndmBreitWignerCutOff; }
170 BreitWignerCutOff* clone() const override { return new BreitWignerCutOff( m_mean, m_gamma, m_cut ); }
171 };
172
175 class GAUDI_API StudentT : public IRndmGen::Param
176 {
177 friend class Generator<StudentT>;
178
179 protected:
181 double m_aValue;
182
183 public:
185 StudentT( double a ) : IRndmGen::Param( IID_IRndmStudentT ), m_aValue( a ) {}
187 ~StudentT() override = default;
189 double aValue() const { return m_aValue; }
191 static const InterfaceID& typeID() { return IID_IRndmStudentT; }
193 StudentT* clone() const override { return new StudentT( m_aValue ); }
194 };
195
198 class GAUDI_API Gamma : public IRndmGen::Param
199 {
200 friend class Generator<Gamma>;
201
202 protected:
204 double m_kValue;
206 double m_lambda;
207
208 public:
210 Gamma( double k, double l ) : IRndmGen::Param( IID_IRndmGamma ), m_kValue( k ), m_lambda( l ) {}
212 ~Gamma() override = default;
214 double kValue() const { return m_kValue; }
216 double lambda() const { return m_lambda; }
218 static const InterfaceID& typeID() { return IID_IRndmGamma; }
220 Gamma* clone() const override { return new Gamma( m_kValue, m_lambda ); }
221 };
222
226 class GAUDI_API Poisson : public IRndmGen::Param
227 {
228 friend class Generator<Poisson>;
229
230 protected:
232 double m_mean;
233
234 public:
236 Poisson( double m ) : IRndmGen::Param( IID_IRndmPoisson ), m_mean( m ) {}
238 ~Poisson() override = default;
240 double mean() const { return m_mean; }
242 static const InterfaceID& typeID() { return IID_IRndmPoisson; }
244 Poisson* clone() const override { return new Poisson( m_mean ); }
245 };
246
250 class GAUDI_API Binomial : public IRndmGen::Param
251 {
252 protected:
254 long m_nEvent;
256 double m_probability;
257
258 public:
260 Binomial( long n, double p ) : IRndmGen::Param( IID_IRndmBinomial ), m_nEvent( n ), m_probability( p ) {}
262 ~Binomial() override = default;
264 long nEvent() const { return m_nEvent; }
266 double probability() const { return m_probability; }
268 static const InterfaceID& typeID() { return IID_IRndmBinomial; }
270 Binomial* clone() const override { return new Binomial( m_nEvent, m_probability ); }
271 };
272
276 class GAUDI_API Flat : public IRndmGen::Param
277 {
278 protected:
280 double m_minimum;
282 double m_maximum;
283
284 public:
286 Flat( double mi, double ma ) : IRndmGen::Param( IID_IRndmFlat ), m_minimum( mi ), m_maximum( ma ) {}
288 ~Flat() override = default;
290 double minimum() const { return m_minimum; }
292 double maximum() const { return m_maximum; }
294 static const InterfaceID& typeID() { return IID_IRndmFlat; }
296 Flat* clone() const override { return new Flat( m_minimum, m_maximum ); }
297 };
298
301 class GAUDI_API Bit : public IRndmGen::Param
302 {
303 public:
305 Bit() : IRndmGen::Param( IID_IRndmBit ) {}
307 ~Bit() override = default;
309 static const InterfaceID& typeID() { return IID_IRndmBit; }
311 Bit* clone() const override { return new Bit(); }
312 };
313
330 class GAUDI_API DefinedPdf : public IRndmGen::Param
331 {
332 protected:
334 std::vector<double> m_pdf;
336 long m_interpolation;
337
338 public:
340 DefinedPdf( const std::vector<double>& pdf, long intpol )
341 : IRndmGen::Param( IID_IRndmDefinedPdf ), m_pdf( pdf ), m_interpolation( intpol )
342 {
343 }
345 ~DefinedPdf() override = default;
347 std::vector<double>& pdf() { return m_pdf; }
349 long interpolation() const { return m_interpolation; }
351 static const InterfaceID& typeID() { return IID_IRndmDefinedPdf; }
353 DefinedPdf* clone() const override { return new DefinedPdf( m_pdf, m_interpolation ); }
354 };
355
358 class GAUDI_API GaussianTail : public IRndmGen::Param
359 {
360 protected:
362 double m_cut;
364 double m_sigma;
365
366 public:
368 GaussianTail( double a, double s ) : IRndmGen::Param( IID_IRndmGaussianTail ), m_cut( a ), m_sigma( s ) {}
370 ~GaussianTail() override = default;
372 double cut() const { return m_cut; }
374 double sigma() const { return m_sigma; }
376 static const InterfaceID& typeID() { return IID_IRndmGaussianTail; }
378 GaussianTail* clone() const override { return new GaussianTail( m_cut, m_sigma ); }
379 };
380
396 class GAUDI_API Numbers
397 {
398 protected:
400 SmartIF<IRndmGen> m_generator;
401
402 public:
404 Numbers() = default;
406 Numbers( const Numbers& ) = default;
408 Numbers( const SmartIF<IRndmGenSvc>& svc, const IRndmGen::Param& par );
410 virtual ~Numbers();
412 virtual StatusCode initialize( const SmartIF<IRndmGenSvc>& svc, const IRndmGen::Param& par );
413 #if !defined( GAUDI_V22_API ) || defined( G22_NEW_SVCLOCATOR )
414 Numbers( IRndmGenSvc* svc, const IRndmGen::Param& par );
417 virtual StatusCode initialize( IRndmGenSvc* svc, const IRndmGen::Param& par );
418 #endif
419 virtual StatusCode finalize();
422 operator bool() const { return m_generator; }
424 double operator()() { return this->shoot(); }
426 double pop() { return this->shoot(); }
428 double shoot() { return m_generator ? m_generator->shoot() : -1; }
430 StatusCode shootArray( std::vector<double>& array, long num, long start = 0 )
431 {
432 return m_generator ? m_generator->shootArray( array, num, start ) : StatusCode::FAILURE;
433 }
434 };
435 }
436 #endif // GAUDIKERNEL_RNDMGENGENERATORS_H
Rndm::Binomial::clone
Binomial * clone() const override
Clone parameters.
Definition: RndmGenerators.h:270
Rndm::Gamma::clone
Gamma * clone() const override
Clone parameters.
Definition: RndmGenerators.h:220
Rndm::StudentT::clone
StudentT * clone() const override
Clone parameters.
Definition: RndmGenerators.h:193
IRndmGen::shoot
virtual double shoot() const =0
Single shot returning single random number according to specified distribution.
Rndm::Chi2::nDOF
long nDOF() const
Access mean value of the distribution.
Definition: RndmGenerators.h:85
SmartIF< IRndmGen >
Rndm::Chi2::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:87
Rndm::Bit
Parameters for the bit value generation: returns values 0 and 1.
Definition: RndmGenerators.h:301
Rndm::BreitWignerCutOff::m_mean
double m_mean
Mean, Gamma and cut off parameter of the Breit-Wigner distribution.
Definition: RndmGenerators.h:151
gaudirun.c
c
Definition: gaudirun.py:407
Rndm::Landau::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:137
Rndm::GaussianTail::GaussianTail
GaussianTail(double a, double s)
Standard Constructor.
Definition: RndmGenerators.h:368
Rndm::Gamma::m_kValue
double m_kValue
k Value
Definition: RndmGenerators.h:204
Rndm::Flat::m_minimum
double m_minimum
Lower boundary for random numbers.
Definition: RndmGenerators.h:280
Rndm::BreitWignerCutOff::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:168
Rndm::Gauss::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:39
Rndm::Poisson
Parameters for the Poisson distributed random number generation with a given mean.
Definition: RndmGenerators.h:226
Rndm
Definition: RndmGenerators.h:15
Rndm::Exponential::clone
Exponential * clone() const override
Clone parameters.
Definition: RndmGenerators.h:66
Rndm::Poisson::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:240
IRndmGen
Definition of a interface for a generic random number generators.
Definition: IRndmGen.h:34
Rndm::Numbers::m_generator
SmartIF< IRndmGen > m_generator
Pointer to random number generator.
Definition: RndmGenerators.h:400
Rndm::Binomial::m_probability
double m_probability
And the probability for having success.
Definition: RndmGenerators.h:256
Rndm::Flat::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:294
IRndmGen.h
Rndm::Numbers::operator()
double operator()()
Operator () for the use within STL.
Definition: RndmGenerators.h:424
Rndm::GaussianTail::m_sigma
double m_sigma
Sigma of the Gauss ditribution.
Definition: RndmGenerators.h:364
Rndm::StudentT::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:191
Rndm::Gauss
Parameters for the Gauss random number generation.
Definition: RndmGenerators.h:23
Rndm::Gauss::Gauss
Gauss(double m, double s)
Standard Constructor.
Definition: RndmGenerators.h:35
Rndm::Bit::clone
Bit * clone() const override
Clone parameters.
Definition: RndmGenerators.h:311
Rndm::Flat::Flat
Flat(double mi, double ma)
Standard Constructor.
Definition: RndmGenerators.h:286
Rndm::Exponential::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:62
Rndm::Numbers::shoot
double shoot()
Pop a new number from the buffer.
Definition: RndmGenerators.h:428
Rndm::Gamma::lambda
double lambda() const
Access Lambda parameter.
Definition: RndmGenerators.h:216
Rndm::Binomial::m_nEvent
long m_nEvent
Number of events the binomial destribution corresponds to.
Definition: RndmGenerators.h:254
Rndm::Exponential::m_mean
double m_mean
Mean value of the exponential distribution.
Definition: RndmGenerators.h:54
Rndm::BreitWigner::BreitWigner
BreitWigner(double m, double g)
Standard Constructor.
Definition: RndmGenerators.h:104
Rndm::Binomial::nEvent
long nEvent() const
Access number of events.
Definition: RndmGenerators.h:264
Rndm::DefinedPdf::interpolation
long interpolation() const
Access interpolation type.
Definition: RndmGenerators.h:349
Rndm::Landau::Landau
Landau(double m, double s)
Standard Constructor.
Definition: RndmGenerators.h:129
Rndm::Flat::clone
Flat * clone() const override
Clone parameters.
Definition: RndmGenerators.h:296
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:228
Rndm::Poisson::m_mean
double m_mean
Mean value of the Poisson distribution.
Definition: RndmGenerators.h:232
Rndm::Numbers
Random number accessor This small class encapsulates the use of the random number generator...
Definition: RndmGenerators.h:396
InterfaceID
Interface ID class.
Definition: IInterface.h:29
Rndm::Bit::Bit
Bit()
Standard Constructor.
Definition: RndmGenerators.h:305
Rndm::Binomial::probability
double probability() const
Access number of events.
Definition: RndmGenerators.h:266
Rndm::Landau::m_sigma
double m_sigma
Definition: RndmGenerators.h:125
compareOutputFiles.par
string par
Definition: compareOutputFiles.py:437
Rndm::Poisson::clone
Poisson * clone() const override
Clone parameters.
Definition: RndmGenerators.h:244
Rndm::DefinedPdf::DefinedPdf
DefinedPdf(const std::vector< double > &pdf, long intpol)
Standard Constructor.
Definition: RndmGenerators.h:340
IRndmGenSvc
Random Generator service interface definition Definition of a interface for a service to access rando...
Definition: IRndmGenSvc.h:35
Rndm::GaussianTail::m_cut
double m_cut
Cut on the Gaussian tail distribution.
Definition: RndmGenerators.h:362
StatusCode
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
IRndmGen::Param
Definition: IRndmGen.h:40
Gaudi::Units::m
constexpr double m
Definition: SystemOfUnits.h:94
Rndm::Gauss::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:43
Rndm::Flat
Parameters for the flat random number generation within boundaries [minimum, maximum].
Definition: RndmGenerators.h:276
Rndm::Flat::m_maximum
double m_maximum
Upper boundary for random numbers.
Definition: RndmGenerators.h:282
SmartIF.h
Rndm::DefinedPdf::m_pdf
std::vector< double > m_pdf
Vector containing probability distribution function.
Definition: RndmGenerators.h:334
Rndm::Gamma::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:218
Rndm::StudentT::StudentT
StudentT(double a)
Standard Constructor.
Definition: RndmGenerators.h:185
Rndm::BreitWignerCutOff::cutOff
double cutOff() const
Access width of the distribution.
Definition: RndmGenerators.h:166
IOTest.start
start
Definition: IOTest.py:99
Rndm::BreitWigner::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:112
Rndm::Gauss::m_mean
double m_mean
Mean of the Gauss distribution.
Definition: RndmGenerators.h:29
Rndm::DefinedPdf::m_interpolation
long m_interpolation
Interpolation type.
Definition: RndmGenerators.h:336
Rndm::Binomial::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:268
Rndm::Flat::maximum
double maximum() const
Access upper edge.
Definition: RndmGenerators.h:292
Rndm::StudentT
Parameters for the StudentT distributed random number generation.
Definition: RndmGenerators.h:175
Rndm::Gamma::m_lambda
double m_lambda
Lambda parameter.
Definition: RndmGenerators.h:206
Rndm::DefinedPdf::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:351
gaudirun.l
dictionary l
Definition: gaudirun.py:440
Rndm::Binomial
Parameters for the Binomial distributed random number generation.
Definition: RndmGenerators.h:250
Rndm::Numbers::shootArray
StatusCode shootArray(std::vector< double > &array, long num, long start=0)
Pop a new number from the buffer.
Definition: RndmGenerators.h:430
Rndm::Gamma::kValue
double kValue() const
Access K parameter.
Definition: RndmGenerators.h:214
Rndm::Landau::sigma
double sigma() const
Access width of the distribution.
Definition: RndmGenerators.h:135
Rndm::Landau
Parameters for the Landau distributed random number generation.
Definition: RndmGenerators.h:119
Rndm::BreitWigner::clone
BreitWigner * clone() const override
Clone parameters.
Definition: RndmGenerators.h:114
Containers::array
struct GAUDI_API array
Parametrisation class for redirection array - like implementation.
Definition: KeyedObjectManager.h:28
Rndm::Chi2
Parameters for the Chi2 distributed random number generation.
Definition: RndmGenerators.h:71
std::vector< double >
Rndm::Numbers::pop
double pop()
Pop a new number from the buffer.
Definition: RndmGenerators.h:426
Rndm::Gauss::m_sigma
double m_sigma
Sigma of the Gauss distribution.
Definition: RndmGenerators.h:31
Rndm::Landau::clone
Landau * clone() const override
Clone parameters.
Definition: RndmGenerators.h:139
Rndm::GaussianTail::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:376
Rndm::BreitWignerCutOff
Parameters for the BreitWigner distributed random number generation with cut off;.
Definition: RndmGenerators.h:145
Rndm::Gauss::sigma
double sigma() const
Access width of the distribution.
Definition: RndmGenerators.h:41
Rndm::Landau::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:133
Rndm::Gamma
Parameters for the Gamma distributed random number generation.
Definition: RndmGenerators.h:198
Rndm::Generator
Definition: RndmGenerators.h:19
gaudirun.g
dictionary g
Definition: gaudirun.py:439
gaudirun.s
string s
Definition: gaudirun.py:253
Rndm::BreitWignerCutOff::BreitWignerCutOff
BreitWignerCutOff(double m, double g, double c)
Standard Constructor.
Definition: RndmGenerators.h:155
Rndm::Exponential::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:64
Rndm::Gamma::Gamma
Gamma(double k, double l)
Standard Constructor.
Definition: RndmGenerators.h:210
Rndm::BreitWignerCutOff::clone
BreitWignerCutOff * clone() const override
Clone parameters.
Definition: RndmGenerators.h:170
Rndm::BreitWignerCutOff::gamma
double gamma() const
Access width of the distribution.
Definition: RndmGenerators.h:164
IRndmGen::shootArray
virtual StatusCode shootArray(std::vector< double > &array, long howmany, long start=0) const =0
Multiple shots returning vector with random number according to specified distribution.
Rndm::Binomial::Binomial
Binomial(long n, double p)
Standard Constructor.
Definition: RndmGenerators.h:260
Rndm::StudentT::m_aValue
double m_aValue
StudentT distribution parameter.
Definition: RndmGenerators.h:181
StatusCode::FAILURE
Definition: StatusCode.h:29
Rndm::Gauss::clone
Gauss * clone() const override
Clone parameters.
Definition: RndmGenerators.h:45
Rndm::Chi2::Chi2
Chi2(long n_dof)
Standard Constructor.
Definition: RndmGenerators.h:81
Rndm::StudentT::aValue
double aValue() const
Access A parameter.
Definition: RndmGenerators.h:189
Rndm::GaussianTail::cut
double cut() const
Access cut value of the distribution.
Definition: RndmGenerators.h:372
Rndm::BreitWignerCutOff::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:162
Rndm::GaussianTail
Parameters for the Gaussian tail number generation.
Definition: RndmGenerators.h:358
Rndm::DefinedPdf
Generate a random number Generator following generally distributed random values, given a user-define...
Definition: RndmGenerators.h:330
Rndm::Exponential
Parameters for the Gauss random number generation.
Definition: RndmGenerators.h:50
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:110
Rndm::Chi2::clone
Chi2 * clone() const override
Clone parameters.
Definition: RndmGenerators.h:89
Rndm::Flat::minimum
double minimum() const
Access lower edge.
Definition: RndmGenerators.h:290
Rndm::DefinedPdf::clone
DefinedPdf * clone() const override
Clone parameters.
Definition: RndmGenerators.h:353
Rndm::Chi2::m_nDOF
long m_nDOF
Number of degrees of freedom.
Definition: RndmGenerators.h:77
Rndm::BreitWigner::mean
double mean() const
Access mean value of the distribution.
Definition: RndmGenerators.h:108
Rndm::BreitWigner
Parameters for the BreitWigner distributed random number generation.
Definition: RndmGenerators.h:94
Rndm::Poisson::Poisson
Poisson(double m)
Standard Constructor.
Definition: RndmGenerators.h:236
Rndm::Bit::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:309
Rndm::BreitWigner::gamma
double gamma() const
Access width of the distribution.
Definition: RndmGenerators.h:110
Rndm::BreitWigner::m_mean
double m_mean
Mean and Gamma parameter of the Breit-Wigner distribution.
Definition: RndmGenerators.h:100
Rndm::GaussianTail::clone
GaussianTail * clone() const override
Clone parameters.
Definition: RndmGenerators.h:378
Rndm::GaussianTail::sigma
double sigma() const
Access sigma of the distribution.
Definition: RndmGenerators.h:374
Rndm::Exponential::Exponential
Exponential(double m)
Standard Constructor.
Definition: RndmGenerators.h:58
Rndm::DefinedPdf::pdf
std::vector< double > & pdf()
Access pdf.
Definition: RndmGenerators.h:347
Rndm::Poisson::typeID
static const InterfaceID & typeID()
Identifier for factory.
Definition: RndmGenerators.h:242