4#include "KVHistoManipulator.h"
15#include "KVNumberList.h"
37 gHistoManipulator =
this;
48 if (gHistoManipulator ==
this)
49 gHistoManipulator =
nullptr;
83 cout <<
"pointeur histogramme nul" << endl;
159 cout <<
"pointeur histogramme nul" << endl;
243 Bool_t fixed_bins = (nx != -1);
282 if (!gg)
return nullptr;
291 Double_t Xbin_width_corr = 1.0, Ybin_width_corr = 1.0;
295 Xbin_width_corr = orig_Xbin_width / new_Xbin_width;
300 Ybin_width_corr = orig_Ybin_width / new_Ybin_width;
308 if (
abs == bmax)
abs = bmin;
317 if (
abs == bmax)
abs = bmin;
322 hh->
GetBinContent(xx, yy)*Xbin_width_corr * Ybin_width_corr);
333 for (
int i = 0; i < nmax; i++) {
336 gg->
Fill(resx, Xbin_width_corr);
343 if (fy) resy = fy->
Eval(resy);
371 if (!gg)
return nullptr;
380 if (axis ==
"Y") FY = &
f1;
383 for (
Int_t nn = 0; nn <
np; nn += 1) {
387 if (scale_X) xx2 = FX->
Eval(xx1);
389 if (scale_Y) yy2 = FY->
Eval(yy1);
421 cout <<
"pointeur histogramme nul" << endl;
427 TF1 fx(
"fx", expression.
Data());
431 fy.reset(
new TF1(
"fy", expression.
Data()));
457 cout <<
"pointeur histogramme nul" << endl;
463 TF1 fx(
"fx", expression.
Data());
487 cout <<
"pointeur histogramme nul" << endl;
493 TF1 fy(
"fy", expression.
Data());
538 cout <<
"pointeur histogramme nul" << endl;
542 if (bmin == -1) bmin = 1;
554 for (
Int_t nx = bmin; nx <= bmax; nx += 1) {
562 clone->SetBinError(nx, ny, erreur);
568 else if (axis ==
"Y") {
572 for (
Int_t ny = bmin; ny <= bmax; ny += 1) {
579 clone->SetBinError(nx, ny, erreur);
585 cout <<
"l option TString axis doit etre X ou Y" << endl;
607 cout <<
"pointeur histogramme nul" << endl;
613 cout <<
"l option TString axis doit etre X ou Y" << endl;
661 cout <<
"pointeur histogramme nul" << endl;
665 if (direction !=
"C" && direction !=
"D") {
666 cout <<
"l option TString direction doit etre C ou D" << endl;
670 if (bmin < 1) bmin = 1;
678 if (direction ==
"C") {
681 if (nx < bmin)
clone->SetBinContent(nx, 0);
682 else if (nx > bmax)
clone->SetBinContent(nx,
sum);
693 if (nx > bmax)
clone->SetBinContent(nx, 0);
694 else if (nx < bmin)
clone->SetBinContent(nx,
sum);
703 if (!strcmp(norm,
"surf")) {
704 clone->Scale(1. / big_sum);
706 else if (!strcmp(norm,
"max")) {
712 cout <<
"cette methode n est pas prevue pour les TH2, TH3" << endl;
750 cout <<
"pointeur histogramme nul" << endl;
753 if (!(0 <= order && order <= 2)) {
754 cout <<
"ordre " << order <<
"n est pas implemente" << endl;
760 hname.
Form(
"%s_derivated_%d", hh->
GetName(), order);
779 else if (order == 1) {
781 dev = 1 / 12. /
h * (
791 dev = 1 / 7. / h2 * (
799 clone->SetBinContent(nx, dev);
804 cout <<
"cette methode n est pas prevue pour les TH2, TH3" << endl;
849 if (axis !=
"X" && axis !=
"Y") {
850 cout <<
"GetMomentEvolution(TH2*,TString ,TString ,TString) Mauvaise syntaxe pour TString axis (X ou Y) " << endl;
856 cout <<
"GetMomentEvolution(TH2*,TString ,TString ,TString) TString momentx n'est pas une methode valide " << momentx.
Data() << endl;
860 Ecmx->InitWithPrototype(TClass::GetClass(
"TH1D"),
Form(
"%sError", momentx.
Data()),
"int");
862 unique_ptr<TMethodCall> cmy, Ecmy;
865 cmy->InitWithPrototype(TClass::GetClass(
"TH1D"),
Form(
"%s", momenty.
Data()),
"int");
866 if (!cmy->IsValid()) {
867 cout <<
"GetMomentEvolution(TH2*,TString ,TString ,TString) TString momenty n'est pas une methode valide " << momenty.
Data() << endl;
871 Ecmy->InitWithPrototype(TClass::GetClass(
"TH1D"),
Form(
"%sError", momenty.
Data()),
"int");
875 fmt_histo.
Form(
"GetMomentEvolution_%s", hh->
GetName());
882 for (
Int_t nn = 1; nn <= nmax; nn += 1) {
886 if (stat > stat_min) {
896 Double_t valx, valy, Evaly = 0, Evalx = 0;
898 while (!lbins.
End()) {
903 if (Ecmx->IsValid()) Ecmx->Execute(hp,
"1", Evalx);
905 cmy->Execute(hp,
"1", valy);
906 if (Ecmy->IsValid()) Ecmy->Execute(hp,
"1", Evaly);
929 cout <<
"GetMomentEvolution(TH2*,TString ,TString ,TString) Aucun point dans le TGraph" << endl;
960 printf(
"ERREUR : KVHistoManipulator::LinkGraphs : les deux graphs n ont pas le meme nbre de points\n");
971 else corre =
new TGraph(npoints, xx, yy);
1020 Double_t rho = (meanxy - meanx * meany) / (sigmax * sigmay);
1042 cout <<
"pointeur histogramme nul" << endl;
1049 cout <<
"TH2" << endl;
1056 if (integ > MinIntegral) {
1065 else if (axis ==
"Y") {
1071 if (integ > MinIntegral) {
1080 cout <<
"l option TString axis doit etre X ou Y" << endl;
1086 cout <<
"cette methode n est prevue que pour les TH2 and sons" << endl;
1115 cout <<
"pointeur histogramme nul" << endl;
1121 for (
Int_t nx = 1; nx <= hh->
GetXaxis()->GetNbins(); nx += 1) {
1128 printf(
"integral du spectre %lf -> tranche de %lf\n", integral, integral / ntranches);
1134 if (tranche >= integral / ntranches) {
1179 cout <<
"pointeur histogramme nul" << endl;
1183 Error(
"PermuteAxis",
"methode definie uniquement pour les classes TH2 et filles");
1199 for (
Int_t xx = 1; xx <= nx; xx += 1) {
1200 for (
Int_t yy = 1; yy <= ny; yy += 1) {
1228 cout <<
"pointeur graph nul" << endl;
1232 Error(
"PermuteAxis",
"methode definie uniquement pour les classes TGraph et filles");
1267 cout <<
"pointeur histogramme nul" << endl;
1277 for (
Int_t xx = 1; xx <= nx; xx += 1) {
1320 for (
Int_t xx = 1; xx <= nx; xx += 1) {
1438 if (tok)
delete tok;
1455 if (!
line.IsNull()) {
1456 tok =
line.Tokenize(
" ");
1464 if (tok)
delete tok;
1490 if (tok)
delete tok;
1596 fs = spline->
Eval(s) - val;
1597 ft = spline->
Eval(t) - val;
1599 for (
n = 1;
n <= nmax;
n++) {
1600 r = (
fs * t - ft * s) / (
fs - ft);
1601 if (
fabs(t - s) < eps *
fabs(t + s))
break;
1602 fr = spline->
Eval(
r) - val;
1607 if (side == -1)
fs /= 2;
1610 else if (
fs * fr > 0) {
1613 if (side == +1) ft /= 2;
1709 RescaleX(hist1, hist2, fonc, npoints, direction,
xmin,
xmax, qmin, qmax, eps);
1710 for (i = 0; i < degree + 1; i++) {
1715 params[degree + 1] = chisquare;
1860 TF1* scalefunc =
RescaleX(hist1, hist2, degree, params, npoints, direction,
xmin,
xmax, qmin, qmax, eps);
1868 TH1* scalehisto =
ScaleHisto(hist1, scalefunc, 0, nx, -1, nxmin, nxmax, -1.0, -1.0,
"width");
1951 Info(
"RescaleX",
"Calculating transformation of histo %s using reference histo %s, %d points of comparison",
1972 Double_t delta_q = (qmax - qmin) / (1.0 * (npoints - 1));
1973 for (i = 0; i < npoints; i++) quantiles[i] = qmin + i * delta_q;
1977 for (i = 0; i < npoints; i++) {
1978 X1[i] =
GetX(cum1, quantiles[i], eps);
1979 X2[i] =
GetX(cum2, quantiles[i], eps);
1981 for (i = 0; i < npoints; i++) {
1982 printf(
"COMPARISON: i=%d quantile=%f X1=%f X2=%f\n",
1983 i, quantiles[i], X1[i], X2[i]);
1989 if (fitgraph->
Fit(scale_func, fitoptions.
Data()) != 0) {
1990 Error(
"RescaleX",
"Fitting with function %s failed to converge",
2004 delete [] quantiles;
2062 RescaleX(hist1, hist2, scale_func, npoints, direction,
xmin,
xmax, qmin, qmax, eps);
2070 TH1* scalehisto =
ScaleHisto(hist1, scale_func, 0, nx, -1, nxmin, nxmax, -1.0, -1.0,
"width");
2171 printf(
"Warning, KVHistoManipulator::GetChisquare :\n\taucune cellule price en compte dans le calcul du Chi2 ...\n");
2174 return (norm ? chi2 / nbre : chi2);
2210 chi2 += fval - 1 * hval * logfval;
2223 chi2 += fval - 1 * hval * logfval;
2229 printf(
"Warning, KVHistoManipulator::GetChisquare :\n\taucune cellule price en compte dans le calcul du Chi2 ...\n");
2232 return (norm ? chi2 / nbre : chi2);
2254 if (G2->
GetN() != npoints) {
2255 Error(
"DivideGraphs",
"Graphs must have same number of points");
2259 AUTO_NEW_CTOR(
TGraph, Gdiv)(*G1);
2265 for (
int i = 0; i < npoints; i++) {
2266 if (Y2[i] != 0) Gdiv->SetPoint(i,
X[i], Y1[i] / Y2[i]);
2267 else Gdiv->SetPoint(i,
X[i], 0.);
2279 if (g1->
GetN() != npoints) {
2280 Error(
"ComputeNewGraphFrom",
"Graphs must have same number of points %d != %d", npoints, g1->
GetN());
2284 TF1 f1(
"func_ComputeNewGraphFrom", formula, 0, 1);
2286 Error(
"ComputeNewGraphFrom",
"formula %s for the operation is not valid or has not 2 parameters", formula.
Data());
2290 auto gfinal =
new TGraph;
2298 for (
Int_t ii = 0; ii < npoints; ii++) {
2300 if (
x1[ii] != x0[ii])
2301 Warning(
"ComputeNewGraphFrom",
"X values are different for the same point %d : %lf %lf", ii, x0[ii],
x1[ii]);
2303 gfinal->SetPoint(ii, x0[ii],
result);
2337 TF1 f1(
"func_ComputeNewGraphFrom", formula, 0, 1);
2339 Error(
"ComputeNewGraphFrom",
"wrong formula %s, check the expression", formula.
Data());
2343 Error(
"ComputeNewGraphFrom",
"number of parameters (%d) of formula %s is not the same as the number of graphics (%d) in the list",
f1.
GetNpar(), formula.
Data(), ngr);
2347 auto gfinal =
new TGraph;
2353 std::vector<Double_t> par(ngr);
2355 for (
Int_t ii = 0; ii < npoints; ii++) {
2356 for (
Int_t jj = 0; jj < ngr; jj += 1) {
2363 gfinal->SetPoint(ii, xx,
result);
2384 std::vector<Double_t> limits(4);
2386 for (
Int_t ii = 0; ii < G1->
GetN(); ii += 1) {
2389 limits[0] = limits[2] = xx;
2390 limits[1] = limits[3] = yy;
2393 if (xx < limits[0]) limits[0] = xx;
2394 if (yy < limits[1]) limits[1] = yy;
2395 if (xx > limits[2]) limits[2] = xx;
2396 if (yy > limits[3]) limits[3] = yy;
2419 std::vector<Double_t> limits(4);
2422 for (
Int_t ii = 0; ii < G1->
GetN(); ii += 1) {
2428 limits[0] = limits[2] = xx;
2429 limits[1] = limits[3] = yy;
2432 if (xx -
ex < limits[0]) limits[0] = xx -
ex;
2433 if (yy -
ey < limits[1]) limits[1] = yy -
ey;
2434 if (xx +
ex > limits[2]) limits[2] = xx +
ex;
2435 if (yy +
ey > limits[3]) limits[3] = yy +
ey;
2460 std::vector<Double_t> limits, temp;
2471 if (temp[0] < limits[0]) limits[0] = temp[0];
2472 if (temp[1] < limits[1]) limits[1] = temp[1];
2473 if (temp[2] > limits[2]) limits[2] = temp[2];
2474 if (temp[3] > limits[3]) limits[3] = temp[3];
2498 std::vector<Double_t> limits(4);
2508 limits[0] = limits[2] = xx;
2509 limits[1] = limits[3] = yy;
2512 if (xx < limits[0]) limits[0] = xx;
2513 if (yy < limits[1]) limits[1] = yy;
2514 if (xx > limits[2]) limits[2] = xx;
2515 if (yy > limits[3]) limits[3] = yy;
2541 std::vector<Double_t> temp, limits;
2551 if (temp[0] < limits[0]) limits[0] = temp[0];
2552 if (temp[1] < limits[1]) limits[1] = temp[1];
2553 if (temp[2] > limits[2]) limits[2] = temp[2];
2554 if (temp[3] > limits[3]) limits[3] = temp[3];
2577 TIter nextp(
gPad->GetListOfPrimitives());
2579 while ((obj = nextp())) {
2581 h1 =
dynamic_cast<TH1*
>(obj);
2608 std::cout <<
x1 <<
" " <<
x2 <<
" - " <<
y1 <<
" " <<
y2 <<
" - " << z1 <<
" " << z2 << std::endl;
2613 while ((pad = cc->GetPad(nc))) {
2621 TIter nextq(
gPad->GetListOfPrimitives());
2623 while ((obj = nextq())) {
2625 h1 =
dynamic_cast<TH1*
>(obj);
TObject * clone(const char *newname) const override
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t np
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize fs
Option_t Option_t TPoint TPoint const char y1
R__EXTERN TRandom * gRandom
char * Form(const char *fmt,...)
R__EXTERN TStyle * gStyle
Toolkit for various operations on histograms & graphs not provided by ROOT.
TF1 * RescaleX(TH1 *hist1, TH1 *hist2, Int_t degree, Double_t *params, Int_t npoints=-1, const Char_t *direction="C", Double_t xmin=-1, Double_t xmax=-1, Double_t qmin=0.05, Double_t qmax=0.95, Double_t eps=1.e-07)
KVHistoManipulator()
Default constructor.
void DefineMarkerStyle(TAttMarker *ob, TString marker)
TH1 * MakeHistoRescaleX(TH1 *hist1, TH1 *hist2, Int_t degree, Double_t *params, Option_t *opt="", Int_t npoints=-1, const Char_t *direction="C", Double_t xmin=-1, Double_t xmax=-1, Double_t qmin=0.05, Double_t qmax=0.95, Double_t eps=1.e-07)
Bool_t kVisDebug
= kTRUE for visual debugging
TH2 * CentreeReduiteX(TH2 *hh, Int_t nx=-1, Double_t xmin=-1., Double_t xmax=-1.)
std::vector< Double_t > GetLimits(TGraph *G1)
TGraph * ComputeNewGraphFrom(TGraph *g0, TGraph *g1, const TString &formula)
TH2 * CentreeReduiteY(TH2 *hh, Int_t ny=-1, Double_t ymin=-1., Double_t ymax=-1.)
TH2 * PermuteAxis(TH2 *hh)
void DefineStyle(TObject *ob, TString line, TString marker)
Double_t GetX(TH1 *ob, Double_t val, Double_t eps=1.e-07, Int_t nmax=50, Double_t xmin=-1.0, Double_t xmax=-1.0)
Double_t GetChisquare(TH1 *h1, TF1 *f1, Bool_t norm=kTRUE, Bool_t err=kTRUE, Double_t *para=nullptr)
TGraph * ScaleGraph(const TGraph *hh, TF1 *fx=nullptr, TF1 *fy=nullptr) const
KVNumberList * Saucisson(TH1 *hh, Int_t ntranches=10)
TGraph * LinkGraphs(TGraph *grx, TGraph *gry)
void DefinePattern(TH1 *ob, TString titleX="42 0.08 0.8", TString titleY="42 0.07 1.2", TString labelX="42 0.05 0.005", TString labelY="42 0.05 0.006")
virtual ~KVHistoManipulator(void)
TH2 * RenormaliseHisto(TH2 *hh, Int_t bmin=-1, Int_t bmax=-1, TString axis="X", Double_t valref=1)
Int_t CutStatBin(TH1 *hh, Int_t stat_min=-1, Int_t stat_max=-1)
TGraphErrors * GetMomentEvolution(TH2 *hh, TString momentx, TString momenty, TString axis="Y", Double_t stat_min=0)
void DefineTitle(TH1 *ob, TString xtit, TString ytit)
TGraph * ExtractMeanAndSigmaFromProfile(TProfile *pf, TGraph *&sigma)
void ApplyCurrentLimitsToAllCanvas(Bool_t AlsoLog=kFALSE)
TH1 * CentreeReduite(TH1 *hh, Int_t nx=-1, Int_t ny=-1, Double_t xmin=-1., Double_t xmax=-1., Double_t ymin=-1., Double_t ymax=-1.)
TCanvas * fVDCanvas
used for visual debugging
TH1 * ScaleHisto(TH1 *hh, TF1 *fx, TF1 *fy=NULL, Int_t nx=-1, Int_t ny=-1, Double_t xmin=-1., Double_t xmax=-1., Double_t ymin=-1., Double_t ymax=-1., Option_t *norm="")
TGraph * DivideGraphs(TGraph *G1, TGraph *G2)
Double_t GetLikelihood(TH1 *h1, TF1 *f1, Bool_t norm=kTRUE, Double_t *para=nullptr)
KVList * Give_ProjectionList(TH2 *hh, Double_t MinIntegral=-1, TString axis="X")
TGraphErrors * MakeGraphFrom(TProfile *pf, Bool_t Error=kTRUE)
TH1 * CumulatedHisto(TH1 *hh, TString direction="C", Int_t bmin=-1, Int_t bmax=-1, Option_t *norm="surf")
TH1 * GetDerivative(TH1 *hh, Int_t order)
void DefineLineStyle(TAttLine *ob, TString line)
Double_t GetCorrelationFactor(TH2 *hh)
Int_t Apply_TCutG(TH2 *hh, TCutG *cut, TString mode="in")
Extended TList class which owns its objects by default.
Strings used to represent a set of ranges of values.
void Add(Int_t)
Add value 'n' to the list.
virtual void Add(TObject *obj)
virtual void SetTitleOffset(Float_t offset=1)
virtual void SetLabelSize(Float_t size=0.04)
virtual void SetTitleFont(Style_t font=62)
virtual void SetLabelOffset(Float_t offset=0.005)
virtual void SetLabelFont(Style_t font=62)
virtual void SetTitleSize(Float_t size=0.04)
virtual void SetLineStyle(Style_t lstyle)
virtual void SetLineWidth(Width_t lwidth)
virtual void SetLineColor(Color_t lcolor)
virtual TClass * IsA() const
virtual void SetMarkerColor(Color_t mcolor=1)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void SetMarkerSize(Size_t msize=1)
virtual TClass * IsA() const
virtual Int_t FindBin(const char *label)
virtual Double_t GetBinCenter(Int_t bin) const
virtual Double_t GetBinLowEdge(Int_t bin) const
virtual void SetRange(Int_t first=0, Int_t last=0)
virtual Double_t GetBinWidth(Int_t bin) const
virtual Double_t GetBinUpEdge(Int_t bin) const
void Clear(Option_t *option="") override
TVirtualPad * cd(Int_t subpadnumber=0) override
void * New(ENewType defConstructor=kClassNew, Bool_t quiet=kFALSE) const
Bool_t InheritsFrom(const char *cl) const override
virtual Int_t GetEntries() const
virtual Double_t Derivative(Double_t x, Double_t *params=nullptr, Double_t epsilon=0.001) const
virtual Int_t GetNDF() const
virtual Double_t GetParameter(const TString &name) const
Double_t GetChisquare() const
virtual void SetRange(Double_t xmin, Double_t xmax)
virtual Int_t GetNpar() const
virtual void SetNpx(Int_t npx=100)
virtual Double_t EvalPar(const Double_t *x, const Double_t *params=nullptr)
virtual void SetParameters(const Double_t *params)
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
Double_t GetErrorY(Int_t bin) const override
Double_t GetErrorX(Int_t bin) const override
virtual void SetPointError(Double_t ex, Double_t ey)
virtual Int_t IsInside(Double_t x, Double_t y) const
virtual void SetPoint(Int_t i, Double_t x, Double_t y)
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0)
void SetName(const char *name="") override
virtual Double_t * GetEY() const
void SetNameTitle(const char *name="", const char *title="") override
virtual Int_t GetPoint(Int_t i, Double_t &x, Double_t &y) const
virtual Double_t GetBinCenter(Int_t bin) const
void SetTitle(const char *title) override
virtual Int_t GetNbinsY() const
virtual Double_t GetBinError(Int_t bin) const
virtual Double_t GetMean(Int_t axis=1) const
virtual Int_t GetDimension() const
void SetNameTitle(const char *name, const char *title) override
virtual Double_t GetMaximum(Double_t maxval=FLT_MAX) const
virtual Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual void SetBinError(Int_t bin, Double_t error)
virtual Int_t Fill(const char *name, Double_t w)
virtual void SetMinimum(Double_t minimum=-1111)
Double_t GetRMS(Int_t axis=1) const
virtual void SetBinContent(Int_t bin, Double_t content)
virtual Double_t GetBinLowEdge(Int_t bin) const
void SetName(const char *name) override
virtual TH1 * DrawCopy(Option_t *option="", const char *name_postfix="_copy") const
virtual Double_t Integral(Int_t binx1, Int_t binx2, Option_t *option="") const
virtual Double_t GetBinContent(Int_t bin) const
virtual void SetBins(Int_t nx, const Double_t *xBins)
virtual Double_t GetBinWidth(Int_t bin) const
virtual void Scale(Double_t c1=1, Option_t *option="")
virtual Int_t FindBin(Double_t x, Double_t y=0, Double_t z=0)
TObject * Clone(const char *newname="") const override
virtual Double_t GetMinimum(Double_t minval=-FLT_MAX) const
TH1D * ProjectionY(const char *name="_py", Int_t firstxbin=0, Int_t lastxbin=-1, Option_t *option="") const
void SetBinContent(Int_t bin, Double_t content) override
TH1D * ProjectionX(const char *name="_px", Int_t firstybin=0, Int_t lastybin=-1, Option_t *option="") const
virtual Double_t GetBinContent(Int_t bin) const
TObject * At(Int_t idx) const override
void InitWithPrototype(const char *function, const char *proto, ROOT::EFunctionMatchMode mode=ROOT::kConversionMatch)
TList * GetListOfGraphs() const
virtual void SetTitle(const char *title="")
const char * GetName() const override
const char * GetTitle() const override
virtual void SetName(const char *name)
Int_t GetEntries() const override
TObject * At(Int_t idx) const override
virtual const char * ClassName() const
virtual TObject * DrawClone(Option_t *option="") const
R__ALWAYS_INLINE Bool_t IsZombie() const
virtual Bool_t InheritsFrom(const char *classname) const
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
Double_t GetBinContent(Int_t bin) const override
virtual void SetBinEntries(Int_t bin, Double_t w)
virtual Double_t GetBinEntries(Int_t bin) const
Double_t GetBinError(Int_t bin) const override
virtual Double_t Uniform(Double_t x1, Double_t x2)
virtual TObject * At(Int_t idx) const=0
Double_t Eval(Double_t x) const override
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
void Form(const char *fmt,...)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
void SetOptStat(Int_t stat=1)
virtual Int_t GetLogz() const=0
virtual TVirtualPad * cd(Int_t subpadnumber=0)=0
virtual Int_t GetLogy() const=0
virtual Int_t GetLogx() const=0
RVec< PromoteType< T > > abs(const RVec< T > &v)
RVec< PromoteTypes< T0, T1 > > pow(const RVec< T0 > &v, const T1 &y)
Expr< UnaryOp< Sqrt< T >, Expr< A, T, D, D2, R >, T >, T, D, D2, R > sqrt(const Expr< A, T, D, D2, R > &rhs)
Expr< UnaryOp< Fabs< T >, Expr< A, T, D, D2, R >, T >, T, D, D2, R > fabs(const Expr< A, T, D, D2, R > &rhs)
Double_t Power(Double_t x, Double_t y)
Double_t Sqrt(Double_t x)
Double_t Max(Double_t a, Double_t b)