16#include <FairParGenericSet.h>
17#include <FairParamList.h>
19#include <RtypesCore.h>
24#include <fairlogger/Logger.h>
29 const auto s = a.GetSum();
30 const auto l = a.GetSize();
33 for (
int j = 0; j < l; j++)
55 : FairParGenericSet(name, title, context)
56 ,
fHits({ 1000, 1000, 1000, 1000, 1000, 1000, 1000 })
57 , fClusters({ 1000, 1000, 1000, 1000, 1000, 1000, 1000 })
58 , fEdep({ 1000, 1000, 1000, 1000, 1000, 1000, 1000 })
59 , fIsProperlyLoaded(
false)
79 l->add(TString::Format(
"NeulandMultiplicityBayesParHits-%d", i),
fHits.at(i));
80 l->add(TString::Format(
"NeulandMultiplicityBayesParClusters-%d", i),
fClusters.at(i));
81 l->add(TString::Format(
"NeulandMultiplicityBayesParEdep-%d", i),
fEdep.at(i));
94 l->fill(TString::Format(
"NeulandMultiplicityBayesParHits-%d", i), &
fHits.at(i));
95 l->fill(TString::Format(
"NeulandMultiplicityBayesParClusters-%d", i), &
fClusters.at(i));
96 l->fill(TString::Format(
"NeulandMultiplicityBayesParEdep-%d", i), &
fEdep.at(i));
104 fHits.at(n)[nHits]++;
106 static constexpr auto SCALE = 10;
107 fEdep.at(n)[
static_cast<int>(std::floor(Edep)) / SCALE]++;
126 for (
size_t i = 0; i < mult.size(); i++)
128 mult[i] =
fHits.at(i).At(nHits) *
fClusters.at(i).At(nClusters) *
fEdep.at(i).At(Edep / 10);
133 for (
double& i : mult)
142 if (std::accumulate(
fHits.cbegin(),
fHits.cend(), 0, [](
int i,
const TArrayD& a) { return i + a.GetSum(); }) < 0.1)
144 LOG(fatal) <<
"R3BNeulandMultiplicityBayesPar: Empty dataset -> Not properly loaded!";
static constexpr int NEULAND_MAX_MULT
void normalize_TArrayD(TArrayD &a)
ClassImp(R3BNeulandMultiplicityBayesPar)
std::array< TArrayD, NEULAND_MAX_MULT > fHits
R3BNeulandMultiplicityBayesPar(const char *name="R3BNeulandMultiplicityBayesPar", const char *title="Neuland Multiplicity Bayes Parameters", const char *context="TestDefaultContext")
~R3BNeulandMultiplicityBayesPar() override
std::array< TArrayD, NEULAND_MAX_MULT > fClusters
R3BNeulandMultiplicity::MultiplicityProbabilities GetProbabilities(int nHits, int nClusters, int Edep) const
void putParams(FairParamList *) override
Bool_t getParams(FairParamList *) override
std::array< TArrayD, NEULAND_MAX_MULT > fEdep
void Fill(int n, int nHits, int nClusters, double Edep)
bool CheckIfProperlyLoaded() const
std::array< double, NEULAND_MAX_MULT > MultiplicityProbabilities