86 if (fClusters->GetEntries() == 0)
92 TPython::Bind(fClusters,
"tca");
93 TPython::Exec(
"data = np.array([[cluster.GetT(), cluster.GetE(), cluster.GetSize(), cluster.GetEToF(), "
94 "cluster.GetEnergyMoment(), (cluster.GetLastHit().GetT() - cluster.GetFirstHit().GetT()), "
95 "cluster.GetMaxEnergyHit().GetE(), cluster.GetPosition().X(), cluster.GetPosition().Y(), "
96 "cluster.GetPosition().Z()] for cluster in tca])");
99 TPython::Exec(
"results = model.predict_proba(data)[:, 1]");
102 std::vector<ClusterWithProba> cwps;
103 const int nClusters = fClusters->GetEntries();
104 cwps.reserve(nClusters);
105 for (
int i = 0; i < nClusters; i++)
108 (Double_t)TPython::Eval(TString::Format(
"results[%d]", i)) });
112 std::sort(cwps.begin(), cwps.end(), std::greater<ClusterWithProba>());
115 if (FairLogger::GetLogger()->IsLogNeeded(fair::Severity::debug))
117 LOG(debug) <<
"R3BNeulandNeutronsScikit::Exec";
118 for (
const auto& cwp : cwps)
120 LOG(debug) << cwp.c->GetPosition().X() <<
"\t" << cwp.p <<
"\t";
125 const auto mult = fMultiplicity->GetMultiplicity();
126 for (
size_t n = 0; n < cwps.size() && n < mult; n++)
128 if (cwps.at(n).p > fMinProb)