MQwMockable.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __MQWMOCKABLE__
00009 #define __MQWMOCKABLE__
00010
00011
00012 #include "boost/random.hpp"
00013
00014
00015
00016 #include "TRandom3.h"
00017
00018
00019 class MQwMockable {
00020
00021
00022
00023
00024
00025
00026
00027
00028 public:
00029 MQwMockable(): fUseExternalRandomVariable(false),
00030 fMockAsymmetry(0.0), fMockGaussianMean(0.0),
00031 fMockGaussianSigma(0.0)
00032 {
00033
00034 fMockDriftAmplitude.clear();
00035 fMockDriftFrequency.clear();
00036 fMockDriftPhase.clear();
00037 }
00038 virtual ~MQwMockable() {
00039 fMockDriftAmplitude.clear();
00040 fMockDriftFrequency.clear();
00041 fMockDriftPhase.clear();
00042 }
00043
00044
00045
00046
00047
00048 void SetRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency);
00049
00050 void AddRandomEventDriftParameters(Double_t amplitude, Double_t phase, Double_t frequency);
00051
00052 void SetRandomEventParameters(Double_t mean, Double_t sigma);
00053
00054 void SetRandomEventAsymmetry(Double_t asymmetry);
00055
00056
00057
00058 Double_t GetRandomValue();
00059
00060
00061 virtual void RandomizeEventData(int helicity = 0, double time = 0.0) = 0;
00062
00063
00064 virtual void EncodeEventData(std::vector<UInt_t> &buffer) = 0;
00065
00066
00067 void UseExternalRandomVariable() { fUseExternalRandomVariable = true; };
00068
00069 void SetExternalRandomVariable(Double_t random_variable) {
00070 fUseExternalRandomVariable = true;
00071 fExternalRandomVariable = random_variable;
00072 };
00073
00074
00075 protected:
00076
00077
00078
00079 static boost::mt19937 fRandomnessGenerator;
00080
00081 static boost::normal_distribution<double> fNormalDistribution;
00082
00083 static boost::variate_generator
00084 < boost::mt19937, boost::normal_distribution<double> > fNormalRandomVariable;
00085
00086 bool fUseExternalRandomVariable;
00087
00088 double fExternalRandomVariable;
00089
00090
00091 Double_t fMockAsymmetry;
00092 Double_t fMockGaussianMean;
00093 Double_t fMockGaussianSigma;
00094 std::vector<Double_t> fMockDriftAmplitude;
00095 std::vector<Double_t> fMockDriftFrequency;
00096 std::vector<Double_t> fMockDriftPhase;
00097
00098 };
00099
00100 #endif