ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtParameterDistribution.cxx
Go to the documentation of this file.
2 
3 #include <FairLogger.h>
4 
5 namespace MCFitter {
6 
7 thread_local std::unique_ptr<std::mt19937> AtParameterDistribution::fRand = nullptr;
8 
9 AtParameterDistribution::AtParameterDistribution(double mean, double spread, long seed)
10  : fMean(mean), fSpread(spread), fSeed(seed)
11 {
12 }
13 
15 {
16  long seed = fSeed;
17  if (fRand == nullptr) {
18  if (seed == 0) {
19  std::random_device rd;
20  seed = rd();
21  }
22  LOG(info) << "Seeding thread with " << seed;
23  fRand = std::make_unique<std::mt19937>(seed);
24  }
25  return fMean + fSpread * SampleSpread();
26 }
27 } // namespace MCFitter
AtParameterDistribution.h
MCFitter::AtParameterDistribution::fSpread
double fSpread
Definition: AtParameterDistribution.h:12
MCFitter::AtParameterDistribution::fRand
static thread_local std::unique_ptr< std::mt19937 > fRand
Definition: AtParameterDistribution.h:14
MCFitter::AtParameterDistribution::fSeed
long fSeed
Definition: AtParameterDistribution.h:13
MCFitter::AtParameterDistribution::Sample
double Sample()
Definition: AtParameterDistribution.cxx:14
MCFitter::AtParameterDistribution::fMean
double fMean
Definition: AtParameterDistribution.h:11
MCFitter::AtParameterDistribution::AtParameterDistribution
AtParameterDistribution(double mean, double spread, long seed=0)
Definition: AtParameterDistribution.cxx:9
MCFitter::AtParameterDistribution::SampleSpread
virtual double SampleSpread()=0
mean
double mean(const double *a, size_t m)
Definition: cluster.cxx:26
MCFitter
Definition: AtMCResult.cxx:5