1 #if !defined(__CINT__) || defined(__MAKECINT__)
14 #include <TFitResult.h>
15 #include <TFitResultPtr.h>
25 void Corrections(Float_t cMin, Float_t cMax, TString centr);
26 void RawYields(Float_t cMin, Float_t cMax, TString centr);
27 void Spectra(TString centr);
29 void SpectraV0CutVariations(Float_t cMin, Float_t cMax, TString centr) {
31 fRaw=TFile::Open((centr+"/AliV0CutVariations.root").Data());
32 fAss=TFile::Open((centr+"/AliV0CutVariationsMC.root").Data());
33 fGen=TFile::Open("Generated.root");
36 fGen=TFile::Open("Generated.root");
39 Corrections(cMin,cMax,centr);
40 RawYields(cMin,cMax,centr);
48 TH1 *GetEfficiency(Float_t, Float_t, const Char_t *, const Char_t *);
49 TH1 *GetFeedDown(Float_t, Float_t, TString);
51 void Corrections(Float_t cmin, Float_t cmax, TString centr) {
56 GetEfficiency(cmin, cmax, "fK0sAs","f3dHistPrimRawPtVsYVsMultK0Short");
59 effK0s->SetName(name.Data());
62 GetEfficiency(cmin, cmax, "fLambdaAs","f3dHistPrimRawPtVsYVsMultLambda");
65 effLambda->SetName(name.Data());
66 TH1 *fdLambda=GetFeedDown(cmin, cmax, centr);
69 fdLambda->SetName(name.Data());
73 GetEfficiency(cmin,cmax,"fLambdaBarAs","f3dHistPrimRawPtVsYVsMultAntiLambda");
74 name="eff_LambdaBar_";
76 effLambdaBar->SetName(name.Data());
78 TFile *f=TFile::Open("SpectraV0CutVariations.root","update");
80 effLambda->Write(); fdLambda->Write();
81 effLambdaBar->Write();
85 TH1 *GetEfficiency(Float_t cMin, Float_t cMax,
86 const Char_t *chis, const Char_t *znam) {
88 0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,
89 1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,
90 2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0,
91 4.5,5.0,5.5,6.5,8.0,10.0,12.0
93 Int_t nb=sizeof(xbins)/sizeof(Double_t);
98 TH2F *f2d=(TH2F*)gDirectory->Get(chis); f2d->Sumw2();
99 TH1D *hAs=f2d->ProjectionX("hAs",0,-1,"e");
103 TH3F *f3d = (TH3F*)gDirectory->Get(znam);
106 TH1D *fpt = f3d->ProjectionX("fpt",
107 f3d->GetYaxis()->FindBin(-0.5+1e-2),
108 f3d->GetYaxis()->FindBin(+0.5-1e-2),
109 f3d->GetZaxis()->FindBin(cMin+1e-2),
110 f3d->GetZaxis()->FindBin(cMax-1e-2)
112 TH1 *hMc=fpt->Rebin(nb1,"hMc",xbins);
115 TH1 *eff = (TH1*)hAs->Clone();
116 eff->Divide(hAs,hMc,1,1,"b");
121 Bool_t GetBinContentError(const TH1 *h, Double_t x, Double_t &c, Double_t &e) {
122 Int_t i1=h->GetXaxis()->FindFixBin(x);
123 if (i1 <=0) return kFALSE;
124 Int_t nb=h->GetNbinsX();
125 if (i1 >nb) return kFALSE;
127 Double_t x1=h->GetBinCenter(i1);
129 if (TMath::Abs(x1-x) < 1e-13) {
130 c=h->GetBinContent(i1);
131 e=h->GetBinError(i1);
135 Int_t i2 = (x1 < x) ? i1+1 : i1-1;
138 Double_t x2=h->GetBinCenter(i2);
140 Double_t c1=h->GetBinContent(i1);
141 Double_t c2=h->GetBinContent(i2);
142 c = c1 + (x - x1)*(c2 - c1)/(x2 - x1);
143 e = 0.5*(h->GetBinError(i1) + h->GetBinError(i2));
148 TH1 *GetFeedDown(Float_t cMin, Float_t cMax, TString cent) {
151 TH3F *f3d = (TH3F*)gDirectory->Get("fLambdaFromXi");
153 TH2D *fdMat = (TH2D*)f3d->Project3D("zxe");
154 const Int_t nbx=fdMat->GetNbinsX();
155 const Int_t nby=fdMat->GetNbinsY();
156 TAxis *xiPtAxis=fdMat->GetYaxis();
158 // Re-normalise the FD matrix with MC Xi spectrum
160 f3d = (TH3F*)gDirectory->Get("f3dHistGenPtVsYVsMultXiMinus");
163 TH1D *hMcXi = f3d->ProjectionX("fpt",
164 f3d->GetYaxis()->FindBin(-0.5+1e-2),
165 f3d->GetYaxis()->FindBin(+0.5-1e-2),
166 f3d->GetZaxis()->FindBin(cMin+1e-2),
167 f3d->GetZaxis()->FindBin(cMax-1e-2)
170 TH2D *h2McXi=new TH2D(*fdMat);
174 for (Int_t i=1; i<=nbx; i++) {
175 for (Int_t j=1; j<=nby; j++) {
176 Double_t pt=xiPtAxis->GetBinCenter(j);
178 if (!GetBinContentError(hMcXi,pt,c,e)) continue;
179 h2McXi->SetBinContent(i,j,c);
180 h2McXi->SetBinError(i,j,e);
183 fdMat->Divide(h2McXi);
187 // Multiply the re-normalised matrix with the real Xi spectrum
188 TString fileName("systcorrectedpt_cent");
189 //*** "Dictionary" ***
190 if (cent=="0005") cent="0010";
191 if (cent=="6080") cent="6090";
192 if (cent=="8090") cent="6090";
193 TFile *f=TFile::Open((fileName+cent+".root").Data());
194 TH1F *hReXi=(TH1F*)gDirectory->Get("correctedpt_0");
196 TH2D *h2ReXi=new TH2D(*fdMat);
200 for (Int_t i=1; i<=nbx; i++) {
201 for (Int_t j=1; j<=nby; j++) {
202 Double_t pt=xiPtAxis->GetBinCenter(j);
204 if (!GetBinContentError(hReXi,pt,c,e)) continue;
205 h2ReXi->SetBinContent(i,j,c);
206 h2ReXi->SetBinError(i,j,e);
209 fdMat->Multiply(h2ReXi);
213 TH1 *fd=fdMat->ProjectionX("_px",0,-1,"e");
214 fd->Scale(0.1,"width");
219 void RawYields(Float_t cMin, Float_t cMax, TString centr) {
223 //+++ Number of events for normalisation
224 TFile *file=TFile::Open("LHC10h_pass2/Merged.root");
225 TList *v0list=(TList *)gFile->Get("PWGLFExtractV0_PP/clistV0");
226 TH1F *fMult=(TH1F*)v0list->FindObject("fHistMultiplicity");
227 Int_t i1=fMult->GetXaxis()->FindBin(cMin+1e-2);
228 Int_t i2=fMult->GetXaxis()->FindBin(cMax-1e-2);
229 Float_t nEvents=fMult->Integral(i1,i2);
236 f2d=(TH2F*)gDirectory->Get("fK0sSi"); f2d->Sumw2();
237 TH1D *rawK0s=f2d->ProjectionX(name,0,-1,"e");
238 rawK0s->Scale(1/nEvents,"width");
242 f2d=(TH2F*)gDirectory->Get("fLambdaSi"); f2d->Sumw2();
243 TH1D *rawLambda=f2d->ProjectionX(name,0,-1,"e");
244 rawLambda->Scale(1/nEvents,"width");
246 name="raw_LambdaBar_";
248 f2d=(TH2F*)gDirectory->Get("fLambdaBarSi"); f2d->Sumw2();
249 TH1D *rawLambdaBar=f2d->ProjectionX(name,0,-1,"e");
250 rawLambdaBar->Scale(1/nEvents,"width");
252 TFile *f=TFile::Open("SpectraV0CutVariations.root","update");
255 rawLambdaBar->Write();
259 Double_t fd(Double_t x) {
260 //Effective FD correction
261 return 0.1619 + 0.05295*x - 0.01749*x*x + 0.001425*x*x*x - 3.446e-05*x*x*x*x;
264 void Spectra(TString centr) {
270 TFile *f=TFile::Open("SpectraV0CutVariations.root","update");
273 eff = (TH1*)gDirectory->Get(name.Data());
276 raw = (TH1D*)gDirectory->Get(name.Data());
277 spe = new TH1D(*raw);
281 spe->SetName(name.Data());
286 eff = (TH1*)gDirectory->Get(name.Data());
289 raw = (TH1D*)gDirectory->Get(name.Data());
290 spe = new TH1D(*raw);
291 for (Int_t i=1; i<=spe->GetNbinsX(); i++) {
292 Double_t pt=spe->GetBinCenter(i);
293 Double_t c=spe->GetBinContent(i);
295 spe->SetBinContent(i,c);
300 spe->SetName(name.Data());
303 name="eff_LambdaBar_";
305 eff = (TH1*)gDirectory->Get(name.Data());
306 name="raw_LambdaBar_";
308 raw = (TH1D*)gDirectory->Get(name.Data());
309 spe = new TH1D(*raw);
310 for (Int_t i=1; i<=spe->GetNbinsX(); i++) {
311 Double_t pt=spe->GetBinCenter(i);
312 Double_t c=spe->GetBinContent(i);
314 spe->SetBinContent(i,c);
319 spe->SetName(name.Data());
328 TFile::Open("LHC11a10b_plus/Merged.root");
329 v0listMC=(TList *)gFile->Get("PWGLFExtractPerformanceV0_PP_MC/clistV0MC");
332 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultK0Short");
334 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjK0Short");
337 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultLambda");
339 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjLambda");
342 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultAntiLambda");
344 (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjAntiLambda");
347 (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiMinus");
349 (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiPlus");
353 TFile::Open("LHC11a10b_bis/Merged.root");
354 v0listMC=(TList *)gFile->Get("PWGLFExtractPerformanceV0_PP_MC/clistV0MC");
356 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultK0Short");
358 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjK0Short");
361 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultLambda");
363 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjLambda");
366 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultAntiLambda");
368 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultNonInjAntiLambda");
369 alam_nonInj->Add(h3);
371 h3 = (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiMinus");
373 h3 = (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiPlus");
378 TFile::Open("LHC11a10a_bis/Merged.root");
379 v0listMC=(TList *)gFile->Get("PWGLFExtractPerformanceV0_PP_MC/clistV0MC");
381 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultK0Short");
383 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultLambda");
385 h3 = (TH3F*)v0listMC->FindObject("f3dHistPrimRawPtVsYVsMultAntiLambda");
386 alam_nonInj->Add(h3);
387 h3 = (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiMinus");
389 h3 = (TH3F*)v0listMC->FindObject("f3dHistGenPtVsYVsMultXiPlus");
392 TFile *f=TFile::Open("Generated.root","new");
393 k0s->Write(); k0s_nonInj->Write();
394 lam->Write(); lam_nonInj->Write();
395 alam->Write(); alam_nonInj->Write();