1 /**************************************************************/
7 const Char_t *chargeName[kNCharges] = {
11 /**************************************************************/
12 const Int_t NcentralityBins = 10;
13 Double_t centralityBin[NcentralityBins + 1] = {0., 5., 10., 20., 30., 40., 50., 60., 70., 80., 90.};
14 /**************************************************************/
15 const Int_t NptBins = 46;
16 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};
17 /**************************************************************/
18 Char_t *partLatex[AliPID::kSPECIES][2] = {
19 "", "", "", "", "#pi^{+}", "#pi^{-}", "K^{+}", "K^{-}", "p", "#bar{p}"
21 /**************************************************************/
23 FinalSpectra(const Char_t *rawfilename = "TOF_rawSpectra.root", const Char_t *matchfilename = "TOF_matchingEfficiency.root", const Char_t *trackfilename = "TOF_trackingEfficiency.root", const Char_t *primaryfilename = "TOF_primaryFraction.root", const Char_t *electronfilename = "TOF_electronCorrection.root")
26 Int_t marker[2] = {20, 25};
27 Int_t color[AliPID::kSPECIES] = {1, 1, 4, 8, 2};
29 TFile *rawfile = TFile::Open(rawfilename);
30 TFile *matchfile = TFile::Open(matchfilename);
31 TFile *trackfile = TFile::Open(trackfilename);
32 TFile *primaryfile = TFile::Open(primaryfilename);
33 TFile *electronfile = TFile::Open(electronfilename);
35 TFile *fileout = TFile::Open("TOF_finalSpectra.root", "RECREATE");
36 TH1D *hRaw, *hMatch, *hTrack, *hPrim, *hElectron;
38 for (Int_t icent = 0; icent < NcentralityBins; icent++)
39 for (Int_t icharge = 0; icharge < kNCharges; icharge++)
40 for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) {
41 hRaw = (TH1D *)rawfile->Get(Form("hRaw_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
43 printf("cannot find %s in %s\n", Form("hRaw_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]), rawfilename);
46 hMatch = (TH1D *)matchfile->Get(Form("hMatchEff_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
48 printf("cannot find %s in %s\n", Form("hMatchEff_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]), matchfilename);
51 hTrack = (TH1D *)trackfile->Get(Form("hTrackingEff_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
53 printf("cannot find %s in %s\n", Form("hTrackingEff_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]), trackfilename);
56 hPrim = (TH1D *)primaryfile->Get(Form("hPrimaryFrac_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
57 if (ipart != 3 && !hPrim) {
58 printf("cannot find %s in %s\n", Form("hPrimaryFrac_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]), primaryfilename);
61 hElectron = (TH1D *)electronfile->Get("hElectronCorr_average");
63 printf("cannot find hElectronCorr_average in %s\n", electronfilename);
68 if (hPrim) hRaw->Multiply(hPrim);
69 if (ipart == 2) hRaw->Multiply(hElectron);
70 sprintf(title, "%s (%d-%d%%);p_{T} (GeV/c);#frac{d^{2}N}{dy dp_{T}} (c/GeV);", partLatex[ipart][icharge], centralityBin[icent], centralityBin[icent + 1]);
71 hRaw->SetName(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
72 hRaw->SetTitle(title);
73 hRaw->SetMarkerStyle(marker[icharge]);
74 hRaw->SetMarkerColor(color[ipart]);
85 /**************************************************************/
87 FinalRatios(const Char_t *filename = "TOF_finalSpectra.root")
90 printf("WARNING: skipping ratios\n");
93 Int_t marker[2] = {20, 25};
94 Int_t color[AliPID::kSPECIES] = {1, 1, 4, 8, 2};
97 TFile *filein = TFile::Open(filename);
99 TH1D *hSpectrum[NcentralityBins][AliPID::kSPECIES][kNCharges];
100 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
101 for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) {
102 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
103 hSpectrum[icent][ipart][icharge] = (TH1D *)filein->Get(Form("hFinal_cent%d_%s_%s", icent, AliPID::ParticleName(ipart), chargeName[icharge]));
109 TFile *fileout = TFile::Open("TOF_finalRatios.root", "RECREATE");
111 /* particle/anti-particle ratios */
113 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
114 for (Int_t ipart = 2; ipart < AliPID::kSPECIES; ipart++) {
115 if (!hSpectrum[icent][ipart][kNegative] ||
116 !hSpectrum[icent][ipart][kPositive]) continue;
117 hRatio = new TH1D(*hSpectrum[icent][ipart][kNegative]);
118 hRatio->Divide(hSpectrum[icent][ipart][kPositive]);
119 hRatio->SetName(Form("hRatio_cent%d_%s_negative_%s_positive", icent, AliPID::ParticleName(ipart), AliPID::ParticleName(ipart)));
120 hRatio->SetTitle(Form("%s/%s (%d-%d%%);p_{T} (GeV/c);%s/%s;", partLatex[ipart][kNegative], partLatex[ipart][kPositive], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1], partLatex[ipart][kNegative], partLatex[ipart][kPositive]));
121 hRatio->SetMarkerStyle(20);
122 hRatio->SetMarkerColor(color[ipart]);
128 /* kaon/pion ratios */
130 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
131 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
132 if (!hSpectrum[icent][ipart][kNegative] ||
133 !hSpectrum[icent][AliPID::kPion][icharge]) continue;
134 hRatio = new TH1D(*hSpectrum[icent][AliPID::kKaon][icharge]);
135 hRatio->Divide(hSpectrum[icent][AliPID::kPion][icharge]);
136 hRatio->SetName(Form("hRatio_cent%d_kaon_%s_pion_%s", icent, chargeName[icharge], chargeName[icharge]));
137 hRatio->SetTitle(Form("%s/%s (%d-%d%%);p_{T} (GeV/c);%s/%s;", partLatex[AliPID::kKaon][icharge], partLatex[AliPID::kPion][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1], partLatex[AliPID::kKaon][icharge], partLatex[AliPID::kPion][icharge]));
138 hRatio->SetMarkerStyle(marker[icharge]);
139 hRatio->SetMarkerColor(color[AliPID::kKaon]);
143 if (!hSpectrum[icent][AliPID::kKaon][kPositive] ||
144 !hSpectrum[icent][AliPID::kKaon][kNegative] ||
145 !hSpectrum[icent][AliPID::kPion][kPositive] ||
146 !hSpectrum[icent][AliPID::kPion][kNegative]) continue;
147 hSum1 = new TH1D(*hSpectrum[icent][AliPID::kKaon][kPositive]);
148 hSum1->Add(hSpectrum[icent][AliPID::kKaon][kNegative]);
149 hSum2 = new TH1D(*hSpectrum[icent][AliPID::kPion][kPositive]);
150 hSum2->Add(hSpectrum[icent][AliPID::kPion][kNegative]);
151 hRatio = new TH1D(*hSum1);
152 hRatio->Divide(hSum2);
153 hRatio->SetName(Form("hRatio_cent%d_kaon_pion", icent));
154 hRatio->SetTitle(Form("(%s+%s)/(%s+%s) (%d-%d%%);p_{T} (GeV/c);(%s+%s)/(%s+%s);", partLatex[AliPID::kKaon][kPositive], partLatex[AliPID::kKaon][kNegative], partLatex[AliPID::kPion][kPositive], partLatex[AliPID::kPion][kNegative], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1], partLatex[AliPID::kKaon][kPositive], partLatex[AliPID::kKaon][kNegative], partLatex[AliPID::kPion][kPositive], partLatex[AliPID::kPion][kNegative]));
155 hRatio->SetMarkerStyle(20);
156 hRatio->SetMarkerColor(color[AliPID::kKaon]);
161 /* proton/pion ratios */
163 for (Int_t icent = 0; icent < NcentralityBins; icent++) {
164 for (Int_t icharge = 0; icharge < kNCharges; icharge++) {
165 if (!hSpectrum[icent][AliPID::kProton][icharge] ||
166 !hSpectrum[icent][AliPID::kPion][icharge]) continue;
167 hRatio = new TH1D(*hSpectrum[icent][AliPID::kProton][icharge]);
168 hRatio->Divide(hSpectrum[icent][AliPID::kPion][icharge]);
169 hRatio->SetName(Form("hRatio_cent%d_proton_%s_pion_%s", icent, chargeName[icharge], chargeName[icharge]));
170 hRatio->SetTitle(Form("%s/%s (%d-%d%%);p_{T} (GeV/c);%s/%s;", partLatex[AliPID::kProton][icharge], partLatex[AliPID::kPion][icharge], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1], partLatex[AliPID::kProton][icharge], partLatex[AliPID::kPion][icharge]));
171 hRatio->SetMarkerStyle(marker[icharge]);
172 hRatio->SetMarkerColor(color[AliPID::kProton]);
176 if (!hSpectrum[icent][AliPID::kProton][kPositive] ||
177 !hSpectrum[icent][AliPID::kProton][kNegative] ||
178 !hSpectrum[icent][AliPID::kPion][kPositive] ||
179 !hSpectrum[icent][AliPID::kPion][kNegative]) continue;
180 hSum1 = new TH1D(*hSpectrum[icent][AliPID::kProton][kPositive]);
181 hSum1->Add(hSpectrum[icent][AliPID::kProton][kNegative]);
182 hSum2 = new TH1D(*hSpectrum[icent][AliPID::kPion][kPositive]);
183 hSum2->Add(hSpectrum[icent][AliPID::kPion][kNegative]);
184 hRatio = new TH1D(*hSum1);
185 hRatio->Divide(hSum2);
186 hRatio->SetName(Form("hRatio_cent%d_proton_pion", icent));
187 hRatio->SetTitle(Form("(%s+%s)/(%s+%s) (%d-%d%%);p_{T} (GeV/c);(%s+%s)/(%s+%s);", partLatex[AliPID::kProton][kPositive], partLatex[AliPID::kProton][kNegative], partLatex[AliPID::kPion][kPositive], partLatex[AliPID::kPion][kNegative], (Int_t)centralityBin[icent], (Int_t)centralityBin[icent + 1], partLatex[AliPID::kProton][kPositive], partLatex[AliPID::kProton][kNegative], partLatex[AliPID::kPion][kPositive], partLatex[AliPID::kPion][kNegative]));
188 hRatio->SetMarkerStyle(20);
189 hRatio->SetMarkerColor(color[AliPID::kProton]);