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