44 TFile*
file = TFile::Open(filename,
"READ");
46 Error(
"Run",
"Failed to open \"%s\"", filename.Data());
57 pdfName.ReplaceAll(
".root",
".pdf");
92 Warning(
"",
"No CentralCorrSums found");
97 Warning(
"",
"No CentralCorrResults found");
113 TLatex* ltx =
new TLatex(.5, y,
"ESD+MC #rightarrow Corrections");
114 ltx->SetTextSize(0.07);
115 ltx->SetTextFont(62);
116 ltx->SetTextAlign(22);
143 TString folder = TString::Format(
"vtx%+05.1f_%+05.1f",
144 axis.GetBinLowEdge(bin),
145 axis.GetBinUpEdge(bin));
146 folder.ReplaceAll(
".",
"d");
147 folder.ReplaceAll(
"+",
"p");
148 folder.ReplaceAll(
"-",
"m");
152 Warning(
"GetVertexList",
"List %s not found", folder.Data());
160 if (!vtxHist)
return;
162 Info(
"DrawVertexBins",
"Drawing %s vertex bins - %d bins",
163 forward ?
"Forward" :
"Central", vtxHist->GetNbinsX());
165 TAxis* vtxAxis = vtxHist->GetXaxis();
166 for (
Int_t i = 1; i <= vtxAxis->GetNbins(); i++) {
167 Info(
"DrawVertexBins",
" - Bin %d (%+5.1f - %+5.1f)", i,
168 vtxAxis->GetBinLowEdge(i), vtxAxis->GetBinUpEdge(i));
175 for (
UShort_t q = 0; q < (d == 1 ? 1 : 2); q++) {
176 Char_t r = q == 0 ?
'I' :
'O';
183 fBody->Divide(1,3, 0, 0);
189 PrintCanvas(Form(
"%s sums - IP_{z} bin %+5.1f - %+5.1f",
190 (forward ?
"Forward" :
"Central"),
191 vtxAxis->GetBinLowEdge(i),
192 vtxAxis->GetBinUpEdge(i)));
198 Info(
"DrawResults",
"Drawing resulting %s vertex bins",
199 forward ?
"Forward" :
"Central");
201 if (!vtxHist)
return;
203 TAxis* vtxAxis = vtxHist->GetXaxis();
204 for (
Int_t i = 1; i <= vtxAxis->GetNbins(); i++) {
205 Info(
"DrawResults",
" - Bin %d (%+5.1f - %+5.1f)", i,
206 vtxAxis->GetBinLowEdge(i), vtxAxis->GetBinUpEdge(i));
211 THStack* all =
new THStack(
"all",
212 "2^{nd} correction averaged over #phi");
215 for (
UShort_t q = 0; q < (d == 1 ? 1 : 2); q++) {
216 Char_t r = q == 0 ?
'I' :
'O';
220 TH2* h =
GetH2(c, Form(
"FMD%d%c_vtxbin%03d",d,r,i));
225 TH1* hh = h->ProjectionX();
226 hh->Scale(1./ h->GetNbinsY());
230 hh->SetFillStyle(3001);
231 hh->SetTitle(Form(
"#LT%s#GT", hh->GetTitle()));
233 all->Add(hh,
"hist e");
235 TVirtualPad* p =
RingPad(0,
'0');
236 p->SetBottomMargin(0.10);
237 p->SetLeftMargin(0.10);
238 p->SetRightMargin(0.05);
243 fBody->Divide(2,4,0,0);
245 TH2* secMapAlt =
GetH2(c,
"secMapEff");
246 if (!secMapAlt) secMapAlt =
GetH2(c,
"secMapHit");
249 if (!accAlt) accAlt =
GetH1(c,
"accHit");
251 TH1* secMapProj = secMap->ProjectionX();
252 secMapProj->Scale(1./ secMap->GetNbinsY());
253 secMapProj->Divide(acc);
254 secMapProj->SetFillColor(kRed+1);
255 secMapProj->SetFillStyle(3001);
256 secMapProj->SetTitle(Form(
"#LT%s#GT/Acceptance", secMap->GetTitle()));
258 TH1* secMapAltProj = secMapAlt->ProjectionX();
259 secMapAltProj->Scale(1./ secMapAlt->GetNbinsY());
260 secMapAltProj->Divide(accAlt);
261 secMapAltProj->SetFillColor(kBlue+1);
262 secMapAltProj->SetFillStyle(3001);
263 secMapAltProj->SetTitle(Form(
"#LT%s#GT/Acceptance",
264 secMapAlt->GetTitle()));
266 Double_t secMapMax = TMath::Max(secMap->GetMaximum(),
267 secMapAlt->GetMaximum());
268 secMap->SetMaximum(secMapMax);
269 secMapAlt->SetMaximum(secMapMax);
271 Double_t secMapProjMax = TMath::Max(secMapProj->GetMaximum(),
272 secMapAltProj->GetMaximum());
273 secMapProj->SetMaximum(secMapProjMax);
274 secMapAltProj->SetMaximum(secMapProjMax);
276 acc->SetFillColor(kRed+1);
277 acc->SetFillStyle(3001);
278 accAlt->SetFillColor(kBlue+1);
279 accAlt->SetFillStyle(3001);
281 Double_t accMax = TMath::Max(acc->GetMaximum(),accAlt->GetMaximum());
282 acc->SetMaximum(accMax);
283 accAlt->SetMaximum(accMax);
285 if (secMap->GetMean(1) > 0 && secMap->GetMean(2) > 0)
287 if (secMapAlt->GetMean(1) > 0 && secMapAlt->GetMean(2) > 0)
290 TVirtualPad* p =
fBody;
291 TVirtualPad* pp = p->cd(1);
292 TVirtualPad* ppp = p->cd(3);
293 ppp->SetRightMargin(pp->GetRightMargin());
297 ppp->SetRightMargin(pp->GetRightMargin());
301 pp->SetLeftMargin(0.10);
303 ppp->SetRightMargin(pp->GetRightMargin());
304 ppp->SetLeftMargin(0.10);
308 pp->SetLeftMargin(0.10);
310 ppp->SetRightMargin(pp->GetRightMargin());
311 ppp->SetLeftMargin(0.10);
314 TH2* diag =
GetH2(c,
"diagnostics");
315 if (diag->GetMean(1) > 0 && diag->GetMean(2) > 0)
318 if (secMap->GetMean(1) > 0 && secMap->GetMean(2) > 0 &&
319 secMapAlt->GetMean(1) > 0 && secMapAlt->GetMean(2) > 0) {
320 TH2* ratio =
static_cast<TH2*
>(secMap->Clone(
"ratio"));
321 ratio->Add(secMapAlt, -1);
322 ratio->Divide(secMapAlt);
323 ratio->SetTitle(
"Relative difference between maps");
324 ratio->SetZTitle(
"#frac{S - S_{alt}}{S_{alt}}");
327 pp->SetLeftMargin(0.10);
331 PrintCanvas(Form(
"%s results - IP_{z} bin %+5.1f - %+5.1f",
332 (forward ?
"Forward" :
"Central"),
333 vtxAxis->GetBinLowEdge(i),
334 vtxAxis->GetBinUpEdge(i)));
virtual ~SummaryMCCorrDrawer()
Base class for classes to draw summaries.
void DrawResults(Bool_t forward)
static TH1 * GetH1(const TObject *parent, const TString &name, Bool_t verb=true)
static TH2 * GetH2(const TObject *parent, const TString &name, Bool_t verb=true)
void DrawInRingPad(UShort_t d, Char_t r, TObject *h, Option_t *opts="", UShort_t flags=0x0, const char *title="")
void DrawTrackDensity(TCollection *parent, const char *folderName="mcTrackDensity")
void MakeChapter(const TString &title)
static void SysString(UShort_t sys, TString &str)
void DrawVertexBins(Bool_t forward)
void DrawTitlePage(TFile *file)
static Bool_t GetParameter(const TObject *c, const TString &name, Short_t &value, Bool_t verb=true)
TCollection * GetVertexList(TCollection *parent, const TAxis &axis, Int_t bin)
void Run(const char *fname, UShort_t what=kNormal)
void CreateCanvas(const TString &pname, Bool_t landscape=false, Bool_t pdf=true, Bool_t useTop=true)
void DrawParameter(Double_t &y, const TString &name, const TString &value, Double_t size=0)
void PrintCanvas(const TString &title, Float_t size=.7)
static void SNNString(UShort_t sNN, TString &str)
virtual void DrawEventInspector(TCollection *parent)
void DivideForRings(Bool_t commonX, Bool_t commonY)
TFile * file
TList with histograms for a given trigger.
TObject * DrawInPad(TVirtualPad *c, Int_t padNo, TObject *h, Option_t *opts="", UInt_t flags=0x0, const char *title="")
TVirtualPad * RingPad(UShort_t d, Char_t r) const
static TCollection * GetCollection(const TObject *parent, const TString &name, Bool_t verb=true)
static Color_t RingColor(UShort_t d, Char_t r)