9 : FairTask(
"R3BNeulandMultiplicityScikit")
10 , fClusters(std::move(input))
12 , fOutputName(std::move(output))
14 TPython::Exec(
"import sys; v = sys.version.replace('\\n', '')");
15 TPython::Exec(
"print(f'R3BNeulandMultiplicityScikit running TPython with Python version {v}')");
17 TPython::Exec(
"import numpy as np; import joblib; multmodel = joblib.load('" + model +
"')");
20 TPython::Exec(
"import ROOT; mult = ROOT.R3BNeulandMultiplicity()");
21 TPython::Bind(fMultiplicity,
"mult");
45 fMultiplicity->m.fill(0.);
46 const auto clusters = fClusters.Retrieve();
47 const int nClusters = clusters.size();
51 LOG(debug) <<
"R3BNeulandMultiplicityScikit::Exec 0 Clusters -> Mult 0";
52 fMultiplicity->m[0] = 1.;
56 const int nHits = std::accumulate(
57 clusters.cbegin(), clusters.cend(), 0, [](
size_t s,
const R3BNeulandCluster*
c) { return s + c->GetSize(); });
58 const int Edep = (int)std::accumulate(
59 clusters.cbegin(), clusters.cend(), 0., [](Double_t s,
const R3BNeulandCluster*
c) { return s + c->GetE(); });
63 TString::Format(
"for i, p in enumerate(multmodel.predict_proba([[%d, %d, %d]])[0]):\n mult.m[i + 1] = p",
69 TPython::Bind(fMultiplicity,
"mult");
72 if (FairLogger::GetLogger()->IsLogNeeded(fair::Severity::debug))
74 TPython::Exec(
"print([p for p in mult.m])");
75 LOG(debug) <<
"R3BNeulandMultiplicityScikit::Exec "
76 << std::accumulate(fMultiplicity->m.cbegin(),
77 fMultiplicity->m.cend(),
79 [](std::string a,
double b) { return std::move(a) +
", " + std::to_string(b); });