]>
Commit | Line | Data |
---|---|---|
0a28d543 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: ALICE Offline. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | ||
17 | //=========================================================================// | |
18 | // AliEbyE Analysis for Particle Ratio Fluctuation // | |
19 | // Deepika Rathee | Satyajit Jena // | |
20 | // drathee@cern.ch | sjena@cern.ch // | |
21 | // Date: Wed Jul 9 18:38:30 CEST 2014 // | |
22 | // New approch to find particle ratio to reduce memory // | |
23 | // (Test Only) // | |
df4f740f | 24 | // Copied from NetParticle Classes |
25 | // Origin: Authors: Jochen Thaeder <jochen@thaeder.de> | |
26 | // Michael Weber <m.weber@cern.ch> | |
0a28d543 | 27 | //=========================================================================// |
28 | ||
29 | #include "TMath.h" | |
30 | #include "TAxis.h" | |
31 | #include "TSystem.h" | |
32 | #include "TProfile.h" | |
33 | #include "TH2F.h" | |
34 | #include "TH3F.h" | |
35 | #include "TFile.h" | |
36 | #include "TPRegexp.h" | |
37 | #include "AliStack.h" | |
38 | #include "AliMCEvent.h" | |
39 | #include "AliMCParticle.h" | |
40 | #include "AliESDtrackCuts.h" | |
41 | #include "AliESDInputHandler.h" | |
42 | #include "AliESDpid.h" | |
43 | #include "AliCentrality.h" | |
44 | #include "AliTracker.h" | |
45 | #include "AliAODInputHandler.h" | |
46 | #include "AliAODEvent.h" | |
47 | #include "AliAODTrack.h" | |
48 | #include "AliAODMCParticle.h" | |
49 | #include "AliEbyEPidRatioQA.h" | |
50 | ||
51 | using namespace std; | |
52 | ||
53 | ClassImp(AliEbyEPidRatioQA) | |
54 | //________________________________________________________________________ | |
55 | AliEbyEPidRatioQA::AliEbyEPidRatioQA() : | |
56 | AliEbyEPidRatioBase("QA", "QA"), | |
57 | ||
f7ea34d2 | 58 | fHnQAa(NULL), fHnQAb(NULL) { |
0a28d543 | 59 | // Constructor |
60 | ||
61 | AliLog::SetClassDebugLevel("AliEbyEPidRatioQA",10); | |
62 | } | |
63 | ||
64 | //________________________________________________________________________ | |
65 | AliEbyEPidRatioQA::~AliEbyEPidRatioQA() { | |
66 | // Destructor | |
67 | ||
68 | return; | |
69 | } | |
70 | ||
71 | //________________________________________________________________________ | |
72 | void AliEbyEPidRatioQA::CreateHistograms() { | |
73 | ||
f7ea34d2 | 74 | Int_t binHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4, |
75 | AliEbyEPidRatioHelper::fgkfHistNBinsSign, | |
76 | AliEbyEPidRatioHelper::fgkfHistNBinsPt, | |
a0b89af4 | 77 | AliEbyEPidRatioHelper::fgkfHistNBinsPt, |
f7ea34d2 | 78 | 500, 50, 50, 50, 3}; |
79 | ||
80 | Double_t minHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0],-0.5, | |
81 | AliEbyEPidRatioHelper::fgkfHistRangeSign[0], | |
82 | AliEbyEPidRatioHelper::fgkfHistRangePt[0], | |
a0b89af4 | 83 | AliEbyEPidRatioHelper::fgkfHistRangePt[0], |
f7ea34d2 | 84 | 30, -10,-10, -10, -0.5}; |
85 | ||
86 | Double_t maxHnQAa[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5, | |
87 | AliEbyEPidRatioHelper::fgkfHistRangeSign[1], | |
88 | AliEbyEPidRatioHelper::fgkfHistRangePt[1], | |
a0b89af4 | 89 | AliEbyEPidRatioHelper::fgkfHistRangePt[1], |
f7ea34d2 | 90 | 500, 10., 10., 10., 2.5}; |
91 | ||
92 | Int_t binHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4, | |
0cb52888 | 93 | AliEbyEPidRatioHelper::fgkfHistNBinsSign, |
94 | AliEbyEPidRatioHelper::fgkfHistNBinsPt, | |
f7ea34d2 | 95 | AliEbyEPidRatioHelper::fgkfHistNBinsEta, |
96 | AliEbyEPidRatioHelper::fgkfHistNBinsRap, | |
97 | AliEbyEPidRatioHelper::fgkfHistNBinsPhi, | |
f7ea34d2 | 98 | 50, 50}; |
0a28d543 | 99 | |
f7ea34d2 | 100 | Double_t minHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0],-0.5, |
101 | AliEbyEPidRatioHelper::fgkfHistRangeSign[0], | |
0cb52888 | 102 | AliEbyEPidRatioHelper::fgkfHistRangePt[0], |
103 | AliEbyEPidRatioHelper::fgkfHistRangeEta[0], | |
104 | AliEbyEPidRatioHelper::fgkfHistRangeRap[0], | |
105 | AliEbyEPidRatioHelper::fgkfHistRangePhi[0], | |
a0b89af4 | 106 | -5,-5}; |
0a28d543 | 107 | |
f7ea34d2 | 108 | Double_t maxHnQAb[9] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5, |
0cb52888 | 109 | AliEbyEPidRatioHelper::fgkfHistRangeSign[1], |
110 | AliEbyEPidRatioHelper::fgkfHistRangePt[1], | |
111 | AliEbyEPidRatioHelper::fgkfHistRangeEta[1], | |
112 | AliEbyEPidRatioHelper::fgkfHistRangeRap[1], | |
113 | AliEbyEPidRatioHelper::fgkfHistRangePhi[1], | |
a0b89af4 | 114 | 5., 5.}; |
0a28d543 | 115 | |
f7ea34d2 | 116 | fHnQAa = new THnSparseF("hnQAPid", "cent:pid:sign:pt:pInner:TPCsignal:nSigmaITS:nSigmaTPC:nSigmaTOF:MCisProbe", 10, binHnQAa, minHnQAa, maxHnQAa); |
a0b89af4 | 117 | fHnQAb = new THnSparseF("hnQADca", "cent:pid:sign:pt:eta:y:phi:DCAr:DCAz", 9, binHnQAb, minHnQAb, maxHnQAb); |
f7ea34d2 | 118 | fHnQAa->Sumw2(); |
119 | fHnQAb->Sumw2(); | |
0a28d543 | 120 | |
a0b89af4 | 121 | fHnQAa->GetAxis(0)->SetTitle("centrality"); // 0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90|90-100 --> 11 bins |
f7ea34d2 | 122 | fHnQAa->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}"); // 0 | 1 | 2 | 3 |
123 | fHnQAa->GetAxis(2)->SetTitle("sign"); // -1 | 0 | +1 | |
124 | fHnQAa->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})"); // pt [ 0.46, 2.22] | |
125 | fHnQAa->GetAxis(4)->SetTitle("#it{p}_{Inner} (GeV/#it{c})"); // pInner [ 0.1, 3.0] | |
126 | fHnQAa->GetAxis(5)->SetTitle("TPC signal"); // TPCsignal [30, 500] | |
127 | fHnQAa->GetAxis(6)->SetTitle("n #sigma ITS"); // nSigma ITS [-10, 10] | |
128 | fHnQAa->GetAxis(7)->SetTitle("n #sigma TPC"); // nSigma TPC [-10, 10] | |
129 | fHnQAa->GetAxis(8)->SetTitle("n #sigma TOF"); // nSigma TOF [-10, 10] | |
130 | fHnQAa->GetAxis(9)->SetTitle("MCisProbe"); // 0 | 1 (isProbeParticle) | 2 (isProbeParticle wrong sign) | |
131 | ||
a0b89af4 | 132 | fHnQAb->GetAxis(0)->SetTitle("centrality"); // 0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90!90-100 --> 11 bins |
f7ea34d2 | 133 | fHnQAb->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}"); // 0 | 1 | 2 | 3 |
134 | fHnQAb->GetAxis(2)->SetTitle("sign"); // -1 | 0 | +1 | |
0cb52888 | 135 | fHnQAb->GetAxis(3)->SetTitle("#it{p}_{T} (GeV/#it{c})"); // pt [ 0.46, 2.22] |
136 | fHnQAb->GetAxis(4)->SetTitle("#eta"); // eta [-0.9, 0.9] | |
137 | fHnQAb->GetAxis(5)->SetTitle("#it{y}"); // rapidity [-0.5, 0.5] | |
138 | fHnQAb->GetAxis(6)->SetTitle("#varphi"); // phi [ 0. , 2Pi] | |
f7ea34d2 | 139 | fHnQAb->GetAxis(7)->SetTitle("DCAr"); // DCAr [-10, 10] |
140 | fHnQAb->GetAxis(8)->SetTitle("DCAz"); // DCAz [-10, 10] | |
e146cc53 | 141 | // needed to be add later |
f7ea34d2 | 142 | // fHnQA->GetAxis(9)->SetTitle("n #sigma #sqrt(Cdd)/DCAr"); // nSigma DCAr [-10, 10] |
143 | // fHnQA->GetAxis(10)->SetTitle("n #sigma #sqrt(Czz)/DCAz"); // nSigma DCAz [-10, 10] | |
0a28d543 | 144 | |
f7ea34d2 | 145 | fHelper->BinLogAxis(fHnQAa, 3); |
0cb52888 | 146 | fHelper->BinLogAxis(fHnQAb, 3); |
f7ea34d2 | 147 | |
0a28d543 | 148 | return; |
149 | } | |
150 | ||
151 | //________________________________________________________________________ | |
152 | void AliEbyEPidRatioQA::Process() { | |
153 | Float_t etaRange[2]; | |
154 | fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]); | |
155 | ||
156 | Float_t ptRange[2]; | |
157 | fESDTrackCuts->GetPtRange(ptRange[0],ptRange[1]); | |
158 | ||
159 | // -- Track Loop | |
160 | for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) { | |
15bb9247 | 161 | |
0a28d543 | 162 | AliVTrack *track = (fESD) ? static_cast<AliVTrack*>(fESD->GetTrack(idxTrack)) : static_cast<AliVTrack*>(fAOD->GetTrack(idxTrack)); |
163 | ||
164 | // -- Check if track is accepted for basic parameters | |
165 | if (!fHelper->IsTrackAcceptedBasicCharged(track)) | |
166 | continue; | |
167 | ||
168 | // -- Check if accepted - ESD | |
15bb9247 | 169 | if (fESD){ |
170 | if (!fESDTrackCuts->AcceptTrack(dynamic_cast<AliESDtrack*>(track))) | |
171 | continue; | |
172 | } | |
173 | ||
174 | ||
0a28d543 | 175 | // -- Check if accepted - AOD |
176 | if (fAOD){ | |
177 | AliAODTrack * trackAOD = dynamic_cast<AliAODTrack*>(track); | |
178 | ||
179 | if (!trackAOD) { | |
180 | AliError("Pointer to dynamic_cast<AliAODTrack*>(track) = ZERO"); | |
181 | continue; | |
182 | } | |
183 | if (!trackAOD->TestFilterBit(fAODtrackCutBit)) | |
184 | continue; | |
185 | ||
186 | // -- Check if in pT and eta range (is done in ESDTrackCuts for ESDs) | |
187 | if(!(track->Pt() > ptRange[0] && track->Pt() <= ptRange[1] && TMath::Abs(track->Eta()) <= etaRange[1])) | |
188 | continue; | |
189 | } | |
190 | ||
191 | Int_t gPdgCode = 0; | |
192 | ||
193 | Int_t iPid = 0; | |
194 | Double_t pid[3]; | |
195 | if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kPion))) { iPid = 1; gPdgCode = 211;} | |
196 | else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kKaon))) { iPid = 2; gPdgCode = 321;} | |
197 | else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kProton))){ iPid = 3; gPdgCode = 2212;} | |
198 | else iPid = 0; | |
199 | ||
15bb9247 | 200 | |
201 | //cout << idxTrack << " --- QA ---- " << iPid << " " << gPdgCode << endl; | |
202 | ||
0a28d543 | 203 | Double_t yP; |
204 | if ((iPid != 0) && !fHelper->IsTrackAcceptedRapidity(track, yP, iPid)) | |
205 | continue; | |
206 | ||
207 | if (!fHelper->IsTrackAcceptedDCA(track)) | |
208 | continue; | |
209 | ||
210 | // -- Check if probe particle | |
211 | Int_t isProbeParticle = 0; | |
212 | if (fIsMC) { | |
213 | Int_t label = TMath::Abs(track->GetLabel()); | |
214 | ||
215 | AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(label) : static_cast<AliVParticle*>(fArrayMC->At(label)); | |
216 | if (particle) { | |
217 | if (TMath::Abs(particle->PdgCode()) == gPdgCode) { | |
218 | ++isProbeParticle; | |
219 | if (particle->PdgCode() != (track->Charge()*gPdgCode)) | |
220 | ++isProbeParticle; | |
221 | } | |
222 | } | |
223 | } | |
224 | ||
225 | // -- Get dca r/z | |
226 | Float_t dca[] = {0.,0.}; // dca_xy, dca_z, | |
227 | Float_t cov[] = {0.,0.,0.}; // sigma_xy, sigma_xy_z, sigma_z | |
228 | if (fESD) | |
229 | (static_cast<AliESDtrack*>(track))->GetImpactParameters(dca,cov); | |
230 | ||
f7ea34d2 | 231 | // Float_t dcaRoverCdd = ( TMath::Sqrt(cov[0]) != 0. ) ? dca[0]/TMath::Sqrt(cov[0]) : -9.99; |
232 | // Float_t dcaZoverCzz = ( TMath::Sqrt(cov[2]) != 0. ) ? dca[1]/TMath::Sqrt(cov[2]) : -9.99; | |
0a28d543 | 233 | |
234 | if (iPid == 0) | |
235 | yP = track->Eta(); | |
236 | ||
237 | ||
238 | // cout << pid[0] << " " << pid[1] << " " << pid[2] << yP << " " << iPid << endl; | |
239 | ||
240 | if (iPid != 0) { | |
0a28d543 | 241 | |
f62957be | 242 | Double_t aTracka[10] = {fCentralityBin,0, |
243 | static_cast<Double_t>(track->Charge()), | |
244 | track->Pt(), | |
245 | track->GetTPCmomentum(),track->GetTPCsignal(),pid[0],pid[1],pid[2], | |
246 | static_cast<Double_t>(isProbeParticle)}; | |
247 | Double_t aTrackb[9] = {fCentralityBin,0, | |
c21eda25 | 248 | static_cast<Double_t>(track->Charge()), |
f62957be | 249 | track->Pt(),track->Eta(),yP, |
250 | track->Phi(),dca[0],dca[1]}; | |
f7ea34d2 | 251 | fHnQAa->Fill(aTracka); |
252 | fHnQAb->Fill(aTrackb); | |
253 | } | |
254 | ||
f62957be | 255 | Double_t aTracka[10] = {fCentralityBin, |
256 | static_cast<Double_t>(iPid), | |
257 | static_cast<Double_t>(track->Charge()), | |
258 | track->Pt(), | |
259 | track->GetTPCmomentum(), | |
260 | track->GetTPCsignal(),pid[0],pid[1],pid[2], | |
261 | static_cast<Double_t>(isProbeParticle)}; | |
262 | Double_t aTrackb[9] = {fCentralityBin, | |
263 | static_cast<Double_t>(iPid), | |
264 | static_cast<Double_t>(track->Charge()), | |
265 | track->Pt(),track->Eta(),yP, track->Phi(),dca[0],dca[1]}; | |
f7ea34d2 | 266 | fHnQAa->Fill(aTracka); |
267 | fHnQAb->Fill(aTrackb); | |
0a28d543 | 268 | |
269 | } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) { | |
270 | ||
271 | return; | |
272 | } |