QwAnalysis
MQwMockable.cc
Go to the documentation of this file.
1 #include "MQwMockable.h"
2 
3 // Randomness generator: Mersenne twister with period 2^19937 - 1
4 //
5 // This is defined as static to avoid getting stuck with 100% correlated
6 // ADC channels when each channel goes through the same list of pseudo-
7 // random numbers...
9 boost::normal_distribution<double> MQwMockable::fNormalDistribution;
10 // The boost::variate_generator has operator() overloaded to get a new random
11 // value according to the distribution in the second template argument, based
12 // on the uniform random value generated by the first template argument.
13 // For example: fNormalRandomVariable() will return a random normal variable.
14 boost::variate_generator < boost::mt19937, boost::normal_distribution<double> >
15  MQwMockable::fNormalRandomVariable(fRandomnessGenerator, fNormalDistribution);
16 
17 
18 
19 void MQwMockable::SetRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency)
20 {
21  // Clear existing values
22  fMockDriftAmplitude.clear();
23  fMockDriftFrequency.clear();
24  fMockDriftPhase.clear();
25  // Add new values
26  fMockDriftAmplitude.push_back(amplitude);
27  fMockDriftFrequency.push_back(frequency);
28  fMockDriftPhase.push_back(phase);
29  return;
30 }
31 
32 void MQwMockable::AddRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency)
33 {
34  // Add new values
35  fMockDriftAmplitude.push_back(amplitude);
36  fMockDriftFrequency.push_back(frequency);
37  fMockDriftPhase.push_back(phase);
38  return;
39 }
40 
41 void MQwMockable::SetRandomEventParameters(Double_t mean, Double_t sigma)
42 {
43  fMockGaussianMean = mean;
44  fMockGaussianSigma = sigma;
45  return;
46 }
47 
48 void MQwMockable::SetRandomEventAsymmetry(Double_t asymmetry)
49 {
50  fMockAsymmetry = asymmetry;
51  return;
52 }
53 
55  Double_t random_variable;
57  // external normal random variable
58  random_variable = fExternalRandomVariable;
59  else
60  // internal normal random variable
61  random_variable = fNormalRandomVariable();
62  return random_variable;
63 }
64 
void SetRandomEventParameters(Double_t mean, Double_t sigma)
Set the normal random event parameters.
Definition: MQwMockable.cc:41
std::vector< Double_t > fMockDriftPhase
Harmonic drift phase.
Definition: MQwMockable.h:96
void AddRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency)
Add drift parameters to the internal set.
Definition: MQwMockable.cc:32
std::vector< Double_t > fMockDriftFrequency
Harmonic drift frequency.
Definition: MQwMockable.h:95
Double_t fMockGaussianSigma
Sigma of normal distribution.
Definition: MQwMockable.h:93
static boost::mt19937 fRandomnessGenerator
Internal randomness generator.
Definition: MQwMockable.h:79
static boost::normal_distribution< double > fNormalDistribution
Internal normal probability distribution.
Definition: MQwMockable.h:81
void SetRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency)
Set a single set of harmonic drift parameters.
Definition: MQwMockable.cc:19
bool fUseExternalRandomVariable
Flag to use an externally provided normal random variable.
Definition: MQwMockable.h:86
double fExternalRandomVariable
Externally provided normal random variable.
Definition: MQwMockable.h:88
Double_t GetRandomValue()
Definition: MQwMockable.cc:54
Double_t fMockGaussianMean
Mean of normal distribution.
Definition: MQwMockable.h:92
std::vector< Double_t > fMockDriftAmplitude
Harmonic drift amplitude.
Definition: MQwMockable.h:94
Double_t fMockAsymmetry
Helicity asymmetry.
Definition: MQwMockable.h:91
static boost::variate_generator< boost::mt19937, boost::normal_distribution< double > > fNormalRandomVariable
Internal normal random variable.
Definition: MQwMockable.h:84
void SetRandomEventAsymmetry(Double_t asymmetry)
Set the helicity asymmetry.
Definition: MQwMockable.cc:48