]>
Commit | Line | Data |
---|---|---|
2bb2434e | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
0a2b2b4b | 4 | * Author: Martin Wilde, Daniel Lohner, Friederike Bock * |
2bb2434e | 5 | * Version 1.0 * |
6 | * * | |
0a2b2b4b | 7 | * based on: on older version (see aliroot up to v5-04-42-AN) * |
8 | * AliAnalysisTaskGammaConversion.cxx * | |
9 | * Authors: Kathrin Koch, Kenneth Aamodt, Ana Marin * | |
10 | * * | |
2bb2434e | 11 | * Permission to use, copy, modify and distribute this software and its * |
12 | * documentation strictly for non-commercial purposes is hereby granted * | |
13 | * without fee, provided that the above copyright notice appears in all * | |
14 | * copies and that both the copyright notice and this permission notice * | |
15 | * appear in the supporting documentation. The authors make no claims * | |
16 | * about the suitability of this software for any purpose. It is * | |
17 | * provided "as is" without express or implied warranty. * | |
18 | **************************************************************************/ | |
19 | ||
20 | //////////////////////////////////////////////// | |
21 | //--------------------------------------------- | |
22 | // Class used to do analysis on conversion pairs | |
23 | //--------------------------------------------- | |
24 | /////////////////////////////////////////////// | |
25 | #include "TChain.h" | |
26 | #include "TTree.h" | |
27 | #include "TH1F.h" | |
28 | #include "TH2F.h" | |
29 | #include "TH3F.h" | |
30 | #include "THnSparse.h" | |
31 | #include "TCanvas.h" | |
32 | #include "TNtuple.h" | |
33 | #include "AliAnalysisTask.h" | |
34 | #include "AliAnalysisManager.h" | |
35 | #include "AliESDEvent.h" | |
36 | #include "AliESDInputHandler.h" | |
37 | #include "AliMCEventHandler.h" | |
38 | #include "AliMCEvent.h" | |
39 | #include "AliMCParticle.h" | |
40 | #include "AliCentrality.h" | |
41 | #include "AliESDVZERO.h" | |
42 | #include "AliESDpid.h" | |
43 | #include "AliAnalysisTaskGammaConvV1.h" | |
44 | #include "AliVParticle.h" | |
45 | #include "AliESDtrackCuts.h" | |
46 | #include "AliKFVertex.h" | |
47 | #include "AliV0ReaderV1.h" | |
ca91a3e1 | 48 | #include "AliGenCocktailEventHeader.h" |
e5b6e8a6 | 49 | #include "AliConversionAODBGHandlerRP.h" |
2bb2434e | 50 | |
51 | ClassImp(AliAnalysisTaskGammaConvV1) | |
52 | ||
53 | //________________________________________________________________________ | |
54 | AliAnalysisTaskGammaConvV1::AliAnalysisTaskGammaConvV1(): AliAnalysisTaskSE(), | |
55 | fV0Reader(NULL), | |
56 | fBGHandler(NULL), | |
e5b6e8a6 | 57 | fBGHandlerRP(NULL), |
58 | fInputEvent(NULL), | |
2bb2434e | 59 | fMCEvent(NULL), |
60 | fMCStack(NULL), | |
61 | fCutFolder(NULL), | |
62 | fESDList(NULL), | |
63 | fBackList(NULL), | |
ca91a3e1 | 64 | fMotherList(NULL), |
0a2b2b4b | 65 | fMotherRapList(NULL), |
2bb2434e | 66 | fTrueList(NULL), |
0a2b2b4b | 67 | fTrueMotherRapList(NULL), |
2bb2434e | 68 | fMCList(NULL), |
ca91a3e1 | 69 | fHeaderNameList(NULL), |
2bb2434e | 70 | fOutputContainer(0), |
71 | fReaderGammas(NULL), | |
a280ac15 | 72 | fGammaCandidates(NULL), |
2bb2434e | 73 | fCutArray(NULL), |
74 | fConversionCuts(NULL), | |
ca91a3e1 | 75 | fMesonCutArray(NULL), |
76 | fMesonCuts(NULL), | |
2bb2434e | 77 | hESDConvGammaPt(NULL), |
e5b6e8a6 | 78 | hESDConvGammaR(NULL), |
2bb2434e | 79 | hESDMotherInvMassPt(NULL), |
80 | sESDMotherInvMassPtZM(NULL), | |
0a2b2b4b | 81 | sESDMotherInvMassPtY(NULL), |
2bb2434e | 82 | hESDMotherBackInvMassPt(NULL), |
83 | sESDMotherBackInvMassPtZM(NULL), | |
84 | hESDMotherInvMassEalpha(NULL), | |
85 | hMCAllGammaPt(NULL), | |
2bb2434e | 86 | hMCDecayGammaPi0Pt(NULL), |
2bb2434e | 87 | hMCDecayGammaRhoPt(NULL), |
2bb2434e | 88 | hMCDecayGammaEtaPt(NULL), |
2bb2434e | 89 | hMCDecayGammaOmegaPt(NULL), |
2bb2434e | 90 | hMCDecayGammaEtapPt(NULL), |
2bb2434e | 91 | hMCDecayGammaPhiPt(NULL), |
e5b6e8a6 | 92 | hMCDecayGammaSigmaPt(NULL), |
2bb2434e | 93 | hMCConvGammaPt(NULL), |
ca91a3e1 | 94 | hMCConvGammaR(NULL), |
95 | hMCConvGammaEta(NULL), | |
e5b6e8a6 | 96 | hMCConvGammaRSPt(NULL), |
97 | hMCConvGammaRSR(NULL), | |
98 | hMCConvGammaRSEta(NULL), | |
2bb2434e | 99 | hMCPi0Pt(NULL), |
100 | hMCEtaPt(NULL), | |
101 | hMCPi0InAccPt(NULL), | |
102 | hMCEtaInAccPt(NULL), | |
0a2b2b4b | 103 | hMCPi0PtY(NULL), |
104 | hMCEtaPtY(NULL), | |
2bb2434e | 105 | hESDTrueMotherInvMassPt(NULL), |
a280ac15 | 106 | hESDTruePrimaryMotherInvMassPt(NULL), |
0a2b2b4b | 107 | hESDTruePrimaryPi0MCPtResolPt(NULL), |
108 | hESDTruePrimaryEtaMCPtResolPt(NULL), | |
109 | sESDTruePrimaryMotherInvMassPtY(NULL), | |
2bb2434e | 110 | hESDTrueSecondaryMotherInvMassPt(NULL), |
2bb2434e | 111 | hESDTrueSecondaryMotherFromK0sInvMassPt(NULL), |
e5b6e8a6 | 112 | hESDTrueK0sWithPi0DaughterMCPt(NULL), |
113 | hESDTrueSecondaryMotherFromEtaInvMassPt(NULL), | |
114 | hESDTrueEtaWithPi0DaughterMCPt(NULL), | |
2bb2434e | 115 | hESDTrueBckGGInvMassPt(NULL), |
116 | hESDTrueBckContInvMassPt(NULL), | |
117 | hESDTrueMotherDalitzInvMassPt(NULL), | |
2bb2434e | 118 | hESDTrueConvGammaPt(NULL), |
e5b6e8a6 | 119 | hESDCombinatorialPt(NULL), |
2bb2434e | 120 | hESDTruePrimaryConvGammaPt(NULL), |
ca91a3e1 | 121 | hESDTruePrimaryConvGammaR(NULL), |
122 | hESDTruePrimaryConvGammaEta(NULL), | |
2bb2434e | 123 | hESDTruePrimaryConvGammaESDPtMCPt(NULL), |
e5b6e8a6 | 124 | hESDTruePrimaryConvGammaRSESDPtMCPt(NULL), |
2bb2434e | 125 | hESDTrueSecondaryConvGammaPt(NULL), |
e5b6e8a6 | 126 | hESDTrueSecondaryConvGammaR(NULL), |
2bb2434e | 127 | hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL), |
2bb2434e | 128 | hNEvents(NULL), |
129 | hNGoodESDTracks(NULL), | |
a280ac15 | 130 | hNGammaCandidates(NULL), |
2bb2434e | 131 | hNV0Tracks(NULL), |
132 | fRandom(0), | |
a280ac15 | 133 | fnGammaCandidates(0), |
2bb2434e | 134 | fUnsmearedPx(NULL), |
135 | fUnsmearedPy(NULL), | |
136 | fUnsmearedPz(NULL), | |
137 | fUnsmearedE(NULL), | |
e5b6e8a6 | 138 | fnCuts(0), |
139 | fiCut(0), | |
140 | fNumberOfESDTracks(0), | |
141 | fMoveParticleAccordingToVertex(kTRUE), | |
2bb2434e | 142 | fIsHeavyIon(kFALSE), |
e5b6e8a6 | 143 | fDoMesonAnalysis(kTRUE), |
0a2b2b4b | 144 | fDoMesonQA(kFALSE), |
145 | fDoPhotonQA(kFALSE), | |
a280ac15 | 146 | fIsFromMBHeader(kTRUE) |
2bb2434e | 147 | { |
a280ac15 | 148 | |
2bb2434e | 149 | } |
150 | ||
151 | //________________________________________________________________________ | |
152 | AliAnalysisTaskGammaConvV1::AliAnalysisTaskGammaConvV1(const char *name): | |
153 | AliAnalysisTaskSE(name), | |
154 | fV0Reader(NULL), | |
155 | fBGHandler(NULL), | |
e5b6e8a6 | 156 | fBGHandlerRP(NULL), |
157 | fInputEvent(NULL), | |
2bb2434e | 158 | fMCEvent(NULL), |
159 | fMCStack(NULL), | |
160 | fCutFolder(NULL), | |
161 | fESDList(NULL), | |
162 | fBackList(NULL), | |
ca91a3e1 | 163 | fMotherList(NULL), |
0a2b2b4b | 164 | fMotherRapList(NULL), |
2bb2434e | 165 | fTrueList(NULL), |
0a2b2b4b | 166 | fTrueMotherRapList(NULL), |
2bb2434e | 167 | fMCList(NULL), |
ca91a3e1 | 168 | fHeaderNameList(NULL), |
2bb2434e | 169 | fOutputContainer(0), |
170 | fReaderGammas(NULL), | |
a280ac15 | 171 | fGammaCandidates(NULL), |
2bb2434e | 172 | fCutArray(NULL), |
173 | fConversionCuts(NULL), | |
ca91a3e1 | 174 | fMesonCutArray(NULL), |
175 | fMesonCuts(NULL), | |
2bb2434e | 176 | hESDConvGammaPt(NULL), |
e5b6e8a6 | 177 | hESDConvGammaR(NULL), |
2bb2434e | 178 | hESDMotherInvMassPt(NULL), |
179 | sESDMotherInvMassPtZM(NULL), | |
0a2b2b4b | 180 | sESDMotherInvMassPtY(NULL), |
2bb2434e | 181 | hESDMotherBackInvMassPt(NULL), |
182 | sESDMotherBackInvMassPtZM(NULL), | |
183 | hESDMotherInvMassEalpha(NULL), | |
184 | hMCAllGammaPt(NULL), | |
2bb2434e | 185 | hMCDecayGammaPi0Pt(NULL), |
2bb2434e | 186 | hMCDecayGammaRhoPt(NULL), |
2bb2434e | 187 | hMCDecayGammaEtaPt(NULL), |
2bb2434e | 188 | hMCDecayGammaOmegaPt(NULL), |
2bb2434e | 189 | hMCDecayGammaEtapPt(NULL), |
2bb2434e | 190 | hMCDecayGammaPhiPt(NULL), |
e5b6e8a6 | 191 | hMCDecayGammaSigmaPt(NULL), |
2bb2434e | 192 | hMCConvGammaPt(NULL), |
ca91a3e1 | 193 | hMCConvGammaR(NULL), |
194 | hMCConvGammaEta(NULL), | |
e5b6e8a6 | 195 | hMCConvGammaRSPt(NULL), |
196 | hMCConvGammaRSR(NULL), | |
197 | hMCConvGammaRSEta(NULL), | |
2bb2434e | 198 | hMCPi0Pt(NULL), |
199 | hMCEtaPt(NULL), | |
200 | hMCPi0InAccPt(NULL), | |
201 | hMCEtaInAccPt(NULL), | |
0a2b2b4b | 202 | hMCPi0PtY(NULL), |
203 | hMCEtaPtY(NULL), | |
2bb2434e | 204 | hESDTrueMotherInvMassPt(NULL), |
a280ac15 | 205 | hESDTruePrimaryMotherInvMassPt(NULL), |
0a2b2b4b | 206 | hESDTruePrimaryPi0MCPtResolPt(NULL), |
207 | hESDTruePrimaryEtaMCPtResolPt(NULL), | |
208 | sESDTruePrimaryMotherInvMassPtY(NULL), | |
2bb2434e | 209 | hESDTrueSecondaryMotherInvMassPt(NULL), |
2bb2434e | 210 | hESDTrueSecondaryMotherFromK0sInvMassPt(NULL), |
e5b6e8a6 | 211 | hESDTrueK0sWithPi0DaughterMCPt(NULL), |
212 | hESDTrueSecondaryMotherFromEtaInvMassPt(NULL), | |
213 | hESDTrueEtaWithPi0DaughterMCPt(NULL), | |
2bb2434e | 214 | hESDTrueBckGGInvMassPt(NULL), |
215 | hESDTrueBckContInvMassPt(NULL), | |
216 | hESDTrueMotherDalitzInvMassPt(NULL), | |
2bb2434e | 217 | hESDTrueConvGammaPt(NULL), |
e5b6e8a6 | 218 | hESDCombinatorialPt(NULL), |
2bb2434e | 219 | hESDTruePrimaryConvGammaPt(NULL), |
ca91a3e1 | 220 | hESDTruePrimaryConvGammaR(NULL), |
221 | hESDTruePrimaryConvGammaEta(NULL), | |
2bb2434e | 222 | hESDTruePrimaryConvGammaESDPtMCPt(NULL), |
e5b6e8a6 | 223 | hESDTruePrimaryConvGammaRSESDPtMCPt(NULL), |
2bb2434e | 224 | hESDTrueSecondaryConvGammaPt(NULL), |
e5b6e8a6 | 225 | hESDTrueSecondaryConvGammaR(NULL), |
2bb2434e | 226 | hESDTrueSecondaryConvGammaFromXFromK0sPt(NULL), |
2bb2434e | 227 | hNEvents(NULL), |
228 | hNGoodESDTracks(NULL), | |
a280ac15 | 229 | hNGammaCandidates(NULL), |
2bb2434e | 230 | hNV0Tracks(NULL), |
231 | fRandom(0), | |
a280ac15 | 232 | fnGammaCandidates(0), |
2bb2434e | 233 | fUnsmearedPx(NULL), |
234 | fUnsmearedPy(NULL), | |
235 | fUnsmearedPz(NULL), | |
236 | fUnsmearedE(NULL), | |
e5b6e8a6 | 237 | fnCuts(0), |
238 | fiCut(0), | |
239 | fNumberOfESDTracks(0), | |
240 | fMoveParticleAccordingToVertex(kTRUE), | |
2bb2434e | 241 | fIsHeavyIon(kFALSE), |
e5b6e8a6 | 242 | fDoMesonAnalysis(kTRUE), |
0a2b2b4b | 243 | fDoMesonQA(kFALSE), |
244 | fDoPhotonQA(kFALSE), | |
a280ac15 | 245 | fIsFromMBHeader(kTRUE) |
2bb2434e | 246 | { |
a280ac15 | 247 | // Define output slots here |
2bb2434e | 248 | DefineOutput(1, TList::Class()); |
249 | } | |
250 | ||
251 | AliAnalysisTaskGammaConvV1::~AliAnalysisTaskGammaConvV1() | |
252 | { | |
a280ac15 | 253 | if(fGammaCandidates){ |
254 | delete fGammaCandidates; | |
255 | fGammaCandidates = 0x0; | |
2bb2434e | 256 | } |
257 | if(fBGHandler){ | |
258 | delete[] fBGHandler; | |
259 | fBGHandler = 0x0; | |
260 | } | |
e5b6e8a6 | 261 | if(fBGHandlerRP){ |
262 | delete[] fBGHandlerRP; | |
263 | fBGHandlerRP = 0x0; | |
264 | } | |
2bb2434e | 265 | } |
266 | //___________________________________________________________ | |
267 | void AliAnalysisTaskGammaConvV1::InitBack(){ | |
268 | ||
0a2b2b4b | 269 | Double_t *zBinLimitsArray= new Double_t[9] ; |
2bb2434e | 270 | zBinLimitsArray[0] = -50.00; |
271 | zBinLimitsArray[1] = -3.375; | |
272 | zBinLimitsArray[2] = -1.605; | |
273 | zBinLimitsArray[3] = -0.225; | |
274 | zBinLimitsArray[4] = 1.065; | |
275 | zBinLimitsArray[5] = 2.445; | |
276 | zBinLimitsArray[6] = 4.245; | |
277 | zBinLimitsArray[7] = 50.00; | |
278 | zBinLimitsArray[8] = 1000.00; | |
279 | ||
0a2b2b4b | 280 | Double_t *multiplicityBinLimitsArrayTracks= new Double_t[6]; |
2bb2434e | 281 | multiplicityBinLimitsArrayTracks[0] = 0; |
282 | multiplicityBinLimitsArrayTracks[1] = 8.5; | |
283 | multiplicityBinLimitsArrayTracks[2] = 16.5; | |
284 | multiplicityBinLimitsArrayTracks[3] = 27.5; | |
285 | multiplicityBinLimitsArrayTracks[4] = 41.5; | |
286 | multiplicityBinLimitsArrayTracks[5] = 200.; | |
287 | if(fIsHeavyIon){ | |
288 | multiplicityBinLimitsArrayTracks[0] = 0; | |
289 | multiplicityBinLimitsArrayTracks[1] = 200.; | |
290 | multiplicityBinLimitsArrayTracks[2] = 500.; | |
291 | multiplicityBinLimitsArrayTracks[3] = 1000.; | |
292 | multiplicityBinLimitsArrayTracks[4] = 1500.; | |
293 | multiplicityBinLimitsArrayTracks[5] = 5000.; | |
294 | } | |
295 | ||
0a2b2b4b | 296 | Double_t *multiplicityBinLimitsArrayV0s= new Double_t[5]; |
2bb2434e | 297 | multiplicityBinLimitsArrayV0s[0] = 2; |
298 | multiplicityBinLimitsArrayV0s[1] = 3; | |
299 | multiplicityBinLimitsArrayV0s[2] = 4; | |
300 | multiplicityBinLimitsArrayV0s[3] = 5; | |
301 | multiplicityBinLimitsArrayV0s[4] = 9999; | |
302 | if(fIsHeavyIon){ | |
303 | multiplicityBinLimitsArrayV0s[0] = 2; | |
304 | multiplicityBinLimitsArrayV0s[1] = 10; | |
305 | multiplicityBinLimitsArrayV0s[2] = 30; | |
306 | multiplicityBinLimitsArrayV0s[3] = 50; | |
307 | multiplicityBinLimitsArrayV0s[4] = 9999; | |
308 | } | |
309 | ||
310 | const Int_t nDim = 4; | |
e5b6e8a6 | 311 | Int_t nBins[nDim] = {800,250,8,5}; |
2bb2434e | 312 | Double_t xMin[nDim] = {0,0, 0,0}; |
e5b6e8a6 | 313 | Double_t xMax[nDim] = {0.8,25,8,5}; |
2bb2434e | 314 | |
315 | sESDMotherInvMassPtZM = new THnSparseF*[fnCuts]; | |
316 | sESDMotherBackInvMassPtZM = new THnSparseF*[fnCuts]; | |
317 | ||
318 | fBGHandler = new AliGammaConversionAODBGHandler*[fnCuts]; | |
e5b6e8a6 | 319 | fBGHandlerRP = new AliConversionAODBGHandlerRP*[fnCuts]; |
2bb2434e | 320 | for(Int_t iCut = 0; iCut<fnCuts;iCut++){ |
e5b6e8a6 | 321 | if (((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){ |
322 | TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber(); | |
323 | TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber(); | |
324 | fBackList[iCut] = new TList(); | |
325 | fBackList[iCut]->SetName(Form("%s_%s Back histograms",cutstring.Data(),cutstringMeson.Data())); | |
326 | fBackList[iCut]->SetOwner(kTRUE); | |
327 | fCutFolder[iCut]->Add(fBackList[iCut]); | |
328 | ||
329 | sESDMotherBackInvMassPtZM[iCut] = new THnSparseF("Back_Back_InvMass_Pt_z_m","Back_Back_InvMass_Pt_z_m",nDim,nBins,xMin,xMax); | |
e5b6e8a6 | 330 | fBackList[iCut]->Add(sESDMotherBackInvMassPtZM[iCut]); |
331 | ||
332 | fMotherList[iCut] = new TList(); | |
333 | fMotherList[iCut]->SetName(Form("%s_%s Mother histograms",cutstring.Data(),cutstringMeson.Data())); | |
334 | fMotherList[iCut]->SetOwner(kTRUE); | |
335 | fCutFolder[iCut]->Add(fMotherList[iCut]); | |
336 | ||
337 | sESDMotherInvMassPtZM[iCut] = new THnSparseF("Back_Mother_InvMass_Pt_z_m","Back_Mother_InvMass_Pt_z_m",nDim,nBins,xMin,xMax); | |
e5b6e8a6 | 338 | fMotherList[iCut]->Add(sESDMotherInvMassPtZM[iCut]); |
339 | ||
340 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){ | |
341 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseTrackMultiplicity()){ | |
342 | fBGHandler[iCut] = new AliGammaConversionAODBGHandler(9,6,((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents()); | |
343 | fBGHandler[iCut]->Initialize(zBinLimitsArray, multiplicityBinLimitsArrayTracks); | |
344 | fBGHandlerRP[iCut] = NULL; | |
345 | } | |
346 | else{ | |
347 | fBGHandler[iCut] = new AliGammaConversionAODBGHandler(9,5,((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents()); | |
348 | fBGHandler[iCut]->Initialize(zBinLimitsArray, multiplicityBinLimitsArrayV0s); | |
349 | fBGHandlerRP[iCut] = NULL; | |
350 | } | |
351 | } | |
352 | else{ | |
353 | fBGHandlerRP[iCut] = new AliConversionAODBGHandlerRP( | |
354 | ((AliConversionCuts*)fCutArray->At(fiCut))->IsHeavyIon(), | |
355 | ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity(), | |
356 | ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetNumberOfBGEvents()); | |
357 | fBGHandler[iCut] = NULL; | |
358 | } | |
2bb2434e | 359 | } |
360 | } | |
361 | } | |
362 | //________________________________________________________________________ | |
363 | void AliAnalysisTaskGammaConvV1::UserCreateOutputObjects() | |
364 | { | |
365 | ||
366 | // Create histograms | |
367 | if(fOutputContainer != NULL){ | |
368 | delete fOutputContainer; | |
369 | fOutputContainer = NULL; | |
370 | } | |
371 | if(fOutputContainer == NULL){ | |
372 | fOutputContainer = new TList(); | |
373 | fOutputContainer->SetOwner(kTRUE); | |
374 | } | |
375 | ||
376 | // Array of current cut's gammas | |
a280ac15 | 377 | fGammaCandidates = new TList(); |
2bb2434e | 378 | |
379 | fCutFolder = new TList*[fnCuts]; | |
380 | fESDList = new TList*[fnCuts]; | |
381 | fBackList = new TList*[fnCuts]; | |
ca91a3e1 | 382 | fMotherList = new TList*[fnCuts]; |
2bb2434e | 383 | hNEvents = new TH1I*[fnCuts]; |
384 | hNGoodESDTracks = new TH1I*[fnCuts]; | |
a280ac15 | 385 | hNGammaCandidates = new TH1I*[fnCuts]; |
ca91a3e1 | 386 | hNV0Tracks = new TH1I*[fnCuts]; |
0a2b2b4b | 387 | hESDConvGammaPt = new TH1F*[fnCuts]; |
388 | if (fDoPhotonQA){ | |
389 | hESDConvGammaR = new TH1F*[fnCuts]; | |
390 | } | |
391 | const Int_t nDim = 3; | |
392 | Int_t nBins[nDim] = {800,250,40}; | |
393 | Double_t xMin[nDim] = {0,0, -1}; | |
394 | Double_t xMax[nDim] = {0.8,25,1}; | |
ca91a3e1 | 395 | |
2bb2434e | 396 | if(fDoMesonAnalysis){ |
397 | hESDMotherInvMassPt = new TH2F*[fnCuts]; | |
398 | hESDMotherBackInvMassPt = new TH2F*[fnCuts]; | |
399 | hESDMotherInvMassEalpha = new TH2F*[fnCuts]; | |
0a2b2b4b | 400 | if (fDoMesonQA){ |
401 | fMotherRapList = new TList*[fnCuts]; | |
402 | sESDMotherInvMassPtY = new THnSparseF*[fnCuts]; | |
403 | } | |
2bb2434e | 404 | } |
0a2b2b4b | 405 | |
2bb2434e | 406 | for(Int_t iCut = 0; iCut<fnCuts;iCut++){ |
407 | ||
408 | TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber(); | |
e5b6e8a6 | 409 | TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber(); |
410 | ||
2bb2434e | 411 | fCutFolder[iCut] = new TList(); |
ca91a3e1 | 412 | fCutFolder[iCut]->SetName(Form("Cut Number %s_%s",cutstring.Data(),cutstringMeson.Data())); |
2bb2434e | 413 | fCutFolder[iCut]->SetOwner(kTRUE); |
414 | fOutputContainer->Add(fCutFolder[iCut]); | |
415 | fESDList[iCut] = new TList(); | |
ca91a3e1 | 416 | fESDList[iCut]->SetName(Form("%s_%s ESD histograms",cutstring.Data(),cutstringMeson.Data())); |
2bb2434e | 417 | fESDList[iCut]->SetOwner(kTRUE); |
a280ac15 | 418 | fCutFolder[iCut]->Add(fESDList[iCut]); |
2bb2434e | 419 | |
e5b6e8a6 | 420 | hNEvents[iCut] = new TH1I("NEvents","NEvents",9,-0.5,8.5); |
421 | hNEvents[iCut]->GetXaxis()->SetBinLabel(1,"Accepted"); | |
422 | hNEvents[iCut]->GetXaxis()->SetBinLabel(2,"Centrality"); | |
423 | hNEvents[iCut]->GetXaxis()->SetBinLabel(3,"Missing MC"); | |
424 | hNEvents[iCut]->GetXaxis()->SetBinLabel(4,"Trigger"); | |
425 | hNEvents[iCut]->GetXaxis()->SetBinLabel(5,"Vertex Z"); | |
426 | hNEvents[iCut]->GetXaxis()->SetBinLabel(6,"Cont. Vertex"); | |
427 | hNEvents[iCut]->GetXaxis()->SetBinLabel(7,"Pile-Up"); | |
428 | hNEvents[iCut]->GetXaxis()->SetBinLabel(8,"no SDD"); | |
429 | hNEvents[iCut]->GetXaxis()->SetBinLabel(9,"no V0AND"); | |
2bb2434e | 430 | fESDList[iCut]->Add(hNEvents[iCut]); |
431 | if(fIsHeavyIon) hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",3000,0,3000); | |
432 | else hNGoodESDTracks[iCut] = new TH1I("GoodESDTracks","GoodESDTracks",200,0,200); | |
433 | fESDList[iCut]->Add(hNGoodESDTracks[iCut]); | |
a280ac15 | 434 | if(fIsHeavyIon) hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",100,0,100); |
435 | else hNGammaCandidates[iCut] = new TH1I("GammaCandidates","GammaCandidates",50,0,50); | |
436 | fESDList[iCut]->Add(hNGammaCandidates[iCut]); | |
e5b6e8a6 | 437 | if(fIsHeavyIon) hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",30000,0,30000); |
2bb2434e | 438 | else hNV0Tracks[iCut] = new TH1I("V0 Multiplicity","V0 Multiplicity",2000,0,2000); |
439 | fESDList[iCut]->Add(hNV0Tracks[iCut]); | |
2bb2434e | 440 | hESDConvGammaPt[iCut] = new TH1F("ESD_ConvGamma_Pt","ESD_ConvGamma_Pt",250,0,25); |
441 | fESDList[iCut]->Add(hESDConvGammaPt[iCut]); | |
0a2b2b4b | 442 | |
443 | if (fDoPhotonQA){ | |
444 | hESDConvGammaR[iCut] = new TH1F("ESD_ConvGamma_R","ESD_ConvGamma_R",800,0,200); | |
445 | fESDList[iCut]->Add(hESDConvGammaR[iCut]); | |
446 | } | |
2bb2434e | 447 | |
448 | if(fDoMesonAnalysis){ | |
e5b6e8a6 | 449 | hESDMotherInvMassPt[iCut] = new TH2F("ESD_Mother_InvMass_Pt","ESD_Mother_InvMass_Pt",800,0,0.8,250,0,25); |
2bb2434e | 450 | fESDList[iCut]->Add(hESDMotherInvMassPt[iCut]); |
e5b6e8a6 | 451 | hESDMotherBackInvMassPt[iCut] = new TH2F("ESD_Background_InvMass_Pt","ESD_Background_InvMass_Pt",800,0,0.8,250,0,25); |
2bb2434e | 452 | fESDList[iCut]->Add(hESDMotherBackInvMassPt[iCut]); |
e5b6e8a6 | 453 | hESDMotherInvMassEalpha[iCut] = new TH2F("ESD_Mother_InvMass_vs_E_alpha","ESD_Mother_InvMass_vs_E_alpha",800,0,0.8,250,0,25); |
2bb2434e | 454 | fESDList[iCut]->Add(hESDMotherInvMassEalpha[iCut]); |
0a2b2b4b | 455 | if (fDoMesonQA){ |
456 | fMotherRapList[iCut] = new TList(); | |
457 | fMotherRapList[iCut]->SetName(Form("%s_%s Mother Y histograms",cutstring.Data(),cutstringMeson.Data())); | |
458 | fMotherRapList[iCut]->SetOwner(kTRUE); | |
459 | fCutFolder[iCut]->Add(fMotherRapList[iCut]); | |
460 | sESDMotherInvMassPtY[iCut] = new THnSparseF("Mother_InvMass_Pt_Y","Mother_InvMass_Pt_Y",nDim,nBins,xMin,xMax); | |
461 | fMotherRapList[iCut]->Add(sESDMotherInvMassPtY[iCut]); | |
462 | } | |
2bb2434e | 463 | } |
464 | ||
0a2b2b4b | 465 | |
2bb2434e | 466 | } |
2bb2434e | 467 | if(fDoMesonAnalysis){ |
468 | InitBack(); // Init Background Handler | |
469 | } | |
470 | ||
471 | if(MCEvent()){ | |
472 | // MC Histogramms | |
473 | fMCList = new TList*[fnCuts]; | |
474 | // True Histogramms | |
475 | fTrueList = new TList*[fnCuts]; | |
ca91a3e1 | 476 | // Selected Header List |
477 | fHeaderNameList = new TList*[fnCuts]; | |
2bb2434e | 478 | |
479 | hMCAllGammaPt = new TH1F*[fnCuts]; | |
2bb2434e | 480 | hMCDecayGammaPi0Pt = new TH1F*[fnCuts]; |
2bb2434e | 481 | hMCDecayGammaRhoPt = new TH1F*[fnCuts]; |
ca91a3e1 | 482 | hMCDecayGammaEtaPt = new TH1F*[fnCuts]; |
2bb2434e | 483 | hMCDecayGammaOmegaPt = new TH1F*[fnCuts]; |
2bb2434e | 484 | hMCDecayGammaEtapPt = new TH1F*[fnCuts]; |
2bb2434e | 485 | hMCDecayGammaPhiPt = new TH1F*[fnCuts]; |
e5b6e8a6 | 486 | hMCDecayGammaSigmaPt = new TH1F*[fnCuts]; |
2bb2434e | 487 | hMCConvGammaPt = new TH1F*[fnCuts]; |
e5b6e8a6 | 488 | hMCConvGammaRSPt = new TH1F*[fnCuts]; |
2bb2434e | 489 | hESDTrueConvGammaPt = new TH1F*[fnCuts]; |
e5b6e8a6 | 490 | |
491 | hESDCombinatorialPt = new TH2F*[fnCuts]; | |
ca91a3e1 | 492 | hESDTruePrimaryConvGammaPt = new TH1F*[fnCuts]; |
2bb2434e | 493 | hESDTruePrimaryConvGammaESDPtMCPt = new TH2F*[fnCuts]; |
e5b6e8a6 | 494 | hESDTruePrimaryConvGammaRSESDPtMCPt = new TH2F*[fnCuts]; |
2bb2434e | 495 | hESDTrueSecondaryConvGammaPt = new TH1F*[fnCuts]; |
0a2b2b4b | 496 | |
2bb2434e | 497 | hESDTrueSecondaryConvGammaFromXFromK0sPt = new TH1F*[fnCuts]; |
ca91a3e1 | 498 | |
0a2b2b4b | 499 | if (fDoPhotonQA){ |
500 | hMCConvGammaR = new TH1F*[fnCuts]; | |
501 | hMCConvGammaEta = new TH1F*[fnCuts]; | |
502 | hMCConvGammaRSR = new TH1F*[fnCuts]; | |
503 | hMCConvGammaRSEta = new TH1F*[fnCuts]; | |
504 | hESDTruePrimaryConvGammaR = new TH1F*[fnCuts]; | |
505 | hESDTruePrimaryConvGammaEta = new TH1F*[fnCuts]; | |
506 | hESDTrueSecondaryConvGammaR = new TH1F*[fnCuts]; | |
507 | } | |
508 | ||
2bb2434e | 509 | if(fDoMesonAnalysis){ |
510 | hMCPi0Pt = new TH1F*[fnCuts]; | |
511 | hMCEtaPt = new TH1F*[fnCuts]; | |
512 | hMCPi0InAccPt = new TH1F*[fnCuts]; | |
513 | hMCEtaInAccPt = new TH1F*[fnCuts]; | |
2bb2434e | 514 | |
515 | hESDTrueMotherInvMassPt = new TH2F*[fnCuts]; | |
a280ac15 | 516 | hESDTruePrimaryMotherInvMassPt = new TH2F*[fnCuts]; |
2bb2434e | 517 | hESDTrueSecondaryMotherInvMassPt = new TH2F*[fnCuts]; |
2bb2434e | 518 | hESDTrueSecondaryMotherFromK0sInvMassPt = new TH2F*[fnCuts]; |
e5b6e8a6 | 519 | hESDTrueSecondaryMotherFromEtaInvMassPt = new TH2F*[fnCuts]; |
0a2b2b4b | 520 | if (fDoMesonQA){ |
521 | hMCPi0PtY = new TH2F*[fnCuts]; | |
522 | hMCEtaPtY = new TH2F*[fnCuts]; | |
523 | hESDTruePrimaryPi0MCPtResolPt = new TH2F*[fnCuts]; | |
524 | hESDTruePrimaryEtaMCPtResolPt = new TH2F*[fnCuts]; | |
525 | hESDTrueK0sWithPi0DaughterMCPt = new TH1F*[fnCuts]; | |
526 | hESDTrueEtaWithPi0DaughterMCPt = new TH1F*[fnCuts]; | |
527 | hESDTrueBckGGInvMassPt = new TH2F*[fnCuts]; | |
528 | hESDTrueBckContInvMassPt = new TH2F*[fnCuts]; | |
529 | hESDTrueMotherDalitzInvMassPt = new TH2F*[fnCuts]; | |
530 | fTrueMotherRapList = new TList*[fnCuts]; | |
531 | sESDTruePrimaryMotherInvMassPtY = new THnSparseF*[fnCuts]; | |
532 | } | |
2bb2434e | 533 | } |
534 | ||
535 | for(Int_t iCut = 0; iCut<fnCuts;iCut++){ | |
536 | TString cutstring = ((AliConversionCuts*)fCutArray->At(iCut))->GetCutNumber(); | |
e5b6e8a6 | 537 | TString cutstringMeson = ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutNumber(); |
538 | ||
539 | fMCList[iCut] = new TList(); | |
ca91a3e1 | 540 | fMCList[iCut]->SetName(Form("%s_%s MC histograms",cutstring.Data(),cutstringMeson.Data())); |
2bb2434e | 541 | fMCList[iCut]->SetOwner(kTRUE); |
542 | fCutFolder[iCut]->Add(fMCList[iCut]); | |
543 | ||
544 | hMCAllGammaPt[iCut] = new TH1F("MC_AllGamma_Pt","MC_AllGamma_Pt",250,0,25); | |
545 | fMCList[iCut]->Add(hMCAllGammaPt[iCut]); | |
2bb2434e | 546 | hMCDecayGammaPi0Pt[iCut] = new TH1F("MC_DecayGammaPi0_Pt","MC_DecayGammaPi0_Pt",250,0,25); |
547 | fMCList[iCut]->Add(hMCDecayGammaPi0Pt[iCut]); | |
2bb2434e | 548 | hMCDecayGammaRhoPt[iCut] = new TH1F("MC_DecayGammaRho_Pt","MC_DecayGammaRho_Pt",250,0,25); |
549 | fMCList[iCut]->Add(hMCDecayGammaRhoPt[iCut]); | |
2bb2434e | 550 | hMCDecayGammaEtaPt[iCut] = new TH1F("MC_DecayGammaEta_Pt","MC_DecayGammaEta_Pt",250,0,25); |
551 | fMCList[iCut]->Add(hMCDecayGammaEtaPt[iCut]); | |
2bb2434e | 552 | hMCDecayGammaOmegaPt[iCut] = new TH1F("MC_DecayGammaOmega_Pt","MC_DecayGammaOmmega_Pt",250,0,25); |
553 | fMCList[iCut]->Add(hMCDecayGammaOmegaPt[iCut]); | |
2bb2434e | 554 | hMCDecayGammaEtapPt[iCut] = new TH1F("MC_DecayGammaEtap_Pt","MC_DecayGammaEtap_Pt",250,0,25); |
555 | fMCList[iCut]->Add(hMCDecayGammaEtapPt[iCut]); | |
2bb2434e | 556 | hMCDecayGammaPhiPt[iCut] = new TH1F("MC_DecayGammaPhi_Pt","MC_DecayGammaPhi_Pt",250,0,25); |
557 | fMCList[iCut]->Add(hMCDecayGammaPhiPt[iCut]); | |
e5b6e8a6 | 558 | hMCDecayGammaSigmaPt[iCut] = new TH1F("MC_DecayGammaSigma_Pt","MC_DecayGammaSigma_Pt",250,0,25); |
559 | fMCList[iCut]->Add(hMCDecayGammaSigmaPt[iCut]); | |
2bb2434e | 560 | hMCConvGammaPt[iCut] = new TH1F("MC_ConvGamma_Pt","MC_ConvGamma_Pt",250,0,25); |
561 | fMCList[iCut]->Add(hMCConvGammaPt[iCut]); | |
e5b6e8a6 | 562 | hMCConvGammaRSPt[iCut] = new TH1F("MC_ConvGamma_RS_Pt","MC_ConvGamma_RS_Pt",250,0,25); |
563 | fMCList[iCut]->Add(hMCConvGammaRSPt[iCut]); | |
0a2b2b4b | 564 | |
565 | if (fDoPhotonQA){ | |
566 | hMCConvGammaR[iCut] = new TH1F("MC_ConvGamma_R","MC_ConvGamma_R",800,0,200); | |
567 | fMCList[iCut]->Add(hMCConvGammaR[iCut]); | |
568 | hMCConvGammaEta[iCut] = new TH1F("MC_ConvGamma_Eta","MC_ConvGamma_Eta",100,-4,4); | |
569 | fMCList[iCut]->Add(hMCConvGammaEta[iCut]); | |
570 | hMCConvGammaRSR[iCut] = new TH1F("MC_ConvGamma_RS_R","MC_ConvGamma_RS_R",800,0,200); | |
571 | fMCList[iCut]->Add(hMCConvGammaRSR[iCut]); | |
572 | hMCConvGammaRSEta[iCut] = new TH1F("MC_ConvGamma_RS_Eta","MC_ConvGamma_RS_Eta",100,-4,4); | |
573 | fMCList[iCut]->Add(hMCConvGammaRSEta[iCut]); | |
574 | } | |
e5b6e8a6 | 575 | |
2bb2434e | 576 | if(fDoMesonAnalysis){ |
577 | hMCPi0Pt[iCut] = new TH1F("MC_Pi0_Pt","MC_Pi0_Pt",250,0,25); | |
0a2b2b4b | 578 | hMCPi0Pt[iCut]->Sumw2(); |
2bb2434e | 579 | fMCList[iCut]->Add(hMCPi0Pt[iCut]); |
580 | hMCEtaPt[iCut] = new TH1F("MC_Eta_Pt","MC_Eta_Pt",250,0,25); | |
0a2b2b4b | 581 | hMCEtaPt[iCut]->Sumw2(); |
2bb2434e | 582 | fMCList[iCut]->Add(hMCEtaPt[iCut]); |
583 | hMCPi0InAccPt[iCut] = new TH1F("MC_Pi0InAcc_Pt","MC_Pi0InAcc_Pt",250,0,25); | |
0a2b2b4b | 584 | hMCPi0InAccPt[iCut]->Sumw2(); |
2bb2434e | 585 | fMCList[iCut]->Add(hMCPi0InAccPt[iCut]); |
586 | hMCEtaInAccPt[iCut] = new TH1F("MC_EtaInAcc_Pt","MC_EtaInAcc_Pt",250,0,25); | |
0a2b2b4b | 587 | hMCEtaInAccPt[iCut]->Sumw2(); |
2bb2434e | 588 | fMCList[iCut]->Add(hMCEtaInAccPt[iCut]); |
0a2b2b4b | 589 | if (fDoMesonQA){ |
590 | hMCPi0PtY[iCut] = new TH2F("MC_Pi0_Pt_Y","MC_Pi0_Pt_Y",250,0,25,20,-1,1); | |
591 | hMCPi0PtY[iCut]->Sumw2(); | |
592 | fMCList[iCut]->Add(hMCPi0PtY[iCut]); | |
593 | hMCEtaPtY[iCut] = new TH2F("MC_Eta_Pt_Y","MC_Eta_Pt_Y",250,0,25,20,-1,1); | |
594 | hMCEtaPtY[iCut]->Sumw2(); | |
595 | fMCList[iCut]->Add(hMCEtaPtY[iCut]); | |
596 | } | |
597 | ||
2bb2434e | 598 | } |
599 | fTrueList[iCut] = new TList(); | |
ca91a3e1 | 600 | fTrueList[iCut]->SetName(Form("%s_%s True histograms",cutstring.Data(),cutstringMeson.Data())); |
2bb2434e | 601 | fTrueList[iCut]->SetOwner(kTRUE); |
602 | fCutFolder[iCut]->Add(fTrueList[iCut]); | |
603 | ||
604 | hESDTrueConvGammaPt[iCut] = new TH1F("ESD_TrueConvGamma_Pt","ESD_TrueConvGamma_Pt",250,0,25); | |
605 | fTrueList[iCut]->Add(hESDTrueConvGammaPt[iCut]); | |
e5b6e8a6 | 606 | |
607 | hESDCombinatorialPt[iCut] = new TH2F("ESD_TrueCombinatorial_Pt","ESD_TrueCombinatorial_Pt",250,0,25,16,-0.5,15.5); | |
608 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 1,"Elec+Elec"); | |
609 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 2,"Elec+Pion"); | |
610 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 3,"Elec+Kaon"); | |
611 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 4,"Elec+Proton"); | |
612 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 5,"Elec+Muon"); | |
613 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 6,"Pion+Pion"); | |
614 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 7,"Pion+Kaon"); | |
615 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 8,"Pion+Proton"); | |
616 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel( 9,"Pion+Muon"); | |
617 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(10,"Kaon+Kaon"); | |
618 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(11,"Kaon+Proton"); | |
619 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(12,"Kaon+Muon"); | |
620 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(13,"Proton+Proton"); | |
621 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(14,"Proton+Muon"); | |
622 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(15,"Muon+Muon"); | |
623 | hESDCombinatorialPt[iCut]->GetYaxis()->SetBinLabel(16,"Rest"); | |
624 | fTrueList[iCut]->Add(hESDCombinatorialPt[iCut]); | |
2bb2434e | 625 | hESDTruePrimaryConvGammaPt[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Pt","ESD_TruePrimaryConvGamma_Pt",250,0,25); |
626 | fTrueList[iCut]->Add(hESDTruePrimaryConvGammaPt[iCut]); | |
2bb2434e | 627 | hESDTrueSecondaryConvGammaPt[iCut] = new TH1F("ESD_TrueSecondaryConvGamma_Pt","ESD_TrueSecondaryConvGamma_Pt",250,0,25); |
628 | fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaPt[iCut]); | |
0a2b2b4b | 629 | |
e5b6e8a6 | 630 | hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut] |
631 | = new TH1F("ESD_TrueSecondaryConvGammaFromXFromK0s_Pt", "ESD_TrueSecondaryConvGammaFromXFromK0s_Pt",250,0,25); | |
2bb2434e | 632 | fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaFromXFromK0sPt[iCut]); |
2bb2434e | 633 | hESDTruePrimaryConvGammaESDPtMCPt[iCut] = new TH2F("ESD_TruePrimaryConvGammaESD_PtMCPt", "ESD_TruePrimaryConvGammaESD_PtMCPt",250,0,25,250,0,25); |
634 | fTrueList[iCut]->Add(hESDTruePrimaryConvGammaESDPtMCPt[iCut]); | |
e5b6e8a6 | 635 | hESDTruePrimaryConvGammaRSESDPtMCPt[iCut] |
636 | = new TH2F("ESD_TruePrimaryConvGammaESD_RS_PtMCPt", "ESD_TruePrimaryConvGammaESD_RS_PtMCPt",250,0,25,250,0,25); | |
637 | fTrueList[iCut]->Add(hESDTruePrimaryConvGammaRSESDPtMCPt[iCut]); | |
638 | ||
0a2b2b4b | 639 | if (fDoPhotonQA){ |
640 | hESDTruePrimaryConvGammaR[iCut] = new TH1F("ESD_TruePrimaryConvGamma_R","ESD_TruePrimaryConvGamma_R",800,0,200); | |
641 | fTrueList[iCut]->Add(hESDTruePrimaryConvGammaR[iCut]); | |
642 | hESDTrueSecondaryConvGammaR[iCut] = new TH1F("ESD_TrueSecondaryConvGamma_R","ESD_TrueSecondaryConvGamma_R",800,0,200); | |
643 | fTrueList[iCut]->Add(hESDTrueSecondaryConvGammaR[iCut]); | |
644 | hESDTruePrimaryConvGammaEta[iCut] = new TH1F("ESD_TruePrimaryConvGamma_Eta","ESD_TruePrimaryConvGamma_Eta",100,-4,4); | |
645 | fTrueList[iCut]->Add(hESDTruePrimaryConvGammaEta[iCut]); | |
646 | } | |
2bb2434e | 647 | |
648 | if(fDoMesonAnalysis){ | |
e5b6e8a6 | 649 | hESDTrueMotherInvMassPt[iCut] = new TH2F("ESD_TrueMother_InvMass_Pt","ESD_TrueMother_InvMass_Pt",800,0,0.8,250,0,25); |
2bb2434e | 650 | fTrueList[iCut]->Add(hESDTrueMotherInvMassPt[iCut]); |
a280ac15 | 651 | hESDTruePrimaryMotherInvMassPt[iCut] |
652 | = new TH2F("ESD_TruePrimaryMother_InvMass_Pt", "ESD_TruePrimaryMother_InvMass_Pt", 800,0,0.8,250,0,25); | |
0a2b2b4b | 653 | hESDTruePrimaryMotherInvMassPt[iCut]->Sumw2(); |
a280ac15 | 654 | fTrueList[iCut]->Add(hESDTruePrimaryMotherInvMassPt[iCut]); |
e5b6e8a6 | 655 | hESDTrueSecondaryMotherInvMassPt[iCut] |
656 | = new TH2F("ESD_TrueSecondaryMother_InvMass_Pt", "ESD_TrueSecondaryMother_InvMass_Pt", 800,0,0.8,250,0,25); | |
2bb2434e | 657 | fTrueList[iCut]->Add(hESDTrueSecondaryMotherInvMassPt[iCut]); |
e5b6e8a6 | 658 | hESDTrueSecondaryMotherFromK0sInvMassPt[iCut] |
659 | = new TH2F("ESD_TrueSecondaryMotherFromK0s_InvMass_Pt","ESD_TrueSecondaryMotherFromK0s_InvMass_Pt",800,0,0.8,250,0,25); | |
2bb2434e | 660 | fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromK0sInvMassPt[iCut]); |
e5b6e8a6 | 661 | hESDTrueSecondaryMotherFromEtaInvMassPt[iCut] |
662 | = new TH2F("ESD_TrueSecondaryMotherFromEta_InvMass_Pt","ESD_TrueSecondaryMotherFromEta_InvMass_Pt",800,0,0.8,250,0,25); | |
663 | fTrueList[iCut]->Add(hESDTrueSecondaryMotherFromEtaInvMassPt[iCut]); | |
0a2b2b4b | 664 | |
665 | if (fDoMesonQA){ | |
666 | hESDTruePrimaryPi0MCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryPi0_MCPt_ResolPt","ESD_TruePrimaryPi0_ResolPt_MCPt",500,0,25,1000,-1.,1.); | |
667 | hESDTruePrimaryPi0MCPtResolPt[iCut]->Sumw2(); | |
668 | fTrueList[iCut]->Add(hESDTruePrimaryPi0MCPtResolPt[iCut]); | |
669 | hESDTruePrimaryEtaMCPtResolPt[iCut] = new TH2F("ESD_TruePrimaryEta_MCPt_ResolPt","ESD_TruePrimaryEta_ResolPt_MCPt",500,0,25,1000,-1.,1.); | |
670 | hESDTruePrimaryEtaMCPtResolPt[iCut]->Sumw2(); | |
671 | fTrueList[iCut]->Add(hESDTruePrimaryEtaMCPtResolPt[iCut]); | |
672 | hESDTrueBckGGInvMassPt[iCut] = new TH2F("ESD_TrueBckGG_InvMass_Pt","ESD_TrueBckGG_InvMass_Pt",800,0,0.8,250,0,25); | |
673 | fTrueList[iCut]->Add(hESDTrueBckGGInvMassPt[iCut]); | |
674 | hESDTrueBckContInvMassPt[iCut] = new TH2F("ESD_TrueBckCont_InvMass_Pt","ESD_TrueBckCont_InvMass_Pt",800,0,0.8,250,0,25); | |
675 | fTrueList[iCut]->Add(hESDTrueBckContInvMassPt[iCut]); | |
676 | hESDTrueMotherDalitzInvMassPt[iCut] = new TH2F("ESD_TrueDalitz_InvMass_Pt","ESD_TrueDalitz_InvMass_Pt",800,0,0.8,250,0,25); | |
677 | fTrueList[iCut]->Add(hESDTrueMotherDalitzInvMassPt[iCut]); | |
678 | hESDTrueK0sWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueK0sWithPi0Daughter_MCPt","ESD_TrueK0sWithPi0Daughter_MCPt",250,0,25); | |
679 | fTrueList[iCut]->Add(hESDTrueK0sWithPi0DaughterMCPt[iCut]); | |
680 | hESDTrueEtaWithPi0DaughterMCPt[iCut] = new TH1F("ESD_TrueEtaWithPi0Daughter_MCPt","ESD_TrueEtaWithPi0Daughter_MCPt",250,0,25); | |
681 | fTrueList[iCut]->Add(hESDTrueEtaWithPi0DaughterMCPt[iCut]); | |
682 | ||
683 | fTrueMotherRapList[iCut] = new TList(); | |
684 | fTrueMotherRapList[iCut]->SetName(Form("%s_%s True Mother Y histograms",cutstring.Data(),cutstringMeson.Data())); | |
685 | fTrueMotherRapList[iCut]->SetOwner(kTRUE); | |
686 | fCutFolder[iCut]->Add(fTrueMotherRapList[iCut]); | |
687 | sESDTruePrimaryMotherInvMassPtY[iCut] = new THnSparseF("TruePrimaryMother_InvMass_Pt_Y","TruePrimaryMother_InvMass_Pt_Y",nDim,nBins,xMin,xMax); | |
688 | fTrueMotherRapList[iCut]->Add(sESDTruePrimaryMotherInvMassPtY[iCut]); | |
689 | ||
690 | } | |
ca91a3e1 | 691 | } |
a280ac15 | 692 | } |
693 | } | |
694 | ||
695 | ||
696 | ||
697 | fV0Reader=(AliV0ReaderV1*)AliAnalysisManager::GetAnalysisManager()->GetTask("V0ReaderV1"); | |
698 | if(!fV0Reader){printf("Error: No V0 Reader");return;} // GetV0Reader | |
e5b6e8a6 | 699 | |
a280ac15 | 700 | if(fV0Reader) |
701 | if((AliConversionCuts*)fV0Reader->GetConversionCuts()) | |
702 | if(((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms()) | |
703 | fOutputContainer->Add(((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetCutHistograms()); | |
e5b6e8a6 | 704 | |
a280ac15 | 705 | for(Int_t iCut = 0; iCut<fnCuts;iCut++){ |
706 | if(!((AliConversionCuts*)fCutArray->At(iCut))) continue; | |
707 | if(((AliConversionCuts*)fCutArray->At(iCut))->GetCutHistograms()){ | |
708 | fCutFolder[iCut]->Add(((AliConversionCuts*)fCutArray->At(iCut))->GetCutHistograms()); | |
709 | } | |
710 | if(!((AliConversionMesonCuts*)fMesonCutArray->At(iCut))) continue; | |
711 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()){ | |
712 | fCutFolder[iCut]->Add(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->GetCutHistograms()); | |
2bb2434e | 713 | } |
714 | } | |
715 | ||
716 | PostData(1, fOutputContainer); | |
717 | } | |
718 | ||
719 | //_____________________________________________________________________________ | |
720 | void AliAnalysisTaskGammaConvV1::UserExec(Option_t *) | |
721 | { | |
722 | // | |
723 | // Called for each event | |
724 | // | |
2bb2434e | 725 | Int_t eventQuality = ((AliConversionCuts*)fV0Reader->GetConversionCuts())->GetEventQuality(); |
e5b6e8a6 | 726 | if(eventQuality == 2 || eventQuality == 3){// Event Not Accepted due to MC event missing or wrong trigger for V0ReaderV1 |
2bb2434e | 727 | for(Int_t iCut = 0; iCut<fnCuts; iCut++){ |
728 | hNEvents[iCut]->Fill(eventQuality); | |
729 | } | |
730 | return; | |
731 | } | |
732 | ||
733 | fMCEvent = MCEvent(); | |
e5b6e8a6 | 734 | if(fMCEvent){ |
735 | fMCStack = fMCEvent->Stack(); | |
736 | } | |
737 | fInputEvent = InputEvent(); | |
738 | ||
2bb2434e | 739 | fReaderGammas = fV0Reader->GetReconstructedGammas(); // Gammas from default Cut |
740 | CountESDTracks(); // Estimate Event Multiplicity | |
741 | ||
e5b6e8a6 | 742 | // ------------------- BeginEvent ---------------------------- |
743 | ||
2bb2434e | 744 | for(Int_t iCut = 0; iCut<fnCuts; iCut++){ |
745 | fiCut = iCut; | |
e5b6e8a6 | 746 | |
747 | Int_t eventNotAccepted = | |
748 | ((AliConversionCuts*)fCutArray->At(iCut)) | |
749 | ->IsEventAcceptedByConversionCut(fV0Reader->GetConversionCuts(),fInputEvent,fMCEvent,fIsHeavyIon); | |
750 | if(eventNotAccepted){ | |
a280ac15 | 751 | // cout << "event rejected due to wrong trigger: " <<eventNotAccepted << endl; |
e5b6e8a6 | 752 | hNEvents[iCut]->Fill(eventNotAccepted); // Check Centrality, PileUp, SDD and V0AND --> Not Accepted => eventQuality = 1 |
2bb2434e | 753 | continue; |
754 | } | |
e5b6e8a6 | 755 | |
756 | if(eventQuality != 0){// Event Not Accepted | |
a280ac15 | 757 | // cout << "event rejected due to: " <<eventQuality << endl; |
e5b6e8a6 | 758 | hNEvents[iCut]->Fill(eventQuality); |
759 | continue; | |
760 | } | |
2bb2434e | 761 | |
a280ac15 | 762 | hNEvents[iCut]->Fill(eventQuality); // Should be 0 here |
2bb2434e | 763 | hNGoodESDTracks[iCut]->Fill(fNumberOfESDTracks); |
e5b6e8a6 | 764 | hNV0Tracks[iCut]->Fill(fInputEvent->GetVZEROData()->GetMTotV0A()+fInputEvent->GetVZEROData()->GetMTotV0C()); |
765 | ||
2bb2434e | 766 | if(fMCEvent){ // Process MC Particle |
ca91a3e1 | 767 | if(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection() != 0){ |
768 | ((AliConversionCuts*)fCutArray->At(iCut))->GetNotRejectedParticles(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection(), | |
769 | ((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader(), | |
770 | fMCEvent); | |
771 | } | |
2bb2434e | 772 | ProcessMCParticles(); |
773 | } | |
a280ac15 | 774 | |
2bb2434e | 775 | ProcessPhotonCandidates(); // Process this cuts gammas |
776 | ||
a280ac15 | 777 | hNGammaCandidates[iCut]->Fill(fGammaCandidates->GetEntries()); |
2bb2434e | 778 | if(fDoMesonAnalysis){ // Meson Analysis |
ca91a3e1 | 779 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fMCEvent){ |
a280ac15 | 780 | fUnsmearedPx = new Double_t[fGammaCandidates->GetEntries()]; // Store unsmeared Momenta |
781 | fUnsmearedPy = new Double_t[fGammaCandidates->GetEntries()]; | |
782 | fUnsmearedPz = new Double_t[fGammaCandidates->GetEntries()]; | |
783 | fUnsmearedE = new Double_t[fGammaCandidates->GetEntries()]; | |
784 | ||
785 | for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC | |
786 | fUnsmearedPx[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Px(); | |
787 | fUnsmearedPy[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Py(); | |
788 | fUnsmearedPz[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->Pz(); | |
789 | fUnsmearedE[gamma] = ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->E(); | |
790 | ((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->SmearParticle(dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(gamma))); | |
2bb2434e | 791 | } |
792 | } | |
ca91a3e1 | 793 | |
2bb2434e | 794 | CalculatePi0Candidates(); // Combine Gammas |
e5b6e8a6 | 795 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->DoBGCalculation()){ |
796 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->BackgroundHandlerType() == 0){ | |
797 | CalculateBackground(); // Combinatorial Background | |
798 | UpdateEventByEventData(); // Store Event for mixed Events | |
799 | } | |
800 | else{ | |
801 | CalculateBackgroundRP(); // Combinatorial Background | |
a280ac15 | 802 | fBGHandlerRP[iCut]->AddEvent(fGammaCandidates,fInputEvent); // Store Event for mixed Events |
e5b6e8a6 | 803 | } |
804 | } | |
ca91a3e1 | 805 | if(((AliConversionMesonCuts*)fMesonCutArray->At(iCut))->UseMCPSmearing() && fMCEvent){ |
a280ac15 | 806 | for(Int_t gamma=0;gamma<fGammaCandidates->GetEntries();gamma++){ // Smear the AODPhotons in MC |
807 | ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPx(fUnsmearedPx[gamma]); // Reset Unsmeared Momenta | |
808 | ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPy(fUnsmearedPy[gamma]); | |
809 | ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetPz(fUnsmearedPz[gamma]); | |
810 | ((AliAODConversionPhoton*)fGammaCandidates->At(gamma))->SetE(fUnsmearedE[gamma]); | |
2bb2434e | 811 | } |
812 | delete[] fUnsmearedPx; fUnsmearedPx = 0x0; | |
813 | delete[] fUnsmearedPy; fUnsmearedPy = 0x0; | |
814 | delete[] fUnsmearedPz; fUnsmearedPz = 0x0; | |
815 | delete[] fUnsmearedE; fUnsmearedE = 0x0; | |
816 | } | |
817 | } | |
a280ac15 | 818 | fGammaCandidates->Clear(); // delete this cuts good gammas |
2bb2434e | 819 | |
ca91a3e1 | 820 | } |
e5b6e8a6 | 821 | |
2bb2434e | 822 | PostData(1, fOutputContainer); |
823 | } | |
824 | //________________________________________________________________________ | |
825 | void AliAnalysisTaskGammaConvV1::ProcessPhotonCandidates() | |
826 | { | |
827 | Int_t nV0 = 0; | |
a280ac15 | 828 | TList *GammaCandidatesStepOne = new TList(); |
829 | TList *GammaCandidatesStepTwo = new TList(); | |
2bb2434e | 830 | // Loop over Photon Candidates allocated by ReaderV1 |
831 | for(Int_t i = 0; i < fReaderGammas->GetEntriesFast(); i++){ | |
832 | AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) fReaderGammas->At(i); | |
833 | if(!PhotonCandidate) continue; | |
a280ac15 | 834 | fIsFromMBHeader = kTRUE; |
ca91a3e1 | 835 | if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){ |
a280ac15 | 836 | Int_t isPosFromMBHeader |
837 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack); | |
838 | if(isPosFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue; | |
839 | Int_t isNegFromMBHeader | |
840 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack); | |
841 | if(isNegFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue; | |
842 | ||
843 | if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE; | |
ca91a3e1 | 844 | } |
845 | ||
e5b6e8a6 | 846 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelected(PhotonCandidate,fInputEvent)) continue; |
ca91a3e1 | 847 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut() && |
e5b6e8a6 | 848 | !((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ |
a280ac15 | 849 | fGammaCandidates->Add(PhotonCandidate); // if no second loop is required add to events good gammas |
e5b6e8a6 | 850 | |
a280ac15 | 851 | if(fIsFromMBHeader){ |
e5b6e8a6 | 852 | hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); |
0a2b2b4b | 853 | if (fDoPhotonQA)hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius()); |
e5b6e8a6 | 854 | } |
2bb2434e | 855 | if(fMCEvent){ |
856 | ProcessTruePhotonCandidates(PhotonCandidate); | |
857 | } | |
858 | } | |
859 | else if(((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ // if Shared Electron cut is enabled, Fill array, add to step one | |
860 | ((AliConversionCuts*)fCutArray->At(fiCut))->FillElectonLabelArray(PhotonCandidate,nV0); | |
861 | nV0++; | |
a280ac15 | 862 | GammaCandidatesStepOne->Add(PhotonCandidate); |
2bb2434e | 863 | } |
ca91a3e1 | 864 | else if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut() && |
2bb2434e | 865 | ((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // shared electron is disabled, step one not needed -> step two |
a280ac15 | 866 | GammaCandidatesStepTwo->Add(PhotonCandidate); |
2bb2434e | 867 | } |
868 | } | |
869 | if(((AliConversionCuts*)fCutArray->At(fiCut))->UseElecSharingCut()){ | |
a280ac15 | 870 | for(Int_t i = 0;i<GammaCandidatesStepOne->GetEntries();i++){ |
871 | AliAODConversionPhoton *PhotonCandidate= (AliAODConversionPhoton*) GammaCandidatesStepOne->At(i); | |
2bb2434e | 872 | if(!PhotonCandidate) continue; |
a280ac15 | 873 | fIsFromMBHeader = kTRUE; |
e5b6e8a6 | 874 | if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){ |
a280ac15 | 875 | Int_t isPosFromMBHeader |
876 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack); | |
877 | Int_t isNegFromMBHeader | |
878 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack); | |
879 | if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE; | |
e5b6e8a6 | 880 | } |
a280ac15 | 881 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->RejectSharedElectronV0s(PhotonCandidate,i,GammaCandidatesStepOne->GetEntries())) continue; |
ca91a3e1 | 882 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ // To Colse v0s cut diabled, step two not needed |
a280ac15 | 883 | fGammaCandidates->Add(PhotonCandidate); |
884 | if(fIsFromMBHeader){ | |
e5b6e8a6 | 885 | hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); |
0a2b2b4b | 886 | if (fDoPhotonQA)hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius()); |
e5b6e8a6 | 887 | } |
2bb2434e | 888 | if(fMCEvent){ |
889 | ProcessTruePhotonCandidates(PhotonCandidate); | |
890 | } | |
891 | } | |
a280ac15 | 892 | else GammaCandidatesStepTwo->Add(PhotonCandidate); // Close v0s cut enabled -> add to list two |
2bb2434e | 893 | } |
894 | } | |
895 | if(((AliConversionCuts*)fCutArray->At(fiCut))->UseToCloseV0sCut()){ | |
a280ac15 | 896 | for(Int_t i = 0;i<GammaCandidatesStepTwo->GetEntries();i++){ |
897 | AliAODConversionPhoton* PhotonCandidate = (AliAODConversionPhoton*) GammaCandidatesStepTwo->At(i); | |
2bb2434e | 898 | if(!PhotonCandidate) continue; |
a280ac15 | 899 | fIsFromMBHeader = kTRUE; |
e5b6e8a6 | 900 | if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){ |
a280ac15 | 901 | Int_t isPosFromMBHeader |
902 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelPositive(), fMCStack); | |
903 | Int_t isNegFromMBHeader | |
904 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(PhotonCandidate->GetMCLabelNegative(), fMCStack); | |
905 | if( (isNegFromMBHeader+isPosFromMBHeader) != 4) fIsFromMBHeader = kFALSE; | |
e5b6e8a6 | 906 | } |
a280ac15 | 907 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->RejectToCloseV0s(PhotonCandidate,GammaCandidatesStepTwo,i)) continue; |
908 | fGammaCandidates->Add(PhotonCandidate); // Add gamma to current cut TList | |
909 | if(fIsFromMBHeader){ | |
e5b6e8a6 | 910 | hESDConvGammaPt[fiCut]->Fill(PhotonCandidate->Pt()); |
0a2b2b4b | 911 | if (fDoPhotonQA)hESDConvGammaR[fiCut]->Fill(PhotonCandidate->GetConversionRadius()); |
e5b6e8a6 | 912 | } |
2bb2434e | 913 | if(fMCEvent){ |
914 | ProcessTruePhotonCandidates(PhotonCandidate); | |
915 | } | |
916 | } | |
917 | } | |
918 | ||
a280ac15 | 919 | delete GammaCandidatesStepOne; |
920 | GammaCandidatesStepOne = 0x0; | |
921 | delete GammaCandidatesStepTwo; | |
922 | GammaCandidatesStepTwo = 0x0; | |
2bb2434e | 923 | |
924 | } | |
925 | //________________________________________________________________________ | |
926 | void AliAnalysisTaskGammaConvV1::ProcessTruePhotonCandidates(AliAODConversionPhoton *TruePhotonCandidate) | |
927 | { | |
928 | // Process True Photons | |
929 | AliStack *MCStack = fMCEvent->Stack(); | |
930 | TParticle *posDaughter = TruePhotonCandidate->GetPositiveMCDaughter(MCStack); | |
931 | TParticle *negDaughter = TruePhotonCandidate->GetNegativeMCDaughter(MCStack); | |
932 | ||
933 | if(posDaughter == NULL || negDaughter == NULL) return; // One particle does not exist | |
e5b6e8a6 | 934 | |
935 | Int_t pdgCode[2] = {abs(posDaughter->GetPdgCode()),abs(negDaughter->GetPdgCode())}; | |
936 | ||
937 | if(posDaughter->GetMother(0) != negDaughter->GetMother(0)){ | |
938 | // Combinatorial Bck = 0 ee, 1 ep,i 2 ek, 3 ep, 4 emu, 5 pipi, 6 pik, 7 pip, 8 pimu, 9 kk, 10 kp, 11 kmu, 12 pp, 13 pmu, 14 mumu, 15 Rest | |
a280ac15 | 939 | if(pdgCode[0]==11 && pdgCode[1]==11){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0);} |
e5b6e8a6 | 940 | else if( (pdgCode[0]==11 && pdgCode[1]==211) || (pdgCode[0]==211 && pdgCode[1]==11) ) |
a280ac15 | 941 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1);} |
e5b6e8a6 | 942 | else if( (pdgCode[0]==11 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==11) ) |
a280ac15 | 943 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2);} |
e5b6e8a6 | 944 | else if( (pdgCode[0]==11 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==11) ) |
a280ac15 | 945 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3);} |
e5b6e8a6 | 946 | else if( (pdgCode[0]==11 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==11) ) |
a280ac15 | 947 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),4);} |
948 | else if( pdgCode[0]==211 && pdgCode[1]==211 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),5);} | |
e5b6e8a6 | 949 | else if( (pdgCode[0]==211 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==211) ) |
a280ac15 | 950 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),6);} |
e5b6e8a6 | 951 | else if( (pdgCode[0]==211 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==211) ) |
a280ac15 | 952 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),7);} |
e5b6e8a6 | 953 | else if( (pdgCode[0]==211 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==211) ) |
a280ac15 | 954 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),8);} |
955 | else if( pdgCode[0]==321 && pdgCode[1]==321 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),9);} | |
e5b6e8a6 | 956 | else if( (pdgCode[0]==321 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==321) ) |
a280ac15 | 957 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),10);} |
e5b6e8a6 | 958 | else if( (pdgCode[0]==321 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==321) ) |
a280ac15 | 959 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),11);} |
960 | else if( pdgCode[0]==2212 && pdgCode[1]==2212 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),12);} | |
e5b6e8a6 | 961 | else if( (pdgCode[0]==2212 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==2212) ) |
a280ac15 | 962 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),13);} |
963 | else if( pdgCode[0]==13 && pdgCode[1]==13 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),14);} | |
964 | else {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),15);} | |
ca91a3e1 | 965 | return; |
966 | } | |
967 | else if(posDaughter->GetMother(0) == -1){ | |
a280ac15 | 968 | if(pdgCode[0]==11 && pdgCode[1]==11){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),0);} |
e5b6e8a6 | 969 | else if( (pdgCode[0]==11 && pdgCode[1]==211) || (pdgCode[0]==211 && pdgCode[1]==11) ) |
a280ac15 | 970 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),1);} |
e5b6e8a6 | 971 | else if( (pdgCode[0]==11 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==11) ) |
a280ac15 | 972 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),2);} |
e5b6e8a6 | 973 | else if( (pdgCode[0]==11 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==11) ) |
a280ac15 | 974 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),3);} |
e5b6e8a6 | 975 | else if( (pdgCode[0]==11 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==11) ) |
a280ac15 | 976 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),4);} |
977 | else if( pdgCode[0]==211 && pdgCode[1]==211 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),5);} | |
e5b6e8a6 | 978 | else if( (pdgCode[0]==211 && pdgCode[1]==321) || (pdgCode[0]==321 && pdgCode[1]==211) ) |
a280ac15 | 979 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),6);} |
e5b6e8a6 | 980 | else if( (pdgCode[0]==211 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==211) ) |
a280ac15 | 981 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),7);} |
e5b6e8a6 | 982 | else if( (pdgCode[0]==211 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==211) ) |
a280ac15 | 983 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),8);} |
984 | else if( pdgCode[0]==321 && pdgCode[1]==321 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),9);} | |
e5b6e8a6 | 985 | else if( (pdgCode[0]==321 && pdgCode[1]==2212) || (pdgCode[0]==2212 && pdgCode[1]==321) ) |
a280ac15 | 986 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),10);} |
e5b6e8a6 | 987 | else if( (pdgCode[0]==321 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==321) ) |
a280ac15 | 988 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),11);} |
989 | else if( pdgCode[0]==2212 && pdgCode[1]==2212 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),12);} | |
e5b6e8a6 | 990 | else if( (pdgCode[0]==2212 && pdgCode[1]==13) || (pdgCode[0]==13 && pdgCode[1]==2212) ) |
a280ac15 | 991 | {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),13);} |
992 | else if( pdgCode[0]==13 && pdgCode[1]==13 ){if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),14);} | |
993 | else {if(fIsFromMBHeader)hESDCombinatorialPt[fiCut]->Fill(TruePhotonCandidate->Pt(),15);} | |
2bb2434e | 994 | return; |
995 | } | |
e5b6e8a6 | 996 | |
997 | if(pdgCode[0]!=11 || pdgCode[1]!=11) return; //One Particle is not a electron | |
998 | ||
2bb2434e | 999 | if(posDaughter->GetPdgCode()==negDaughter->GetPdgCode()) return; // Same Charge |
e5b6e8a6 | 1000 | |
2bb2434e | 1001 | if(posDaughter->GetUniqueID() != 5 || negDaughter->GetUniqueID() !=5) return;// check if the daughters come from a conversion |
1002 | ||
1003 | TParticle *Photon = TruePhotonCandidate->GetMCParticle(MCStack); | |
1004 | if(Photon->GetPdgCode() != 22) return; // Mother is no Photon | |
1005 | ||
ca91a3e1 | 1006 | // True Photon |
a280ac15 | 1007 | if(fIsFromMBHeader)hESDTrueConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt()); |
ca91a3e1 | 1008 | |
1009 | if(posDaughter->GetMother(0) <= MCStack->GetNprimary()){ | |
1010 | // Count just primary MC Gammas as true --> For Ratio esdtruegamma / mcconvgamma | |
a280ac15 | 1011 | if(fIsFromMBHeader){ |
e5b6e8a6 | 1012 | hESDTruePrimaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt()); |
0a2b2b4b | 1013 | if (fDoPhotonQA){ |
1014 | hESDTruePrimaryConvGammaR[fiCut]->Fill(TruePhotonCandidate->GetConversionRadius()); | |
1015 | hESDTruePrimaryConvGammaEta[fiCut]->Fill(TruePhotonCandidate->Eta()); | |
1016 | } | |
e5b6e8a6 | 1017 | hESDTruePrimaryConvGammaRSESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled |
1018 | } | |
1019 | hESDTruePrimaryConvGammaESDPtMCPt[fiCut]->Fill(TruePhotonCandidate->Pt(),Photon->Pt()); // Allways Filled | |
1020 | // (Not Filled for i6, Extra Signal Gamma (parambox) are secondary) | |
ca91a3e1 | 1021 | } |
1022 | else{ | |
a280ac15 | 1023 | if(fIsFromMBHeader){ |
e5b6e8a6 | 1024 | hESDTrueSecondaryConvGammaPt[fiCut]->Fill(TruePhotonCandidate->Pt()); |
0a2b2b4b | 1025 | if (fDoPhotonQA) hESDTrueSecondaryConvGammaR[fiCut]->Fill(TruePhotonCandidate->GetConversionRadius()); |
e5b6e8a6 | 1026 | if(MCStack->Particle(Photon->GetMother(0))->GetMother(0) > -1 && |
1027 | MCStack->Particle(MCStack->Particle(Photon->GetMother(0))->GetMother(0))->GetPdgCode() == 310){ | |
1028 | hESDTrueSecondaryConvGammaFromXFromK0sPt[fiCut]->Fill(TruePhotonCandidate->Pt()); | |
1029 | } | |
ca91a3e1 | 1030 | } |
1031 | } | |
2bb2434e | 1032 | } |
1033 | //________________________________________________________________________ | |
1034 | void AliAnalysisTaskGammaConvV1::ProcessMCParticles() | |
1035 | { | |
2bb2434e | 1036 | // Loop over all primary MC particle |
1037 | for(Int_t i = 0; i < fMCStack->GetNprimary(); i++) { | |
1038 | TParticle* particle = (TParticle *)fMCStack->Particle(i); | |
1039 | if (!particle) continue; | |
1040 | ||
a280ac15 | 1041 | Bool_t mcIsFromMB = kTRUE; |
1042 | Int_t isMCFromMBHeader = -1; | |
ca91a3e1 | 1043 | if(((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){ |
a280ac15 | 1044 | isMCFromMBHeader |
1045 | = ((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack); | |
1046 | if(isMCFromMBHeader == 0 && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 3) continue; | |
1047 | if(isMCFromMBHeader != 2) mcIsFromMB = kFALSE; | |
ca91a3e1 | 1048 | } |
1049 | ||
1050 | if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kFALSE)){ | |
1051 | hMCAllGammaPt[fiCut]->Fill(particle->Pt()); // All MC Gamma | |
1052 | if(particle->GetMother(0) >-1){ // Meson Decay Gamma | |
1053 | switch(fMCStack->Particle(particle->GetMother(0))->GetPdgCode()){ | |
1054 | case 111: // Pi0 | |
1055 | hMCDecayGammaPi0Pt[fiCut]->Fill(particle->Pt()); | |
1056 | break; | |
1057 | case 113: // Rho0 | |
1058 | hMCDecayGammaRhoPt[fiCut]->Fill(particle->Pt()); | |
1059 | break; | |
1060 | case 221: // Eta | |
1061 | hMCDecayGammaEtaPt[fiCut]->Fill(particle->Pt()); | |
1062 | break; | |
1063 | case 223: // Omega | |
1064 | hMCDecayGammaOmegaPt[fiCut]->Fill(particle->Pt()); | |
1065 | break; | |
1066 | case 331: // Eta' | |
1067 | hMCDecayGammaEtapPt[fiCut]->Fill(particle->Pt()); | |
1068 | break; | |
1069 | case 333: // Phi | |
1070 | hMCDecayGammaPhiPt[fiCut]->Fill(particle->Pt()); | |
1071 | break; | |
e5b6e8a6 | 1072 | case 3212: // Sigma |
a280ac15 | 1073 | hMCDecayGammaSigmaPt[fiCut]->Fill(particle->Pt()); |
e5b6e8a6 | 1074 | break; |
ca91a3e1 | 1075 | } |
1076 | } | |
1077 | } | |
1078 | if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(particle,fMCStack,kTRUE)){ | |
1079 | hMCConvGammaPt[fiCut]->Fill(particle->Pt()); | |
0a2b2b4b | 1080 | if (fDoPhotonQA){ |
1081 | hMCConvGammaR[fiCut]->Fill(((TParticle*)fMCStack->Particle(particle->GetFirstDaughter()))->R()); | |
1082 | hMCConvGammaEta[fiCut]->Fill(particle->Eta()); | |
1083 | } | |
a280ac15 | 1084 | if(mcIsFromMB){ |
e5b6e8a6 | 1085 | hMCConvGammaRSPt[fiCut]->Fill(particle->Pt()); |
0a2b2b4b | 1086 | if (fDoPhotonQA){ |
1087 | hMCConvGammaRSR[fiCut]->Fill(((TParticle*)fMCStack->Particle(particle->GetFirstDaughter()))->R()); | |
1088 | hMCConvGammaRSEta[fiCut]->Fill(particle->Eta()); | |
1089 | } | |
e5b6e8a6 | 1090 | } |
ca91a3e1 | 1091 | } // Converted MC Gamma |
1092 | if(fDoMesonAnalysis){ | |
e5b6e8a6 | 1093 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelectedMC(particle,fMCStack)){ |
1094 | TParticle* daughter0 = (TParticle*)fMCStack->Particle(particle->GetFirstDaughter()); | |
1095 | TParticle* daughter1 = (TParticle*)fMCStack->Particle(particle->GetLastDaughter()); | |
1096 | ||
a280ac15 | 1097 | Float_t weighted= 1; |
1098 | if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(i, fMCStack)){ | |
1099 | if (particle->Pt()>0.005){ | |
1100 | weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),i, fMCStack); | |
1101 | } | |
1102 | } | |
0a2b2b4b | 1103 | Double_t mesonY = 10.; |
1104 | if(particle->Energy() - particle->Pz() == 0 || particle->Energy() + particle->Pz() == 0){ | |
1105 | mesonY=10.; | |
1106 | } else{ | |
1107 | mesonY = 0.5*(TMath::Log((particle->Energy()+particle->Pz()) / (particle->Energy()-particle->Pz()))); | |
1108 | } | |
1109 | ||
a280ac15 | 1110 | if(particle->GetPdgCode() == 111){ |
1111 | hMCPi0Pt[fiCut]->Fill(particle->Pt(),weighted); // All MC Pi0 | |
0a2b2b4b | 1112 | if (fDoMesonQA) hMCPi0PtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0 |
a280ac15 | 1113 | } else if(particle->GetPdgCode() == 221){ |
1114 | hMCEtaPt[fiCut]->Fill(particle->Pt(),weighted); // All MC Eta | |
0a2b2b4b | 1115 | if (fDoMesonQA) hMCEtaPtY[fiCut]->Fill(particle->Pt(),mesonY,weighted); // All MC Pi0 |
a280ac15 | 1116 | } |
e5b6e8a6 | 1117 | |
ca91a3e1 | 1118 | // Check the acceptance for both gammas |
e5b6e8a6 | 1119 | if(((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter0,fMCStack,kFALSE) && |
1120 | ((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelectedMC(daughter1,fMCStack,kFALSE) ){ | |
0a2b2b4b | 1121 | |
a280ac15 | 1122 | if(particle->GetPdgCode() == 111){ |
1123 | hMCPi0InAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Pi0 with gamma in acc | |
1124 | } else if(particle->GetPdgCode() == 221){ | |
1125 | hMCEtaInAccPt[fiCut]->Fill(particle->Pt(),weighted); // MC Eta with gamma in acc | |
1126 | } | |
ca91a3e1 | 1127 | } |
1128 | } | |
1129 | } | |
2bb2434e | 1130 | } |
1131 | } | |
1132 | //________________________________________________________________________ | |
1133 | void AliAnalysisTaskGammaConvV1::CalculatePi0Candidates(){ | |
1134 | ||
1135 | // Conversion Gammas | |
a280ac15 | 1136 | if(fGammaCandidates->GetEntries()>1){ |
1137 | for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries()-1;firstGammaIndex++){ | |
1138 | AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex)); | |
0a2b2b4b | 1139 | if (gamma0==NULL) continue; |
a280ac15 | 1140 | for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){ |
1141 | AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex)); | |
2bb2434e | 1142 | //Check for same Electron ID |
0a2b2b4b | 1143 | if (gamma1==NULL) continue; |
2bb2434e | 1144 | if(gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelPositive() || |
1145 | gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelNegative() || | |
1146 | gamma0->GetTrackLabelNegative() == gamma1->GetTrackLabelPositive() || | |
1147 | gamma0->GetTrackLabelPositive() == gamma1->GetTrackLabelNegative() ) continue; | |
1148 | ||
1149 | AliAODConversionMother *pi0cand = new AliAODConversionMother(gamma0,gamma1); | |
1150 | pi0cand->SetLabels(firstGammaIndex,secondGammaIndex); | |
1151 | ||
ca91a3e1 | 1152 | if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(pi0cand,kTRUE))){ |
2bb2434e | 1153 | hESDMotherInvMassPt[fiCut]->Fill(pi0cand->M(),pi0cand->Pt()); |
e5b6e8a6 | 1154 | |
1155 | if(pi0cand->GetAlpha()<0.1) | |
2bb2434e | 1156 | hESDMotherInvMassEalpha[fiCut]->Fill(pi0cand->M(),pi0cand->E()); |
0a2b2b4b | 1157 | if (fDoMesonQA){ |
1158 | Double_t sparesFill2[3] = {pi0cand->M(),pi0cand->Pt(),pi0cand->Rapidity()}; | |
1159 | sESDMotherInvMassPtY[fiCut]->Fill(sparesFill2,1); | |
1160 | } | |
e5b6e8a6 | 1161 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGCalculation()){ |
1162 | Int_t zbin = 0; | |
1163 | Int_t mbin = 0; | |
a280ac15 | 1164 | |
e5b6e8a6 | 1165 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->BackgroundHandlerType() == 0){ |
0a2b2b4b | 1166 | |
e5b6e8a6 | 1167 | zbin = fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ()); |
1168 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ | |
1169 | mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fNumberOfESDTracks); | |
1170 | } else { | |
a280ac15 | 1171 | mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries()); |
e5b6e8a6 | 1172 | } |
1173 | } | |
1174 | else{ | |
1175 | zbin = fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ()); | |
1176 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ | |
1177 | mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fNumberOfESDTracks); | |
1178 | } else { | |
a280ac15 | 1179 | mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries()); |
e5b6e8a6 | 1180 | } |
1181 | } | |
1182 | Double_t sparesFill[4] = {pi0cand->M(),pi0cand->Pt(),(Double_t)zbin,(Double_t)mbin}; | |
1183 | sESDMotherInvMassPtZM[fiCut]->Fill(sparesFill,1); | |
2bb2434e | 1184 | } |
2bb2434e | 1185 | if(fMCEvent){ |
1186 | ProcessTrueMesonCandidates(pi0cand,gamma0,gamma1); | |
1187 | } | |
1188 | } | |
1189 | delete pi0cand; | |
1190 | pi0cand=0x0; | |
1191 | } | |
1192 | } | |
1193 | } | |
1194 | } | |
1195 | //______________________________________________________________________ | |
1196 | void AliAnalysisTaskGammaConvV1::ProcessTrueMesonCandidates(AliAODConversionMother *Pi0Candidate, AliAODConversionPhoton *TrueGammaCandidate0, AliAODConversionPhoton *TrueGammaCandidate1) | |
1197 | { | |
1198 | // Process True Mesons | |
1199 | AliStack *MCStack = fMCEvent->Stack(); | |
1200 | ||
e5b6e8a6 | 1201 | if(TrueGammaCandidate0->GetV0Index()<fInputEvent->GetNumberOfV0s()){ |
2bb2434e | 1202 | Bool_t isTruePi0 = kFALSE; |
1203 | Bool_t isTrueEta = kFALSE; | |
1204 | Int_t gamma0MCLabel = TrueGammaCandidate0->GetMCParticleLabel(MCStack); | |
1205 | Int_t gamma0MotherLabel = -1; | |
1206 | if(gamma0MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother | |
1207 | // Daughters Gamma 0 | |
1208 | TParticle * negativeMC = (TParticle*)TrueGammaCandidate0->GetNegativeMCDaughter(MCStack); | |
1209 | TParticle * positiveMC = (TParticle*)TrueGammaCandidate0->GetPositiveMCDaughter(MCStack); | |
1210 | TParticle * gammaMC0 = (TParticle*)MCStack->Particle(gamma0MCLabel); | |
e5b6e8a6 | 1211 | if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ... |
2bb2434e | 1212 | if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ... |
1213 | if(gammaMC0->GetPdgCode() == 22){ // ... with Gamma Mother | |
1214 | gamma0MotherLabel=gammaMC0->GetFirstMother(); | |
1215 | } | |
1216 | } | |
1217 | if(gammaMC0->GetPdgCode() ==111){ // Conversion but Pi0 Mother | |
1218 | gamma0MotherLabel=-111; | |
1219 | } | |
1220 | if(gammaMC0->GetPdgCode() ==221){ // Conversion but Eta Mother | |
1221 | gamma0MotherLabel=-221; | |
1222 | } | |
1223 | } | |
1224 | } | |
e5b6e8a6 | 1225 | if(TrueGammaCandidate1->GetV0Index()<fInputEvent->GetNumberOfV0s()){ |
2bb2434e | 1226 | Int_t gamma1MCLabel = TrueGammaCandidate1->GetMCParticleLabel(MCStack); |
1227 | Int_t gamma1MotherLabel = -1; | |
1228 | if(gamma1MCLabel != -1){ // Gamma is Combinatorial; MC Particles don't belong to the same Mother | |
1229 | // Daughters Gamma 1 | |
1230 | TParticle * negativeMC = (TParticle*)TrueGammaCandidate1->GetNegativeMCDaughter(MCStack); | |
1231 | TParticle * positiveMC = (TParticle*)TrueGammaCandidate1->GetPositiveMCDaughter(MCStack); | |
1232 | TParticle * gammaMC1 = (TParticle*)MCStack->Particle(gamma1MCLabel); | |
e5b6e8a6 | 1233 | if(abs(negativeMC->GetPdgCode())==11 && abs(positiveMC->GetPdgCode())==11){ // Electrons ... |
2bb2434e | 1234 | if(negativeMC->GetUniqueID() == 5 && positiveMC->GetUniqueID() ==5){ // ... From Conversion ... |
1235 | if(gammaMC1->GetPdgCode() == 22){ // ... with Gamma Mother | |
1236 | gamma1MotherLabel=gammaMC1->GetFirstMother(); | |
1237 | } | |
1238 | } | |
1239 | if(gammaMC1->GetPdgCode() ==111){ // Conversion but Pi0 Mother | |
1240 | gamma1MotherLabel=-111; | |
1241 | } | |
1242 | if(gammaMC1->GetPdgCode() ==221){ // Conversion but Eta Mother | |
1243 | gamma1MotherLabel=-221; | |
1244 | } | |
1245 | } | |
1246 | } | |
1247 | if(gamma0MotherLabel>=0 && gamma0MotherLabel==gamma1MotherLabel){ | |
1248 | if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 111){ | |
1249 | isTruePi0=kTRUE; | |
1250 | } | |
1251 | if(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetPdgCode() == 221){ | |
1252 | isTrueEta=kTRUE; | |
1253 | } | |
1254 | } | |
e5b6e8a6 | 1255 | if(isTruePi0 || isTrueEta){// True Pion or Eta |
ca91a3e1 | 1256 | hESDTrueMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); |
e5b6e8a6 | 1257 | |
1258 | if(gamma0MotherLabel >= MCStack->GetNprimary()){ // Secondary Meson | |
ca91a3e1 | 1259 | hESDTrueSecondaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); |
1260 | if (((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0) >-1){ | |
1261 | if(MCStack->Particle(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0))->GetPdgCode()==kK0Short){ | |
1262 | hESDTrueSecondaryMotherFromK0sInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); | |
0a2b2b4b | 1263 | if (fDoMesonQA)hESDTrueK0sWithPi0DaughterMCPt[fiCut] |
1264 | ->Fill(MCStack->Particle(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0))->Pt()); | |
e5b6e8a6 | 1265 | } |
1266 | if(MCStack->Particle(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0))->GetPdgCode()==221){ | |
1267 | hESDTrueSecondaryMotherFromEtaInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); | |
0a2b2b4b | 1268 | if (fDoMesonQA)hESDTrueEtaWithPi0DaughterMCPt[fiCut] |
1269 | ->Fill(MCStack->Particle(((TParticle*)MCStack->Particle(gamma1MotherLabel))->GetMother(0))->Pt()); | |
ca91a3e1 | 1270 | } |
1271 | } | |
0a2b2b4b | 1272 | }else{ // Only primary pi0 for efficiency calculation |
a280ac15 | 1273 | Float_t weighted= 1; |
1274 | if(((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(gamma1MotherLabel, fMCStack)){ | |
1275 | if (((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt()>0.005){ | |
1276 | weighted= ((AliConversionCuts*)fCutArray->At(fiCut))->GetWeightForMeson(fV0Reader->GetPeriodName(),gamma1MotherLabel, fMCStack); | |
1277 | } | |
1278 | } | |
1279 | hESDTruePrimaryMotherInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt(),weighted); | |
0a2b2b4b | 1280 | |
1281 | if (fDoMesonQA){ | |
1282 | Double_t sparesFill[3] = {Pi0Candidate->M(),Pi0Candidate->Pt(),Pi0Candidate->Rapidity()}; | |
1283 | sESDTruePrimaryMotherInvMassPtY[fiCut]->Fill(sparesFill,1); | |
1284 | if(isTruePi0){ // Only primary pi0 for resolution | |
1285 | hESDTruePrimaryPi0MCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted); | |
1286 | } | |
1287 | if (isTrueEta){ // Only primary eta for resolution | |
1288 | hESDTruePrimaryEtaMCPtResolPt[fiCut]->Fill(((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),(Pi0Candidate->Pt()-((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt())/((TParticle*)MCStack->Particle(gamma1MotherLabel))->Pt(),weighted); | |
1289 | } | |
ca91a3e1 | 1290 | } |
1291 | } | |
2bb2434e | 1292 | } |
0a2b2b4b | 1293 | else if(!isTruePi0 && !isTrueEta && fDoMesonQA){ // Background |
2bb2434e | 1294 | if(gamma0MotherLabel>-1 && gamma1MotherLabel>-1){ // Both Tracks are Photons and have a mother but not Pi0 or Eta |
1295 | hESDTrueBckGGInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); | |
1296 | } else { // No photon or without mother | |
1297 | hESDTrueBckContInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); | |
1298 | } | |
ca91a3e1 | 1299 | if((gamma0MotherLabel==-111 || gamma1MotherLabel==-111 || gamma0MotherLabel==-221 || gamma1MotherLabel==-221) ){ |
2bb2434e | 1300 | // Dalitz |
2bb2434e | 1301 | hESDTrueMotherDalitzInvMassPt[fiCut]->Fill(Pi0Candidate->M(),Pi0Candidate->Pt()); |
1302 | } | |
1303 | } | |
1304 | } | |
1305 | } | |
1306 | } | |
1307 | ||
1308 | //________________________________________________________________________ | |
1309 | void AliAnalysisTaskGammaConvV1::CalculateBackground(){ | |
1310 | ||
e5b6e8a6 | 1311 | Int_t zbin= fBGHandler[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ()); |
2bb2434e | 1312 | Int_t mbin = 0; |
1313 | ||
ca91a3e1 | 1314 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ |
2bb2434e | 1315 | mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fNumberOfESDTracks); |
1316 | } else { | |
a280ac15 | 1317 | mbin = fBGHandler[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries()); |
2bb2434e | 1318 | } |
1319 | ||
ca91a3e1 | 1320 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){ |
2bb2434e | 1321 | |
a280ac15 | 1322 | for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){ |
1323 | AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent)); | |
1324 | for(Int_t iCurrent2=iCurrent+1;iCurrent2<fGammaCandidates->GetEntries();iCurrent2++){ | |
e5b6e8a6 | 1325 | for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){ |
a280ac15 | 1326 | AliAODConversionPhoton currentEventGoodV02 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent2)); |
2bb2434e | 1327 | |
ca91a3e1 | 1328 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->DoBGProbability()){ |
2bb2434e | 1329 | AliAODConversionMother *backgroundCandidateProb = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02); |
1330 | Double_t massBGprob = backgroundCandidateProb->M(); | |
1331 | if(massBGprob>0.1 && massBGprob<0.14){ | |
1332 | if(fRandom.Rndm()>fBGHandler[fiCut]->GetBGProb(zbin,mbin)){ | |
1333 | delete backgroundCandidateProb; | |
1334 | continue; | |
1335 | } | |
1336 | } | |
1337 | delete backgroundCandidateProb; | |
1338 | backgroundCandidateProb = 0x0; | |
1339 | } | |
1340 | ||
1341 | RotateParticle(¤tEventGoodV02); | |
1342 | AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,¤tEventGoodV02); | |
ca91a3e1 | 1343 | if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(backgroundCandidate,kFALSE))){ |
2bb2434e | 1344 | hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt()); |
e5b6e8a6 | 1345 | Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin}; |
2bb2434e | 1346 | sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1); |
1347 | } | |
1348 | delete backgroundCandidate; | |
1349 | backgroundCandidate = 0x0; | |
1350 | } | |
1351 | } | |
1352 | } | |
ca91a3e1 | 1353 | }else{ |
2bb2434e | 1354 | AliGammaConversionAODBGHandler::GammaConversionVertex *bgEventVertex = NULL; |
1355 | ||
ca91a3e1 | 1356 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ |
2bb2434e | 1357 | for(Int_t nEventsInBG=0;nEventsInBG<fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){ |
1358 | AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG); | |
1359 | if(fMoveParticleAccordingToVertex == kTRUE){ | |
1360 | bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG); | |
1361 | } | |
1362 | ||
a280ac15 | 1363 | for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){ |
1364 | AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent)); | |
2bb2434e | 1365 | for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){ |
1366 | AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious))); | |
1367 | if(fMoveParticleAccordingToVertex == kTRUE){ | |
1368 | MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex); | |
1369 | } | |
1370 | ||
1371 | AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0); | |
ca91a3e1 | 1372 | if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(backgroundCandidate,kFALSE))){ |
2bb2434e | 1373 | hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt()); |
e5b6e8a6 | 1374 | Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin}; |
2bb2434e | 1375 | sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1); |
1376 | } | |
1377 | delete backgroundCandidate; | |
1378 | backgroundCandidate = 0x0; | |
1379 | } | |
1380 | } | |
1381 | } | |
1382 | } | |
1383 | else{ | |
1384 | for(Int_t nEventsInBG=0;nEventsInBG <fBGHandler[fiCut]->GetNBGEvents();nEventsInBG++){ | |
1385 | AliGammaConversionAODVector *previousEventV0s = fBGHandler[fiCut]->GetBGGoodV0s(zbin,mbin,nEventsInBG); | |
1386 | if(previousEventV0s){ | |
1387 | if(fMoveParticleAccordingToVertex == kTRUE){ | |
1388 | bgEventVertex = fBGHandler[fiCut]->GetBGEventVertex(zbin,mbin,nEventsInBG); | |
1389 | } | |
a280ac15 | 1390 | for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){ |
1391 | AliAODConversionPhoton currentEventGoodV0 = *(AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent)); | |
2bb2434e | 1392 | for(UInt_t iPrevious=0;iPrevious<previousEventV0s->size();iPrevious++){ |
1393 | ||
1394 | AliAODConversionPhoton previousGoodV0 = (AliAODConversionPhoton)(*(previousEventV0s->at(iPrevious))); | |
1395 | ||
1396 | if(fMoveParticleAccordingToVertex == kTRUE){ | |
1397 | MoveParticleAccordingToVertex(&previousGoodV0,bgEventVertex); | |
1398 | } | |
1399 | ||
1400 | AliAODConversionMother *backgroundCandidate = new AliAODConversionMother(¤tEventGoodV0,&previousGoodV0); | |
1401 | ||
ca91a3e1 | 1402 | if((((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(backgroundCandidate,kFALSE))){ |
2bb2434e | 1403 | hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate->M(),backgroundCandidate->Pt()); |
e5b6e8a6 | 1404 | Double_t sparesFill[4] = {backgroundCandidate->M(),backgroundCandidate->Pt(),(Double_t)zbin,(Double_t)mbin}; |
2bb2434e | 1405 | sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,1); |
1406 | } | |
1407 | delete backgroundCandidate; | |
1408 | backgroundCandidate = 0x0; | |
1409 | } | |
1410 | } | |
1411 | } | |
1412 | } | |
1413 | } | |
1414 | } | |
1415 | } | |
e5b6e8a6 | 1416 | //________________________________________________________________________ |
1417 | void AliAnalysisTaskGammaConvV1::CalculateBackgroundRP(){ | |
1418 | ||
1419 | Int_t zbin= fBGHandlerRP[fiCut]->GetZBinIndex(fInputEvent->GetPrimaryVertex()->GetZ()); | |
1420 | Int_t mbin = 0; | |
1421 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ | |
1422 | mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fNumberOfESDTracks); | |
1423 | } else { | |
a280ac15 | 1424 | mbin = fBGHandlerRP[fiCut]->GetMultiplicityBinIndex(fGammaCandidates->GetEntries()); |
e5b6e8a6 | 1425 | } |
1426 | ||
1427 | ||
1428 | //Rotation Method | |
1429 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseRotationMethod()){ | |
1430 | // Correct for the number of rotations | |
1431 | // BG is for rotation the same, except for factor NRotations | |
1432 | Double_t weight=1./Double_t(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents()); | |
1433 | ||
a280ac15 | 1434 | for(Int_t firstGammaIndex=0;firstGammaIndex<fGammaCandidates->GetEntries();firstGammaIndex++){ |
e5b6e8a6 | 1435 | |
a280ac15 | 1436 | AliAODConversionPhoton *gamma0=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(firstGammaIndex)); |
0a2b2b4b | 1437 | if (gamma0==NULL) continue; |
a280ac15 | 1438 | for(Int_t secondGammaIndex=firstGammaIndex+1;secondGammaIndex<fGammaCandidates->GetEntries();secondGammaIndex++){ |
1439 | AliAODConversionPhoton *gamma1=dynamic_cast<AliAODConversionPhoton*>(fGammaCandidates->At(secondGammaIndex)); | |
0a2b2b4b | 1440 | if (gamma1 == NULL) continue; |
e5b6e8a6 | 1441 | if(!((AliConversionCuts*)fCutArray->At(fiCut))->PhotonIsSelected(gamma1,fInputEvent))continue; |
1442 | for(Int_t nRandom=0;nRandom<((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->GetNumberOfBGEvents();nRandom++){ | |
1443 | ||
1444 | RotateParticle(gamma1); | |
1445 | ||
1446 | AliAODConversionMother backgroundCandidate(gamma0,gamma1); | |
1447 | ||
1448 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(&backgroundCandidate,kFALSE)){ | |
1449 | hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt()); | |
1450 | Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin}; | |
1451 | sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight); | |
e5b6e8a6 | 1452 | } |
1453 | } | |
1454 | } | |
1455 | } | |
1456 | } | |
1457 | else{ | |
1458 | // Do Event Mixing | |
a280ac15 | 1459 | for(Int_t nEventsInBG=0;nEventsInBG <fBGHandlerRP[fiCut]->GetNBGEvents(fGammaCandidates,fInputEvent);nEventsInBG++){ |
e5b6e8a6 | 1460 | |
a280ac15 | 1461 | AliGammaConversionPhotonVector *previousEventGammas = fBGHandlerRP[fiCut]->GetBGGoodGammas(fGammaCandidates,fInputEvent,nEventsInBG); |
e5b6e8a6 | 1462 | |
1463 | if(previousEventGammas){ | |
1464 | // test weighted background | |
1465 | Double_t weight=1.0; | |
1466 | // Correct for the number of eventmixing: | |
1467 | // N gammas -> (N-1) + (N-2) +(N-3) ...+ (N-(N-1)) using sum formula sum(i)=N*(N-1)/2 -> N*(N-1)/2 | |
1468 | // real combinations (since you cannot combine a photon with its own) | |
1469 | // but BG leads to N_{a}*N_{b} combinations | |
a280ac15 | 1470 | weight*=0.5*(Double_t(fGammaCandidates->GetEntries()-1))/Double_t(previousEventGammas->size()); |
e5b6e8a6 | 1471 | |
a280ac15 | 1472 | for(Int_t iCurrent=0;iCurrent<fGammaCandidates->GetEntries();iCurrent++){ |
e5b6e8a6 | 1473 | |
a280ac15 | 1474 | AliAODConversionPhoton *gamma0 = (AliAODConversionPhoton*)(fGammaCandidates->At(iCurrent)); |
e5b6e8a6 | 1475 | |
1476 | for(UInt_t iPrevious=0;iPrevious<previousEventGammas->size();iPrevious++){ | |
ca91a3e1 | 1477 | |
e5b6e8a6 | 1478 | AliAODConversionPhoton *gamma1 = (AliAODConversionPhoton*)(previousEventGammas->at(iPrevious)); |
1479 | ||
1480 | AliAODConversionMother backgroundCandidate(gamma0,gamma1); | |
1481 | ||
1482 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->MesonIsSelected(&backgroundCandidate,kFALSE)){ | |
1483 | hESDMotherBackInvMassPt[fiCut]->Fill(backgroundCandidate.M(),backgroundCandidate.Pt()); | |
1484 | Double_t sparesFill[4] = {backgroundCandidate.M(),backgroundCandidate.Pt(),(Double_t)zbin,(Double_t)mbin}; | |
1485 | sESDMotherBackInvMassPtZM[fiCut]->Fill(sparesFill,weight); | |
e5b6e8a6 | 1486 | } |
1487 | } | |
1488 | } | |
1489 | } | |
1490 | } | |
1491 | } | |
1492 | } | |
2bb2434e | 1493 | //________________________________________________________________________ |
1494 | void AliAnalysisTaskGammaConvV1::RotateParticle(AliAODConversionPhoton *gamma){ | |
ca91a3e1 | 1495 | Int_t fNDegreesPMBackground= ((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->NDegreesRotation(); |
2bb2434e | 1496 | Double_t nRadiansPM = fNDegreesPMBackground*TMath::Pi()/180; |
1497 | Double_t rotationValue = fRandom.Rndm()*2*nRadiansPM + TMath::Pi()-nRadiansPM; | |
1498 | gamma->RotateZ(rotationValue); | |
1499 | } | |
1500 | //________________________________________________________________________ | |
1501 | void AliAnalysisTaskGammaConvV1::MoveParticleAccordingToVertex(AliAODConversionPhoton* particle,const AliGammaConversionAODBGHandler::GammaConversionVertex *vertex){ | |
1502 | //see header file for documentation | |
1503 | ||
e5b6e8a6 | 1504 | Double_t dx = vertex->fX - fInputEvent->GetPrimaryVertex()->GetX(); |
1505 | Double_t dy = vertex->fY - fInputEvent->GetPrimaryVertex()->GetY(); | |
1506 | Double_t dz = vertex->fZ - fInputEvent->GetPrimaryVertex()->GetZ(); | |
2bb2434e | 1507 | |
1508 | Double_t movedPlace[3] = {particle->GetConversionX() - dx,particle->GetConversionY() - dy,particle->GetConversionZ() - dz}; | |
1509 | particle->SetConversionPoint(movedPlace); | |
1510 | } | |
1511 | //________________________________________________________________________ | |
1512 | void AliAnalysisTaskGammaConvV1::UpdateEventByEventData(){ | |
1513 | //see header file for documentation | |
a280ac15 | 1514 | if(fGammaCandidates->GetEntries() >0 ){ |
ca91a3e1 | 1515 | if(((AliConversionMesonCuts*)fMesonCutArray->At(fiCut))->UseTrackMultiplicity()){ |
a280ac15 | 1516 | fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fNumberOfESDTracks); |
2bb2434e | 1517 | } |
1518 | else{ // means we use #V0s for multiplicity | |
a280ac15 | 1519 | fBGHandler[fiCut]->AddEvent(fGammaCandidates,fInputEvent->GetPrimaryVertex()->GetX(),fInputEvent->GetPrimaryVertex()->GetY(),fInputEvent->GetPrimaryVertex()->GetZ(),fGammaCandidates->GetEntries()); |
2bb2434e | 1520 | } |
1521 | } | |
1522 | } | |
1523 | ||
1524 | //________________________________________________________________________ | |
1525 | void AliAnalysisTaskGammaConvV1::CountESDTracks(){ | |
1526 | ||
2bb2434e | 1527 | // Using standard function for setting Cuts |
1528 | Bool_t selectPrimaries=kTRUE; | |
0a2b2b4b | 1529 | AliESDtrackCuts *EsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries); |
2bb2434e | 1530 | EsdTrackCuts->SetMaxDCAToVertexZ(2); |
1531 | EsdTrackCuts->SetEtaRange(-0.8, 0.8); | |
1532 | EsdTrackCuts->SetPtRange(0.15); | |
1533 | ||
1534 | fNumberOfESDTracks = 0; | |
e5b6e8a6 | 1535 | |
1536 | for(Int_t iTracks = 0; iTracks < fInputEvent->GetNumberOfTracks(); iTracks++){ | |
1537 | AliESDtrack* curTrack = (AliESDtrack*) fInputEvent->GetTrack(iTracks); | |
2bb2434e | 1538 | if(!curTrack) continue; |
e5b6e8a6 | 1539 | // if(fMCEvent && ((AliConversionCuts*)fCutArray->At(fiCut))->GetSignalRejection() != 0){ |
1540 | // if(!((AliConversionCuts*)fCutArray->At(fiCut))->IsParticleFromBGEvent(abs(curTrack->GetLabel()), fMCStack)) continue; | |
1541 | // } | |
2bb2434e | 1542 | if(EsdTrackCuts->AcceptTrack(curTrack) ) fNumberOfESDTracks++; |
1543 | } | |
1544 | delete EsdTrackCuts; | |
1545 | EsdTrackCuts=0x0; | |
1546 | ||
1547 | return; | |
1548 | } | |
1549 | //________________________________________________________________________ | |
1550 | void AliAnalysisTaskGammaConvV1::Terminate(const Option_t *) | |
1551 | { | |
e5b6e8a6 | 1552 | |
a280ac15 | 1553 | // Not Executed by GRID on SubJobLevel |
2bb2434e | 1554 | for(Int_t iCut = 0; iCut<fnCuts;iCut++){ |
a280ac15 | 1555 | if(!((AliConversionCuts*)fCutArray->At(iCut))) continue; |
e5b6e8a6 | 1556 | if(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection() == 2 && fMCEvent){ |
1557 | fHeaderNameList[iCut] = new TList(); | |
1558 | TString HeaderNames = "Header:"; | |
1559 | for(Int_t i = 0;i<(((AliConversionCuts*)fCutArray->At(iCut))->GetAcceptedHeader())->GetEntries();i++){ | |
1560 | HeaderNames = HeaderNames+"_"+ ((TObjString*)((TList*) ( (AliConversionCuts*)fCutArray->At(iCut)) | |
1561 | ->GetAcceptedHeader())->At(i))->GetString(); | |
1562 | } | |
1563 | fHeaderNameList[iCut]->SetName(HeaderNames); | |
1564 | fHeaderNameList[iCut]->SetOwner(kTRUE); | |
1565 | fCutFolder[iCut]->Add(fHeaderNameList[iCut]); | |
1566 | } | |
1567 | else if(((AliConversionCuts*)fCutArray->At(iCut))->GetSignalRejection() == 0 && | |
1568 | (((AliConversionCuts*)fCutArray->At(iCut))->GetFoundHeader()) && fMCEvent){ | |
1569 | fHeaderNameList[iCut] = new TList(); | |
1570 | TString HeaderNames = (((AliConversionCuts*)fCutArray->At(iCut))->GetFoundHeader())[0]; | |
1571 | fHeaderNameList[iCut]->SetName(HeaderNames); | |
1572 | fHeaderNameList[iCut]->SetOwner(kTRUE); | |
1573 | fCutFolder[iCut]->Add(fHeaderNameList[iCut]); | |
1574 | } | |
2bb2434e | 1575 | } |
a280ac15 | 1576 | |
1577 | //fOutputContainer->Print(); // Will crash on GRID | |
2bb2434e | 1578 | } |