19#include "HistSparse1D.hh"
23#include "TMultiGraph.h"
33TH1Set::TH1Set(
const char* name,
35 TH1D(name, title, 1, 0, 1)
41Int_t TH1Set::Fill(Double_t x, Double_t w)
46 if (data.HasAbscissa(x))
47 {bin = abscissaToBinIndex[x];}
54 if (!fSumw2.fN && w != 1.0 && !TestBit(TH1::kIsNotW) ) Sumw2();
55 if (fSumw2.fN) fSumw2.fArray[bin] += w*w;
56 AddBinContent(bin, w);
57 if (bin == 0 || bin > fXaxis.GetNbins())
70void TH1Set::DoFillN(Int_t ntimes,
const Double_t *x,
const Double_t *w, Int_t stride)
73 for (Int_t i=0;i<ntimes;i+=stride)
79Int_t TH1Set::AddNewBin(
long long int x)
81 Int_t nBinsNew = fXaxis.GetNbins()+1;
82 fXaxis.Set(nBinsNew, fXaxis.GetXmin(), fXaxis.GetXmax()+1);
83 abscissaToBinIndex[x] = nBinsNew;
88Bool_t TH1Set::Add(
const TH1 *h1, Double_t c1)
90 Bool_t result = TH1D::Add(h1, c1);
92 auto casted =
dynamic_cast<const TH1Set*
>(h1);
97 auto& d = casted->data;
98 for (
const auto& bin : d)
99 {data[bin.first] += bin.second;}
105Double_t TH1Set::GetBinContentByAbscissa(
long long int x)
const
107 return data.HasAbscissa(x) ? GetBinContent(abscissaToBinIndex.at(x)) : 0;
110Double_t TH1Set::GetBinErrorByAbscissa(
long long int x)
const
112 return data.HasAbscissa(x) ? GetBinError(abscissaToBinIndex.at(x)) : 0;
115void TH1Set::SetBinContentByAbscissa(
long long int x, Double_t newValue)
117 if (data.HasAbscissa(x))
118 {SetBinContent(abscissaToBinIndex.at(x), newValue);}
120 {SetBinContent(AddNewBin(x), newValue);}
123void TH1Set::SetBinErrorByAbscissa(
long long int x, Double_t newError)
125 if (data.HasAbscissa(x))
126 {SetBinError(abscissaToBinIndex.at(x), newError);}
128 {SetBinError(AddNewBin(x), newError);}
TH1D but with a category axis.