KaliVeda
Toolkit for HIC analysis
Loading...
Searching...
No Matches
KVGraph.cpp
1//Created by KVClassFactory on Wed Jun 19 09:06:08 2013
2//Author: dgruyer
3
4#include "KVGraph.h"
5#include "TPad.h"
6#include "TAxis.h"
7#include "TMath.h"
8#include "Riostream.h"
9#include "TH2F.h"
10#include "KVGaxis.h"
11#include "KVNumberList.h"
12
14
15
16
18
20{
21 // Default constructor
22 init();
23}
24
25
26
27//KVGraph::KVGraph(const KVGraph& obj) : TGraph()
28//{
29// // Copy constructor
30// // This ctor is used to make a copy of an existing object (for example
31// // when a method returns an object), and it is always a good idea to
32// // implement it.
33// // If your class allocates memory in its constructor(s) then it is ESSENTIAL :-)
34
35// obj.Copy(*this);
36//}
37
38
39
42
44{
45 // Write your code here
46 init();
47}
48
49
50
51//KVGraph::KVGraph(Int_t n, const Int_t* x, const Int_t* y) : TGraphErrors(n, x, y)
52//{
53// // Write your code here
54// init();
55//}
56
58
59//KVGraph::KVGraph(Int_t n, const Float_t* x, const Float_t* y) : TGraphErrors(n, x, y)
60//{
61// // Write your code here
62// init();
63//}
64
66
67//KVGraph::KVGraph(Int_t n, const Double_t* x, const Double_t* y) : TGraphErrors(n, x, y)
68//{
69// // Write your code here
70// init();
71//}
72
74
75//KVGraph::KVGraph(const TVectorF& vx, const TVectorF& vy) : TGraphErrors(vx, vy)
76//{
77// // Write your code here
78// init();
79//}
80
82
83//KVGraph::KVGraph(const TVectorD& vx, const TVectorD& vy) : TGraphErrors(vx, vy)
84//{
85// // Write your code here
86// init();
87//}
88
90
91//KVGraph::KVGraph(const TH1* h) : TGraphErrors(h)
92//{
93// // Write your code here
94// init();
95//}
96
98
99//KVGraph::KVGraph(const TF1* f, Option_t* option) : TGraphErrors(f, option)
100//{
101// // Write your code here
102// init();
103//}
104
106
107//KVGraph::KVGraph(const char* filename, const char* format, Option_t* option) : TGraphErrors(filename, format, option)
108//{
109// // Write your code here
110// init();
111//}
112
113
116
118{
119 // Destructor
120}
121
122
123
125
127{
128 TGraphErrors::Draw(chopt);
129
130 gPad->SetFillColor(0);
131 gPad->SetBorderMode(0);
132 gPad->SetBorderSize(2);
133 gPad->SetFrameBorderMode(0);
134 gPad->SetFrameLineColor(0);
135 gPad->SetFrameBorderMode(0);
136
137 gPad->Modified();
138 gPad->Update();
139
140 TString opt(chopt);
141 opt.ToLower();
142 if (!opt.Contains("t")) return;
143
148
151
152 Double_t xstr, xstp, ystr, ystp;
153 if (fUseX) {
156 }
157 else {
158 xstr = xmin;
159 xstp = xmax;
160 }
161
162 if (fUseY) {
165 }
166 else {
167 ystr = ymin;
168 ystp = ymax;
169 }
170
171 switch (fCropMode) {
172 case kNoCrop:
173 xstr = TMath::Min(xmin, xstr);
174 xstp = TMath::Max(xmax, xstp);
175 ystr = TMath::Min(ymin, ystr);
176 ystp = TMath::Max(ymax, ystp);
177 break;
178 case kCropOnDiv:
179 break;
180 case kCropOnGraph:
181 xstr = TMath::Min(TMath::MinElement(GetN(), GetX()), xstr);
182 xstp = TMath::Max(TMath::MaxElement(GetN(), GetX()), xstp);
183 ystr = TMath::Min(TMath::MinElement(GetN(), GetY()), ystr);
184 ystp = TMath::Max(TMath::MaxElement(GetN(), GetY()), ystp);
185 break;
186 case kCropMin:
187 xstr = TMath::Min(TMath::MinElement(GetN(), GetX()), xstr);
188 xstp = TMath::Max(xmax, xstp);
189 ystr = TMath::Min(TMath::MinElement(GetN(), GetY()), ystr);
190 ystp = TMath::Max(ymax, ystp);
191 break;
192 }
193
194 TGaxis* axis = 0;
195 // draw new x axis and hide the old one but keeping its option
196 if (fUseX) axis = new KVGaxis(xstr, ymin, xstp, ymin, fNDivX, fDisplayDivX);
197 else axis = new TGaxis(xstr, ymin, xstp, ymin, xstr, xstp, fNDivX);
200 axis->Draw();
201
202 // draw new y axis and hide the old one but keeping its option
203 if (fUseY) axis = new KVGaxis(xmin, ystr, xmin, ystp, fNDivY, fDisplayDivY);
204 else axis = new TGaxis(xmin, ystr, xmin, ystp, ystr, ystp, fNDivY);
207 axis->Draw();
208
209 gPad->Modified();
210 gPad->Update();
211}
212
213
214
216
218{
219 ax->SetTitleSize(0.0);
220 ax->SetTickLength(0);
221 ax->SetAxisColor(0);
222 ax->SetLabelColor(0);
223}
224
225
226
228
230{
231 Double_t* x;
232 if (xAxis) x = GetX();
233 else x = GetY();
234
235 KVNumberList nb;
236 for (Int_t i = 0; i < GetN(); i++) nb.Add((x[i]) * 100);
237
238 nb.Begin();
239
240 Double_t* bins = new Double_t[nbins];
241 Int_t i = 0;
242 while (!nb.End()) bins[i++] = (nb.Next()) / 100.;
243
244 return bins;
245}
246
247
248
250
252{
253 fDisplayDivX = 0;
254 fDisplayDivY = 0;
255 fNDivX = fNDivY = 0;
257 fUseX = fUseY = kTRUE;
258}
259
260
261
262
263
264
265
266
267
268
269
270
271
int Int_t
bool Bool_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
float xmin
float ymin
float xmax
float ymax
#define gPad
Extension of TGaxis class optimised for KVGraph visualisation.
Definition KVGaxis.h:18
Extension of TGraph class with new draw option.
Definition KVGraph.h:16
Double_t * fDisplayDivX
Definition KVGraph.h:18
Int_t fNDivY
Definition KVGraph.h:20
Int_t fNDivX
Definition KVGraph.h:20
@ kNoCrop
Definition KVGraph.h:32
@ kCropOnGraph
Definition KVGraph.h:34
@ kCropOnDiv
Definition KVGraph.h:33
@ kCropMin
Definition KVGraph.h:35
Bool_t fUseX
Definition KVGraph.h:21
void HideAxis(TAxis *ax)
Definition KVGraph.cpp:217
Double_t * GetBinArray(Int_t &nbins, Bool_t xAxis=kTRUE)
Definition KVGraph.cpp:229
Double_t * fDisplayDivY
Definition KVGraph.h:19
virtual void init()
Definition KVGraph.cpp:251
KVGraph()
Default constructor.
Definition KVGraph.cpp:19
Bool_t fUseY
Definition KVGraph.h:21
void Draw(Option_t *chopt="")
Definition KVGraph.cpp:126
virtual ~KVGraph()
Destructor.
Definition KVGraph.cpp:117
Int_t fCropMode
Definition KVGraph.h:23
Strings used to represent a set of ranges of values.
Bool_t End(void) const
void Begin(void) const
void Add(Int_t)
Add value 'n' to the list.
Int_t Next(void) const
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
virtual void SetTitleSize(Float_t size=0.04)
virtual void SetTickLength(Float_t length=0.03)
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Double_t GetXmax() const
Double_t GetXmin() const
virtual void ImportAxisAttributes(TAxis *axis)
Double_t * GetY() const
Int_t GetN() const
Double_t * GetX() const
void Draw(Option_t *chopt="") override
TAxis * GetXaxis() const
TAxis * GetYaxis() const
virtual void Draw(Option_t *option="")
void ToLower()
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Double_t x[n]
const Int_t n
void init()
Double_t Min(Double_t a, Double_t b)
T MinElement(Long64_t n, const T *a)
T MaxElement(Long64_t n, const T *a)
Double_t Max(Double_t a, Double_t b)
ClassImp(TPyArg)