]>
Commit | Line | Data |
---|---|---|
07c2615a | 1 | #include "AliLog.h" |
2 | #include "TH1D.h" | |
3 | #include "TH2D.h" | |
4 | #include "TTree.h" | |
5 | #include "TAxis.h" | |
6 | #include "AliAODEvent.h" | |
7 | #include "AliAODTrack.h" | |
8 | #include "TMath.h" | |
9 | #include "TString.h" | |
10 | ||
11 | #include "AliAnalysisTaskMuonHadronCorrelations.h" | |
6de71f1d | 12 | #include "AliAnalysisManager.h" |
13 | #include "AliInputEventHandler.h" | |
14 | #include "AliEventPoolManager.h" | |
07c2615a | 15 | |
16 | ClassImp(AliAnalysisTaskMuonHadronCorrelations) | |
17 | ||
18 | //==================================================================================================================================================== | |
19 | ||
20 | AliAnalysisTaskMuonHadronCorrelations::AliAnalysisTaskMuonHadronCorrelations() : | |
21 | AliAnalysisTaskSE(), | |
22 | fAOD(0x0), | |
6de71f1d | 23 | fPoolMgr(0x0), |
07c2615a | 24 | fTrackCB(0x0), |
25 | fTrackMA(0x0), | |
26 | fFilterBitCentralBarrel(0), | |
27 | fMaxEtaCentralBarrel(1.0), | |
cc46e8f8 | 28 | fMinEtaCentralBarrel(-1.0), |
29d66ae8 | 29 | fMaxChi2Muon(9999999999.), |
07c2615a | 30 | fMinRAbsMuon(0), |
29d66ae8 | 31 | fMaxRAbsMuon(9999999999.), |
07c2615a | 32 | fTriggerMatchLevelMuon(0), |
07c2615a | 33 | fNbinsCent(1), |
34 | fNbinsPt(1), | |
35 | fCentAxis(0x0), | |
07c2615a | 36 | fPtAxis(0x0), |
b897e6f8 | 37 | fEtaAxis(0x0), |
07c2615a | 38 | fHistV0Multiplicity(0x0), |
39 | fHistITSMultiplicity(0x0), | |
40 | fHistCentrality(0x0), | |
9c92a0e1 | 41 | fHistEvStat(0x0), |
07c2615a | 42 | fCentMethod(0), |
07c2615a | 43 | fOutputList(0x0) |
44 | { | |
45 | ||
46 | // Default constructor | |
47 | ||
48 | for (Int_t iCent=0; iCent<fNMaxBinsCentrality; iCent++) { | |
49 | for (Int_t iPtBinCB=0; iPtBinCB<fNMaxBinsPt; iPtBinCB++) { | |
50 | for (Int_t iPtBinMA=0; iPtBinMA<fNMaxBinsPt; iPtBinMA++) { | |
51 | fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA] = NULL; | |
52 | fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = NULL; | |
b897e6f8 | 53 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] = NULL; |
54 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = NULL; | |
07c2615a | 55 | } |
56 | } | |
57 | fHistNTracksCB_vs_NTracksMA[iCent] = NULL; | |
57a9cc15 | 58 | fHistNTracksCB_vs_NTracksMAmixed[iCent] = NULL; |
ae1016ae | 59 | fHistTracksEtaMAvsEtaCB[iCent] = NULL; |
60 | fHistTracksEtaMAvsEtaCBmixed[iCent] = NULL; | |
9c92a0e1 | 61 | fHistSingleMuonsPt[iCent] = NULL; |
62 | fHistSingleMuonsPtmixed[iCent] = NULL; | |
b897e6f8 | 63 | fHistSingleMuonsEtaPt[iCent] = NULL; |
64 | fHistSingleMuonsEtaPtmixed[iCent] = NULL; | |
b51b09de | 65 | fHistSingleMuonsTrigMatch[iCent] = NULL; |
66 | fHistSingleMuonsChi2[iCent] = NULL; | |
57a9cc15 | 67 | fHistSingleMuonsEtaVsPt[iCent] = NULL; |
68 | fHistSingleMuonsEtaVsRAbs[iCent] = NULL; | |
07c2615a | 69 | } |
70 | ||
71 | } | |
72 | ||
73 | ||
74 | //==================================================================================================================================================== | |
75 | ||
76 | AliAnalysisTaskMuonHadronCorrelations::AliAnalysisTaskMuonHadronCorrelations(const char *name) : | |
77 | AliAnalysisTaskSE(name), | |
78 | fAOD(0x0), | |
6de71f1d | 79 | fPoolMgr(0x0), |
07c2615a | 80 | fTrackCB(0x0), |
81 | fTrackMA(0x0), | |
82 | fFilterBitCentralBarrel(0), | |
83 | fMaxEtaCentralBarrel(1.0), | |
cc46e8f8 | 84 | fMinEtaCentralBarrel(-1.0), |
29d66ae8 | 85 | fMaxChi2Muon(9999999999.), |
07c2615a | 86 | fMinRAbsMuon(0), |
29d66ae8 | 87 | fMaxRAbsMuon(9999999999.), |
07c2615a | 88 | fTriggerMatchLevelMuon(0), |
07c2615a | 89 | fNbinsCent(1), |
90 | fNbinsPt(1), | |
91 | fCentAxis(0x0), | |
07c2615a | 92 | fPtAxis(0x0), |
b897e6f8 | 93 | fEtaAxis(0x0), |
07c2615a | 94 | fHistV0Multiplicity(0x0), |
95 | fHistITSMultiplicity(0x0), | |
96 | fHistCentrality(0x0), | |
9c92a0e1 | 97 | fHistEvStat(0x0), |
07c2615a | 98 | fCentMethod(0), |
07c2615a | 99 | fOutputList(0x0) |
100 | { | |
101 | ||
102 | // Constructor | |
103 | ||
104 | for (Int_t iCent=0; iCent<fNMaxBinsCentrality; iCent++) { | |
105 | for (Int_t iPtBinCB=0; iPtBinCB<fNMaxBinsPt; iPtBinCB++) { | |
106 | for (Int_t iPtBinMA=0; iPtBinMA<fNMaxBinsPt; iPtBinMA++) { | |
107 | fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA] = NULL; | |
108 | fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = NULL; | |
b897e6f8 | 109 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] = NULL; |
110 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = NULL; | |
07c2615a | 111 | } |
112 | } | |
113 | fHistNTracksCB_vs_NTracksMA[iCent] = NULL; | |
57a9cc15 | 114 | fHistNTracksCB_vs_NTracksMAmixed[iCent] = NULL; |
ae1016ae | 115 | fHistTracksEtaMAvsEtaCB[iCent] = NULL; |
116 | fHistTracksEtaMAvsEtaCBmixed[iCent] = NULL; | |
9c92a0e1 | 117 | fHistSingleMuonsPt[iCent] = NULL; |
118 | fHistSingleMuonsPtmixed[iCent] = NULL; | |
b897e6f8 | 119 | fHistSingleMuonsEtaPt[iCent] = NULL; |
120 | fHistSingleMuonsEtaPtmixed[iCent] = NULL; | |
b51b09de | 121 | fHistSingleMuonsTrigMatch[iCent] = NULL; |
122 | fHistSingleMuonsChi2[iCent] = NULL; | |
57a9cc15 | 123 | fHistSingleMuonsEtaVsPt[iCent] = NULL; |
124 | fHistSingleMuonsEtaVsRAbs[iCent] = NULL; | |
07c2615a | 125 | } |
126 | ||
127 | // Define input and output slots here | |
128 | DefineOutput(1, TList::Class()); | |
129 | ||
130 | } | |
131 | ||
132 | //==================================================================================================================================================== | |
133 | ||
134 | AliAnalysisTaskMuonHadronCorrelations::~AliAnalysisTaskMuonHadronCorrelations() { | |
135 | ||
07c2615a | 136 | delete fCentAxis; |
137 | delete fPtAxis; | |
b897e6f8 | 138 | delete fEtaAxis; |
07c2615a | 139 | |
6de71f1d | 140 | if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) |
141 | delete fOutputList; | |
07c2615a | 142 | } |
143 | ||
144 | //==================================================================================================================================================== | |
145 | ||
146 | void AliAnalysisTaskMuonHadronCorrelations::UserCreateOutputObjects() { | |
147 | ||
148 | fOutputList = new TList(); | |
149 | fOutputList->SetOwner(kTRUE); | |
150 | ||
151 | for (Int_t iCent=0; iCent<fNbinsCent; iCent++) { | |
152 | for (Int_t iPtBinCB=0; iPtBinCB<fNbinsPt; iPtBinCB++) { | |
153 | for (Int_t iPtBinMA=0; iPtBinMA<fNbinsPt; iPtBinMA++) { | |
154 | ||
155 | fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA] = new TH1D(Form("fHistDeltaPhi_Cent%02d_PtBin%02d_%02d",iCent,iPtBinCB,iPtBinMA), | |
156 | Form("%d-%d %%, %3.1f<p_{T}^{TPC}<%3.1f, %3.1f<p_{T}^{Muon}<%3.1f", | |
157 | Int_t(fCentAxis->GetBinLowEdge(iCent+1)), | |
158 | Int_t(fCentAxis->GetBinUpEdge(iCent+1)), | |
159 | fPtAxis->GetBinLowEdge(iPtBinCB+1), | |
160 | fPtAxis->GetBinUpEdge(iPtBinCB+1), | |
161 | fPtAxis->GetBinLowEdge(iPtBinMA+1), | |
162 | fPtAxis->GetBinUpEdge(iPtBinMA+1)), | |
163 | 100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi()); | |
164 | ||
165 | fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = new TH1D(Form("fHistDeltaPhiMix_Cent%02d_PtBin%02d_%02d",iCent,iPtBinCB,iPtBinMA), | |
166 | Form("%d-%d %%, %3.1f<p_{T}^{TPC}<%3.1f, %3.1f<p_{T}^{Muon}<%3.1f MIXED", | |
167 | Int_t(fCentAxis->GetBinLowEdge(iCent+1)), | |
168 | Int_t(fCentAxis->GetBinUpEdge(iCent+1)), | |
169 | fPtAxis->GetBinLowEdge(iPtBinCB+1), | |
170 | fPtAxis->GetBinUpEdge(iPtBinCB+1), | |
171 | fPtAxis->GetBinLowEdge(iPtBinMA+1), | |
172 | fPtAxis->GetBinUpEdge(iPtBinMA+1)), | |
173 | 100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi()); | |
174 | ||
175 | fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA] -> SetXTitle("#Delta#varphi [degrees]"); | |
176 | fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] -> SetXTitle("#Delta#varphi [degrees]"); | |
177 | ||
178 | fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA] -> Sumw2(); | |
179 | fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] -> Sumw2(); | |
180 | ||
181 | fOutputList -> Add(fHistDeltaPhi[iCent][iPtBinCB][iPtBinMA]); | |
182 | fOutputList -> Add(fHistDeltaPhiMix[iCent][iPtBinCB][iPtBinMA]); | |
183 | ||
b897e6f8 | 184 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] = new TH2D(Form("fHistEtaDeltaPhi_Cent%02d_PtBin%02d_%02d",iCent,iPtBinCB,iPtBinMA), |
185 | Form("%d-%d %%, %3.1f<p_{T}^{TPC}<%3.1f, %3.1f<p_{T}^{Muon}<%3.1f", | |
186 | Int_t(fCentAxis->GetBinLowEdge(iCent+1)), | |
187 | Int_t(fCentAxis->GetBinUpEdge(iCent+1)), | |
188 | fPtAxis->GetBinLowEdge(iPtBinCB+1), | |
189 | fPtAxis->GetBinUpEdge(iPtBinCB+1), | |
190 | fPtAxis->GetBinLowEdge(iPtBinMA+1), | |
191 | fPtAxis->GetBinUpEdge(iPtBinMA+1)), | |
192 | 100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi(), | |
193 | fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray()); | |
194 | ||
195 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] = new TH2D(Form("fHistEtaDeltaPhiMix_Cent%02d_PtBin%02d_%02d",iCent,iPtBinCB,iPtBinMA), | |
196 | Form("%d-%d %%, %3.1f<p_{T}^{TPC}<%3.1f, %3.1f<p_{T}^{Muon}<%3.1f MIXED", | |
197 | Int_t(fCentAxis->GetBinLowEdge(iCent+1)), | |
198 | Int_t(fCentAxis->GetBinUpEdge(iCent+1)), | |
199 | fPtAxis->GetBinLowEdge(iPtBinCB+1), | |
200 | fPtAxis->GetBinUpEdge(iPtBinCB+1), | |
201 | fPtAxis->GetBinLowEdge(iPtBinMA+1), | |
202 | fPtAxis->GetBinUpEdge(iPtBinMA+1)), | |
203 | 100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi(), | |
204 | fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray()); | |
205 | ||
206 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] -> SetXTitle("#Delta#varphi [degrees]"); | |
207 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] -> SetXTitle("#Delta#varphi [degrees]"); | |
208 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] -> SetYTitle("#eta"); | |
209 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] -> SetYTitle("#eta"); | |
210 | ||
211 | fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA] -> Sumw2(); | |
212 | fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA] -> Sumw2(); | |
213 | ||
214 | fOutputList -> Add(fHistEtaDeltaPhi[iCent][iPtBinCB][iPtBinMA]); | |
215 | fOutputList -> Add(fHistEtaDeltaPhiMix[iCent][iPtBinCB][iPtBinMA]); | |
216 | ||
07c2615a | 217 | } |
218 | } | |
219 | ||
220 | fHistNTracksCB_vs_NTracksMA[iCent] = new TH2D(Form("fHistNTracksCB_vs_NTracksMA_Cent%02d",iCent), | |
221 | Form("%d-%d %%",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))), | |
57a9cc15 | 222 | 100, 0, 500, 20, 0, 20); |
07c2615a | 223 | fHistNTracksCB_vs_NTracksMA[iCent] -> SetXTitle("N_{tracks} Central Barrel"); |
224 | fHistNTracksCB_vs_NTracksMA[iCent] -> SetYTitle("N_{tracks} Muon Arm"); | |
07c2615a | 225 | fHistNTracksCB_vs_NTracksMA[iCent] -> Sumw2(); |
226 | ||
57a9cc15 | 227 | fHistNTracksCB_vs_NTracksMAmixed[iCent] = new TH2D(Form("fHistNTracksCB_vs_NTracksMAmixed_Cent%02d",iCent), |
228 | Form("%d-%d %% MIXED",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))), | |
229 | 100, 0, 500, 20, 0, 20); | |
230 | fHistNTracksCB_vs_NTracksMAmixed[iCent] -> SetXTitle("N_{tracks} Central Barrel"); | |
231 | fHistNTracksCB_vs_NTracksMAmixed[iCent] -> SetYTitle("N_{tracks} Muon Arm"); | |
232 | fHistNTracksCB_vs_NTracksMAmixed[iCent] -> Sumw2(); | |
233 | ||
ae1016ae | 234 | fHistTracksEtaMAvsEtaCB[iCent] = new TH2D(Form("fHistTracksEtaMAvsEtaCB_%02d",iCent), |
235 | "#eta muon vs #eta barrel", | |
236 | 100,-4.5,-2.,100,-1.5,1.5); | |
237 | fHistTracksEtaMAvsEtaCBmixed[iCent] = new TH2D(Form("fHistTracksEtaMAvsEtaCBmixed_%02d",iCent), | |
238 | "#eta muon vs #eta barrel", | |
239 | 100,-4.5,-2.,100,-1.5,1.5); | |
240 | ||
07c2615a | 241 | fOutputList -> Add(fHistNTracksCB_vs_NTracksMA[iCent]); |
57a9cc15 | 242 | fOutputList -> Add(fHistNTracksCB_vs_NTracksMAmixed[iCent]); |
ae1016ae | 243 | fOutputList -> Add(fHistTracksEtaMAvsEtaCB[iCent]); |
244 | fOutputList -> Add(fHistTracksEtaMAvsEtaCBmixed[iCent]); | |
57a9cc15 | 245 | |
9c92a0e1 | 246 | fHistSingleMuonsPt[iCent] = new TH1D(Form("fHistSingleMuonPt_Cent%02d",iCent), |
247 | "p_{T} for single muons", | |
248 | fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray()); | |
249 | fHistSingleMuonsPtmixed[iCent] = new TH1D(Form("fHistSingleMuonPtmixed_Cent%02d",iCent), | |
250 | "p_{T} for single muons", | |
251 | fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray()); | |
252 | fOutputList -> Add(fHistSingleMuonsPt[iCent]); | |
253 | fOutputList -> Add(fHistSingleMuonsPtmixed[iCent]); | |
254 | ||
b897e6f8 | 255 | fHistSingleMuonsEtaPt[iCent] = new TH2D(Form("fHistSingleMuonEtaPt_Cent%02d",iCent), |
256 | "#eta vs p_{T} for single muons", | |
257 | fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray(), | |
258 | fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray()); | |
259 | fHistSingleMuonsEtaPtmixed[iCent] = new TH2D(Form("fHistSingleMuonEtaPtmixed_Cent%02d",iCent), | |
260 | "#eta vs p_{T} for single muons", | |
261 | fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray(), | |
262 | fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray()); | |
263 | fOutputList -> Add(fHistSingleMuonsEtaPt[iCent]); | |
264 | fOutputList -> Add(fHistSingleMuonsEtaPtmixed[iCent]); | |
265 | ||
b51b09de | 266 | fHistSingleMuonsTrigMatch[iCent] = new TH1D(Form("fHistSingleMuonsTrigMatch_Cent%02d",iCent), |
267 | "Single muons trigger match flag",10,-0.5,9.5); | |
268 | fOutputList -> Add(fHistSingleMuonsTrigMatch[iCent]); | |
269 | fHistSingleMuonsChi2[iCent] = new TH1D(Form("fHistSingleMuonsChi2_Cent%02d",iCent), | |
270 | "Single muons Chi2",100,0.,10.); | |
271 | fOutputList -> Add(fHistSingleMuonsChi2[iCent]); | |
272 | ||
57a9cc15 | 273 | fHistSingleMuonsEtaVsPt[iCent] = new TH2D(Form("fHistSingleMuonsEtaVsPt_Cent%02d",iCent), |
274 | "#eta vs p_{T} for single muons", | |
9c92a0e1 | 275 | 100, -4.5, -2., 100, 0., 10.); |
57a9cc15 | 276 | fOutputList->Add(fHistSingleMuonsEtaVsPt[iCent]); |
277 | fHistSingleMuonsEtaVsRAbs[iCent] = new TH2D(Form("fHistSingleMuonsEtaVsRAbs_Cent%02d",iCent), | |
9c92a0e1 | 278 | "#eta vs R_{Abs} for single muons", |
279 | 100, -4.5, -2., 100, 0, 100); | |
57a9cc15 | 280 | fOutputList->Add(fHistSingleMuonsEtaVsRAbs[iCent]); |
07c2615a | 281 | |
282 | } | |
283 | ||
284 | fHistV0Multiplicity = new TH1D("fHistV0Multiplicity", "V0 Multiplicity", 500, 0, 1000); | |
285 | fHistV0Multiplicity -> SetXTitle("Multiplicity"); | |
286 | fHistV0Multiplicity -> Sumw2(); | |
287 | ||
288 | fHistITSMultiplicity = new TH1D("fHistITSMultiplicity", "ITS Multiplicity", 500, 0, 500); | |
289 | fHistITSMultiplicity -> SetXTitle("N_{Clusters}"); | |
290 | fHistITSMultiplicity -> Sumw2(); | |
291 | ||
292 | fHistCentrality = new TH1D("fHistCentrality", Form("%s Centrality",fCentMethod.Data()), 300, -100, 200); | |
293 | fHistCentrality -> SetXTitle("Centrality [%]"); | |
294 | fHistCentrality -> Sumw2(); | |
295 | ||
296 | fOutputList -> Add(fHistV0Multiplicity); | |
297 | fOutputList -> Add(fHistITSMultiplicity); | |
298 | fOutputList -> Add(fHistCentrality); | |
299 | ||
9c92a0e1 | 300 | fHistEvStat = new TH1D("fHistEvStat","Event cuts statistics",20,-0.5,19.5); |
301 | fHistEvStat->SetXTitle("Cut index"); | |
302 | fOutputList->Add(fHistEvStat); | |
303 | ||
6de71f1d | 304 | const Int_t kNZvtxBins = 10; |
305 | // bins for further buffers are shifted by 100 cm | |
306 | Double_t vertexBins[kNZvtxBins+1] = { -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10 }; | |
307 | Int_t nZvtxBins = kNZvtxBins; | |
308 | Double_t* zvtxbin = vertexBins; | |
309 | ||
310 | fPoolMgr = new AliEventPoolManager(1000, 20000, fNbinsCent, (Double_t*)fCentAxis->GetXbins()->GetArray(), nZvtxBins, zvtxbin); | |
311 | ||
07c2615a | 312 | PostData(1, fOutputList); |
313 | ||
314 | } | |
315 | ||
316 | //==================================================================================================================================================== | |
317 | ||
318 | void AliAnalysisTaskMuonHadronCorrelations::UserExec(Option_t *) { | |
319 | ||
07c2615a | 320 | fAOD = dynamic_cast<AliAODEvent *>(InputEvent()); |
321 | if (!fAOD) return; | |
9c92a0e1 | 322 | |
323 | Int_t cutIndex = 0; | |
324 | fHistEvStat->Fill(cutIndex++); | |
07c2615a | 325 | // Trigger selection |
326 | if (!(IsTriggerFired())) return; | |
9c92a0e1 | 327 | fHistEvStat->Fill(cutIndex++); |
07c2615a | 328 | |
329 | fHistV0Multiplicity -> Fill(GetV0Multiplicity()); | |
330 | fHistITSMultiplicity -> Fill(GetITSMultiplicity()); | |
6de71f1d | 331 | |
07c2615a | 332 | Int_t centBin = GetCentBin(); |
333 | if (centBin<0) return; | |
9c92a0e1 | 334 | fHistEvStat->Fill(cutIndex++); |
6de71f1d | 335 | Double_t percentile = fAOD->GetCentrality()->GetCentralityPercentile(fCentMethod.Data()); |
336 | fHistCentrality->Fill(percentile); | |
337 | ||
9c92a0e1 | 338 | // Vertex selection |
339 | const AliAODVertex* trkVtx = fAOD->GetPrimaryVertex(); | |
340 | if (!trkVtx || trkVtx->GetNContributors()<=0) return; | |
341 | TString vtxTtl = trkVtx->GetTitle(); | |
342 | if (!vtxTtl.Contains("VertexerTracks")) return; | |
343 | fHistEvStat->Fill(cutIndex++); | |
344 | Double_t zvtx = trkVtx->GetZ(); | |
345 | const AliAODVertex* spdVtx = fAOD->GetPrimaryVertexSPD(); | |
346 | if (spdVtx->GetNContributors()<=0) return; | |
347 | TString vtxTyp = spdVtx->GetTitle(); | |
348 | Double_t cov[6]={0}; | |
349 | spdVtx->GetCovarianceMatrix(cov); | |
350 | Double_t zRes = TMath::Sqrt(cov[5]); | |
351 | if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return; | |
352 | if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5) return; | |
353 | fHistEvStat->Fill(cutIndex++); | |
354 | ||
355 | if (TMath::Abs(zvtx) > 10.) return; | |
356 | fHistEvStat->Fill(cutIndex++); | |
357 | ||
57a9cc15 | 358 | TObjArray *tracksMuonArm = GetAcceptedTracksMuonArm(fAOD,centBin); |
6de71f1d | 359 | if (tracksMuonArm->GetEntriesFast() == 0) { |
360 | delete tracksMuonArm; | |
361 | return; | |
362 | } | |
9c92a0e1 | 363 | fHistEvStat->Fill(cutIndex++); |
6de71f1d | 364 | TObjArray *tracksCentralBarrel = GetAcceptedTracksCentralBarrel(fAOD); |
07c2615a | 365 | |
6de71f1d | 366 | fHistNTracksCB_vs_NTracksMA[centBin] -> Fill(tracksCentralBarrel->GetEntries(), tracksMuonArm->GetEntries()); |
07c2615a | 367 | |
6de71f1d | 368 | AliDebug(1, Form("Single Event analysis : nTracksCB = %4d, nTracksMA = %4d", tracksCentralBarrel->GetEntries(), tracksMuonArm->GetEntries())); |
369 | ||
370 | // Same event | |
371 | for (Int_t iTrMA=0; iTrMA<tracksMuonArm->GetEntriesFast(); iTrMA++) { | |
372 | fTrackMA = (AliAODTrack*) tracksMuonArm->At(iTrMA); | |
9c92a0e1 | 373 | fHistSingleMuonsPt[centBin]->Fill(fTrackMA->Pt()); |
b897e6f8 | 374 | fHistSingleMuonsEtaPt[centBin]->Fill(fTrackMA->Pt(),fTrackMA->Eta()); |
6de71f1d | 375 | for (Int_t iTrCB=0; iTrCB<tracksCentralBarrel->GetEntriesFast(); iTrCB++) { |
376 | fTrackCB = (AliAODTrack*) tracksCentralBarrel -> At(iTrCB); | |
07c2615a | 377 | FillHistograms(centBin, kSingleEvent); |
378 | } | |
379 | } | |
380 | ||
6de71f1d | 381 | // Mixed event |
382 | { | |
9c92a0e1 | 383 | AliEventPool* pool = fPoolMgr->GetEventPool(percentile, zvtx); |
6de71f1d | 384 | //pool->PrintInfo(); |
385 | if (pool->IsReady() || pool->NTracksInPool() > 2000 || pool->GetCurrentNEvents() >= 5) | |
386 | for (Int_t jMix=0; jMix<pool->GetCurrentNEvents(); jMix++) { | |
57a9cc15 | 387 | TObjArray *mixedTracks = pool->GetEvent(jMix); |
388 | fHistNTracksCB_vs_NTracksMAmixed[centBin]->Fill(mixedTracks->GetEntriesFast(), tracksMuonArm->GetEntriesFast()); | |
6de71f1d | 389 | for (Int_t iTrMA=0; iTrMA<tracksMuonArm->GetEntriesFast(); iTrMA++) { |
390 | fTrackMA = (AliAODTrack*) tracksMuonArm->At(iTrMA); | |
9c92a0e1 | 391 | fHistSingleMuonsPtmixed[centBin]->Fill(fTrackMA->Pt()); |
b897e6f8 | 392 | fHistSingleMuonsEtaPtmixed[centBin]->Fill(fTrackMA->Pt(),fTrackMA->Eta()); |
6de71f1d | 393 | for (Int_t iTrCB=0; iTrCB<mixedTracks->GetEntriesFast(); iTrCB++) { |
394 | fTrackCB = (AliAODTrack*) mixedTracks -> At(iTrCB); | |
395 | FillHistograms(centBin, kMixedEvent); | |
396 | } | |
397 | } | |
398 | } | |
399 | pool->UpdatePool(tracksCentralBarrel); | |
400 | } | |
401 | ||
402 | delete tracksMuonArm; | |
07c2615a | 403 | |
404 | PostData(1, fOutputList); | |
405 | ||
406 | } | |
407 | ||
408 | //==================================================================================================================================================== | |
409 | ||
410 | void AliAnalysisTaskMuonHadronCorrelations::FillHistograms(Int_t centrality, Int_t option) { | |
411 | ||
412 | Int_t ptBinTrackCB = fPtAxis -> FindBin(fTrackCB->Pt()); | |
413 | Int_t ptBinTrackMA = fPtAxis -> FindBin(fTrackMA->Pt()); | |
414 | ||
415 | if (ptBinTrackCB<1 || ptBinTrackCB>fNbinsPt || ptBinTrackMA<1 || ptBinTrackMA>fNbinsPt) return; | |
416 | ||
417 | Double_t deltaPhi = fTrackCB->Phi() - fTrackMA->Phi(); | |
418 | if (deltaPhi > 1.5*TMath::Pi()) deltaPhi -= TMath::TwoPi(); | |
419 | if (deltaPhi < -0.5*TMath::Pi()) deltaPhi += TMath::TwoPi(); | |
420 | ||
421 | if (option==kSingleEvent) fHistDeltaPhi[centrality][ptBinTrackCB-1][ptBinTrackMA-1] -> Fill(TMath::RadToDeg()*deltaPhi); | |
422 | else if (option==kMixedEvent) fHistDeltaPhiMix[centrality][ptBinTrackCB-1][ptBinTrackMA-1] -> Fill(TMath::RadToDeg()*deltaPhi); | |
423 | ||
b897e6f8 | 424 | if (option==kSingleEvent) fHistEtaDeltaPhi[centrality][ptBinTrackCB-1][ptBinTrackMA-1] -> Fill(TMath::RadToDeg()*deltaPhi,fTrackMA->Eta()); |
425 | else if (option==kMixedEvent) fHistEtaDeltaPhiMix[centrality][ptBinTrackCB-1][ptBinTrackMA-1] -> Fill(TMath::RadToDeg()*deltaPhi,fTrackMA->Eta()); | |
426 | ||
ae1016ae | 427 | if (option==kSingleEvent) fHistTracksEtaMAvsEtaCB[centrality]->Fill(fTrackMA->Eta(),fTrackCB->Eta()); |
428 | else if (option==kMixedEvent) fHistTracksEtaMAvsEtaCBmixed[centrality]->Fill(fTrackMA->Eta(),fTrackCB->Eta()); | |
07c2615a | 429 | } |
430 | ||
431 | //==================================================================================================================================================== | |
432 | ||
433 | Bool_t AliAnalysisTaskMuonHadronCorrelations::IsTriggerFired() { | |
434 | ||
6de71f1d | 435 | Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7); |
07c2615a | 436 | |
6de71f1d | 437 | return isSelected; |
07c2615a | 438 | } |
439 | ||
440 | //==================================================================================================================================================== | |
441 | ||
442 | Float_t AliAnalysisTaskMuonHadronCorrelations::GetV0Multiplicity() { | |
443 | ||
444 | Float_t multiplicity=0; | |
445 | for (Int_t iChannel=0; iChannel<64; iChannel++) multiplicity += fAOD->GetVZEROData()->GetMultiplicity(iChannel); | |
446 | return multiplicity; | |
447 | ||
448 | } | |
449 | ||
450 | //==================================================================================================================================================== | |
451 | ||
6de71f1d | 452 | TObjArray* AliAnalysisTaskMuonHadronCorrelations::GetAcceptedTracksCentralBarrel(AliAODEvent *aodEvent) { |
07c2615a | 453 | |
454 | // fills the array of central barrel tracks that pass the cuts | |
455 | ||
6de71f1d | 456 | TObjArray *tracks = new TObjArray; |
457 | tracks->SetOwner(kTRUE); | |
07c2615a | 458 | |
4640c275 | 459 | Int_t nTracks = aodEvent->GetNumberOfTracks(); |
07c2615a | 460 | |
461 | AliAODTrack *track = 0; | |
462 | ||
463 | for (Int_t iTrack=0; iTrack<nTracks; iTrack++) { | |
f15c1f69 | 464 | track = dynamic_cast<AliAODTrack*>(aodEvent->GetTrack(iTrack)); |
465 | if(!track) AliFatal("Not a standard AOD"); | |
cc46e8f8 | 466 | if (track->TestFilterBit(fFilterBitCentralBarrel) && track->Eta()>fMinEtaCentralBarrel && track->Eta()<fMaxEtaCentralBarrel) { |
6de71f1d | 467 | tracks->Add(new AliAODTrack(*track)); |
07c2615a | 468 | } |
469 | } | |
470 | ||
471 | return tracks; | |
472 | ||
473 | } | |
474 | ||
475 | //==================================================================================================================================================== | |
476 | ||
57a9cc15 | 477 | TObjArray* AliAnalysisTaskMuonHadronCorrelations::GetAcceptedTracksMuonArm(AliAODEvent *aodEvent, Int_t centBin) { |
07c2615a | 478 | |
479 | // fills the array of muon tracks that pass the cuts | |
480 | ||
6de71f1d | 481 | TObjArray *tracks = new TObjArray; |
482 | tracks->SetOwner(kFALSE); | |
07c2615a | 483 | |
4640c275 | 484 | Int_t nTracks = aodEvent->GetNumberOfTracks(); |
07c2615a | 485 | |
486 | AliAODTrack *track = 0; | |
487 | ||
488 | for (Int_t iTrack=0; iTrack<nTracks; iTrack++) { | |
f15c1f69 | 489 | track = dynamic_cast<AliAODTrack*>(aodEvent->GetTrack(iTrack)); |
490 | if(!track) AliFatal("Not a standard AOD"); | |
b51b09de | 491 | if (track->IsMuonTrack()) fHistSingleMuonsTrigMatch[centBin]->Fill(track->GetMatchTrigger()); |
07c2615a | 492 | if (track->IsMuonTrack() && track->GetMatchTrigger()>=fTriggerMatchLevelMuon) { |
b51b09de | 493 | fHistSingleMuonsChi2[centBin]->Fill(track->Chi2perNDF()); |
494 | // if (track->Chi2perNDF() < 5.) { | |
57a9cc15 | 495 | // histos |
496 | fHistSingleMuonsEtaVsPt[centBin]->Fill(track->Eta(),track->Pt()); | |
497 | fHistSingleMuonsEtaVsRAbs[centBin]->Fill(track->Eta(),track->GetRAtAbsorberEnd()); | |
498 | if (track->Eta() > -4. && track->Eta() < -2.5) { | |
499 | Double_t rabs = track->GetRAtAbsorberEnd(); | |
500 | if (rabs > 17.6 && rabs < 89.5) { | |
501 | tracks->Add(new AliAODTrack(*track)); | |
502 | } | |
503 | } | |
b51b09de | 504 | // } |
07c2615a | 505 | } |
506 | } | |
507 | ||
508 | return tracks; | |
509 | ||
510 | } | |
511 | ||
512 | //==================================================================================================================================================== | |
513 | ||
514 | void AliAnalysisTaskMuonHadronCorrelations::SetCentBinning(Int_t nBins, Double_t *limits) { | |
515 | ||
516 | if (nBins>fNMaxBinsCentrality) { | |
517 | AliInfo(Form("WARNING : only %d centrality bins (out of the %d proposed) will be considered",fNMaxBinsCentrality,nBins)); | |
518 | nBins = fNMaxBinsCentrality; | |
519 | } | |
520 | if (nBins<=0) { | |
521 | AliInfo("WARNING : at least one centrality bin must be considered"); | |
522 | nBins = 1; | |
523 | } | |
524 | ||
525 | fNbinsCent = nBins; | |
526 | fCentAxis = new TAxis(fNbinsCent, limits); | |
527 | ||
528 | } | |
529 | ||
530 | //==================================================================================================================================================== | |
531 | ||
07c2615a | 532 | void AliAnalysisTaskMuonHadronCorrelations::SetPtBinning(Int_t nBins, Double_t *limits) { |
533 | ||
534 | if (nBins>fNMaxBinsPt) { | |
535 | AliInfo(Form("WARNING : only %d pt bins (out of the %d proposed) will be considered",fNMaxBinsPt,nBins)); | |
536 | nBins = fNMaxBinsPt; | |
537 | } | |
538 | if (nBins<=0) { | |
539 | AliInfo("WARNING : at least one pt bin must be considered"); | |
540 | nBins = 1; | |
541 | } | |
542 | ||
543 | fNbinsPt = nBins; | |
544 | fPtAxis = new TAxis(fNbinsPt, limits); | |
545 | ||
546 | } | |
547 | ||
548 | //==================================================================================================================================================== | |
549 | ||
b897e6f8 | 550 | void AliAnalysisTaskMuonHadronCorrelations::SetEtaBinning(Int_t nBins, Double_t *limits) { |
551 | ||
552 | if (nBins>fNMaxBinsEta) { | |
553 | AliInfo(Form("WARNING : only %d pt bins (out of the %d proposed) will be considered",fNMaxBinsEta,nBins)); | |
554 | nBins = fNMaxBinsEta; | |
555 | } | |
556 | if (nBins<=0) { | |
557 | AliInfo("WARNING : at least one pt bin must be considered"); | |
558 | nBins = 1; | |
559 | } | |
560 | ||
561 | fEtaAxis = new TAxis(nBins, limits); | |
562 | ||
563 | } | |
564 | ||
565 | //==================================================================================================================================================== | |
566 | ||
07c2615a | 567 | Int_t AliAnalysisTaskMuonHadronCorrelations::GetCentBin() { |
07c2615a | 568 | |
6de71f1d | 569 | Double_t percentile = fAOD->GetCentrality()->GetCentralityPercentile(fCentMethod.Data()); |
07c2615a | 570 | |
6de71f1d | 571 | Int_t bin = fCentAxis->FindBin(percentile) - 1; |
572 | if (bin >= fNbinsCent) bin = -1; | |
573 | return bin; | |
07c2615a | 574 | |
575 | } | |
576 | ||
577 | //==================================================================================================================================================== | |
578 | ||
579 | Double_t AliAnalysisTaskMuonHadronCorrelations::GetITSMultiplicity() { | |
580 | ||
0a918d8d | 581 | Double_t multiplicity = ((AliVAODHeader*)fAOD->GetHeader())->GetNumberOfITSClusters(1); |
07c2615a | 582 | |
583 | return multiplicity; | |
584 | ||
585 | } | |
586 | ||
587 | //==================================================================================================================================================== | |
588 | ||
589 | void AliAnalysisTaskMuonHadronCorrelations::Terminate(Option_t *) { | |
590 | ||
591 | fOutputList = dynamic_cast<TList*> (GetOutputData(1)); | |
592 | if (!fOutputList) { | |
593 | printf("ERROR: Output list not available\n"); | |
594 | return; | |
595 | } | |
596 | ||
597 | } | |
598 | ||
599 | //==================================================================================================================================================== | |
600 |