AliPhysics  45fd833 (45fd833)
CompareVtxBias.C
Go to the documentation of this file.
1 //____________________________________________________________________
13 void
14 CompareVtxBias(const char* fn1, const char* fn2,
15  const char* n1=0, const char* n2=0,
16  bool load=true)
17 {
18 
19  // --- Load Utilities ----------------------------------------------
20  if (load) {
21  gROOT->Macro("$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
22  gROOT->LoadMacro("$ALICE_PHYSICS/PWGLF/FORWARD/analysis2/scripts/CompareCorrs.C");
23  }
24 
25  // --- Get Objects -------------------------------------------------
26  TObject* o1 = 0;
27  TObject* o2 = 0;
29  if (!o1 || !o2) return;
30  AliFMDCorrVertexBias* obj1 = static_cast<AliFMDCorrVertexBias*>(o1);
31  AliFMDCorrVertexBias* obj2 = static_cast<AliFMDCorrVertexBias*>(o2);
32  UShort_t nVtx = obj1->GetVertexAxis().GetNbins();
33 
34  // --- Make canvas -------------------------------------------------
35  Canvas* c = new Canvas("vtxBiasComparison", "Ratio of vertex bias", n1, n2);
36  c->Open();
37 
38  // --- Loop over the data ------------------------------------------
39  UShort_t d = 0;
40  UShort_t nR = 2;
41  for (UShort_t q = 0; q < nR; q++) {
42  Char_t r = (q == 0 ? 'I' : 'O');
43  UShort_t nS = (q == 0 ? 20 : 40);
44 
45  // --- Make 2D ratios ------------------------------------------
46  c->Clear(nVtx, d, r);
47  TList hists;
48  for (UShort_t v=1; v <= nVtx; v++) {
49  TVirtualPad* p = c->cd(v);
50 
51  TH2* h1 = obj1->GetCorrection(r, v);
52  TH2* h2 = obj2->GetCorrection(r, v);
53 
54  if (!h1) {
55  Error("CompareVtxBias",
56  "Bias for FMD%d%c, vtxbin %3d not found in first",
57  d, r, v);
58  continue;
59  }
60  if (!h2) {
61  Error("CompareVtxBias",
62  "Bias for FMD%d%c, vtxbin %3d not found in second",
63  d, r, v);
64  continue;
65  }
66 
67  Double_t vl = obj1->GetVertexAxis().GetBinLowEdge(v);
68  Double_t vh = obj1->GetVertexAxis().GetBinUpEdge(v);
69  TH2* ratio =
70  static_cast<TH2*>(h1->Clone(Form("tmpFMD%d%c_%3d",d,r,v)));
71  ratio->SetName(Form("FMD%d%c_vtx%03d_ratio", d, r, v));
72  ratio->SetTitle(Form("%+5.1f<v_{z}<%-+5.1f", vl, vh));
73  ratio->Divide(h2);
74  ratio->SetStats(0);
75  ratio->SetDirectory(0);
76  ratio->SetZTitle("ratio");
77 
78  if (ratio->GetMaximum()-ratio->GetMinimum() > 10)
79  p->SetLogz();
80 
81  ratio->Draw("colz");
82  // h2->Draw("colz");
83  hists.AddAt(ratio, v-1);
84  }
85  c->Print(d, r);
86 
87  // --- Make 1D profiles ----------------------------------------
88  c->Clear(nVtx, d, r);
89  for (UShort_t v=1; v <= nVtx; v++) {
90  c->cd(v);
91  TH2* hist = static_cast<TH2*>(hists.At(v-1));
92  TH1* prof = hist->ProjectionX();
93  prof->Scale(1. / nS);
94  prof->SetStats(0);
95  prof->SetMinimum(0.8);
96  prof->SetMaximum(1.2);
97 
98  prof->Draw();
99  prof->Fit("pol0","Q");
100 
101  TF1* f = prof->GetFunction("pol0");
102 
103  TLatex* l = new TLatex(0.5, 0.4, Form("A = %f #pm %f",
104  f->GetParameter(0),
105  f->GetParError(0)));
106  l->SetTextAlign(22);
107  l->SetNDC();
108  l->Draw();
109  l->DrawLatex(0.5, 0.3, Form("#chi^2/NDF = %f / %d = %f",
110  f->GetChisquare(),
111  f->GetNDF(),
112  f->GetChisquare() / f->GetNDF()));
113  Double_t dist = TMath::Abs(1 - f->GetParameter(0));
114  l->DrawLatex(0.5, 0.35, Form("|1 - A| = %f %s #deltaA",
115  dist, dist <= f->GetParError(0) ?
116  "#leq" : ">"));
117 
118  TLine* l1 = new TLine(-4, 1, 6, 1);
119  l1->SetLineColor(kRed);
120  l1->SetLineStyle(2);
121  l1->Draw();
122  }
123 
124  c->Print(d, r, "profiles");
125  }
126 
127  // --- Close stuff -------------------------------------------------
128  c->Close();
129  // file1->Close();
130  // file2->Close();
131 }
132 
133 
134 //____________________________________________________________________
135 //
136 // EOF
137 //
double Double_t
Definition: External.C:58
TH2D * GetCorrection(Char_t r, Double_t v) const
char Char_t
Definition: External.C:18
TCanvas * c
Definition: TestFitELoss.C:172
void Print(UShort_t d, Char_t r, const char *extra="")
Definition: CompareCorrs.C:131
void Close()
Definition: CompareCorrs.C:141
void CompareVtxBias(const char *fn1, const char *fn2, const char *n1=0, const char *n2=0, bool load=true)
TPad * Clear(UShort_t nPad, UShort_t d, Char_t r, Bool_t flush=false)
Definition: CompareCorrs.C:84
TVirtualPad * cd(Int_t i)
Definition: CompareCorrs.C:117
void Open()
Definition: CompareCorrs.C:63
const TAxis & GetVertexAxis() const
Definition: External.C:220
unsigned short UShort_t
Definition: External.C:28
void GetObjects(const char *what, const char *fn1, const char *fn2, TObject *&o1, TObject *&o2)
Definition: CompareCorrs.C:174
Definition: External.C:196