ndmspc v1.2.0-0.1.rc5
Loading...
Searching...
No Matches
NParameters.cxx
1#include <vector>
2#include <TMath.h>
3#include "NLogger.h"
4
5#include "NParameters.h"
6
8ClassImp(Ndmspc::NParameters);
10
11namespace Ndmspc {
13 : TNamed("parameters", "Parameters"), fHisto(nullptr), fNames({})
14{
18}
19
20NParameters::NParameters(std::vector<std::string> parNames, const char * name, const char * title)
21 : TNamed(name, title), fNames(parNames)
22{
26
27 if (parNames.empty()) {
28 NLogTrace("NParameters::NParameters: No parameter names provided, creating empty parameters histogram.");
29 return;
30 }
31 fHisto = new TH1D("ParametersHisto", "ParametersHisto", parNames.size(), 0, parNames.size());
32 // set parameter names as labels
33 for (size_t i = 0; i < parNames.size(); i++) {
34 fHisto->GetXaxis()->SetBinLabel(i + 1, parNames[i].c_str());
35 }
36
37 fHisto->Sumw2(kFALSE); // Disable sum of squares of weights for error calculation
38}
40{
44 delete fHisto;
45}
46
47void NParameters::Print(Option_t * /*option*/) const
48{
52 fHisto->Print("all");
53}
54
55bool NParameters::SetParameter(int bin, Double_t value, Double_t error)
56{
60 if (bin < 1 || bin > fHisto->GetNbinsX()) {
61 return false;
62 }
63 fHisto->SetBinContent(bin, value);
64 fHisto->SetBinError(bin, error);
65 return true;
66}
67
68bool NParameters::SetParameter(const char * parName, Double_t value, Double_t error)
69{
73 int bin = fHisto->GetXaxis()->FindBin(parName);
74 if (bin < 1 || bin > fHisto->GetNbinsX()) {
75 NLogError("NParameters::SetParameter: Parameter name '%s' not found !!!", parName);
76 return false;
77 }
78 fHisto->SetBinContent(bin, value);
79 fHisto->SetBinError(bin, error);
80 return true;
81}
82
83Double_t NParameters::GetParameter(int bin) const
84{
88 if (bin < 1 || bin > fHisto->GetNbinsX()) {
89 NLogError("NParameters::GetParameter: Parameter index '%d' out of range !!!", bin);
90 return TMath::QuietNaN();
91 }
92 return fHisto->GetBinContent(bin);
93}
94
95Double_t NParameters::GetParameter(const char * parName) const
96{
100 int bin = fHisto->GetXaxis()->FindBin(parName);
101 if (bin < 1 || bin > fHisto->GetNbinsX()) {
102 NLogError("NParameters::GetParameter: Parameter name '%s' not found !!!", parName);
103 return TMath::QuietNaN();
104 }
105 return fHisto->GetBinContent(bin);
106}
107Double_t NParameters::GetParameterError(int bin) const
108{
112 if (bin < 1 || bin > fHisto->GetNbinsX()) {
113 NLogError("NParameters::GetParError: Parameter index '%d' out of range !!!", bin);
114 return TMath::QuietNaN();
115 }
116 return fHisto->GetBinError(bin);
117}
118Double_t NParameters::GetParameterError(const char * parName) const
119{
123 int bin = fHisto->GetXaxis()->FindBin(parName);
124 if (bin < 1 || bin > fHisto->GetNbinsX()) {
125 NLogError("NParameters::GetParError: Parameter name '%s' not found !!!", parName);
126 return TMath::QuietNaN();
127 }
128 return fHisto->GetBinError(bin);
129}
130
131} // namespace Ndmspc
NParameters object.
Definition NParameters.h:13
std::vector< std::string > fNames
Names of parameters.
Definition NParameters.h:90
Double_t GetParameter(int bin) const
Get the value of a parameter by bin index.
Double_t GetParameterError(int bin) const
Get the error of a parameter by bin index.
TH1D * fHisto
Histogram with parameters.
Definition NParameters.h:89
bool SetParameter(int bin, Double_t value, Double_t error=0.)
Set the value and error of a parameter by bin index.
virtual void Print(Option_t *option="") const override
Print the parameters.
Global callback function for libwebsockets client events.