R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandMultiplicityBayesTrain.cxx
Go to the documentation of this file.
2#include "FairRuntimeDb.h"
3#include <numeric>
4
5R3BNeulandMultiplicityBayesTrain::R3BNeulandMultiplicityBayesTrain(std::string_view clusters, std::string_view tracks)
6 : FairTask("R3BNeulandMultiplicityBayesTrain")
7 , fClusters{ clusters }
8 , fTracks(tracks)
9{
10}
11
13{
14 fClusters.init();
15 fTracks.init();
16 return kSUCCESS;
17}
18
20{
21 auto* rtdb = FairRuntimeDb::instance();
22 if (rtdb == nullptr)
23 {
24 LOG(fatal) << "R3BNeulandMultiplicityBayesTrain::Init: No FairRuntimeDb!";
25 return;
26 }
27
28 fPar = dynamic_cast<R3BNeulandMultiplicityBayesPar*>(rtdb->getContainer("R3BNeulandMultiplicityBayesPar"));
29 if (fPar == nullptr)
30 {
31 LOG(fatal) << "R3BNeulandMultiplicityBayesTrain::Init: No R3BNeulandMultiplicityBayesPar!";
32 return;
33 }
34}
35
37{
38 const auto nPN = fTracks.size();
39
40 const auto& clusters = fClusters.get();
41 const auto nClusters = clusters.size();
42
43 if (nClusters == 0)
44 {
45 return;
46 }
47
48 const auto nHits =
49 std::accumulate(clusters.cbegin(),
50 clusters.cend(),
51 std::size_t{},
52 [](auto sum, const R3BNeulandCluster& cluster) { return sum + cluster.GetSize(); });
53 const auto Edep = std::accumulate(clusters.cbegin(),
54 clusters.cend(),
55 double{},
56 [](auto sum, const R3BNeulandCluster& cluster) { return sum + cluster.GetE(); });
57
58 fPar->Fill(static_cast<int>(nPN), static_cast<int>(nHits), static_cast<int>(nClusters), Edep);
59}
60
62{
63 fPar->Finish();
64 auto* rtdb = FairRuntimeDb::instance();
65 rtdb->addRun(1);
66 fPar->setChanged();
67 rtdb->writeContainer(fPar, rtdb->getRun(1), nullptr);
68}
69
ClassImp(R3B::Neuland::Cal2HitPar)
R3BNeulandMultiplicityBayesTrain(std::string_view clusters="NeulandClusters", std::string_view tracks="NeulandPrimaryTracks")