NAGASH 0.9.8
Next Generation Analysis System
Loading...
Searching...
No Matches
NGFigure.h
Go to the documentation of this file.
1
4//***************************************************************************************
5
6#pragma once
7
8#include "NAGASH/Global.h"
9#include "NAGASH/HistTool.h"
10#include "NAGASH/Tool.h"
11#include "NAGASH/Uncertainty.h"
12
13namespace NAGASH
14{
15 class NGFigure : public Tool
16 {
17 private:
18 TString SaveFileName;
19
20 bool isFor_Hist2D = false;
21 TH2D *Hist2D = nullptr;
22 TH2D *Matrix_Save = nullptr;
23 TH2D *Text2D = nullptr;
24 int asmb = 3;
25 bool DoMatrix = false;
26 bool DoTextOnly = false;
27 bool DoColorOnly = false;
32 bool isNeed_SetBinNameX = false;
33 bool isNeed_SetBinNameY = false;
34 std::vector<TString> Name_X_Bin;
35 std::vector<TString> Name_Y_Bin;
36
37 TCanvas *figure = nullptr;
40 TPad *Main_Pad = nullptr;
41 TPad *Sub_Pad = nullptr;
42 TLegend *Main_Legend = nullptr;
43 TString HeaderName = "ATLAS Internal";
44 bool ShowChi2 = false;
45
46 TAxis *Main_Pad_Z_Axis = nullptr;
47 TAxis *Main_Pad_Y_Axis = nullptr;
48 TAxis *Main_Pad_X_Axis = nullptr;
49 TAxis *Sub_Pad_Y_Axis = nullptr;
50 TAxis *Sub_Pad_X_Axis = nullptr;
51
52 bool isSet_X_Range = false;
55
56 bool isSet_Norm_Range = false;
57 bool isNeed_Norm = true;
58 bool isFixed_Norm = false;
59 bool isExtern_Norm = false;
60 bool isUnity_Norm = false;
64
65 bool isSet_Mode = false;
66 int Style_Index = 0;
67
68 double LeftPercentage = 0.07;
69
70 // For Main Pad
72 std::vector<TH1D *> Main_Hist;
73 std::vector<double> ExternNorm_Factor;
74 std::vector<bool> isNeed_ExternNorm;
75 std::vector<TString> LegendName;
76 std::vector<int> RebinNum;
77
78 std::vector<TGraph *> Main_Graph;
79 std::vector<TString> LegendName_Graph;
80 std::vector<TString> DrawOption_Graph;
81 std::vector<int> Graph_Marker_Style;
82 std::vector<int> Graph_Marker_Size;
83 std::vector<int> Graph_Marker_Color;
84 std::vector<int> Graph_Line_Style;
85 std::vector<int> Graph_Line_Width;
86 std::vector<int> Graph_Line_Color;
87
88 TH1D *Total_Hist_With_Error = nullptr;
89 TH1D *Total_Hist = nullptr;
90 TH1D *Empty_Hist = nullptr;
91 TH1D *Empty_Hist_Sub = nullptr;
92
93 THStack *Main_Stack = nullptr;
94 THStack *Sub_Stack = nullptr;
95
102
103 double *X_Binning = nullptr;
105
110
116
122
126
130
131 bool isSet_Y_Range_Main = false;
134
135 bool isSet_Z_Range_Main = false;
138
139 bool NeedGridX_Main = true;
140 bool NeedGridY_Main = true;
141
145
147
148 // For Sub Pad
150 std::vector<TH1D *> Sub_Hist;
151 std::vector<bool> isExtern_Sub_Hist;
152
156
157 bool isSet_Y_Range_Sub = false;
160
165
171
177
178 bool NeedGridX_Sub = true;
179 bool NeedGridY_Sub = true;
180
181 bool DoStagger = false;
182 double *Stagger_X_Binning = nullptr;
184 std::vector<TH1D *> Stagger_Save_Main_Hist;
185 std::vector<TH1D *> Stagger_Save_Sub_Hist;
186 bool DoSeparate = false;
187
188 bool DoMainLogY = false;
189
190 bool DoLegend = true;
191
192 char name[200];
193
194 // auxiliary tools
197
198 public:
199 NGFigure(std::shared_ptr<MSGTool> msg, const char *FigureName, const char *TitleX, const char *TitleY);
200 void SetMode(const char *main_mode_tag, const char *sub_mode_tag = "UNKNOWN", const char *SubTitleY = "UNKNOWN");
201 void SetInputHist(const char *filename, const char *histname, const char *legendname, int rebinnum = -1, double scale = 1);
202 void SetInputHist(TFile *infile, const char *histname, const char *legendname, int rebinnum = -1, double scale = 1);
203 void SetInputHist(TH1D *hist, const char *legendnamem, int rebinnum = -1, double scale = 1);
204 void SetInputHist2D(const char *filename, const char *histname, const char *legendname, int rebinnumx = -1, int rebinnumy = -1);
205 void SetInputHist2D(TH2D *hist, const char *legendnamem, int rebinnumx = -1, int rebinnumy = -1);
206 void SetInputHist2D(TFile *infile, const char *histname, const char *legendname, int rebinnumx = -1, int rebinnumy = -1);
207 void SetInputGraph(TGraph *graph, const char *legendname, const char *drawoption);
208 void SetGraphMarker(int marker_style, int marker_size, int marker_color);
209 void SetGraphLine(int line_style, int line_width, int line_color);
210 void SetXRange(double min, double max);
211 void SetMainYRange(double min, double max);
212 void SetMainZRange(double min, double max);
213 void SetSubYRange(double min, double max);
214 void SetNormRange(double min, double max);
215 void SetGridX(bool grid = true);
216 void SetGridY(bool grid = true);
217 void SetSubGridX(bool grid = true);
218 void SetSubGridY(bool grid = true);
219 void SetMainGridX(bool grid = true);
220 void SetMainGridY(bool grid = true);
221 void SetGrid(bool grid = true);
222 void SetMatrixStyle(bool domatrix = true);
223 void Set2DTextOnly(bool dotextonly = true);
224 void Set2DColorOnly(bool docoloronly = true);
225 void SetAsmble(int index);
226 void SetStyleIndex(int index);
227 void SetLeftPercentage(double percent);
228 void SetStagger(bool dostagger = true);
229 void SetFixedNormFactor(bool fix = true, double scale = -1);
230 void SetHeaderName(const char *header);
231 void SetShowChi2(bool show = true);
232 void SetXBinName(const char *binname);
233 void SetYBinName(const char *binname);
234 void SeparateUncertainty(bool doseparate = true);
235 void SetNotNorm();
236 void SetMainLogY(bool dosetlogy = true);
237 void SetLegendColumn(int num);
238 void SetLegend(bool);
239
240 void DrawFigure(); // Main Code
241 bool Check();
242 bool RebinHist();
243 bool Normalize();
244 bool ConfigParameters();
245 bool DefinePad();
246 bool DrawHist();
247 bool DrawHStack();
248 bool DrawHist2D();
249 bool HackStagger();
250
251 void SetMargin();
252 void SetAxis();
253 void SetHist();
254 bool SaveHist();
255
256 ~NGFigure();
257 };
258}
Some global definitions.
provide tools for manipulating ROOT histograms
Definition HistTool.h:17
Next Generation Figure Package, now replaced by NAGASH::FigureTool.
Definition NGFigure.h:16
TPad * Main_Pad
Definition NGFigure.h:40
void SetSubYRange(double min, double max)
double X_Title_Offset_Main
Definition NGFigure.h:115
std::vector< TString > Name_X_Bin
Definition NGFigure.h:34
std::vector< TString > LegendName_Graph
Definition NGFigure.h:79
void SetNormRange(double min, double max)
TLegend * Main_Legend
Definition NGFigure.h:42
double Max_Y_Range_Main
Definition NGFigure.h:132
TH1D * Total_Hist_With_Error
Definition NGFigure.h:88
double X_Title_Size_Sub
Definition NGFigure.h:168
void Set2DTextOnly(bool dotextonly=true)
bool Main_Pad_isNeeded
Definition NGFigure.h:38
void SetLeftPercentage(double percent)
double Max_Y_Range_Sub
Definition NGFigure.h:158
void SetAsmble(int index)
double BottomMargin_Main
Definition NGFigure.h:109
bool ConfigParameters()
Definition NGFigure.cxx:594
double X_Label_Size_Sub
Definition NGFigure.h:166
TH1D * Empty_Hist_Sub
Definition NGFigure.h:91
TH2D * Matrix_Save
Definition NGFigure.h:22
double X_Title_Size_Main
Definition NGFigure.h:113
double * X_Binning
Definition NGFigure.h:103
double Min_X_Range
Definition NGFigure.h:54
THStack * Sub_Stack
Definition NGFigure.h:94
void SetMainGridY(bool grid=true)
std::vector< double > ExternNorm_Factor
Definition NGFigure.h:73
void SetMainLogY(bool dosetlogy=true)
void SetHeaderName(const char *header)
TString HeaderName
Definition NGFigure.h:43
double * Stagger_X_Binning
Definition NGFigure.h:182
double Norm_Factor
Definition NGFigure.h:63
double Y_Title_Font_Main
Definition NGFigure.h:120
void SetGraphLine(int line_style, int line_width, int line_color)
Definition NGFigure.cxx:344
bool isSet_Norm_Range
Definition NGFigure.h:56
TCanvas * figure
Definition NGFigure.h:37
TAxis * Sub_Pad_Y_Axis
Definition NGFigure.h:49
bool isSet_Y_Range_Main
Definition NGFigure.h:131
double Min_Norm_Range
Definition NGFigure.h:62
double RightMargin_Main
Definition NGFigure.h:106
double Z_Label_Offset_Main
Definition NGFigure.h:125
TAxis * Main_Pad_Y_Axis
Definition NGFigure.h:47
double Z_Label_Size_Main
Definition NGFigure.h:123
THStack * Main_Stack
Definition NGFigure.h:93
double Y_Title_Offset_Main
Definition NGFigure.h:121
void SetGridX(bool grid=true)
std::vector< int > Graph_Line_Style
Definition NGFigure.h:84
void SetGridY(bool grid=true)
double TopMargin_Sub
Definition NGFigure.h:163
TString Y_Title_Sub_Pad
Definition NGFigure.h:153
double LeftMargin_Main
Definition NGFigure.h:107
bool isNeed_X_Title_Sub_Pad
Definition NGFigure.h:155
double Y_Label_Font_Main
Definition NGFigure.h:118
bool isNeed_X_Title_Main_Pad
Definition NGFigure.h:129
TH1D * Empty_Hist
Definition NGFigure.h:90
TString Mode_Tag_Sub
Definition NGFigure.h:149
bool isSet_Y_Range_Sub
Definition NGFigure.h:157
void SetMainGridX(bool grid=true)
TString Mode_Tag_Main
Definition NGFigure.h:71
double Y_Title_Size_Main
Definition NGFigure.h:119
void SetXBinName(const char *binname)
std::vector< TH1D * > Stagger_Save_Main_Hist
Definition NGFigure.h:184
bool isSet_Z_Range_Main
Definition NGFigure.h:135
double Min_Y_Range_Main
Definition NGFigure.h:133
std::vector< bool > isNeed_ExternNorm
Definition NGFigure.h:74
int Hist_Fill_Style_First
Definition NGFigure.h:101
size_t Num_Main_Hist
Definition NGFigure.h:146
double Max_X_Range
Definition NGFigure.h:53
void SetStyleIndex(int index)
void SetMode(const char *main_mode_tag, const char *sub_mode_tag="UNKNOWN", const char *SubTitleY="UNKNOWN")
The mode of the figure.
Definition NGFigure.cxx:33
std::vector< int > Graph_Marker_Style
Definition NGFigure.h:81
std::vector< int > Graph_Line_Width
Definition NGFigure.h:85
bool Sub_Pad_isNeeded
Definition NGFigure.h:39
double Max_Norm_Range
Definition NGFigure.h:61
std::vector< TH1D * > Stagger_Save_Sub_Hist
Definition NGFigure.h:185
void SetLegend(bool)
double LeftPercentage
Definition NGFigure.h:68
double X_Title_Font_Main
Definition NGFigure.h:114
TAxis * Main_Pad_X_Axis
Definition NGFigure.h:48
double Z_Label_Font_Main
Definition NGFigure.h:124
TString Y_Title_Main_Pad
Definition NGFigure.h:127
void Set2DColorOnly(bool docoloronly=true)
double Max_Z_Range_Main
Definition NGFigure.h:136
void SetYBinName(const char *binname)
double Y_Label_Size_Sub
Definition NGFigure.h:172
void SetInputHist(const char *filename, const char *histname, const char *legendname, int rebinnum=-1, double scale=1)
Set input histogram.
Definition NGFigure.cxx:66
void SetInputGraph(TGraph *graph, const char *legendname, const char *drawoption)
Set input graph.
Definition NGFigure.cxx:253
void SetSubGridX(bool grid=true)
TString SaveFileName
Definition NGFigure.h:18
std::vector< TH1D * > Main_Hist
Definition NGFigure.h:72
std::vector< TGraph * > Main_Graph
Definition NGFigure.h:78
double Y_Title_Size_Sub
Definition NGFigure.h:174
TAxis * Sub_Pad_X_Axis
Definition NGFigure.h:50
TH1D * Total_Hist
Definition NGFigure.h:89
TAxis * Main_Pad_Z_Axis
Definition NGFigure.h:46
TString X_Title_Sub_Pad
Definition NGFigure.h:154
double RightMargin_Sub
Definition NGFigure.h:161
void SetLegendColumn(int num)
double X_Label_Font_Sub
Definition NGFigure.h:167
double TopMargin_Main
Definition NGFigure.h:108
std::vector< TString > LegendName
Definition NGFigure.h:75
void SetStagger(bool dostagger=true)
void SetGrid(bool grid=true)
std::vector< bool > isExtern_Sub_Hist
Definition NGFigure.h:151
bool isNeed_SetBinNameX
Definition NGFigure.h:32
double X_Title_Font_Sub
Definition NGFigure.h:169
void SetMainZRange(double min, double max)
double Legend_Text_Size
Definition NGFigure.h:142
double BottomMargin_Sub
Definition NGFigure.h:164
double X_Label_Font_Main
Definition NGFigure.h:112
bool isNeed_SetBinNameY
Definition NGFigure.h:33
double X_Title_Offset_Sub
Definition NGFigure.h:170
TString X_Title_Main_Pad
Definition NGFigure.h:128
double X_Label_Size_Main
Definition NGFigure.h:111
double Y_Label_Font_Sub
Definition NGFigure.h:173
void SetGraphMarker(int marker_style, int marker_size, int marker_color)
Definition NGFigure.cxx:328
std::vector< int > RebinNum
Definition NGFigure.h:76
void SetMatrixStyle(bool domatrix=true)
std::vector< TH1D * > Sub_Hist
Definition NGFigure.h:150
std::vector< int > Graph_Marker_Size
Definition NGFigure.h:82
Uncertainty unc
Definition NGFigure.h:195
void SeparateUncertainty(bool doseparate=true)
double Y_Title_Font_Sub
Definition NGFigure.h:175
std::vector< int > Graph_Marker_Color
Definition NGFigure.h:83
double Min_Y_Range_Sub
Definition NGFigure.h:159
char name[200]
Definition NGFigure.h:192
void SetFixedNormFactor(bool fix=true, double scale=-1)
double Y_Title_Offset_Sub
Definition NGFigure.h:176
double Y_Label_Size_Main
Definition NGFigure.h:117
void SetShowChi2(bool show=true)
double Min_Z_Range_Main
Definition NGFigure.h:137
void SetInputHist2D(const char *filename, const char *histname, const char *legendname, int rebinnumx=-1, int rebinnumy=-1)
Set input 2D histogram.
Definition NGFigure.cxx:168
std::vector< int > Graph_Line_Color
Definition NGFigure.h:86
void SetSubGridY(bool grid=true)
void SetMainYRange(double min, double max)
double LeftMargin_Sub
Definition NGFigure.h:162
std::vector< TString > DrawOption_Graph
Definition NGFigure.h:80
int Sub_Fill_Style_First
Definition NGFigure.h:100
void SetXRange(double min, double max)
Draw range of the xaxis.
Definition NGFigure.cxx:46
std::vector< TString > Name_Y_Bin
Definition NGFigure.h:35
HistTool histtool
Definition NGFigure.h:196
Provide interface for all tools in NAGASH.
Definition Tool.h:72
std::shared_ptr< MSGTool > msg
Definition Tool.h:88
Provide static functions for calculating uncertainties.
Definition Uncertainty.h:17