ndmspc  v1.2.0-0.1.rc3
NParameters.cxx
1 #include <vector>
2 #include <TMath.h>
3 #include "NLogger.h"
4 
5 #include "NParameters.h"
6 
8 ClassImp(Ndmspc::NParameters);
10 
11 namespace Ndmspc {
13  : TNamed("parameters", "Parameters"), fHisto(nullptr), fNames({})
14 {
18 }
19 
20 NParameters::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 
47 void NParameters::Print(Option_t * /*option*/) const
48 {
52  fHisto->Print("all");
53 }
54 
55 bool 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 
68 bool 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 
83 Double_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 
95 Double_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 }
107 Double_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 }
118 Double_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
Double_t GetParameter(int bin) const
Get the value of a parameter by bin index.
Definition: NParameters.cxx:83
Double_t GetParameterError(int bin) const
Get the error of a parameter by bin index.
virtual ~NParameters()
Definition: NParameters.cxx:39
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.
Definition: NParameters.cxx:55
virtual void Print(Option_t *option="") const override
Print the parameters.
Definition: NParameters.cxx:47