ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtSampleMethods.h
Go to the documentation of this file.
1 #ifndef ATSAMPLEMETHODS_H
2 #define ATSAMPLEMETHODS_H
3 
4 #include "AtChargeWeighted.h" // IWYU pragma: keep
5 #include "AtGaussian.h" // IWYU pragma: keep
6 #include "AtSample.h" // IWYU pragma: keep
7 #include "AtUniform.h" // IWYU pragma: keep
8 #include "AtWeightedGaussian.h" // IWYU pragma: keep
9 #include "AtWeightedGaussianTrunc.h" // IWYU pragma: keep
10 #include "AtWeightedY.h" // IWYU pragma: keep
11 #include "AtY.h" // IWYU pragma: keep
12 
13 #include <memory>
14 #include <utility>
15 namespace RandomSample {
22 enum class SampleMethod {
23  kUniform = 0,
24  kChargeWeighted = 1,
25  kGaussian = 2,
27  kWeightedY = 4,
29  kY = 6
30 };
31 
40 template <typename... Ts>
41 std::unique_ptr<AtSample> CreateSampler(SampleMethod method, Ts &&...params)
42 {
43  switch (method) {
44  case SampleMethod::kUniform: return std::make_unique<AtUniform>();
45  case SampleMethod::kChargeWeighted: return std::make_unique<AtChargeWeighted>();
46  case SampleMethod::kGaussian: return std::make_unique<AtGaussian>(std::forward<Ts>(params)...);
47  case SampleMethod::kWeightedGaussian: return std::make_unique<AtWeightedGaussian>(std::forward<Ts>(params)...);
48  case SampleMethod::kWeightedY: return std::make_unique<AtWeightedY>(std::forward<Ts>(params)...);
49  case SampleMethod::kWeightedGaussianTrunc: return std::make_unique<AtWeightedGaussianTrunc>();
50  case SampleMethod::kY: return std::make_unique<AtY>();
51  default: return nullptr;
52  };
53 }
54 } // namespace RandomSample
55 
56 #endif // #ifndef ATSAMPLEMETHODS_H
AtWeightedGaussian.h
RandomSample::SampleMethod
SampleMethod
. Methods of random sampling.
Definition: AtSampleMethods.h:22
RandomSample
Definition: AtSampleConsensus.h:26
AtY.h
RandomSample::CreateSampler
std::unique_ptr< AtSample > CreateSampler(SampleMethod method, Ts &&...params)
. Create a hit sampler
Definition: AtSampleMethods.h:41
RandomSample::SampleMethod::kWeightedGaussian
@ kWeightedGaussian
AtChargeWeighted.h
RandomSample::SampleMethod::kWeightedGaussianTrunc
@ kWeightedGaussianTrunc
RandomSample::SampleMethod::kY
@ kY
RandomSample::SampleMethod::kWeightedY
@ kWeightedY
AtUniform.h
AtGaussian.h
AtWeightedGaussianTrunc.h
AtWeightedY.h
RandomSample::SampleMethod::kUniform
@ kUniform
AtSample.h
RandomSample::SampleMethod::kChargeWeighted
@ kChargeWeighted
RandomSample::SampleMethod::kGaussian
@ kGaussian