]>
Commit | Line | Data |
---|---|---|
1 | #include "AliAODTrack.h" | |
2 | #include <iostream> | |
3 | #include "TFile.h" | |
4 | #include "TH1I.h" | |
5 | #include "TH2.h" | |
6 | #include "AliSpectraAODHistoManager.h" | |
7 | #include "AliSpectraAODEventCuts.h" | |
8 | #include "AliSpectraAODTrackCuts.h" | |
9 | #include "TCanvas.h" | |
10 | #include "TLegend.h" | |
11 | ||
12 | using namespace std; | |
13 | ||
14 | void analysis_macro(const char * dataFile = "Pt.AOD.1._data_ptcut.root", const char * mcFile ="Pt.AOD.1._MC.root") { | |
15 | ||
16 | // gSystem->Load("libTree.so"); | |
17 | // gSystem->Load("libGeom.so"); | |
18 | // gSystem->Load("libVMC.so"); | |
19 | // gSystem->Load("libPhysics.so"); | |
20 | // gSystem->Load("libSTEERBase.so"); | |
21 | // gSystem->Load("libESD.so"); | |
22 | // gSystem->Load("libAOD.so"); | |
23 | // gSystem->Load("libANALYSIS.so"); | |
24 | // gSystem->Load("libANALYSISalice.so"); | |
25 | // gSystem->Load("libANALYSIS"); | |
26 | // gSystem->Load("libANALYSISalice"); | |
27 | // gROOT->LoadMacro("$ALICE_ROOT/PWG0/CreateESDChain.C"); | |
28 | // gSystem->AddIncludePath("-I$ALICE_ROOT/include"); | |
29 | // gStyle->SetPalette(1); | |
30 | // gStyle->SetFillColor(kWhite); | |
31 | ||
32 | // gROOT->LoadMacro("AliSpectraAODTrackCuts.cxx+g"); | |
33 | // gROOT->LoadMacro("AliSpectraAODEventCuts.cxx+g"); | |
34 | // gROOT->LoadMacro("AliSpectraAODHistoManager.cxx+g"); | |
35 | // gROOT->LoadMacro("AliAnalysisTaskSpectraAOD.cxx+g"); | |
36 | ||
37 | const char * histoname[] = | |
38 | { | |
39 | // names of histos we want to draw. please observe order of histos, elsewise name will not make sense | |
40 | "#frac{MC_{#sigma, rec}}{Data}, P^{+}", | |
41 | "#frac{MC_{#sigma, rec}}{Data}, K^{+}", | |
42 | "#frac{MC_{#sigma, rec}}{Data}, #pi^{+}", | |
43 | "#frac{MC_{#sigma, rec}}{Data}, P^{-}", | |
44 | "#frac{MC_{#sigma, rec}}{Data}, K^{-}", | |
45 | "#frac{MC_{#sigma, rec}}{Data}, #pi^{-}", | |
46 | ||
47 | "#frac{MC_{#sigma, rec, prim}}{Data}, P^{+}", | |
48 | "#frac{MC_{#sigma, rec, prim}}{Data}, K^{+}", | |
49 | "#frac{MC_{#sigma, rec, prim}}{Data}, #pi^{+}", | |
50 | "#frac{MC_{#sigma, rec, prim}}{Data}, P^{-}", | |
51 | "#frac{MC_{#sigma, rec, prim}}{Data}, K^{-}", | |
52 | "#frac{MC_{#sigma, rec, prim}}{Data}, #pi^{-}", | |
53 | ||
54 | "#frac{MC_{#sigma, rec, sec}}{Data}, P^{+}", | |
55 | "#frac{MC_{#sigma, rec, sec}}{Data}, K^{+}", | |
56 | "#frac{MC_{#sigma, rec, sec}}{Data}, #pi^{+}", | |
57 | "#frac{MC_{#sigma, rec, sec}}{Data}, P^{-}", | |
58 | "#frac{MC_{#sigma, rec, sec}}{Data}, K^{-}", | |
59 | "#frac{MC_{#sigma, rec, sec}}{Data}, #pi^{-}", | |
60 | ||
61 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, P^{+}", | |
62 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, K^{+}", | |
63 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, #pi^{+}", | |
64 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, P^{-}", | |
65 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, K^{-}", | |
66 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}}, #pi^{-}", | |
67 | ||
68 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, P^{+}", | |
69 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, K^{+}", | |
70 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, #pi^{+}", | |
71 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, P^{-}", | |
72 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, K^{-}", | |
73 | "#frac{MC_{true, gen}}{MC_{#sigma, rec}} x Data, #pi^{-}", | |
74 | ||
75 | "Data, P^{+}", | |
76 | "Data, K^{+}", | |
77 | "Data, #pi^{+}", | |
78 | "Data, P^{-}", | |
79 | "Data, K^{-}", | |
80 | "Data, #pi^{-}", | |
81 | ||
82 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, P^{+}", | |
83 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, K^{+}", | |
84 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, #pi^{+}", | |
85 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, P^{-}", | |
86 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, K^{-}", | |
87 | "#frac{MC_{rec #sigma}}{MC_{true, rec}}, #pi^{-}", | |
88 | ||
89 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, P^{+}", | |
90 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, K^{+}", | |
91 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, #pi^{+}", | |
92 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, P^{-}", | |
93 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, K^{-}", | |
94 | "#frac{MC_{rec #sigma sec}}{MC_{#sigma, rec}}, #pi^{-}", | |
95 | }; | |
96 | ||
97 | const char * histotitle[] = | |
98 | { | |
99 | // titles of histos we want to draw. please observe order of histos, elsewise name will not make sense | |
100 | "MC #sigma, rec / Data, P^{+}", | |
101 | "MC #sigma, rec / Data, K^{+}", | |
102 | "MC #sigma, rec / Data, #pi^{+}", | |
103 | "MC #sigma, rec / Data, P^{-}", | |
104 | "MC #sigma, rec / Data, K^{-}", | |
105 | "MC #sigma, rec / Data, #pi^{-}", | |
106 | ||
107 | "MC #sigma, rec, prim / Data, P^{+}", | |
108 | "MC #sigma, rec, prim / Data, K^{+}", | |
109 | "MC #sigma, rec, prim / Data, #pi^{+}", | |
110 | "MC #sigma, rec, prim / Data, P^{-}", | |
111 | "MC #sigma, rec, prim / Data, K^{-}", | |
112 | "MC #sigma, rec, prim / Data, #pi^{-}", | |
113 | ||
114 | "MC #sigma, rec, sec / Data, P^{+}", | |
115 | "MC #sigma, rec, sec / Data, K^{+}", | |
116 | "MC #sigma, rec, sec / Data, #pi^{+}", | |
117 | "MC #sigma, rec, sec / Data, P^{-}", | |
118 | "MC #sigma, rec, sec / Data, K^{-}", | |
119 | "MC #sigma, rec, sec / Data, #pi^{-}", | |
120 | ||
121 | "Correction factor, P^{+}", | |
122 | "Correction factor, K^{+}", | |
123 | "Correction factor, #pi^{+}", | |
124 | "Correction factor, P^{-}", | |
125 | "Correction factor, K^{-}", | |
126 | "Correction factor, #pi^{-}", | |
127 | ||
128 | "True Data, P^{+}", | |
129 | "True Data, K^{+}", | |
130 | "True Data, #pi^{+}", | |
131 | "True Data, P^{-}", | |
132 | "True Data, K^{-}", | |
133 | "True Data, #pi^{-}", | |
134 | ||
135 | "Raw Data, P^{+}", | |
136 | "Raw Data, K^{+}", | |
137 | "Raw Data, #pi^{+}", | |
138 | "Raw Data, P^{-}", | |
139 | "Raw Data, K^{-}", | |
140 | "Raw Data, #pi^{-}", | |
141 | ||
142 | "Identificaiton quality, P^{+}", | |
143 | "Identificaiton quality, K^{+}", | |
144 | "Identificaiton quality, #pi^{+}", | |
145 | "Identificaiton quality, P^{-}", | |
146 | "Identificaiton quality, K^{-}", | |
147 | "Identificaiton quality, #pi^{-}", | |
148 | ||
149 | "Contribution of secondaries, P^{+}", | |
150 | "Contribution of secondaries, K^{+}", | |
151 | "Contribution of secondaries, #pi^{+}", | |
152 | "Contribution of secondaries, P^{-}", | |
153 | "Contribution of secondaries, K^{-}", | |
154 | "Contribution of secondaries, #pi^{-}", | |
155 | }; | |
156 | ||
157 | // Open root MC file and get classes | |
158 | cout << "Analysis Macro" << endl; | |
159 | cout << " > Reading MC data" << endl; | |
160 | TFile *_mc = TFile::Open(mcFile); | |
161 | AliSpectraAODHistoManager* hman_mc = (AliSpectraAODHistoManager*) _mc->Get("SpectraHistos"); | |
162 | AliSpectraAODEventCuts* ecuts_mc = (AliSpectraAODEventCuts*) _mc->Get("Event Cuts"); | |
163 | AliSpectraAODTrackCuts* tcuts_mc = (AliSpectraAODTrackCuts*) _mc->Get("Track Cuts"); | |
164 | // print info about mc track and Event cuts | |
165 | cout << " -- Info about MC -- "<< endl; | |
166 | ecuts_mc->PrintCuts(); | |
167 | tcuts_mc->PrintCuts(); | |
168 | // get the mc histo's necessary to write the contamination histos from the rootfile | |
169 | TH1F* spectrahistos_mc[30]; | |
170 | cout << " -- Reading and normalizing histograms -- " << endl; | |
171 | for( Int_t i = 0 ; i <= AliSpectraNameSpace::kNPtSpecies ; i++ ) { | |
172 | spectrahistos_mc[i] = dynamic_cast<TH1F*>(hman_mc->GetHistogram((AliSpectraNameSpace::AODPtHist_t)i)); | |
173 | Double_t events_mc = 1. / ecuts_mc->NumberOfEvents(); | |
174 | if(!spectrahistos_mc[i]) { | |
175 | continue; | |
176 | } | |
177 | spectrahistos_mc[i]->Scale(events_mc, "width"); | |
178 | } | |
179 | cout << " > Reading real data " << endl; | |
180 | // proceed likewise for data | |
181 | TFile *_data = TFile::Open(dataFile); | |
182 | AliSpectraAODHistoManager* hman_data = (AliSpectraAODHistoManager*) _data->Get("SpectraHistos"); | |
183 | AliSpectraAODEventCuts* ecuts_data = (AliSpectraAODEventCuts*) _data->Get("Event Cuts"); | |
184 | AliSpectraAODTrackCuts* tcuts_data = (AliSpectraAODTrackCuts*) _data->Get("Track Cuts"); | |
185 | // print info about track and Event cuts | |
186 | cout << " -- Info about data -- " << endl; | |
187 | ecuts_data->PrintCuts(); | |
188 | tcuts_data->PrintCuts(); | |
189 | // get the histo's necessary to write the contamination histos from the rootfile | |
190 | // MF 22/02/2012 | |
191 | // Get the raw data distribution: | |
192 | // 1. Get DCA vs pt histo for each particle | |
193 | // 2. Loop over all pt bins, projecting on DCA | |
194 | // 3. Fit the DCA data distribution with MC templates for primaries, sec. w., sec. m. (TFractionFitter) | |
195 | // 4. Extract from the fit raw primaries vs pt in data | |
196 | // 5. Correct for the primaries efficiency estimated in MC | |
197 | TH1F* spectrahistos_data[30]; | |
198 | cout << " -- Reading and normalizing histograms -- " << endl; | |
199 | for( Int_t i = 0 ; i <= AliSpectraNameSpace::kNPtSpecies ; i++ ) { | |
200 | spectrahistos_data[i] = dynamic_cast<TH1F*>(hman_data->GetHistogram((AliSpectraNameSpace::AODPtHist_t)i)); | |
201 | if(!spectrahistos_data[i]) { | |
202 | continue; | |
203 | } | |
204 | Double_t events_data = 1. / ecuts_data->NumberOfEvents(); | |
205 | //normalize the histos | |
206 | spectrahistos_data[i]->Scale(events_data, "width"); | |
207 | } | |
208 | //create output file and select it as the active file | |
209 | TFile * output = new TFile("analysis_output.root", "RECREATE"); | |
210 | output->cd(); | |
211 | // Write the scaled data and MC histos in the output file for convenience | |
212 | output->mkdir("Data"); | |
213 | output->cd("Data"); | |
214 | for(Int_t ihist = 0; ihist <= AliSpectraNameSpace::kNPtSpecies; ihist++){ | |
215 | spectrahistos_data[ihist]->Write(); | |
216 | } | |
217 | output->mkdir("MC"); | |
218 | output->cd("MC"); | |
219 | for(Int_t ihist = 0; ihist <= AliSpectraNameSpace::kNPtSpecies; ihist++){ | |
220 | spectrahistos_mc[ihist]->Write(); | |
221 | } | |
222 | output->mkdir("ANALYSIS"); | |
223 | output->cd("ANALYSIS"); | |
224 | // perform some analysis! | |
225 | // next loop: MC_Sigma_Rec over Rec_Data | |
226 | TCanvas* c1 = new TCanvas("MC reconstructed over Data","MC reconstructed over Data"); | |
227 | c1->Divide(3,2); | |
228 | TH1F* kRatioPtMCSigmaRecSigmaRec[6]; | |
229 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
230 | { | |
231 | kRatioPtMCSigmaRecSigmaRec[i] = (TH1F*)(spectrahistos_mc[i])->Clone(histotitle[i]); | |
232 | kRatioPtMCSigmaRecSigmaRec[i]->Divide(spectrahistos_data[i]); | |
233 | c1->cd(1+i); | |
234 | kRatioPtMCSigmaRecSigmaRec[i]->SetTitle(histoname[i]); | |
235 | kRatioPtMCSigmaRecSigmaRec[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
236 | kRatioPtMCSigmaRecSigmaRec[i]->Draw(); | |
237 | kRatioPtMCSigmaRecSigmaRec[i]->Write(); | |
238 | } | |
239 | // next loop: MC_sigma_primaries over Rec_data | |
240 | TCanvas* c2 = new TCanvas("MC reconstructed primaries over Data", "MC reconstructed primaries over Data"); | |
241 | c2->Divide(3,2); | |
242 | TH1F* kRatioPtMCSigmaRecPrimarySigmaRec[6]; | |
243 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
244 | { | |
245 | kRatioPtMCSigmaRecPrimarySigmaRec[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaPrimaryProtonPlus])->Clone(histotitle[i+6]); | |
246 | kRatioPtMCSigmaRecPrimarySigmaRec[i]->Divide(spectrahistos_data[i]); | |
247 | c2->cd(1+i); | |
248 | kRatioPtMCSigmaRecPrimarySigmaRec[i]->SetTitle(histoname[i+6]); | |
249 | kRatioPtMCSigmaRecPrimarySigmaRec[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
250 | kRatioPtMCSigmaRecPrimarySigmaRec[i]->Draw(); | |
251 | kRatioPtMCSigmaRecPrimarySigmaRec[i]->Write(); | |
252 | } | |
253 | // next loop: MC_Sigma_secondaries over Rec_data | |
254 | TCanvas* c3 = new TCanvas("MC reconstructed secondaries over Data","MC reconstructed secondaries over Data"); | |
255 | c3->Divide(3,2); | |
256 | TH1F* kRatioPtMCSigmaRecSigmaRecSecondary[6]; | |
257 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
258 | { | |
259 | kRatioPtMCSigmaRecSigmaRecSecondary[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaSecondaryProtonPlus])->Clone(histotitle[i+12]); | |
260 | kRatioPtMCSigmaRecSigmaRecSecondary[i]->Divide(spectrahistos_data[i]); | |
261 | c3->cd(1+i); | |
262 | kRatioPtMCSigmaRecSigmaRecSecondary[i]->SetTitle(histoname[12+i]); | |
263 | kRatioPtMCSigmaRecSigmaRecSecondary[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
264 | kRatioPtMCSigmaRecSigmaRecSecondary[i]->Draw(); | |
265 | kRatioPtMCSigmaRecSigmaRecSecondary[i]->Write(); | |
266 | } | |
267 | // | |
268 | TCanvas* c4 = new TCanvas("MC true generated over MC true reconstructed","MC true generated over MC true reconstructed"); | |
269 | c4->Divide(3,2); | |
270 | TH1F* kRatioPtMCTrueMCRec[6]; | |
271 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
272 | { | |
273 | kRatioPtMCTrueMCRec[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus])->Clone(histotitle[i+18]); | |
274 | kRatioPtMCTrueMCRec[i]->Divide(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaPrimaryProtonPlus]); | |
275 | c4->cd(1+i); | |
276 | kRatioPtMCTrueMCRec[i]->SetTitle(histoname[18+i]); | |
277 | kRatioPtMCTrueMCRec[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
278 | kRatioPtMCTrueMCRec[i]->Draw(); | |
279 | kRatioPtMCTrueMCRec[i]->Write(); | |
280 | } | |
281 | ||
282 | TCanvas* c5 = new TCanvas("True Data","True Data"); | |
283 | c5->Divide(3,2); | |
284 | TH1F* kRatioPtTrueData[6]; | |
285 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
286 | { | |
287 | kRatioPtTrueData[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus])->Clone(histotitle[i+24]); | |
288 | kRatioPtTrueData[i]->Divide(spectrahistos_mc[i]); // Michele: Since we are correcting all contributions at once, this should be exaclty the same as in the data! | |
289 | kRatioPtTrueData[i]->Multiply(spectrahistos_data[i]); | |
290 | c5->cd(1+i); | |
291 | kRatioPtTrueData[i]->SetTitle(histoname[24+i]); | |
292 | kRatioPtTrueData[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
293 | kRatioPtTrueData[i]->Draw(); | |
294 | kRatioPtTrueData[i]->Write(); | |
295 | } | |
296 | ||
297 | TCanvas* c6 = new TCanvas("Raw data", "Raw data"); | |
298 | c6->Divide(3,2); | |
299 | TH1F* kRawData[6]; | |
300 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
301 | { | |
302 | kRawData[i] = (TH1F*)(spectrahistos_data[i+AliSpectraNameSpace::kHistPtRecSigmaProtonPlus])->Clone(histotitle[i+30]); | |
303 | c6->cd(1+i); | |
304 | kRawData[i]->SetTitle(histoname[30+i]); | |
305 | kRawData[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
306 | kRawData[i]->Draw(); | |
307 | kRawData[i]->Write(); | |
308 | } | |
309 | ||
310 | TCanvas* c7 = new TCanvas("contamination", "contamination"); | |
311 | c7->Divide(3,2); | |
312 | TH1F* kContamination[6]; | |
313 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
314 | { | |
315 | kContamination[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaProtonPlus])->Clone(histotitle[i+36]); | |
316 | kContamination[i]->Divide(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecTrueProtonPlus]); | |
317 | c7->cd(1+i); | |
318 | kContamination[i]->SetTitle(histoname[36+i]); | |
319 | kContamination[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
320 | kContamination[i]->Draw(); | |
321 | kContamination[i]->Write(); | |
322 | } | |
323 | ||
324 | TCanvas* c8 = new TCanvas("contamination secondary", "contamination secondary"); | |
325 | c8->Divide(3,2); | |
326 | TH1F* kSecContamination[6]; | |
327 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
328 | { | |
329 | kSecContamination[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaSecondaryProtonPlus])->Clone(histotitle[i+42]); | |
330 | kSecContamination[i]->Divide(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaProtonPlus]); | |
331 | c8->cd(1+i); | |
332 | kSecContamination[i]->SetTitle(histoname[42+i]); | |
333 | kSecContamination[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
334 | kSecContamination[i]->Draw(); | |
335 | kSecContamination[i]->Write(); | |
336 | } | |
337 | ||
338 | TCanvas* c9 = new TCanvas("true data and generated", "true data and generated"); | |
339 | c9->Divide(3,2); | |
340 | TH1F* ktrueandgenerated[6]; | |
341 | for (Int_t i = 0 ; i < 6 ; i ++ ) | |
342 | { | |
343 | // kSecContamination[i] = (TH1F*)(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaSecondaryProtonPlus])->Clone(histotitle[i+42]); | |
344 | // kSecContamination[i]->Divide(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtRecSigmaProtonPlus]); | |
345 | c9->cd(1+i); | |
346 | // kSecContamination[i]->SetTitle(histoname[42+i]); | |
347 | // kSecContamination[i]->GetYaxis()->SetTitle("#frac{d^{2} N}{dy dp_{T}} (c / GeV)"); | |
348 | kRatioPtTrueData[i]->Draw(); | |
349 | spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus]->SetMarkerColor(kRed); | |
350 | spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus]->SetMarkerStyle(kOpenCircle); | |
351 | spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus]->SetLineColor(kRed); | |
352 | spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus]->Draw("same"); | |
353 | ||
354 | // legend | |
355 | TLegend * leg = new TLegend(0.6,0.64,0.89,0.79); //coordinates are fractions | |
356 | leg->AddEntry(spectrahistos_mc[i+AliSpectraNameSpace::kHistPtGenTruePrimaryProtonPlus],"Generated","p"); | |
357 | leg->AddEntry(kRatioPtTrueData[i],"Corrected","p"); | |
358 | leg->Draw(); | |
359 | } | |
360 | ||
361 | cout << "Analysis complete" << endl; | |
362 | cout << " - Please exit root to close and save output file " << endl; | |
363 | } |