/**************************************************************/ enum ECharge_t { kPositive, kNegative, kNCharges }; const Char_t *chargeName[kNCharges] = { "positive", "negative", }; /**************************************************************/ const Int_t NcentralityBins = 10; Double_t centralityBin[NcentralityBins + 1] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90.}; /**************************************************************/ const Int_t NptBins = 46; Double_t ptBin[NptBins + 1] = {0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0}; /**************************************************************/ Char_t *partLatex[AliPID::kSPECIES][2] = { "", "", "", "", "#pi^{+}", "#pi^{-}", "K^{+}", "K^{-}", "p", "#bar{p}" }; /**************************************************************/ SystematicChecks() { SystematicCheck(); SystematicPlots_spectra(); } SystematicPlots_spectra() { enum EData_t { kuseTPCcrossedRows, kminTPCclusters_60, kminTPCclusters_80, kscaleDCAxy_09, kscaleDCAxy_11, kscaleDCAxy_10x, ketaCut_75, ketaCut_85, kbkgFit_fixed_scaleSigma_09, kbkgFit_fixed_scaleSigma_11, kbkgFit_fixed_scaleTail_09, kbkgFit_fixed_scaleTail_11, kbkgFit_fixed_scaleSigma_09_scaleTail_11, kbkgFit_fixed_scaleSigma_11_scaleTail_09, ksignalFit_fixed_scaleSigma_09, ksignalFit_fixed_scaleSigma_11, ksignalFit_fixed_scaleTail_09, ksignalFit_fixed_scaleTail_11, ksignalFit_fixed_scaleSigma_09_scaleTail_11, ksignalFit_fixed_scaleSigma_11_scaleTail_09, kbkgFit_fixed, kbkgFit_free, ksignalFit_fixed, ksignalFit_free, ksignalbkgFit_free, kdefaultFit_fitElectrons, kdefaultFit_limitedRange, kfieldReversal }; const Int_t ndata = 28; const Char_t *name[ndata] = { "useTPCcrossedRows", "minTPCclusters_60", "minTPCclusters_80", "scaleDCAxy_09", "scaleDCAxy_11", "scaleDCAxy_10x", "etaCut_75", "etaCut_85", "bkgFit_fixed_scaleSigma_09", "bkgFit_fixed_scaleSigma_11", "bkgFit_fixed_scaleTail_09", "bkgFit_fixed_scaleTail_11", "bkgFit_fixed_scaleSigma_09_scaleTail_11", "bkgFit_fixed_scaleSigma_11_scaleTail_09", "signalFit_fixed_scaleSigma_09", "signalFit_fixed_scaleSigma_11", "signalFit_fixed_scaleTail_09", "signalFit_fixed_scaleTail_11", "signalFit_fixed_scaleSigma_09_scaleTail_11", "signalFit_fixed_scaleSigma_11_scaleTail_09", "bkgFit_fixed", "bkgFit_free", "signalFit_fixed", "signalFit_free", "signalbkgFit_free", "defaultFit_fitElectrons", "defaultFit_limitedRange", "fieldReversal" }; Int_t marker[ndata] = { 25, 20, 21, 20, 21, 25, 20, 21, 20, 21, 20, 21, 20, 21, 20, 21, 20, 21, 20, 21, 20, 21, 20, 21, 25, 20, 20, 20 }; Int_t color[ndata] = { 4, 2, 8, 2, 8, 4, 2, 8, 2, 2, 4, 4, 8, 8, 2, 2, 4, 4, 8, 8, 2, 8, 4, 4, 4, 4 }; TFile *fin[ndata]; for (Int_t idata = 0; idata < ndata; idata++) fin[idata] = TFile::Open(Form("SystematicCheck_finalSpectra_%s.root", name[idata])); TFile *fileout = TFile::Open("SystematicPlots_spectra.root", "RECREATE"); TH1D *hin[ndata]; TH1D *hArea = new TH1D("hArea", "", NptBins, ptBin); hArea->SetStats(kFALSE); Char_t title[1024]; for (Int_t icent = 0; icent < NcentralityBins; icent++) { for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) { for (Int_t icharge = 0; icharge < kNCharges; icharge++) { for (Int_t idata = 0; idata < ndata; idata++) { if (!fin[idata] || !fin[idata]->IsOpen()) continue; hin[idata] = (TH1D *)fin[idata]->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); if (!hin[idata]) { printf("cannot find hFinal_cent%d_%s_%s in %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], fin[idata]->GetName()); continue; } hin[idata]->SetMarkerStyle(marker[idata]); hin[idata]->SetMarkerColor(color[idata]); } /* set common title */ sprintf(title, "%s (%d-%d%%);p_{T} (GeV/c);relative variation wrt. standard;", partLatex[ipart][icharge], centralityBin[icent], centralityBin[icent + 1]); hArea->SetTitle(title); /* TPC quality cuts */ hArea->SetMinimum(-0.05); hArea->SetMaximum(0.05); hArea->Draw(); hin[kuseTPCcrossedRows]->Draw("same"); hin[kminTPCclusters_60]->Draw("same"); hin[kminTPCclusters_80]->Draw("same"); TLegend *l = gPad->BuildLegend(); l->DeleteEntry(); l->SetFillColor(0); l->SetBorderSize(1); fileout->cd(); gPad->Write(Form("cSpectraSys_TPCcuts_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); /* DCA cuts */ hArea->SetMinimum(-0.05); hArea->SetMaximum(0.05); hArea->Draw(); hin[kscaleDCAxy_09]->Draw("same"); hin[kscaleDCAxy_11]->Draw("same"); hin[kscaleDCAxy_10x]->Draw("same"); TLegend *l = gPad->BuildLegend(); l->DeleteEntry(); l->SetFillColor(0); l->SetBorderSize(1); fileout->cd(); gPad->Write(Form("cSpectraSys_DCAcuts_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); /* eta cut */ hArea->SetMinimum(-0.05); hArea->SetMaximum(0.05); hArea->Draw(); hin[ketaCut_75]->Draw("same"); hin[ketaCut_85]->Draw("same"); TLegend *l = gPad->BuildLegend(); l->DeleteEntry(); l->SetFillColor(0); l->SetBorderSize(1); fileout->cd(); gPad->Write(Form("cSpectraSys_etaCut_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); /* background fit */ hArea->SetMinimum(-0.5); hArea->SetMaximum(0.5); hArea->Draw(); hin[kbkgFit_fixed_scaleSigma_09]->Draw("same"); hin[kbkgFit_fixed_scaleSigma_11]->Draw("same"); hin[kbkgFit_fixed_scaleTail_09]->Draw("same"); hin[kbkgFit_fixed_scaleTail_11]->Draw("same"); hin[kbkgFit_fixed_scaleSigma_09_scaleTail_11]->Draw("same"); hin[kbkgFit_fixed_scaleSigma_11_scaleTail_09]->Draw("same"); TLegend *l = gPad->BuildLegend(); l->DeleteEntry(); l->SetFillColor(0); l->SetBorderSize(1); fileout->cd(); gPad->Write(Form("cSpectraSys_bkgFit_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); /* signal fit */ hArea->SetMinimum(-0.5); hArea->SetMaximum(0.5); hArea->Draw(); hin[ksignalFit_fixed_scaleSigma_09]->Draw("same"); hin[ksignalFit_fixed_scaleSigma_11]->Draw("same"); hin[ksignalFit_fixed_scaleTail_09]->Draw("same"); hin[ksignalFit_fixed_scaleTail_11]->Draw("same"); hin[ksignalFit_fixed_scaleSigma_09_scaleTail_11]->Draw("same"); hin[ksignalFit_fixed_scaleSigma_11_scaleTail_09]->Draw("same"); TLegend *l = gPad->BuildLegend(); l->DeleteEntry(); l->SetFillColor(0); l->SetBorderSize(1); fileout->cd(); gPad->Write(Form("cSpectraSys_signalFit_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); } } } fileout->Close(); for (Int_t idata = 0; idata < ndata; idata++) if (fin[idata]) fin[idata]->Close(); } SystematicCheck() { SystematicCheck("rawSpectra"); SystematicCheck("matchingEfficiency"); SystematicCheck("trackingEfficiency"); SystematicCheck("primaryFraction"); SystematicCheck("finalSpectra"); SystematicCheck("finalRatios"); } SystematicCheck(const Char_t *checkname) { gROOT->LoadMacro("HistoUtils.C"); const Int_t ndata = 30; const Char_t *name[ndata] = { "useTPCcrossedRows", "minTPCclusters_60", "minTPCclusters_80", "scaleDCAxy_09", "scaleDCAxy_11", "scaleDCAxy_10x", "DCAz_1", "etaCut_75", "etaCut_85", "bkgFit_fixed", "bkgFit_fixed_scaleSigma_09", "bkgFit_fixed_scaleSigma_09_scaleTail_11", "bkgFit_fixed_scaleSigma_11", "bkgFit_fixed_scaleSigma_11_scaleTail_09", "bkgFit_fixed_scaleTail_09", "bkgFit_fixed_scaleTail_11", "bkgFit_free", "mismatchCorrected", "defaultFit_fitElectrons", "defaultFit_limitedRange", "defaultFit_tightRange", "fieldReversal", "signalbkgFit_free", "signalFit_fixed_scaleSigma_09", "signalFit_fixed_scaleSigma_09_scaleTail_11", "signalFit_fixed_scaleSigma_11", "signalFit_fixed_scaleSigma_11_scaleTail_09", "signalFit_fixed_scaleTail_09", "signalFit_fixed_scaleTail_11", "signalFit_free" }; const Char_t *title[ndata] = { "N_{crossed-rows} cut", "N_{clusters}^{min} = 60", "N_{clusters}^{min} = 80", "-10% DCA_{xy} cut", "+10% DCA_{xy} cut", "10x larger DCA_{xy} cut", "DCA_{z} < 1 cm", "|#eta| < 0.75", "|#eta| < 0.85", "background fit (fixed params)", "-10% #sigma background", "-10% #sigma +10% #tau background", "+10% #sigma background", "+10% #sigma -10% #tau background", "-10% #tau background", "+10% #tau background", "background fit (free params)", "with mismatch correction", "with electron background", "fit in limited range", "fit in tight range", "reversed magnetic field", "signal+background fit (free params)", "-10% #sigma signal", "-10% #sigma +10% #tau signal", "+10% #sigma signal", "+10% #sigma -10% #tau signal", "-10% #tau signal", "+10% #tau signal", "signal fit (free params)" }; #if 0 Char_t filename1[1024], filename2[1024], ofilename[1024]; for (Int_t idata = 1; idata < ndata; idata++) { sprintf(filename1, "standardPrimaryCuts_%s/TOF_%s.root", name[idata], checkname); sprintf(filename2, "standardPrimaryCuts/TOF_%s.root", checkname); sprintf(ofilename, "SystematicCheck_%s_%s.root", checkname, name[idata]); printf("%s %s %s\n", filename1, filename2, ofilename); HistoUtils_autosystematics(filename1, filename2, ofilename, Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[idata])); } return; #endif HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[0], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[0]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[0])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[1], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[1]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[1])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[2], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[2]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[2])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[3], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[3]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[3])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[4], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[4]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[4])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[5], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[5]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[5])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[6], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[6]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[6])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[7], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[7]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[7])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[8], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[8]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[8])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[9], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[9]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[9])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[10], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[10]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[10])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[11], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[11]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[11])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[12], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[12]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[12])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[13], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[13]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[13])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[14], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[14]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[14])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[15], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[15]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[15])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[16], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[16]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[16])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[17], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[17]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[17])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[18], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[18]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[18])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[19], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[19]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[19])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[20], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[20]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[20])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[21], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[21]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[21])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[22], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[22]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[22])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[23], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[23]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[23])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[24], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[24]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[24])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[25], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[25]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[25])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[26]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[26])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[27]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[27])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[28]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[28])); HistoUtils_autosystematics(Form("standardPrimaryCuts_%s/TOF_%s.root", name[26], checkname), Form("standardPrimaryCuts/TOF_%s.root", checkname), Form("SystematicCheck_%s_%s.root", checkname, name[29]), Form("%s;p_{T} (GeV/c);relative variation wrt. default;", title[29])); } /**************************************************************/ /**************************************************************/ FinalSpectra_systematics_useTPCcrossedRows() { TFile *fileout = TFile::Open("FinalSpectra_systematics_useTPCcrossedRows.root", "RECREATE"); for (Int_t icent = 0; icent < NcentralityBins; icent++) for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) for (Int_t icharge = 0; icharge < kNCharges; icharge++) { FinalSpectra_systematics_useTPCcrossedRows(ipart, icharge, icent, fileout); } fileout->Close(); } FinalSpectra_systematics_useTPCcrossedRows(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL) { const Int_t ndata = 1; const Char_t *name[ndata] = { "standardPrimaryCuts_useTPCcrossedRows" }; const Char_t *title[ndata] = { "TPC crossed-rows cut;p_{T} (GeV/c); ratio" }; Int_t marker[ndata] = {22}; Int_t color[ndata] = {2}; TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin); hArea->SetMinimum(0.9); hArea->SetMaximum(1.1); hArea->SetStats(kFALSE); hArea->Draw(); TH1D *hr[ndata]; for (Int_t idata = 0; idata < ndata; idata++) { hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]); hr[idata]->Draw("same"); } gPad->SetGridy(); TLegend *legend = gPad->BuildLegend(); legend->DeleteEntry(); legend->SetFillColor(0); legend->SetBorderSize(1); if (fileout) { fileout->cd(); gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); } } FinalSpectra_systematics_minTPCclusters() { TFile *fileout = TFile::Open("FinalSpectra_systematics_minTPCclusters.root", "RECREATE"); for (Int_t icent = 0; icent < NcentralityBins; icent++) for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) for (Int_t icharge = 0; icharge < kNCharges; icharge++) { FinalSpectra_systematics_minTPCclusters(ipart, icharge, icent, fileout); } fileout->Close(); } FinalSpectra_systematics_minTPCclusters(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL) { const Int_t ndata = 2; const Char_t *name[ndata] = { "standardPrimaryCuts_minTPCclusters_60", "standardPrimaryCuts_minTPCclusters_80" }; const Char_t *title[ndata] = { "N_{TPC-cls}^{min} = 60;p_{T} (GeV/c); ratio", "N_{TPC-cls}^{min} = 80;p_{T} (GeV/c); ratio" }; Int_t marker[ndata] = {22, 28}; Int_t color[ndata] = {2, 8}; TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin); hArea->SetMinimum(0.9); hArea->SetMaximum(1.1); hArea->SetStats(kFALSE); hArea->Draw(); TH1D *hr[ndata]; for (Int_t idata = 0; idata < ndata; idata++) { hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]); hr[idata]->Draw("same"); } gPad->SetGridy(); TLegend *legend = gPad->BuildLegend(); legend->DeleteEntry(); legend->SetFillColor(0); legend->SetBorderSize(1); if (fileout) { fileout->cd(); gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); } } FinalSpectra_systematics_scaleDCAxy() { TFile *fileout = TFile::Open("FinalSpectra_systematics_scaleDCAxy.root", "RECREATE"); for (Int_t icent = 0; icent < NcentralityBins; icent++) for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) for (Int_t icharge = 0; icharge < kNCharges; icharge++) { FinalSpectra_systematics_scaleDCAxy(ipart, icharge, icent, fileout); } fileout->Close(); } FinalSpectra_systematics_scaleDCAxy(Int_t ipart, Int_t icharge, Int_t icent, TFile *fileout = NULL) { const Int_t ndata = 2; const Char_t *name[ndata] = { "standardPrimaryCuts_scaleDCAxy_09", "standardPrimaryCuts_scaleDCAxy_11" }; const Char_t *title[ndata] = { "-10% DCA_{xy} cut;p_{T} (GeV/c); ratio", "+10% DCA_{xy} cut;p_{T} (GeV/c); ratio" }; Int_t marker[ndata] = {22, 28}; Int_t color[ndata] = {2, 8}; TH1D *hArea = new TH1D("hArea", Form("%s (%d-%d%%);p_{T} (GeV/c);ratio;", partLatex[ipart][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1]), NptBins, ptBin); hArea->SetMinimum(0.9); hArea->SetMaximum(1.1); hArea->SetStats(kFALSE); hArea->Draw(); TH1D *hr[ndata]; for (Int_t idata = 0; idata < ndata; idata++) { hr[idata] = FinalSpectra_systematics_ratio(name[idata], "standardPrimaryCuts", ipart, icharge, icent, name[idata], title[idata], marker[idata], color[idata]); hr[idata]->Draw("same"); } gPad->SetGridy(); TLegend *legend = gPad->BuildLegend(); legend->DeleteEntry(); legend->SetFillColor(0); legend->SetBorderSize(1); if (fileout) { fileout->cd(); gPad->Write(Form("cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); } } TH1D * FinalSpectra_systematics_ratio(const Char_t *dirname1, const Char_t *dirname2, Int_t ipart, Int_t icharge, Int_t icent, const Char_t *name = "finalRatio", const Char_t *title = ";p_{T} (GeV/c);final yield ratio;", Int_t marker = 20, Int_t color = 2, Bool_t correlated = kFALSE) { TH1D *hr = new TH1D("hr", "", NptBins, ptBin); /* open data */ Char_t outfilename1[1024]; sprintf(outfilename1, "%s/TOF_finalSpectra.root", dirname1); TFile *filein1 = TFile::Open(outfilename1); if (!filein1 || !filein1->IsOpen()) { printf("cannot open %s\n", outfilename1); return; } Char_t outfilename2[1024]; sprintf(outfilename2, "%s/TOF_finalSpectra.root", dirname2); TFile *filein2 = TFile::Open(outfilename2); if (!filein2 || !filein2->IsOpen()) { printf("cannot open %s\n", outfilename2); return; } /* get data */ TH1D *h1 = (TH1D *)filein1->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); if (!h1) { printf("cannot get hFinal_cent%d_%s_%s from %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], outfilename1); return; } TH1D *h2 = (TH1D *)filein2->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge])); if (!h2) { printf("cannot get hFinal_cent%d_%s_%s from %s\n", icent, AliPID::ParticleName(ipart), chargeName[icharge], outfilename2); return; } /* ratio */ if (correlated) hr->Divide(h1, h2, 1., 1., "B"); else hr->Divide(h1, h2); hr->SetNameTitle(name, title); hr->SetMarkerStyle(marker); hr->SetMarkerColor(color); filein1->Close(); filein2->Close(); return hr; }