ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtUniformDistribution.cxx
Go to the documentation of this file.
2 
3 #include <memory> // for unique_ptr<>::element_type, unique_ptr
4 #include <random> // for uniform_real_distribution
5 
6 namespace MCFitter {
7 AtUniformDistribution::AtUniformDistribution(double mean, double spread, double seed)
8  : AtParameterDistribution(mean, spread, seed)
9 {
10 }
11 
13 {
14  // N.B. We recreate the distribution (which is cheap) each call to avoid data races when multithreaded
15  std::uniform_real_distribution<> distro{-1, 1};
16  return distro(*fRand);
17 }
18 
20 {
22 }
23 } // namespace MCFitter
MCFitter::AtUniformDistribution::AtUniformDistribution
AtUniformDistribution(double mean, double spread, double seed=0)
Definition: AtUniformDistribution.cxx:7
MCFitter::AtParameterDistribution
Definition: AtParameterDistribution.h:8
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
AtUniformDistribution.h
MCFitter::AtUniformDistribution::SampleSpread
double SampleSpread() override
Definition: AtUniformDistribution.cxx:12
MCFitter::AtUniformDistribution::TruncateSpace
void TruncateSpace() override
Definition: AtUniformDistribution.cxx:19
MCFitter::AtUniformDistribution::fTruncAmount
double fTruncAmount
Definition: AtUniformDistribution.h:10
mean
double mean(const double *a, size_t m)
Definition: cluster.cxx:26
MCFitter
Definition: AtMCResult.cxx:5