67 TFile*
file = TFile::Open(fname,
"READ");
69 Error(
"DrawFits",
"Couldn't open %s", fname);
73 TList* forward =
static_cast<TList*
>(file->Get(
"ForwardResults"));
76 Error(
"DrawFits",
"Couldn't get forward list from %s", fname);
80 fitter =
static_cast<TList*
>(forward->FindObject(
"fmdEnergyFitter"));
82 Error(
"DrawFits",
"Couldn't get fitter folder");
116 gStyle->SetOptFit(111111);
117 gStyle->SetTitleFillColor(0);
118 gStyle->SetTitleBorderSize(0);
119 gStyle->SetTitleX(0);
120 gStyle->SetTitleY(.9);
121 gStyle->SetTitleW(.4);
122 gStyle->SetTitleH(.1);
123 gStyle->SetStatW(0.2);
124 gStyle->SetStatH(0.2);
125 gStyle->SetStatColor(0);
126 gStyle->SetStatBorderSize(1);
127 gStyle->SetOptTitle(0);
128 gStyle->SetOptFit(1111);
129 gStyle->SetStatW(0.3);
130 gStyle->SetStatH(0.15);
131 gStyle->SetStatColor(0);
132 gStyle->SetStatBorderSize(1);
141 canvas =
new TCanvas(
"c",
"C", w, h);
145 canvas->SetBottomMargin(0.15);
159 TIter next(stack->GetHists());
161 while ((o = next())) {
163 if (name.Contains(
"_t_"))
164 stack->RecursiveRemove(o);
183 TObject* o = list->FindObject(name);
185 Warning(
"AddToStack",
"Object %s not found in %s", name,
190 THStack* toAdd =
static_cast<THStack*
>(o);
192 Info(
"AddToStack",
"Adding %s to stacks", name);
208 bool onlySummary=
true)
211 Error(
"DrawFits",
"File not opened");
215 Error(
"DrawFits",
"No canvas");
228 Int_t baseA = stacks.GetEntries()+1;
231 if (!
AddToStack(&stacks, fitter, Form(
"a%d",i++)))
235 Int_t nMax = stacks.GetEntries();
236 for (i = nMax-1; i >= baseA; i--) {
237 THStack*
stack =
static_cast<THStack*
>(stacks.At(i));
238 TIter nextH(stack->GetHists());
241 while ((hist = static_cast<TH1*>(nextH())))
242 if (hist->Integral() > 0) hasData = kTRUE;
243 if (!hasData) nMax--;
246 canvas->SetRightMargin(0.01);
247 canvas->SetTopMargin(0.01);
248 Int_t nL = (nMax+1) / 2;
257 canvas->Divide(nX, nY, 0.1, 0, 0);
263 while ((stack = static_cast<THStack*>(next()))) {
265 Int_t ipad = 1+i/nL + 2 * (i % nL);
266 Info(
"DrawSummary",
"cd'ing to canvas %d for %s", ipad,
268 TVirtualPad* p =
canvas->cd(ipad);
269 p->SetLeftMargin(.6/nL);
270 p->SetTopMargin(.01);
271 p->SetRightMargin(.01);
275 stack->Draw(
"nostack");
276 stack->GetHistogram()->SetYTitle(stack->GetTitle());
277 stack->GetHistogram()->SetXTitle(
"#eta");
279 TAxis* yaxis = stack->GetHistogram()->GetYaxis();
280 if (i == 0) yaxis->SetRangeUser(0,20);
281 if (i == 1) stack->SetMaximum(1);
282 if (i == 2) stack->SetMaximum(1);
283 if (i == 3) stack->SetMaximum(0.1);
284 if (i == 4 || i == 5) stack->SetMaximum(0.5);
285 if (i == 7) stack->SetMaximum(0.5);
286 if (i == 0) p->SetLogy();
287 yaxis->SetTitleSize(0.3/nL);
288 yaxis->SetLabelSize(0.08);
289 yaxis->SetTitleOffset(2.5/nL);
290 yaxis->SetNdivisions(5);
291 yaxis->SetTitleFont(42);
292 yaxis->SetLabelFont(42);
293 yaxis->SetDecimals();
295 TAxis* xaxis = stack->GetHistogram()->GetXaxis();
296 xaxis->SetTitleSize(0.3/nL);
297 xaxis->SetLabelSize(0.08);
298 xaxis->SetTitleOffset(2./nL);
299 xaxis->SetNdivisions(10);
300 xaxis->SetTitleFont(42);
301 xaxis->SetLabelFont(42);
302 xaxis->SetDecimals();
305 stack->Draw(
"nostack");
310 canvas->SaveAs(
"fit_results.png");
325 void DrawRings(
const char* fname=
"AnalysisResults.root")
328 Error(
"DrawFits",
"File not opened");
332 Error(
"DrawFits",
"No canvas");
340 const char*
dets[] = {
"FMD1I",
"FMD2I",
"FMD2O",
"FMD3I",
"FMD3O", 0 };
341 for (
Int_t i = 0; i < 5; i++) {
342 TVirtualPad* p =
canvas->cd(i+1);
347 TList* d =
static_cast<TList*
>(fitter->FindObject(dets[i]));
349 Warning(
"DrawFits",
"List %s not found", dets[i]);
352 TH1* edist =
static_cast<TH1*
>(d->FindObject(Form(
"%s_edist", dets[i])));
354 Warning(
"DrawFits",
"Histogram %s_edist not found", dets[i]);
359 TIter nextF(edist->GetListOfFunctions());
360 while ((f = static_cast<TF1*>(nextF()))) {
362 Int_t ndf = f->GetNDF();
363 Printf(
"%s %s:\n Range: %f-%f\n" 364 "chi^2/ndf= %f / %d = %f",
365 edist->GetName(), f->GetName(),
366 f->GetXmin(), f->GetXmax(), chi2, ndf,
367 (ndf > 0) ? chi2/ndf : 0);
368 for (
Int_t j = 0; j < f->GetNpar(); j++) {
369 Printf(
" %-20s : %9.4f +/- %9.4f",
370 f->GetParName(j), f->GetParameter(j), f->GetParError(j));
392 Error(
"DrawFits",
"File not opened");
396 Error(
"DrawFits",
"No canvas");
405 Char_t r = (q == 0 ?
'I' :
'O');
408 static_cast<TList*
>(fitter->FindObject(Form(
"FMD%d%c",d,r)));
410 Error(
"PrintFits",
"Couldn't get ring FMD%d%c", d,r);
413 TList* edists =
static_cast<TList*
>(ring->FindObject(
"EDists"));
415 Error(
"PrintFits",
"Couldn't get EDists list for FMD%d%c", d,r);
419 Info(
"DrawEtaBins",
"Drawing for FMD%d%c", d, r);
424 while ((dist = static_cast<TH1*>(next()))) {
425 Info(
"DrawEtaBins",
"FMD%d%c: %s", d, r, dist->GetName());
429 canvas->Print(
pdfName, Form(
"Title:FMD%d%c page %2d", d,r,j));
431 TVirtualPad* p =
canvas->cd(++i);
432 p->SetFillColor(kWhite);
436 dist->SetMaximum(15);
442 for (; i <= 4; i++) {
443 TVirtualPad* p =
canvas->cd(i);
445 p->SetFillColor(kMagenta-3);
489 DrawAnaELoss(
const char* fname=
"forward_eloss.root",
bool onlySummary=
true)
492 Error(
"DrawFits",
"No canvas");
497 if (onlySummary)
return;
void CleanStack(THStack *stack)
void DrawEtaBins(const char *fname="AnalysisResults.root")
THStack * AddToStack(TList *stacks, TList *list, const char *name)
TList * CheckFitter(const char *fname="AnalysisResults.root")
void DrawRings(const char *fname="AnalysisResults.root")
void DrawAnaELoss(const char *fname="forward_eloss.root", bool onlySummary=true)
TFile * file
TList with histograms for a given trigger.
void DrawSummary(const char *fname="forward_eloss.root", bool onlySummary=true)
TList * OpenFile(const char *fname)