Logo ROOT  
Reference Guide
TGraphMultiErrors.h
Go to the documentation of this file.
1// @(#)root/hist:$Id$
2// Author: Simon Spies 18/02/19
3
4/*************************************************************************
5 * Copyright (C) 2018-2019, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGraphMultiErrors
13#define ROOT_TGraphMultiErrors
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// TGraphMultiErrors //
18// //
19// a Graph with asymmetric error bars and multiple y errors //
20// //
21//////////////////////////////////////////////////////////////////////////
22
23#include "TGraph.h"
24
25class TArrayF;
26class TArrayD;
27
28class TGraphMultiErrors : public TGraph {
29
30protected:
31 Int_t fNYErrors; ///< The amount of different y-errors
32 Int_t fSumErrorsMode; ///< How y errors are summed: kOnlyFirst = Only First; kSquareSum = Squared Sum; kSum =
33 ///< Absolute Addition
34 Double_t *fExL; ///<[fNpoints] array of X low errors
35 Double_t *fExH; ///<[fNpoints] array of X high errors
36 std::vector<TArrayD> fEyL; ///< two dimensional array of Y low errors
37 std::vector<TArrayD> fEyH; ///< two dimensional array of Y high errors
38 mutable Double_t *fEyLSum = nullptr; ///<! array of summed Y low errors for fitting
39 mutable Double_t *fEyHSum = nullptr; ///<! array of summed Y high errors for fitting
40 std::vector<TAttFill> fAttFill; ///< the AttFill attributes of the different errors
41 std::vector<TAttLine> fAttLine; ///< the AttLine attributes of the different errors
42
43 virtual Double_t **Allocate(Int_t size);
45
46 virtual void CopyAndRelease(Double_t **newarrays, Int_t ibegin, Int_t iend, Int_t obegin);
47 virtual Bool_t CopyPoints(Double_t **arrays, Int_t ibegin, Int_t iend, Int_t obegin);
48 virtual void FillZero(Int_t begin, Int_t end, Bool_t from_ctor = kTRUE);
49
50 void CalcYErrorsSum() const;
51 virtual Bool_t DoMerge(const TGraph *tg);
52 virtual void SwapPoints(Int_t pos1, Int_t pos2);
53
54public:
56 kOnlyFirst = 0, ///< Only take errors from first dimension
57 kSquareSum = 1, ///< Calculate the square sum of all errors
58 kAbsSum = 2 ///< Calculate the absolute sum of all errors
59 };
60
62 TGraphMultiErrors(const Char_t *name, const Char_t *title);
63 TGraphMultiErrors(Int_t np, Int_t ne = 1);
64 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, Int_t ne = 1);
65
66 TGraphMultiErrors(Int_t np, const Float_t *x, const Float_t *y, const Float_t *exL = nullptr,
67 const Float_t *exH = nullptr, const Float_t *eyL = nullptr, const Float_t *eyH = nullptr,
69 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, const Float_t *x, const Float_t *y,
70 const Float_t *exL = nullptr, const Float_t *exH = nullptr, const Float_t *eyL = nullptr,
71 const Float_t *eyH = nullptr, Int_t m = kOnlyFirst);
72 TGraphMultiErrors(Int_t np, const Double_t *x, const Double_t *y, const Double_t *exL = nullptr,
73 const Double_t *exH = nullptr, const Double_t *eyL = nullptr, const Double_t *eyH = nullptr,
75 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, const Double_t *x, const Double_t *y,
76 const Double_t *exL = nullptr, const Double_t *exH = nullptr, const Double_t *eyL = nullptr,
77 const Double_t *eyH = nullptr, Int_t m = kOnlyFirst);
78
79 TGraphMultiErrors(Int_t np, Int_t ne, const Float_t *x, const Float_t *y, const Float_t *exL, const Float_t *exH,
80 std::vector<std::vector<Float_t>> eyL, std::vector<std::vector<Float_t>> eyH,
82 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, Int_t ne, const Float_t *x, const Float_t *y,
83 const Float_t *exL, const Float_t *exH, std::vector<std::vector<Float_t>> eyL,
84 std::vector<std::vector<Float_t>> eyH, Int_t m = kOnlyFirst);
85 TGraphMultiErrors(Int_t np, Int_t ne, const Double_t *x, const Double_t *y, const Double_t *exL, const Double_t *exH,
86 std::vector<std::vector<Double_t>> eyL, std::vector<std::vector<Double_t>> eyH,
88 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, Int_t ne, const Double_t *x, const Double_t *y,
89 const Double_t *exL, const Double_t *exH, std::vector<std::vector<Double_t>> eyL,
90 std::vector<std::vector<Double_t>> eyH, Int_t m = kOnlyFirst);
91
92 TGraphMultiErrors(Int_t np, Int_t ne, const Float_t *x, const Float_t *y, const Float_t *exL, const Float_t *exH,
93 std::vector<TArrayF> eyL, std::vector<TArrayF> eyH, Int_t m = kOnlyFirst);
94 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, Int_t ne, const Float_t *x, const Float_t *y,
95 const Float_t *exL, const Float_t *exH, std::vector<TArrayF> eyL, std::vector<TArrayF> eyH,
97 TGraphMultiErrors(Int_t np, Int_t ne, const Double_t *x, const Double_t *y, const Double_t *exL, const Double_t *exH,
98 std::vector<TArrayD> eyL, std::vector<TArrayD> eyH, Int_t m = kOnlyFirst);
99 TGraphMultiErrors(const Char_t *name, const Char_t *title, Int_t np, Int_t ne, const Double_t *x, const Double_t *y,
100 const Double_t *exL, const Double_t *exH, std::vector<TArrayD> eyL, std::vector<TArrayD> eyH,
101 Int_t m = kOnlyFirst);
102
103 TGraphMultiErrors(const TVectorF &tvX, const TVectorF &tvY, const TVectorF &tvExL, const TVectorF &tvExH,
104 const TVectorF &tvEyL, const TVectorF &tvEyH, Int_t m = kOnlyFirst);
105 TGraphMultiErrors(const TVectorD &tvX, const TVectorD &tvY, const TVectorD &tvExL, const TVectorD &tvExH,
106 const TVectorD &tvEyL, const TVectorD &tvEyH, Int_t m = kOnlyFirst);
107
108 TGraphMultiErrors(Int_t ne, const TVectorF &tvX, const TVectorF &tvY, const TVectorF &tvExL, const TVectorF &tvExH,
109 const TVectorF *tvEyL, const TVectorF *tvEyH, Int_t m = kOnlyFirst);
110 TGraphMultiErrors(Int_t ne, const TVectorD &tvX, const TVectorD &tvY, const TVectorD &tvExL, const TVectorD &tvExH,
111 const TVectorD *tvEyL, const TVectorD *tvEyH, Int_t m = kOnlyFirst);
112
115
116 TGraphMultiErrors(const TH1 *th, Int_t ne = 1);
117 TGraphMultiErrors(const TH1 *pass, const TH1 *total, Int_t ne = 1, Option_t *option = "");
118
119 virtual ~TGraphMultiErrors();
120
121 virtual void AddYError(Int_t np, const Double_t *eyL = nullptr, const Double_t *eyH = nullptr);
122 virtual void Apply(TF1 *f);
123 virtual void BayesDivide(const TH1 *pass, const TH1 *total, Option_t *opt = "");
124 void Divide(const TH1 *pass, const TH1 *total, Option_t *opt = "cp");
125 virtual void ComputeRange(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) const;
126 virtual void DeleteYError(Int_t e);
127
128 virtual Double_t GetErrorX(Int_t i) const;
129 virtual Double_t GetErrorY(Int_t i) const;
130 virtual Double_t GetErrorY(Int_t i, Int_t e) const;
131
132 virtual Double_t GetErrorXlow(Int_t i) const;
133 virtual Double_t GetErrorXhigh(Int_t i) const;
134 virtual Double_t GetErrorYlow(Int_t i) const;
135 virtual Double_t GetErrorYhigh(Int_t i) const;
136 virtual Double_t GetErrorYlow(Int_t i, Int_t e) const;
137 virtual Double_t GetErrorYhigh(Int_t i, Int_t e) const;
138
139 virtual Double_t *GetEXlow() const { return fExL; }
140 virtual Double_t *GetEXhigh() const { return fExH; }
141 virtual Double_t *GetEYlow() const;
142 virtual Double_t *GetEYhigh() const;
143 virtual Double_t *GetEYlow(Int_t e);
144 virtual Double_t *GetEYhigh(Int_t e);
145
146 virtual TAttFill *GetAttFill(Int_t e);
147 virtual TAttLine *GetAttLine(Int_t e);
148
151
152 virtual Color_t GetFillColor(Int_t e) const;
153 virtual Style_t GetFillStyle(Int_t e) const;
154
158
159 virtual Color_t GetLineColor(Int_t e) const;
160 virtual Style_t GetLineStyle(Int_t e) const;
161 virtual Width_t GetLineWidth(Int_t e) const;
162
164 Int_t GetNYErrors() const { return fNYErrors; }
165
166 virtual void Print(Option_t *chopt = "") const;
167 virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
168
169 virtual void SetPointError(Double_t exL, Double_t exH, Double_t eyL1, Double_t eyH1, Double_t eyL2 = 0.,
170 Double_t eyH2 = 0., Double_t eyL3 = 0., Double_t eyH3 = 0.); // *MENU*
171 virtual void SetPointError(Int_t i, Int_t ne, Double_t exL, Double_t exH, const Double_t *eyL, const Double_t *eyH);
172
173 virtual void SetPointEX(Int_t i, Double_t exL, Double_t exH);
174 virtual void SetPointEXlow(Int_t i, Double_t exL);
175 virtual void SetPointEXhigh(Int_t i, Double_t exH);
176 virtual void SetPointEY(Int_t i, Int_t ne, const Double_t *eyL, const Double_t *eyH);
177 virtual void SetPointEYlow(Int_t i, Int_t ne, const Double_t *eyL);
178 virtual void SetPointEYhigh(Int_t i, Int_t ne, const Double_t *eyH);
179 virtual void SetPointEY(Int_t i, Int_t e, Double_t eyL, Double_t eyH);
180 virtual void SetPointEYlow(Int_t i, Int_t e, Double_t eyL);
181 virtual void SetPointEYhigh(Int_t i, Int_t e, Double_t eyH);
182
183 virtual void SetEY(Int_t e, Int_t np, const Double_t *eyL, const Double_t *eyH);
184 virtual void SetEYlow(Int_t e, Int_t np, const Double_t *eyL);
185 virtual void SetEYhigh(Int_t e, Int_t np, const Double_t *eyH);
186
187 virtual void SetSumErrorsMode(Int_t m);
188
189 virtual void SetAttFill(Int_t e, TAttFill *taf);
190 virtual void SetAttLine(Int_t e, TAttLine *tal);
191
195
196 virtual void SetFillColor(Int_t e, Color_t fcolor);
197 virtual void SetFillColorAlpha(Int_t e, Color_t fcolor, Float_t falpha);
198 virtual void SetFillStyle(Int_t e, Style_t fstyle);
199
204
205 virtual void SetLineColor(Int_t e, Color_t lcolor);
206 virtual void SetLineColorAlpha(Int_t e, Color_t lcolor, Float_t lalpha);
207 virtual void SetLineStyle(Int_t e, Style_t lstyle);
208 virtual void SetLineWidth(Int_t e, Width_t lwidth);
209
210 ClassDef(TGraphMultiErrors, 1) // A Graph with asymmetric error bars and multiple y error dimensions
211};
212
213#endif // ROOT_TGraphMultiErrors
#define f(i)
Definition: RSha256.hxx:104
#define e(i)
Definition: RSha256.hxx:103
int Int_t
Definition: RtypesCore.h:41
char Char_t
Definition: RtypesCore.h:29
short Width_t
Definition: RtypesCore.h:78
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
short Color_t
Definition: RtypesCore.h:79
short Style_t
Definition: RtypesCore.h:76
float Float_t
Definition: RtypesCore.h:53
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:326
static unsigned int total
char name[80]
Definition: TGX11.cxx:109
float xmin
Definition: THbookFile.cxx:93
float ymin
Definition: THbookFile.cxx:93
float xmax
Definition: THbookFile.cxx:93
float ymax
Definition: THbookFile.cxx:93
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
Array of floats (32 bits per element).
Definition: TArrayF.h:27
Fill Area Attributes class.
Definition: TAttFill.h:19
virtual Color_t GetFillColor() const
Return the fill area color.
Definition: TAttFill.h:30
virtual Style_t GetFillStyle() const
Return the fill area style.
Definition: TAttFill.h:31
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
virtual void SetFillColorAlpha(Color_t fcolor, Float_t falpha)
Set a transparent fill color.
Definition: TAttFill.cxx:260
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
Definition: TAttFill.h:39
Line Attributes class.
Definition: TAttLine.h:18
virtual Color_t GetLineColor() const
Return the line color.
Definition: TAttLine.h:33
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Definition: TAttLine.h:42
virtual Width_t GetLineWidth() const
Return the line width.
Definition: TAttLine.h:35
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Definition: TAttLine.h:43
virtual void SetLineColorAlpha(Color_t lcolor, Float_t lalpha)
Set a transparent line color.
Definition: TAttLine.cxx:299
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TAttLine.h:40
virtual Style_t GetLineStyle() const
Return the line style.
Definition: TAttLine.h:34
1-Dim function class
Definition: TF1.h:211
TGraph with asymmetric error bars and multiple y error dimensions.
virtual void ComputeRange(Double_t &xmin, Double_t &ymin, Double_t &xmax, Double_t &ymax) const
Compute Range.
virtual void Print(Option_t *chopt="") const
Print graph and errors values.
Double_t * fEyLSum
! array of summed Y low errors for fitting
Int_t GetSumErrorsMode() const
virtual Color_t GetFillColor() const
Return the fill area color.
Definition: TAttFill.h:30
virtual Style_t GetFillStyle() const
Return the fill area style.
Definition: TAttFill.h:31
virtual Double_t * GetEXhigh() const
virtual void FillZero(Int_t begin, Int_t end, Bool_t from_ctor=kTRUE)
Set zero values for point arrays in the range [begin, end)
virtual void SetPointError(Double_t exL, Double_t exH, Double_t eyL1, Double_t eyH1, Double_t eyL2=0., Double_t eyH2=0., Double_t eyL3=0., Double_t eyH3=0.)
Set ex and ey values for point pointed by the mouse.
virtual TAttLine * GetAttLine(Int_t e)
Get AttLine pointer for specified error dimension.
virtual void SetFillColorAlpha(Int_t e, Color_t fcolor, Float_t falpha)
Set Fill Color and Alpha of error e (-1 = Global and x errors)
virtual Color_t GetLineColor() const
Return the line color.
Definition: TAttLine.h:33
void Divide(const TH1 *pass, const TH1 *total, Option_t *opt="cp")
This function was adapted from the TGraphAsymmErrors class.
virtual void Apply(TF1 *f)
Apply a function to all data points y = f(x,y)
std::vector< TAttLine > fAttLine
the AttLine attributes of the different errors
virtual void AddYError(Int_t np, const Double_t *eyL=nullptr, const Double_t *eyH=nullptr)
Add a new y error to the graph and fill it with the values from eyL and eyH.
TGraphMultiErrors()
TGraphMultiErrors default constructor.
virtual void SetEY(Int_t e, Int_t np, const Double_t *eyL, const Double_t *eyH)
Set error e ey values.
virtual void SetSumErrorsMode(Int_t m)
Set the sum errors mode and recalculate summed errors.
virtual ~TGraphMultiErrors()
TGraphMultiErrors default destructor.
virtual void BayesDivide(const TH1 *pass, const TH1 *total, Option_t *opt="")
This function is only kept for backward compatibility.
TGraphMultiErrors & operator=(const TGraphMultiErrors &tgme)
TGraphMultiErrors assignment operator.
virtual Double_t GetErrorXhigh(Int_t i) const
Get high error on x coordinate for point i.
virtual Bool_t DoMerge(const TGraph *tg)
protected function to perform the merge operation of a graph with multiple asymmetric errors
Int_t fSumErrorsMode
How y errors are summed: kOnlyFirst = Only First; kSquareSum = Squared Sum; kSum = Absolute Addition.
virtual Width_t GetLineWidth() const
Return the line width.
Definition: TAttLine.h:35
virtual Bool_t CopyPoints(Double_t **arrays, Int_t ibegin, Int_t iend, Int_t obegin)
Copy errors from fE*** to arrays[] or to f Copy points.
virtual Double_t GetErrorY(Int_t i) const
Get error on y coordinate for point i The multiple errors of the dimensions are summed according to f...
@ kAbsSum
Calculate the absolute sum of all errors.
@ kSquareSum
Calculate the square sum of all errors.
@ kOnlyFirst
Only take errors from first dimension.
virtual Double_t GetErrorYlow(Int_t i) const
Get low error on y coordinate for point i The multiple errors of the dimensions are summed according ...
virtual Double_t * GetEYhigh() const
Get all high errors on y coordinates as an array summed according to fSumErrorsMode.
virtual TAttFill * GetAttFill(Int_t e)
Get AttFill pointer for specified error dimension.
virtual void SetLineStyle(Int_t e, Style_t lstyle)
Set Line Style of error e (-1 = Global and x errors)
virtual void SetPointEXhigh(Int_t i, Double_t exH)
Set exH value for point i.
Double_t * fExL
[fNpoints] array of X low errors
virtual Double_t ** Allocate(Int_t size)
Allocate internal data structures for size points.
virtual void SetLineWidth(Int_t e, Width_t lwidth)
Set Line Width of error e (-1 = Global and x errors)
std::vector< TArrayD > fEyH
two dimensional array of Y high errors
virtual Style_t GetLineStyle() const
Return the line style.
Definition: TAttLine.h:34
virtual void SetPointEX(Int_t i, Double_t exL, Double_t exH)
Set ex values for point i.
virtual void SetPointEYlow(Int_t i, Int_t ne, const Double_t *eyL)
Set eyL values for point i.
virtual Double_t * GetEXlow() const
virtual void SetLineColorAlpha(Int_t e, Color_t lcolor, Float_t lalpha)
Set Line Color and Alpha of error e (-1 = Global and x errors)
virtual void SetFillColor(Int_t e, Color_t fcolor)
Set Fill Color of error e (-1 = Global and x errors)
void CalcYErrorsSum() const
Recalculates the summed y error arrays.
virtual void SetAttLine(Int_t e, TAttLine *tal)
Set TAttLine parameters of error e by copying from another TAttLine (-1 = Global and x errors)
Double_t * fEyHSum
! array of summed Y high errors for fitting
virtual void DeleteYError(Int_t e)
Deletes the y error with the index e Note that you must keep at least 1 error.
virtual Double_t * GetEYlow() const
Get all low errors on y coordinates as an array summed according to fSumErrorsMode.
virtual Double_t GetErrorX(Int_t i) const
Get error on x coordinate for point i In case of asymmetric errors the mean of the square sum is retu...
virtual void SetFillStyle(Int_t e, Style_t fstyle)
Set Fill Style of error e (-1 = Global and x errors)
virtual void SetEYhigh(Int_t e, Int_t np, const Double_t *eyH)
Set error e eyH values.
virtual Double_t GetErrorXlow(Int_t i) const
Get low error on x coordinate for point i.
Int_t GetNYErrors() const
virtual void SetAttFill(Int_t e, TAttFill *taf)
Set TAttFill parameters of error e by copying from another TAttFill (-1 = Global and x errors)
virtual void SetEYlow(Int_t e, Int_t np, const Double_t *eyL)
Set error e eyL values.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save primitive as a C++ statement(s) on output stream out.
std::vector< TAttFill > fAttFill
the AttFill attributes of the different errors
Bool_t CtorAllocate()
Should be called from ctors after fNpoints has been set Note: This function should be called only fro...
Double_t * fExH
[fNpoints] array of X high errors
virtual void SwapPoints(Int_t pos1, Int_t pos2)
Swap points.
virtual void SetPointEY(Int_t i, Int_t ne, const Double_t *eyL, const Double_t *eyH)
Set ey values for point i.
virtual void SetLineColor(Int_t e, Color_t lcolor)
Set Line Color of error e (-1 = Global and x errors)
virtual void SetPointEXlow(Int_t i, Double_t exL)
Set exL value for point i.
virtual void SetPointEYhigh(Int_t i, Int_t ne, const Double_t *eyH)
Set eyH values for point i.
Int_t fNYErrors
The amount of different y-errors.
std::vector< TArrayD > fEyL
two dimensional array of Y low errors
virtual void CopyAndRelease(Double_t **newarrays, Int_t ibegin, Int_t iend, Int_t obegin)
Copy and release.
virtual Double_t GetErrorYhigh(Int_t i) const
Get high error on y coordinate for point i The multiple errors of the dimensions are summed according...
A Graph is a graphics object made of two arrays X and Y with npoints each.
Definition: TGraph.h:41
The TH1 histogram class.
Definition: TH1.h:56
TVectorT.
Definition: TVectorT.h:27
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
auto * m
Definition: textangle.C:8