15 const char* n1=0,
const char* n2=0,
21 gROOT->Macro(
"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
22 gROOT->LoadMacro(
"$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/corrs/CompareCorrs.C");
28 GetObjects(
"AliFMDCorrSecondaryMap", fn1, fn2, o1, o2);
29 if (!o1 || !o2)
return;
35 Canvas*
c =
new Canvas(
"secMapComparison",
"Ratio of secondary maps", n1, n2);
43 Char_t r = (q == 0 ?
'I' :
'O');
45 Color_t col = ((d == 1 ? kRed : (d == 2 ? kGreen : kBlue))
46 + ((r ==
'I' || r ==
'i') ? -3 : -9));
49 c->
Clear(nVtx, d, r,
true);
52 TVirtualPad* p = c->
cd(v);
62 Error(
"CompareSecMaps",
63 "Map for FMD%d%c, vtxbin %3d not found in first",
68 Error(
"CompareSecMaps",
69 "Map for FMD%d%c, vtxbin %3d not found in second",
77 static_cast<TH2*
>(h1->Clone(Form(
"tmpFMD%d%c_%3d",d,r,v)));
78 ratio->SetName(Form(
"FMD%d%c_vtx%03d_ratio", d, r, v));
79 ratio->SetTitle(Form(
"%+5.1f<v_{z}<%-+5.1f", vl, vh));
82 ratio->SetDirectory(0);
83 ratio->SetZTitle(
"ratio");
84 ratio->GetXaxis()->SetTitleSize(0.01/p->GetHNDC());
85 ratio->GetXaxis()->SetLabelSize(0.01/p->GetHNDC());
86 ratio->GetYaxis()->SetTitleSize(0.01/p->GetHNDC());
87 ratio->GetYaxis()->SetLabelSize(0.01/p->GetHNDC());
89 if (ratio->GetMaximum()-ratio->GetMinimum() > 10)
93 hists.AddAt(ratio, v-1);
98 c->
Clear(nVtx, d, r,
true);
100 TVirtualPad* p = c->
cd(v);
105 TH2* hist =
static_cast<TH2*
>(hists.At(v-1));
106 TH1* prof = hist->ProjectionX();
107 prof->SetDirectory(0);
108 prof->Scale(1. / nS);
111 prof->SetMinimum(0.8);
112 prof->SetMaximum(1.2);
113 prof->SetLineColor(col);
114 prof->SetMarkerColor(col);
115 prof->SetMarkerStyle(20);
116 prof->GetXaxis()->SetTitleSize(0.01/p->GetHNDC());
117 prof->GetXaxis()->SetLabelSize(0.01/p->GetHNDC());
118 prof->GetYaxis()->SetTitleSize(0.01/p->GetHNDC());
119 prof->GetYaxis()->SetLabelSize(0.01/p->GetHNDC());
121 THStack*
stack =
static_cast<THStack*
>(allVtx->At(v-1));
123 stack =
new THStack(prof->GetName(), prof->GetTitle());
124 stack->SetMinimum(prof->GetMinimum());
125 stack->SetMaximum(prof->GetMaximum());
126 allVtx->AddAt(stack, v-1);
128 stack->Add(static_cast<TH1*>(prof->Clone()));
131 prof->Fit(
"pol0",
"Q");
133 TF1* f = prof->GetFunction(
"pol0");
136 f->SetLineColor(kBlack);
137 Double_t chi2nu = (f->GetNDF() != 0 ?
138 f->GetChisquare() / f->GetNDF() : 0);
139 Double_t dist = TMath::Abs(1 - f->GetParameter(0));
142 TLatex* l =
new TLatex(0.5, ly,
143 Form(
"A = %f #pm %f",
144 f->GetParameter(0), f->GetParError(0)));
148 ly -= 1.1*l->GetTextSize();
149 l->DrawLatex(0.5, ly, Form(
"|1 - A| = %f %s #deltaA",
150 dist, dist <= f->GetParError(0) ?
152 ly -= 1.1*l->GetTextSize();
153 l->DrawLatex(0.5, ly, Form(
"#chi^2/NDF = %f / %d = %f",
154 f->GetChisquare(), f->GetNDF(), chi2nu));
156 TLine* l1 =
new TLine(prof->GetXaxis()->GetXmin(), 1,
157 prof->GetXaxis()->GetXmax(), 1);
158 l1->SetLineColor(kGray+2);
164 c->
Print(d, r,
"profiles");
167 c->
Clear(nVtx, 0,
'*',
true);
168 for (
UShort_t v=1; v <= nVtx; v++) {
169 TVirtualPad* p = c->
cd(v);
172 THStack*
stack =
static_cast<THStack*
>(allVtx->At(v-1));
173 if (!stack)
continue;
174 stack->Draw(
"nostack");
175 TH1* h = stack->GetHistogram();
177 TLine* l1 =
new TLine(h->GetXaxis()->GetXmin(), 1,
178 h->GetXaxis()->GetXmax(), 1);
179 l1->SetLineColor(kGray+2);
183 c->
Print(0,
'*',
"summary");
TH2D * GetCorrection(UShort_t d, Char_t r, Double_t v) const
const TAxis & GetVertexAxis() const
void Print(UShort_t d, Char_t r, const char *extra="")
TPad * Clear(UShort_t nPad, UShort_t d, Char_t r, Bool_t flush=false)
TVirtualPad * cd(Int_t i)
void CompareSecMaps(const char *fn1, const char *fn2, const char *n1=0, const char *n2=0, bool load=true)
void GetObjects(const char *what, const char *fn1, const char *fn2, TObject *&o1, TObject *&o2)