8#include "TGraphErrors.h"
13#include "TLegendEntry.h"
30 TGraphErrors*
graph = shape.
graph(samplingTimeUnits);
31 graph->SetTitle(title);
32 graph->SetMarkerStyle(20);
33 graph->SetMarkerSize(0.4);
34 graph->GetXaxis()->SetTitle(samplingTimeUnits ?
"Sample Index" :
"Time [ns]");
35 graph->GetYaxis()->SetTitle(
"ADC counts");
36 graph->GetYaxis()->SetTitleOffset(1.25);
43 TGraphErrors* g =
graph(*shape, title);
44 g->Draw(TString(drawAxes ?
"A" :
"") + gopt);
52 if (shapes.empty())
return false;
55 gStyle->SetTitleXOffset(1.0);
56 gStyle->SetPadTopMargin(0.13);
57 gStyle->SetPadBottomMargin(0.12);
58 gStyle->SetPadRightMargin(0.05);
59 gStyle->SetPadLeftMargin(0.12);
62 TLegend* legend =
nullptr;
64 legend =
new TLegend(0.45, 0.7, 0.8, 0.5,
"",
"NDC");
67 legend =
new TLegend(0.6, 0.85, 0.85, 0.85 - 0.1*shapes.size(),
"",
"NDC");
71 legend->SetFillColor(0);
72 legend->SetLineColor(0);
73 legend->SetShadowColor(0);
74 legend->SetTextSize(0.06);
75 legend->SetMargin(0.12);
86 l.DrawLatex(0.12,0.89, title);
93 if (legend && shapes.size() > 1) legend->Draw();
104 ref->SetName(
"reference");
105 ref->SetMarkerStyle(21);
106 ref->SetMarkerSize(0.3);
107 ref->SetMarkerColor(4);
108 ref->SetLineColor(4);
109 ref->SetLineWidth(3);
112 TGraphErrors* refBigMarkers =
new TGraphErrors(*
ref);
113 refBigMarkers->SetMarkerSize(1);
114 legend->AddEntry(refBigMarkers,
"Prediction",
"L");
115 ((TLegendEntry*)legend->GetListOfPrimitives()->Last())->SetTextColor(
ref->GetMarkerColor());
121 ref->SetName(
"reference");
124 TGraphErrors* ref2 =
graph(*refSamples);
125 ref->SetName(
"reference_samples");
126 ref2->SetMarkerSize(1);
134 bool first, TLegend* legend)
const
137 double yMin = 0, yMax = 0;
138 if (!
yAxisLimits(shapes, yMin, yMax))
return false;
139 cout <<
"Y limits = " << yMin <<
" " << yMax << endl;
140 for (
unsigned int i = 0; i < shapes.size(); i++) {
141 if (!shapes[i])
return false;
142 TGraphErrors*
data =
graph(*shapes[i], title);
143 data->SetMinimum(yMin);
144 data->SetMaximum(yMax);
145 data->SetName(Form(
"data%d", i));
147 data->GetXaxis()->SetLimits(-10, 800);
148 data->SetMarkerColor(2);
149 data->SetMarkerStyle(20);
150 data->SetMarkerSize(1.3);
154 data->Draw(
"P" + TString((first && i == 0) ?
"A" :
""));
155 if (!legend)
continue;
157 legend->AddEntry(
data,
"Data",
"P");
158 ((TLegendEntry*)legend->GetListOfPrimitives()->Last())->SetTextColor(
data->GetMarkerColor());
163 legend->AddEntry(
data, Form(
"#chi^{2}/n = %.2f/%-2d", c2, c2c.
nDof()),
"P");
164 ((TLegendEntry*)legend->GetListOfPrimitives()->Last())->SetTextColor(
data->GetMarkerColor());
174 std::vector<const AbsShape*> shapes;
175 shapes.push_back(shape);
184 for (
const AbsShape* shape : shapes)
204 if (!
data)
return false;
205 const int nColors = 5;
206 int colors[nColors] = { 2,4,6,8,14 };
208 data->SetMarkerColor(colors[
index%nColors]);
209 data->SetMarkerStyle(20 + ((
index/nColors) % 50));
210 data->SetMarkerSize(1);
219 for (
unsigned int i = 0; i < shapes.size(); i++) {
220 double sMin = shapes[i]->minValue(
true);
221 double sMax = shapes[i]->maxValue(
true);
222 if (sMin < yMin) yMin = sMin;
223 if (sMax > yMax) yMax = sMax;
const boost::regex ref(r_ef)
char data[hepevt_bytes_allocation_ATLAS]
TGraphErrors * graph(bool timeInUnitOfSamples=false) const
double chi2(const AbsShape &data, const AbsShape &reference, const ScaledErrorData *shapeError=0, int lwb=-1, int upb=-1)
unsigned int nDof() const
bool colorize(TGraphErrors *data, unsigned int index) const
bool drawData(const char *title, const std::vector< const AbsShape * > &shapes, const AbsShape *reference, bool first=true, TLegend *legend=0) const
bool yAxisLimits(const std::vector< const AbsShape * > &shapes, double &yMin, double &yMax) const
TGraphErrors * draw(const AbsShape *shape, const char *title="", bool drawAxes=true, const char *gopt="P") const
bool drawRef(const char *title, const AbsShape *reference, const AbsShape *refSamples, bool first=true, TLegend *legend=0) const
TGraphErrors * graph(const AbsShape &shape, const char *title="") const
bool drawAndDelete(const char *title, const std::vector< const AbsShape * > &shapes, const AbsShape *reference=0, const AbsShape *refSamples=0) const