]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/STRANGENESS/Correlations/AliAnalysisTaskLambdaOverK0sJets.cxx
smaller pt bin for correlations in the range from 1.75 to 3 Gev/c
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Correlations / AliAnalysisTaskLambdaOverK0sJets.cxx
CommitLineData
667b678a 1/*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: X. Sanchez Castro *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
667b678a 16#include <TCanvas.h>
17#include <TTree.h>
18#include <TFile.h>
19#include <TH1F.h>
20#include <TH2F.h>
21#include <TH3F.h>
22#include <TPDGCode.h>
23#include <TDatabasePDG.h>
24#include <TClonesArray.h>
25#include <TROOT.h>
26
27#include "AliOADBContainer.h"
28
29#include "AliAODMCHeader.h"
30#include "AliAODMCParticle.h"
31#include "AliGenHijingEventHeader.h"
32
33#include "AliAODEvent.h"
34#include "AliAODv0.h"
35#include "AliAODcascade.h"
36
37#include "AliCFContainer.h"
38#include "AliCentrality.h"
39
40#include "AliPID.h"
41#include "AliPIDResponse.h"
42#include "AliAODPid.h"
43
44#include "AliInputEventHandler.h"
45#include "AliAnalysisManager.h"
46
47#include "AliAnalysisTaskLambdaOverK0sJets.h"
48
49extern TROOT *gROOT;
50
29f14569 51
667b678a 52ClassImp(AliAnalysisTaskLambdaOverK0sJets)
348080d3 53ClassImp(AliMiniParticle)
667b678a 54
55// Global variables:
56static Int_t nbins = 100; // Number of bins for l, pt, mass for V0
57static Int_t nbinsPhi = 120; // Number of bins for Phi
fbaec09e 58static Int_t nbinsdPhi = 28; // Number of bins for dPhi
b6f9da99 59static Int_t nbinsdEta = 30; // Number of bins for dEta
667b678a 60static Int_t nbinPtLP = 200;
61static Int_t nbinsVtx = 20;
62
b6a9eae2 63static Float_t pMin = 0.0; // Lower cut for transverse momentum
64static Float_t pMax = 10.; // Max cut for transverse momentum for V0
65static Float_t ptMaxLP = 50.; // Max cut for transverse momentum LP
667b678a 66
b6a9eae2 67static Float_t lMin = 0.0; // Limits in the histo for fidutial volume
68static Float_t lMax = 100.; // Limits in the fidutial volume
667b678a 69
348080d3 70static Int_t nMaxEvMix = 250;
71
667b678a 72//
73//
74//
75
76AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
77 AliAnalysisTaskSE(name),
78
b6f9da99 79 fAOD(0), fCollision("PbPb2010"), fIsMC(kFALSE), fUsePID(kFALSE), fCentMin(0.), fCentMax(90.), fDoQA(kFALSE), fDoMixEvt(kFALSE), fTrigPtMin(8.), fTrigPtMax(20.), fTrigEtaMax(0.8), fCheckIDTrig(kFALSE), fSeparateInjPart(kTRUE), fEndOfHijingEvent(-1), fPIDResponse(0),
6668159e 80
348080d3 81 fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fYMax(0.5), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
6668159e 82
b6f9da99 83 fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fCentrality(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0), fCentMult(0), fdEdx(0), fdEdxPid(0),
667b678a 84
b6f9da99 85 fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0),fCheckIDTrigEtaAntiLambda(0), fInjectedParticles(0),
667b678a 86
b6f9da99 87 fK0sMCPt(0), fK0sMCPtRap(0),fK0sMCPtRap2(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtRap(0), fK0sMCResEta(0), fK0sMCResPhi(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaAssocPt(0), fLambdaAssocPtArm(0), fLambdaAssocPtRap(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtArm(0), fAntiLambdaAssocPtRap(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0),
92d8f256 88
89 fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
b6a9eae2 90
348080d3 91 fK0sMass(0), fK0sPtvsEta(0), fK0sPtvsRap(0), fK0sEtaPhi(0), fK0sMassPtPhi(0), fK0sSiPtL(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sdEdxPosDaug(0), fK0sdEdxNegDaug(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
92
93 fLambdaMass(0), fLambdaPtvsEta(0), fLambdaPtvsRap(0), fLambdaEtaPhi(0), fLambdaMassPtPhi(0), fLambdaSiPtL(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdadEdxPosDaug(0), fLambdadEdxNegDaug(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0),
f25a6d07 94
348080d3 95 fAntiLambdaMass(0), fAntiLambdaPtvsEta(0), fAntiLambdaPtvsRap(0), fAntiLambdaEtaPhi(0), fAntiLambdaMassPtPhi(0), fAntiLambdaSiPtL(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdadEdxPosDaug(0), fAntiLambdadEdxNegDaug(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0),
6668159e 96
348080d3 97 fK0sPIDPosDaug(0), fK0sPIDNegDaug(0), fK0sBckgPIDPosDaug(0), fK0sBckgPIDNegDaug(0), fK0sPhiEtaPosDaug(0), fK0sPhiEtaNegDaug(0), fK0sBckgPhiEtaPosDaug(0), fK0sBckgPhiEtaNegDaug(0), fK0sDCAPosDaug(0), fK0sDCANegDaug(0), fK0sBckgDCAPosDaug(0), fK0sBckgDCANegDaug(0), fK0sDifPtPosDaug(0), fK0sDifPtNegDaug(0), fK0sBckgDifPtPosDaug(0), fK0sBckgDifPtNegDaug(0), fK0sDecayPos(0), fK0sBckgDecayPos(0), fK0sDecayVertex(0), fK0sBckgDecayVertex(0), fK0sDecayVertexZoom(0), fK0sBckgDecayVertexZoom(0), fK0sCPA(0), fK0sBckgCPA(0), fK0sDCAV0Daug(0), fK0sBckgDCAV0Daug(0), fK0sNClustersTPC(0), fK0sBckgNClustersTPC(0), fK0sNClustersITSPos(0), fK0sNClustersITSNeg(0), fK0sBckgNClustersITSPos(0), fK0sBckgNClustersITSNeg(0),
667b678a 98
348080d3 99 fLambdaPIDPosDaug(0), fLambdaPIDNegDaug(0), fLambdaBckgPIDPosDaug(0), fLambdaBckgPIDNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0),fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDifPtPosDaug(0), fLambdaDifPtNegDaug(0), fLambdaBckgDifPtPosDaug(0), fLambdaBckgDifPtNegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaDecayVertexZoom(0), fLambdaBckgDecayVertexZoom(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0), fLambdaBckgNClustersITSNeg(0),
59e0735e 100
348080d3 101 fAntiLambdaPIDPosDaug(0), fAntiLambdaPIDNegDaug(0), fAntiLambdaBckgPIDPosDaug(0), fAntiLambdaBckgPIDNegDaug(0), fAntiLambdaPhiEtaPosDaug(0),fAntiLambdaPhiEtaNegDaug(0), fAntiLambdaBckgPhiEtaPosDaug(0),fAntiLambdaBckgPhiEtaNegDaug(0), fAntiLambdaDCAPosDaug(0),fAntiLambdaDCANegDaug(0), fAntiLambdaBckgDCAPosDaug(0), fAntiLambdaBckgDCANegDaug(0), fAntiLambdaDifPtPosDaug(0), fAntiLambdaDifPtNegDaug(0), fAntiLambdaBckgDifPtPosDaug(0), fAntiLambdaBckgDifPtNegDaug(0), fAntiLambdaDecayPos(0), fAntiLambdaBckgDecayPos(0), fAntiLambdaDecayVertex(0), fAntiLambdaBckgDecayVertex(0), fAntiLambdaDecayVertexZoom(0), fAntiLambdaBckgDecayVertexZoom(0), fAntiLambdaCPA(0), fAntiLambdaBckgCPA(0), fAntiLambdaDCAV0Daug(0), fAntiLambdaBckgDCAV0Daug(0), fAntiLambdaNClustersTPC(0), fAntiLambdaBckgNClustersTPC(0), fAntiLambdaNClustersITSPos(0), fAntiLambdaNClustersITSNeg(0), fAntiLambdaBckgNClustersITSPos(0), fAntiLambdaBckgNClustersITSNeg(0)
667b678a 102
103{
104 // Dummy Constructor
105
fbaec09e 106
107 for (Int_t i=0; i<kNCent; i++){
59e0735e 108 // K0s
b6f9da99 109 fK0sMCPtPhiEta[i] = 0;
110 fK0sAssocPtPhiEta[i] = 0;
fbaec09e 111
112 // Lambda
113 fLambdaMCPtPhiEta[i] = 0;
114 fLambdaAssocPtPhiEta[i] = 0;
115
116 // AntiLambda
117 fAntiLambdaMCPtPhiEta[i] = 0;
118 fAntiLambdaAssocPtPhiEta[i] = 0;
119 }
120
121 for (Int_t i=0; i<kNCent*kN1; i++){
122 // K0s
667b678a 123 fK0sdPhidEtaMC[i] = 0;
667b678a 124 fK0sdPhidEtaPtL[i] = 0;
667b678a 125 fK0sdPhidEtaPtLBckg[i] = 0;
348080d3 126
59e0735e 127 // Lambda
667b678a 128 fLambdadPhidEtaMC[i] = 0;
667b678a 129 fLambdadPhidEtaPtL[i] = 0;
667b678a 130 fLambdadPhidEtaPtLBckg[i] = 0;
667b678a 131
59e0735e 132 // AntiLambda
133 fAntiLambdadPhidEtaMC[i] = 0;
59e0735e 134 fAntiLambdadPhidEtaPtL[i] = 0;
348080d3 135 fAntiLambdadPhidEtaPtLBckg[i] = 0;
136 }
137
138 // Gamma Conversion
139 for (Int_t i=0; i<kNCent; i++)
140 fGammaConversiondPhidEta[i] = 0;
141
142 // Mixed events distributions
143 for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){
144 fK0sdPhidEtaME[i] = 0;
145 fLambdadPhidEtaME[i] = 0;
146 fAntiLambdadPhidEtaME[i] = 0;
667b678a 147 }
148
149 // Constructor. Initialization of pointers
150 DefineOutput(1, TList::Class());
6668159e 151 DefineOutput(2, TList::Class());
348080d3 152 DefineOutput(3, TList::Class());
6668159e 153
667b678a 154
155}
156
157//___________________________________________________________________________________________
158
348080d3 159AliAnalysisTaskLambdaOverK0sJets::~AliAnalysisTaskLambdaOverK0sJets()
160{
161
162 // Destructor
163 if(fMEList){
164
165 for(Int_t icent=0; icent<kNCent; icent++){
166 for(Int_t iz=0; iz<kNVtxZ; iz++){
167 fMEList[icent*kNVtxZ+iz]->Delete(); delete fMEList[icent*kNVtxZ+iz];
168 }
169 }
170 delete[] fMEList; fMEList=0x0;
171 }
172
173 if(fTriggerParticles) {
174 delete fTriggerParticles;
175 fTriggerParticles=0x0;
176 }
177
b6f9da99 178 if(fTriggerPartMC) {
179 delete fTriggerPartMC;
180 fTriggerPartMC=0x0;
181 }
182
348080d3 183 if(fAssocParticles) {
184 delete fAssocParticles;
185 fAssocParticles=0x0;
186 }
b6f9da99 187
188 if(fAssocPartMC) {
189 delete fAssocPartMC;
190 fAssocPartMC=0x0;
191 }
192
348080d3 193
194}
195
196//___________________________________________________________________________________________
197
667b678a 198void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
199{
200 // Creating the histograms that are needed for the output
201
202 fOutput = new TList();
203 fOutput->SetOwner();
204
6668159e 205 fOutputQA = new TList();
206 fOutputQA->SetOwner();
207
348080d3 208 fOutputME = new TList();
209 fOutputME->SetOwner();
210
348080d3 211 fMEList = new TList*[kNCent*kNVtxZ];
212 for(Int_t icent=0; icent<kNCent; icent++){
213 for(Int_t iz=0; iz<kNVtxZ; iz++){
214 fMEList[icent*kNVtxZ+iz] = new TList();
215 fMEList[icent*kNVtxZ+iz]->SetOwner(kFALSE);
216 }
217 }
218
b6f9da99 219 char hNameHist[100];
348080d3 220
667b678a 221 // ====== General characteristics of the event and tracks ====== //
222
223 // Counter for the number of events in each step:
224 fEvents=new TH1F("fEvents","Number of events",14,-0.5,13.5);
225 fEvents->GetXaxis()->SetBinLabel(1,"calls to UserExec()");
226 fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
227 fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
228 fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
229 fEvents->GetXaxis()->SetBinLabel(5,"Vtx > 3 part");
230 fEvents->GetXaxis()->SetBinLabel(6,"|VtxZ| < 10 cm");
231 fEvents->GetXaxis()->SetBinLabel(7,"Mult && Cent");
232 fEvents->GetXaxis()->SetBinLabel(8,"Bad ID Trigger");
233 fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
234 fEvents->GetXaxis()->SetBinLabel(10,"Trigger is V0 daug");
235 fEvents->GetXaxis()->SetBinLabel(11,"Trigger is V0 daug && 2nd check");
236 fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
237 fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
59e0735e 238 fEvents->GetXaxis()->SetBinLabel(14,"V0 is LP in MC");
667b678a 239 fEvents->GetYaxis()->SetTitle("Counts");
240 fOutput->Add(fEvents);
241
242 // Centrality:
59e0735e 243 fCentrality = new TH1F("fCentrality","Centrality;Centrality (%);Events",100,0.,100.);
667b678a 244 fOutput->Add(fCentrality);
245
246 // Primary Vertex:
59e0735e 247 fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
667b678a 248 fOutput->Add(fPrimaryVertexX);
249
59e0735e 250 fPrimaryVertexY = new TH1F("fPrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
667b678a 251 fOutput->Add(fPrimaryVertexY);
252
59e0735e 253 fPrimaryVertexZ = new TH1F("fPrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
667b678a 254 fOutput->Add(fPrimaryVertexZ);
255
667b678a 256
257 // ====== Trigger Particle characteristics ====== //
258
259 // MC: Pt Trigger particle vs centrality:
59e0735e 260 if(fIsMC){
b6f9da99 261 fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;p_{T} (GeV/c);centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
348080d3 262 fOutput->Add(fTriggerMCPtCent);
b6f9da99 263
264 fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: p_{t} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};p_{t} (GeV/c);centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
265 fOutput->Add(fTriggerMCResPt);
266
267 fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};p_{t} (GeV/c); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
268 fOutput->Add(fTriggerMCResEta);
269
270 fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #phi resolution; #phi_{MC}-#phi_{Rec};p_{t} (GeV/c); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
271 fOutput->Add(fTriggerMCResPhi);
59e0735e 272 }
667b678a 273
274 // Pt Trigger particle vs centrality:
59e0735e 275 fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;p_{T} (GeV/c);centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
667b678a 276 fOutput->Add(fTriggerPtCent);
277
b6f9da99 278 fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",21,-0.5,20.5,100,0.,100);
348080d3 279 fOutput->Add(fNTrigPerEvt);
280
281 fTriggerWiSPDHit = new TH1F("fTriggerWiSPDHit","Number of Trigger Particles wi SPD Hits",3,0.,3.);
282 fOutput->Add(fTriggerWiSPDHit);
283
667b678a 284 // Phi vs pseudorapidity:
59e0735e 285 fTriggerEtaPhi = new TH2F("fTriggerEtaPhi","Trigger particle;#phi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
667b678a 286 fOutput->Add(fTriggerEtaPhi);
287
288 // Check if Trigger particle comes from a V0 daughter:
289 fCheckTriggerFromV0Daug =
348080d3 290 new TH1F("fCheckTriggerFromV0Daug","Trigger particle from a V0 daughter;;Counts",4,-0.5,3.5);
667b678a 291 fCheckTriggerFromV0Daug->GetXaxis()->SetTitle("Flag");
348080d3 292 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(1,"NOT V0 daug");
293 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(2,"V0 daug");
294 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(3,"V0 daug & V0 LP");
667b678a 295 fOutput->Add(fCheckTriggerFromV0Daug);
296
59e0735e 297 fTriggerComingFromDaug = new TH1F("fTriggerComingFromDaug","Trigger particle from a V0 daughter;p_{T} (GeV/c);Counts",240, 0, 12);
667b678a 298 fOutput->Add(fTriggerComingFromDaug);
299
59e0735e 300 fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;p_{T} (GeV/c);Counts",nbinPtLP,pMin,ptMaxLP);
667b678a 301 fOutput->Add(fTriggerIsV0);
302
348080d3 303 // ------------------- > Comaring properties of this trigger with the daughters
304 // K0s
b6f9da99 305 fCheckIDTrigPtK0s = new TH3F("fCheckIDTrigPtK0s","K^{0}_{S};#deltap/p_{tri};;p_{V0}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
306 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
307 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
308 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
309 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(4,"Neg Daug X");
310 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
311 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
6668159e 312 fOutput->Add(fCheckIDTrigPtK0s);
313
b6f9da99 314 fCheckIDTrigPhiK0s = new TH3F("fCheckIDTrigPhiK0s","K^{0}_{S};#delta#phi;;p_{V0}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
315 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
316 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
6668159e 317 fOutput->Add(fCheckIDTrigPhiK0s);
318
b6f9da99 319 fCheckIDTrigEtaK0s = new TH3F("fCheckIDTrigEtaK0s","K^{0}_{S};#delta#eta;;p_{V0}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
320 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
321 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 322 fOutput->Add(fCheckIDTrigEtaK0s);
323
324 // Lambda
b6f9da99 325 fCheckIDTrigPtLambda = new TH3F("fCheckIDTrigPtLambda","#Lambda",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
326 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
327 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
328 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
329 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
330 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
331 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
6668159e 332 fOutput->Add(fCheckIDTrigPtLambda);
333
b6f9da99 334 fCheckIDTrigPhiLambda = new TH3F("fCheckIDTrigPhiLambda","#Lambda",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
335 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
336 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
6668159e 337 fOutput->Add(fCheckIDTrigPhiLambda);
338
b6f9da99 339 fCheckIDTrigEtaLambda = new TH3F("fCheckIDTrigEtaLambda","#Lambda",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
340 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
341 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 342 fOutput->Add(fCheckIDTrigEtaLambda);
343
344 // AntiLambda
b6f9da99 345 fCheckIDTrigPtAntiLambda = new TH3F("fCheckIDTrigPtAntiLambda","#bar{#Lambda}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
346 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
347 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
348 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
349 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
350 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
351 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
348080d3 352 fOutput->Add(fCheckIDTrigPtAntiLambda);
353
b6f9da99 354 fCheckIDTrigPhiAntiLambda = new TH3F("fCheckIDTrigPhiAntiLambda","#bar{#Lambda}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
355 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
356 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 357 fOutput->Add(fCheckIDTrigPhiAntiLambda);
358
b6f9da99 359 fCheckIDTrigEtaAntiLambda = new TH3F("fCheckIDTrigEtaAntiLambda","#bar{#Lambda}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
360 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
361 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
348080d3 362 fOutput->Add(fCheckIDTrigEtaAntiLambda);
667b678a 363
364 // ====== MC-true and MC-Association information ====== //
365 if(fIsMC){
366
348080d3 367 fInjectedParticles = new TH1F("fInjectedParticles","Injected particles;;Counts",2,0.,2.);
368 fInjectedParticles->GetXaxis()->SetBinLabel(1,"Injected");
369 fInjectedParticles->GetXaxis()->SetBinLabel(2,"Natural");
370 fOutput->Add(fInjectedParticles);
667b678a 371
348080d3 372 // K0s MC-true:
373 fK0sMCPt = new TH1F("fK0sMCPt", "K^{0}_{S} MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
374 fOutput->Add(fK0sMCPt);
b6a9eae2 375
348080d3 376 fK0sMCPtRap = new TH3F("fK0sMCPtRap", "K^{0}_{S} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
377 fOutput->Add(fK0sMCPtRap);
b6f9da99 378
379 fK0sMCPtRap2 = new TH3F("fK0sMCPtRap2", "K^{0}_{S} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
380 fOutput->Add(fK0sMCPtRap2);
667b678a 381
b6f9da99 382 for(Int_t jj=0;jj<kNCent;jj++){
383 snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
384 fK0sMCPtPhiEta[jj] = new TH3F(hNameHist, "K^{0}_{S} MC;#phi (rad);#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
385 fOutput->Add(fK0sMCPtPhiEta[jj]);
386 }
667b678a 387
348080d3 388 // K0s MC-Association:
389 fK0sAssocPt =
390 new TH1F("fK0sAssocPt","K^{0}_{S} Assoc: L_{T} vs p_{T};p_{T} (GeV/c);Counts",nbins,pMin,pMax);
391 fOutput->Add(fK0sAssocPt);
59e0735e 392
348080d3 393 fK0sAssocPtArm =
394 new TH3F("fK0sAssocPtArm","K^{0}_{S} Assoc: p_{T} vs y vs centrality;p_{T} (GeV/c);y,centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
395 fOutput->Add(fK0sAssocPtArm);
59e0735e 396
348080d3 397 fK0sAssocPtRap = new TH3F("fK0sAssocPtRap","K^{0}_{S} Assoc;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
398 fOutput->Add(fK0sAssocPtRap);
399
b6f9da99 400 for(Int_t jj=0;jj<kNCent;jj++){
401 snprintf(hNameHist,100, "fK0sAssocPtPhiEta_Cent_%d",jj);
402 fK0sAssocPtPhiEta[jj] = new TH3F(hNameHist,"K^{0}_{S} Assoc;#phi;#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
403 fOutput->Add(fK0sAssocPtPhiEta[jj]);
404 }
405
406 fK0sMCResEta = new TH3F("fK0sMCResEta","K^{0}_{S} Assoc: #eta resolution; #eta_{MC}-#eta_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
407 fOutput->Add(fK0sMCResEta);
59e0735e 408
348080d3 409 fK0sMCResPhi = new TH3F("fK0sMCResPhi","K^{0}_{S} Assoc: #phi resolution; #phi_{MC}-#phi_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
410 fOutput->Add(fK0sMCResPhi);
59e0735e 411
348080d3 412 // Lambda MC-true:
413 fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
414 fOutput->Add(fLambdaMCPt);
59e0735e 415
348080d3 416 fLambdaMCPtRap = new TH3F("fLambdaMCPtRap","#Lambda MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
417 fOutput->Add(fLambdaMCPtRap);
b6f9da99 418
419 fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
420 fOutput->Add(fLambdaMCPtRap2);
348080d3 421
b6f9da99 422 for(Int_t jj=0;jj<kNCent;jj++){
423 snprintf(hNameHist,100, "fLambdaMCPtPhiEta_Cent_%d",jj);
424 fLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#Lambda MC;#phi (rad);#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
425 fOutput->Add(fLambdaMCPtPhiEta[jj]);
426 }
59e0735e 427
348080d3 428 // Lambda MC-Association:
429 fLambdaAssocPt =
430 new TH1F("fLambdaAssocPt","#Lambda Assoc: L_{T} vs p_{T};p_{T} (GeV/c);Counts",nbins,pMin,pMax);
431 fOutput->Add(fLambdaAssocPt);
59e0735e 432
348080d3 433 fLambdaAssocPtRap = new TH3F("fLambdaAssocPtRap", "#Lambda Assoc;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
434 fOutput->Add(fLambdaAssocPtRap);
59e0735e 435
b6f9da99 436 for(Int_t jj=0;jj<kNCent;jj++){
437 snprintf(hNameHist,100, "fLambdaAssocPtPhiEta_Cent_%d",jj);
438 fLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#Lambda Assoc;#phi (rad);#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
439 fOutput->Add(fLambdaAssocPtPhiEta[jj]);
440 }
441
442 fLambdaMCResEta = new TH3F("fLambdaMCResEta","#Lambda Assoc: #eta resolution;#eta_{MC}-#eta_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
443 fOutput->Add(fLambdaMCResEta);
59e0735e 444
348080d3 445 fLambdaMCResPhi = new TH3F("fLambdaMCResPhi","#Lambda Assoc: #phi resolution;#phi_{MC}-#phi_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
446 fOutput->Add(fLambdaMCResPhi);
447
448 // AntiLambda MC-true:
449 fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
450 fOutput->Add(fAntiLambdaMCPt);
59e0735e 451
348080d3 452 fAntiLambdaMCPtRap = new TH3F("fAntiLambdaMCPtRap","#bar{#Lambda} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
453 fOutput->Add(fAntiLambdaMCPtRap);
b6f9da99 454
455 fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
456 fOutput->Add(fAntiLambdaMCPtRap2);
348080d3 457
b6f9da99 458 for(Int_t jj=0;jj<kNCent;jj++){
459 snprintf(hNameHist,100, "fAntiLambdaMCPtPhiEta_Cent_%d",jj);
460 fAntiLambdaMCPtPhiEta[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC;#phi (rad);#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
461 fOutput->Add(fAntiLambdaMCPtPhiEta[jj]);
462 }
59e0735e 463
348080d3 464 // AntiLambda MC-Association:
465 fAntiLambdaAssocPt =
466 new TH1F("fAntiLambdaAssocPt","#bar{#Lambda} Assoc: L_{T} vs p_{T};p_{T} (GeV/c)",nbins,pMin,pMax);
467 fOutput->Add(fAntiLambdaAssocPt);
59e0735e 468
348080d3 469 fAntiLambdaAssocPtRap = new TH3F("fAntiLambdaAssocPtRap", "#bar{#Lambda} Assoc;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
470 fOutput->Add(fAntiLambdaAssocPtRap);
471
b6f9da99 472 for(Int_t jj=0;jj<kNCent;jj++){
473 snprintf(hNameHist,100, "fAntiLambdaAssocPtPhiEta_Cent_%d",jj);
474 fAntiLambdaAssocPtPhiEta[jj] = new TH3F(hNameHist, "#bar{#Lambda} Assoc;#phi (rad);#eta;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),30,-1.5,1.5,nbins,pMin,pMax);
475 fOutput->Add(fAntiLambdaAssocPtPhiEta[jj]);
476 }
477
478 fAntiLambdaMCResEta = new TH3F("fAntiLambdaMCResEta","#bar{#Lambda} Assoc: #eta resolution;#eta_{MC}-#eta_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
479 fOutput->Add(fAntiLambdaMCResEta);
59e0735e 480
348080d3 481 fAntiLambdaMCResPhi = new TH3F("fAntiLambdaMCResPhi","#bar{#Lambda} Assoc: #phi resolution;#phi_{MC}-#phi_{Rec};p_{T} (GeV/c); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
482 fOutput->Add(fAntiLambdaMCResPhi);
59e0735e 483
667b678a 484 }
485
486 // ====== Reconstruction information in AOD ====== //
487 fHistArmenterosPodolanski =
488 new TH3F("fHistArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",
59e0735e 489 100,-1.0,1.0,50,0,0.5,7,-0.5,6.5);
490 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(1,"K^{0}_{S} Inv. Mass Peak");
491 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bckg");
492 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(3,"#Lambda Inv. Mass Peak");
493 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(4,"#Lambda Bckg");
494 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} Inv. Mass Peak");
495 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bckg");
667b678a 496 fOutput->Add(fHistArmenterosPodolanski);
497
498 fHistArmPodBckg =
499 new TH3F("fHistArmPodBckg","Background: Armenteros-Podolanski phase space;#alpha;p_{t} arm",
500 100,-1.0,1.0,50,0,0.5,4,-0.5,3.5);
59e0735e 501 fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S}: Trig events");
502 fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"#Lambda: Trig events");
503 fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#bar{#Lambda}: Trig events");
667b678a 504 fOutput->Add(fHistArmPodBckg);
505
506 // ****** K0s ******
507 fK0sMass =
508 new TH3F("fK0sMass", "K^{0}_{s}: mass vs p_{T}",nbins/2,0.448,0.548,nbins,pMin,pMax,6,-0.5,5.5);
509 fK0sMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
510 fK0sMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
511 fK0sMass->GetZaxis()->SetBinLabel(1,"All events");
512 fK0sMass->GetZaxis()->SetBinLabel(2,"Central events");
513 fK0sMass->GetZaxis()->SetBinLabel(3,"Arm-Pod Cut");
514 fK0sMass->GetZaxis()->SetBinLabel(4,"Triggered events");
515 fK0sMass->GetZaxis()->SetBinLabel(5,"Triggered central events");
516 fOutput->Add(fK0sMass);
517
667b678a 518 fK0sPtvsEta =
519 new TH3F("fK0sPtvsEta","K^{0}_{s}: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
520 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
521 fK0sPtvsEta->GetYaxis()->SetTitle("#eta");
522 fK0sPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
523 fK0sPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
524 fK0sPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
525 fK0sPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
526 fOutput->Add(fK0sPtvsEta);
527
528 fK0sPtvsRap =
529 new TH3F("fK0sPtvsRap","K^{0}_{s}: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
530 fK0sPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
531 fK0sPtvsRap->GetYaxis()->SetTitle("y");
532 fK0sPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
533 fK0sPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
534 fK0sPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
535 fK0sPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
536 fOutput->Add(fK0sPtvsRap);
537
538 fK0sEtaPhi =
348080d3 539 new TH2F("fK0sEtaPhi","K^{0}_{s}: #phi vs #eta;#phi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
667b678a 540 fOutput->Add(fK0sEtaPhi);
541
667b678a 542 fK0sMassPtPhi =
348080d3 543 new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs pt vs #phi;Mass (GeV/c^2);p_{T} (GeV/c);#phi (rad)",
667b678a 544 nbins/2,0.448,0.548,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
667b678a 545 fOutput->Add(fK0sMassPtPhi);
546
547
548 // Correlations:
667b678a 549 fK0sDCADaugToPrimVtx
348080d3 550 = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);p_{T,l} (GeV/c)",
667b678a 551 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
667b678a 552 fOutput->Add(fK0sDCADaugToPrimVtx);
553
348080d3 554 // Spatial Resoltuion between trigger- and asosciated- particles
555 fK0sSpatialRes = new TH3F("fK0sSpatialRes","K^{0}_{S}: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
556 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
557 fOutput->Add(fK0sSpatialRes);
667b678a 558
348080d3 559 for(Int_t jj=0;jj<kNCent;jj++){
560 for(Int_t k=0;k<kN1;k++){
561
562 // Monte-Carlo level:
563 if(fIsMC){
fbaec09e 564 snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 565 fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
566 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
567 nbinsdEta,-1.5,1.5,
568 nbinsVtx,-10.,10.);
569 fK0sdPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
570 fK0sdPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
571 fK0sdPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
572 fOutput->Add(fK0sdPhidEtaMC[jj*kN1+k]);
573 }
574
575 // Reconstruction level:
fbaec09e 576 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 577 fK0sdPhidEtaPtL[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#phi vs #Delta#eta vs p_{T,l}",
667b678a 578 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
348080d3 579 nbinsdEta,-1.5,1.5,
667b678a 580 nbinsVtx,-10.,10.);
348080d3 581 fK0sdPhidEtaPtL[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
582 fK0sdPhidEtaPtL[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
583 fK0sdPhidEtaPtL[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
584 fOutput->Add(fK0sdPhidEtaPtL[jj*kN1+k]);
585
fbaec09e 586 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 587 fK0sdPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#phi vs #Delta#eta vs p_{T,l}",
588 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
589 nbinsdEta,-1.5,1.5,
590 nbinsVtx,-10.,10.);
591 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
592 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
593 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
594 fOutput->Add(fK0sdPhidEtaPtLBckg[jj*kN1+k]);
595
596 }
667b678a 597 }
348080d3 598
667b678a 599 // Correlations (side-band):
600 fK0sBckgDecLength
601 = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. p_{T,l}",
602 100,0.,15.,nbinPtLP,pMin,ptMaxLP);
603 fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
604 fK0sBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
605 fOutput->Add(fK0sBckgDecLength);
606
607 fK0sBckgDCADaugToPrimVtx
608 = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l}",
609 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
610 fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
611 fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
612 fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
613 fOutput->Add(fK0sBckgDCADaugToPrimVtx);
614
615 fK0sBckgEtaPhi =
616 new TH2F("fK0sBckgEtaPhi","K^{0}_{s} Bckg: #phi vs #eta",
617 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
618 fK0sBckgEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
619 fK0sBckgEtaPhi->GetYaxis()->SetTitle("#eta");
620 fOutput->Add(fK0sBckgEtaPhi);
621
622 fK0sBckgPhiRadio
623 = new TH2F("fK0sBckgPhiRadio","K^{0}_{S} Bckg: #phi vs l_{T}",
624 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
625 fK0sBckgPhiRadio->GetXaxis()->SetTitle("#phi (rad)");
626 fK0sBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
627 fOutput->Add(fK0sBckgPhiRadio);
628
629 fK0sBckgDCANegDaugToPrimVtx
630 = new TH2F("fK0sBckgDCANegDaugToPrimVtx","K^{0}_{S} Bckg: dca NegDaughter",
b6f9da99 631 7,-0.5,6.5,90,0.,3.3);
667b678a 632 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
633 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
634 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 635 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
636 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
637 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
638 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
639 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 640 fK0sBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
641 fOutput->Add(fK0sBckgDCANegDaugToPrimVtx);
642
643 fK0sBckgDCAPosDaugToPrimVtx
644 = new TH2F("fK0sBckgDCAPosDaugToPrimVtx","K^{0}_{S} Bckg: dca PosDaughter",
b6f9da99 645 7,-0.5,6.5,90,0.,3.3);
667b678a 646 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
647 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
648 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 649 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
650 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
651 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
652 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
653 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 654 fK0sBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
655 fOutput->Add(fK0sBckgDCAPosDaugToPrimVtx);
656
348080d3 657 fV0MassCascade
658 = new TH2F("fV0MassCascade","Cascade Reconstruction wi V0's candiates;Invariant Mass (GeV/c^{2});Cascade type",650, 1.2, 2.5,12,0.5,12.5);
659 fOutput->Add(fV0MassCascade);
667b678a 660
661
662 // ****** Lambda ******
663 fLambdaMass =
664 new TH3F("fLambdaMass","Mass vs p_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,6,-0.5,5.5);
665 fLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
666 fLambdaMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
667 fLambdaMass->GetZaxis()->SetBinLabel(1,"All events");
668 fLambdaMass->GetZaxis()->SetBinLabel(2,"Central events");
669 fLambdaMass->GetZaxis()->SetBinLabel(3,"Arm-Pod cut");
670 fLambdaMass->GetZaxis()->SetBinLabel(4,"Triggered events");
671 fLambdaMass->GetZaxis()->SetBinLabel(5,"Triggered central events");
672 fOutput->Add(fLambdaMass);
673
667b678a 674 fLambdaPtvsEta =
675 new TH3F("fLambdaPtvsEta","\\Lambda: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
676 fLambdaPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
677 fLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
678 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
679 fLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
680 fLambdaPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
681 fLambdaPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
682 fLambdaPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
683 fLambdaPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
684 fOutput->Add(fLambdaPtvsEta);
685
686 fLambdaPtvsRap =
687 new TH3F("fLambdaPtvsRap","\\Lambda: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
688 fLambdaPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
689 fLambdaPtvsRap->GetYaxis()->SetTitle("y");
690 fLambdaPtvsRap->GetYaxis()->SetTitle("#eta");
691 fLambdaPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
692 fLambdaPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
693 fLambdaPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
694 fLambdaPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
695 fOutput->Add(fLambdaPtvsRap);
696
697 fLambdaEtaPhi =
698 new TH2F("fLambdaEtaPhi","#phi vs #eta for #Lambda",
699 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
700 fLambdaEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
701 fLambdaEtaPhi->GetYaxis()->SetTitle("#eta");
702 fOutput->Add(fLambdaEtaPhi);
703
704
59e0735e 705 fLambdaMassPtPhi =
667b678a 706 new TH3F("fLambdaMassPtPhi","#Lambda: mass vs pt vs #phi",
59e0735e 707 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
667b678a 708 fLambdaMassPtPhi->GetXaxis()->SetTitle("Mass (GeV/c^2)");
709 fLambdaMassPtPhi->GetYaxis()->SetTitle("p_{T} (GeV/c)");
710 fLambdaMassPtPhi->GetZaxis()->SetTitle("#phi (rad)");
711 fOutput->Add(fLambdaMassPtPhi);
712
667b678a 713 // Correlations:
667b678a 714 fLambdaDCADaugToPrimVtx
715 = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
716 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
717 fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
718 fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
719 fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
720 fOutput->Add(fLambdaDCADaugToPrimVtx);
721
348080d3 722 // Spatial Resoltuion between trigger- and asosciated- particles
723 fLambdaSpatialRes = new TH3F("fLambdaSpatialRes","#Lambda: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
724 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
725 fOutput->Add(fLambdaSpatialRes);
726
727
728 for(Int_t jj=0;jj<kNCent;jj++){
729 for(Int_t k=0;k<kN1;k++){
730
731 // Monte-Carlo level:
732 if(fIsMC){
fbaec09e 733 snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 734 fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
735 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
736 nbinsdEta,-1.5,1.5,
737 nbinsVtx,-10.,10.);
738 fLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
739 fLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
740 fLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
741 fOutput->Add(fLambdadPhidEtaMC[jj*kN1+k]);
742 }
667b678a 743
348080d3 744 // Reconstruction level:
fbaec09e 745 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 746 fLambdadPhidEtaPtL[jj*kN1+k] = new TH3F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta vs p_{T,l}",
667b678a 747 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
348080d3 748 nbinsdEta,-1.5,1.5,
667b678a 749 nbinsVtx,-10.,10.);
348080d3 750 fLambdadPhidEtaPtL[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
751 fLambdadPhidEtaPtL[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
752 fLambdadPhidEtaPtL[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
753 fOutput->Add(fLambdadPhidEtaPtL[jj*kN1+k]);
754
fbaec09e 755 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 756 fLambdadPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta vs p_{T,l}",
757 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
758 nbinsdEta,-1.5,1.5,
759 nbinsVtx,-10.,10.);
760 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
761 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
762 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
763 fOutput->Add(fLambdadPhidEtaPtLBckg[jj*kN1+k]);
764 }
667b678a 765 }
667b678a 766
767 // Correlations (side-band):
768 fLambdaBckgDecLength
769 = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. p_{T,l}",
770 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
771 fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
772 fLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
773 fOutput->Add(fLambdaBckgDecLength);
774
775 fLambdaBckgDCADaugToPrimVtx
776 = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
777 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
778 fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
779 fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
780 fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
781 fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
782
783 fLambdaBckgEtaPhi =
784 new TH2F("fLambdaBckgEtaPhi","#Lambda Bckg: #phi vs #eta",
785 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
786 fLambdaBckgEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
787 fLambdaBckgEtaPhi->GetYaxis()->SetTitle("#eta");
788 fOutput->Add(fLambdaBckgEtaPhi);
789
790 fLambdaBckgPhiRadio
791 = new TH2F("fLambdaBckgPhiRadio","#Lambda Bckg: #phi vs l_{T}",
792 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
793 fLambdaBckgPhiRadio->GetXaxis()->SetTitle("#phi (rad)");
794 fLambdaBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
795 fOutput->Add(fLambdaBckgPhiRadio);
796
797
798 fLambdaBckgDCANegDaugToPrimVtx
799 = new TH2F("fLambdaBckgDCANegDaugToPrimVtx","#Lambda Bckg: dca NegDaughter",
b6f9da99 800 7,-0.5,6.5,90,0.,3.3);
667b678a 801 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
802 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
803 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 804 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
805 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
806 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
807 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
808 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 809 fLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
810 fOutput->Add(fLambdaBckgDCANegDaugToPrimVtx);
811
812
813 fLambdaBckgDCAPosDaugToPrimVtx
814 = new TH2F("fLambdaBckgDCAPosDaugToPrimVtx","#Lambda Bckg: dca PosDaughter",
b6f9da99 815 7,-0.5,6.5,90,0.,3.3);
667b678a 816 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
817 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
818 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 819 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
820 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
821 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
822 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
823 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
667b678a 824 fLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
825 fOutput->Add(fLambdaBckgDCAPosDaugToPrimVtx);
826
827
59e0735e 828 // ****** AntiLambda ******
829 fAntiLambdaMass =
830 new TH3F("fAntiLambdaMass","Mass vs p_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,6,-0.5,5.5);
831 fAntiLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
832 fAntiLambdaMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
833 fAntiLambdaMass->GetZaxis()->SetBinLabel(1,"All events");
834 fAntiLambdaMass->GetZaxis()->SetBinLabel(2,"Central events");
835 fAntiLambdaMass->GetZaxis()->SetBinLabel(3,"Arm-Pod cut");
836 fAntiLambdaMass->GetZaxis()->SetBinLabel(4,"Triggered events");
837 fAntiLambdaMass->GetZaxis()->SetBinLabel(5,"Triggered central events");
838 fOutput->Add(fAntiLambdaMass);
839
59e0735e 840 fAntiLambdaPtvsEta =
841 new TH3F("fAntiLambdaPtvsEta","#bar{#Lambda}: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
842 fAntiLambdaPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
843 fAntiLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
844 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
845 fAntiLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
846 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
847 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
848 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
849 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
850 fOutput->Add(fAntiLambdaPtvsEta);
851
852 fAntiLambdaPtvsRap =
853 new TH3F("fAntiLambdaPtvsRap","#bar{#Lambda}: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
854 fAntiLambdaPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
855 fAntiLambdaPtvsRap->GetYaxis()->SetTitle("y");
856 fAntiLambdaPtvsRap->GetYaxis()->SetTitle("#eta");
857 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
858 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
859 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
860 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
861 fOutput->Add(fAntiLambdaPtvsRap);
862
863 fAntiLambdaEtaPhi =
864 new TH2F("fAntiLambdaEtaPhi","#phi vs #eta for #bar{#Lambda}",
865 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
866 fAntiLambdaEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
867 fAntiLambdaEtaPhi->GetYaxis()->SetTitle("#eta");
868 fOutput->Add(fAntiLambdaEtaPhi);
869
870
348080d3 871 fAntiLambdaMassPtPhi =
59e0735e 872 new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs pt vs #phi",
873 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
874 fAntiLambdaMassPtPhi->GetXaxis()->SetTitle("Mass (GeV/c^2)");
875 fAntiLambdaMassPtPhi->GetYaxis()->SetTitle("p_{T} (GeV/c)");
876 fAntiLambdaMassPtPhi->GetZaxis()->SetTitle("#phi (rad)");
877 fOutput->Add(fAntiLambdaMassPtPhi);
878
879
880 // Correlations:
59e0735e 881 fAntiLambdaDCADaugToPrimVtx
882 = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
883 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
884 fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
885 fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
886 fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
887 fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
888
348080d3 889 // Spatial Resoltuion between trigger- and asosciated- particles
890 fAntiLambdaSpatialRes = new TH3F("fAntiLambdaSpatialRes","#bar{#Lambda}: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
891 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
892 fOutput->Add(fAntiLambdaSpatialRes);
893
894 for(Int_t jj=0;jj<kNCent;jj++){
895 for(Int_t k=0;k<kN1;k++){
896
897 // Monte-Carlo level:
898 if(fIsMC){
fbaec09e 899 snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 900 fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
901 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
902 nbinsdEta,-1.5,1.5,
903 nbinsVtx,-10.,10.);
904 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
905 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
906 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
907 fOutput->Add(fAntiLambdadPhidEtaMC[jj*kN1+k]);
908 }
59e0735e 909
348080d3 910 // Reconstruction level:
fbaec09e 911 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 912 fAntiLambdadPhidEtaPtL[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta vs p_{T,l}",
913 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
914 nbinsdEta,-1.5,1.5,
915 nbinsVtx,-10.,10.);
916 fAntiLambdadPhidEtaPtL[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
917 fAntiLambdadPhidEtaPtL[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
918 fAntiLambdadPhidEtaPtL[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
919 fOutput->Add(fAntiLambdadPhidEtaPtL[jj*kN1+k]);
920
fbaec09e 921 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
348080d3 922 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta vs p_{T,l}",
923 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
924 nbinsdEta,-1.5,1.5,
925 nbinsVtx,-10.,10.);
926 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
927 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
928 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
929 fOutput->Add(fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]);
59e0735e 930
348080d3 931 }
59e0735e 932 }
59e0735e 933
934 // Correlations (side-band):
935 fAntiLambdaBckgDecLength
936 = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. p_{T,l}",
937 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
938 fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
939 fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
940 fOutput->Add(fAntiLambdaBckgDecLength);
941
942 fAntiLambdaBckgDCADaugToPrimVtx
943 = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
944 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
945 fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
946 fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
947 fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
948 fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
949
950 fAntiLambdaBckgEtaPhi =
348080d3 951 new TH2F("fAntiLambdaBckgEtaPhi","#bar{#Lambda} Bckg: #phi vs #eta;#phi (rad);l_{T} (cm)",
59e0735e 952 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
59e0735e 953 fOutput->Add(fAntiLambdaBckgEtaPhi);
954
955 fAntiLambdaBckgPhiRadio
348080d3 956 = new TH2F("fAntiLambdaBckgPhiRadio","#bar{#Lambda} Bckg: #phi vs l_{T};#phi (rad);l_{T} (cm)",
59e0735e 957 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
59e0735e 958 fOutput->Add(fAntiLambdaBckgPhiRadio);
959
960
961 fAntiLambdaBckgDCANegDaugToPrimVtx
962 = new TH2F("fAntiLambdaBckgDCANegDaugToPrimVtx","#bar{#Lambda} Bckg: dca NegDaughter",
b6f9da99 963 7,-0.5,6.5,90,0.,3.3);
59e0735e 964 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
965 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
966 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 967 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
968 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
969 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
970 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
971 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
59e0735e 972 fAntiLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
973 fOutput->Add(fAntiLambdaBckgDCANegDaugToPrimVtx);
974
975
976 fAntiLambdaBckgDCAPosDaugToPrimVtx
977 = new TH2F("fAntiLambdaBckgDCAPosDaugToPrimVtx","#bar{#Lambda} Bckg: dca PosDaughter",
b6f9da99 978 7,-0.5,6.5,90,0.,3.3);
59e0735e 979 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
980 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
981 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
b6f9da99 982 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
983 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
984 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
985 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
986 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
59e0735e 987 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
988 fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
989
59e0735e 990
348080d3 991 // Gamma conversion
992 for(Int_t jj=0;jj<kNCent;jj++){
993 snprintf(hNameHist,100, "fGammaConversiondPhidEta_Cent_%.0f_%.0f",kBinCent[jj],kBinCent[jj+1]);
994 fGammaConversiondPhidEta[jj] = new TH3F(hNameHist,"Gamma Conversion: #Delta#phi vs #Delta#eta;#Delta#phi (rad);#Delta#eta;Vertex Z (cm)",
995 2*nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
996 nbinsdEta,-1.5,1.5,
997 nbinsVtx,-10.,10.);
998 fOutput->Add(fGammaConversiondPhidEta[jj]);
999 }
1000
1001 // ============================================================= //
1002
1003 // K0s in ME:
1004 for(Int_t ll=0;ll<kNCent;ll++){
1005 for(Int_t k=0;k<kN1;k++){
1006 for(Int_t j=0;j<kNVtxZ;j++){
1007
fbaec09e 1008 snprintf(hNameHist,100,"fK0sdPhidEtaME_%.2f_%.2f_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
348080d3 1009 fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"K^{0}_{S}: #Delta#phi vs #Delta#eta in ME;#Delta#phi (rad);#Delta#eta",
1010 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1011 nbinsdEta,-1.5,1.5);
1012 fOutputME->Add(fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1013 }
1014 }
1015 }
1016
1017 // Lambda in ME:
1018 for(Int_t ll=0;ll<kNCent;ll++){
1019 for(Int_t k=0;k<kN1;k++){
1020 for(Int_t j=0;j<kNVtxZ;j++){
1021
fbaec09e 1022 snprintf(hNameHist,100,"fLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
348080d3 1023 fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta in ME;#Delta#phi (rad);#Delta#eta",
1024 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1025 nbinsdEta,-1.5,1.5);
1026 fOutputME->Add(fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1027 }
1028 }
1029 }
1030
1031 // AntiLambda in ME:
1032 for(Int_t ll=0;ll<kNCent;ll++){
1033 for(Int_t k=0;k<kN1;k++){
1034 for(Int_t j=0;j<kNVtxZ;j++){
1035
fbaec09e 1036 snprintf(hNameHist,100,"fAntiLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
348080d3 1037 fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta in ME;#Delta#phi (rad);#Delta#eta",
1038 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1039 nbinsdEta,-1.5,1.5);
1040 fOutputME->Add(fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1041 }
1042 }
1043 }
1044
1045
6668159e 1046 // ============================================================= //
1047
1048 if(fDoQA){
1049
6668159e 1050 // Quality Assurance K0s:
1051 // Track PID :
1052 // --- signal ---
1053 fK0sPIDPosDaug =
348080d3 1054 new TH3F("fK0sPIDPosDaug","K^{0}_{S}: dE/dx Pos. Daug.;TPC Momentum (GeV/c);a.u.;p_{T} V0",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
6668159e 1055 fOutputQA->Add(fK0sPIDPosDaug);
1056
1057 fK0sPIDNegDaug =
348080d3 1058 new TH3F("fK0sPIDNegDaug","K^{0}_{S}: dE/dx Neg. Daug.;TPC Momentum (GeV/c);a.u.;p_{T} V0",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
6668159e 1059 fOutputQA->Add(fK0sPIDNegDaug);
1060
1061 // --- background ---
1062 fK0sBckgPIDPosDaug =
348080d3 1063 new TH3F("fK0sBckgPIDPosDaug","K^{0}_{S} Bckg: dE/dx Pos. Daug.;TPC Momentum (GeV/c);a.u.;p_{T} V0",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
6668159e 1064 fOutputQA->Add(fK0sBckgPIDPosDaug);
1065
1066 fK0sBckgPIDNegDaug =
348080d3 1067 new TH3F("fK0sBckgPIDNegDaug","K^{0}_{S} Bckg: dE/dx Neg. Daug.;TPC Momentum (GeV/c);a.u.;p_{T} V0",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
6668159e 1068 fOutputQA->Add(fK0sBckgPIDNegDaug);
1069
1070 // Phi Eta
1071 // --- signal ---
1072 fK0sPhiEtaPosDaug =
348080d3 1073 new TH3F("fK0sPhiEtaPosDaug","K^{0}_{S}: #phi vs #eta Pos. Daug.;#phi;#eta;p_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1074 fOutputQA->Add(fK0sPhiEtaPosDaug);
1075
1076 fK0sPhiEtaNegDaug =
348080d3 1077 new TH3F("fK0sPhiEtaNegDaug","K^{0}_{S}: #phi vs #eta Neg. Daug.;#phi;#eta;p_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1078 fOutputQA->Add(fK0sPhiEtaNegDaug);
1079
1080 // --- background ---
1081 fK0sBckgPhiEtaPosDaug =
348080d3 1082 new TH3F("fK0sBckgPhiEtaPosDaug","K^{0}_{S} Bckg: #phi vs #eta Pos. Daug.;#phi;#eta;p_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1083 fOutputQA->Add(fK0sBckgPhiEtaPosDaug);
1084
1085 fK0sBckgPhiEtaNegDaug =
348080d3 1086 new TH3F("fK0sBckgPhiEtaNegDaug","K^{0}_{S} Bckg: #phi vs #eta Neg. Daug.;#phi;#eta;p_{T} V0",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
6668159e 1087 fOutputQA->Add(fK0sBckgPhiEtaNegDaug);
1088
59e0735e 1089 // Distance of closest approach:
6668159e 1090 // --- signal ---
1091 fK0sDCAPosDaug =
348080d3 1092 new TH2F("fK0sDCAPosDaug","K^{0}_{S}: dca Pos;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1093 fOutputQA->Add(fK0sDCAPosDaug);
1094
1095 fK0sDCANegDaug =
348080d3 1096 new TH2F("fK0sDCANegDaug","K^{0}_{S}: dca Neg;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1097 fOutputQA->Add(fK0sDCANegDaug);
1098
1099 // --- background ---
1100 fK0sBckgDCAPosDaug =
348080d3 1101 new TH2F("fK0sBckgDCAPosDaug","K^{0}_{S} Bckg: dca Pos;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1102 fOutputQA->Add(fK0sBckgDCAPosDaug);
1103
1104 fK0sBckgDCANegDaug =
348080d3 1105 new TH2F("fK0sBckgDCANegDaug","K^{0}_{S} Bckg: dca Neg;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1106 fOutputQA->Add(fK0sBckgDCANegDaug);
1107
59e0735e 1108 // Difference in momentum:
6668159e 1109 // --- signal ---
1110 fK0sDifPtPosDaug =
348080d3 1111 new TH2F("fK0sDifPtPosDaug","K^{0}_{S}: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1112 fOutputQA->Add(fK0sDifPtPosDaug);
1113
1114 fK0sDifPtNegDaug =
348080d3 1115 new TH2F("fK0sDifPtNegDaug","K^{0}_{S}: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1116 fOutputQA->Add(fK0sDifPtNegDaug);
1117
1118 // --- background ---
1119 fK0sBckgDifPtPosDaug =
348080d3 1120 new TH2F("fK0sBckgDifPtPosDaug","K^{0}_{S} Bckg: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1121 fOutputQA->Add(fK0sBckgDifPtPosDaug);
1122
1123 fK0sBckgDifPtNegDaug =
348080d3 1124 new TH2F("fK0sBckgDifPtNegDaug","K^{0}_{S} Bckg: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
6668159e 1125 fOutputQA->Add(fK0sBckgDifPtNegDaug);
1126
1127
59e0735e 1128 // Decay vertex reconstruction:
6668159e 1129 // --- signal ---
1130 fK0sDecayPos =
1131 new TH3F("fK0sDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1132 fK0sDecayPos->GetXaxis()->SetTitle("Pos. X");
1133 fK0sDecayPos->GetYaxis()->SetTitle("Pos. Y");
1134 fK0sDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1135 fOutputQA->Add(fK0sDecayPos);
1136
1137 fK0sDecayVertex =
348080d3 1138 new TH2F("fK0sDecayVertex","K^{0}_{S}: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1139 fK0sDecayVertex->GetXaxis()->SetTitle("l_{T}");
1140 fK0sDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1141 fOutputQA->Add(fK0sDecayVertex);
1142
1143 fK0sDecayVertexZoom =
348080d3 1144 new TH2F("fK0sDecayVertexZoom","K^{0}_{S}: decay length",20,0.,1.,nbins,pMin,pMax);
6668159e 1145 fK0sDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1146 fK0sDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1147 fOutputQA->Add(fK0sDecayVertexZoom);
1148
1149 // --- background ---
1150 fK0sBckgDecayPos =
1151 new TH3F("fK0sBckgDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1152 fK0sBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1153 fK0sBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1154 fK0sBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1155 fOutputQA->Add(fK0sBckgDecayPos);
1156
1157 fK0sBckgDecayVertex =
1158 new TH2F("fK0sBckgDecayVertex","K^{0}_{S} Bckg: decay vertex",100,0.,100.,nbins,pMin,pMax);
1159 fK0sBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1160 fK0sBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1161 fOutputQA->Add(fK0sBckgDecayVertex);
1162
1163 fK0sBckgDecayVertexZoom =
348080d3 1164 new TH2F("fK0sBckgDecayVertexZoom","K^{0}_{S} Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
6668159e 1165 fK0sBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1166 fK0sBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1167 fOutputQA->Add(fK0sBckgDecayVertexZoom);
1168
59e0735e 1169 // Cosine of the Pointing Angle:
6668159e 1170 // --- signal ---
1171 fK0sCPA =
b6f9da99 1172 new TH2F("fK0sCPA","K^{0}_{S}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1173 fK0sCPA->GetXaxis()->SetTitle("cpa");
1174 fK0sCPA->GetYaxis()->SetTitle("p_{T} V0");
1175 fOutputQA->Add(fK0sCPA);
1176 // --- background ---
1177 fK0sBckgCPA =
b6f9da99 1178 new TH2F("fK0sBckgCPA","K^{0}_{S} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1179 fK0sBckgCPA->GetXaxis()->SetTitle("cpa");
1180 fK0sBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1181 fOutputQA->Add(fK0sBckgCPA);
1182
59e0735e 1183 // DCA between daughters:
6668159e 1184 // --- signal ---
1185 fK0sDCAV0Daug =
1186 new TH2F("fK0sDCAV0Daug","K^{0}_{S}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1187 fK0sDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1188 fK0sDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1189 fOutputQA->Add(fK0sDCAV0Daug);
1190 // --- background ---
1191 fK0sBckgDCAV0Daug =
1192 new TH2F("fK0sBckgDCAV0Daug","K^{0}_{S} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1193 fK0sBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1194 fK0sBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1195 fOutputQA->Add(fK0sBckgDCAV0Daug);
1196
59e0735e 1197 // Number of TPC clusters:
1198 // --- signal ---
1199 fK0sNClustersTPC =
b6f9da99 1200 new TH3F("fK0sNClustersTPC","K^{0}_{S};#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1201 fK0sNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1202 fK0sNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1203 fOutputQA->Add(fK0sNClustersTPC);
1204 // --- background ---
1205 fK0sBckgNClustersTPC =
b6f9da99 1206 new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1207 fK0sBckgNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1208 fK0sBckgNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1209 fOutputQA->Add(fK0sBckgNClustersTPC);
1210
1211 // Number of ITS clusters:
1212 // --- signal ---
1213 fK0sNClustersITSPos =
1214 new TH3F("fK0sNClustersITSPos","K^{0}_{S}: Pos. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1215 fOutputQA->Add(fK0sNClustersITSPos);
1216
1217 fK0sNClustersITSNeg =
1218 new TH3F("fK0sNClustersITSNeg","K^{0}_{S}: Neg. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1219 fOutputQA->Add(fK0sNClustersITSNeg);
1220 // --- background ---
1221 fK0sBckgNClustersITSPos =
1222 new TH3F("fK0sBckgNClustersITSPos","K^{0}_{S} Bckg: Pos. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1223 fOutputQA->Add(fK0sBckgNClustersITSPos);
1224
1225 fK0sBckgNClustersITSNeg =
1226 new TH3F("fK0sBckgNClustersITSNeg","K^{0}_{S} Bckg: Neg. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1227 fOutputQA->Add(fK0sBckgNClustersITSNeg);
1228
1229
6668159e 1230 // Quality Assurance Lambda:
1231 // Track PID :
1232 // --- signal ---
1233 fLambdaPIDPosDaug =
1234 new TH3F("fLambdaPIDPosDaug","#Lambda: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1235 fLambdaPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1236 fLambdaPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1237 fLambdaPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1238 fOutputQA->Add(fLambdaPIDPosDaug);
1239
1240 fLambdaPIDNegDaug =
1241 new TH3F("fLambdaPIDNegDaug","#Lambda: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1242 fLambdaPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1243 fLambdaPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1244 fLambdaPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1245 fOutputQA->Add(fLambdaPIDNegDaug);
1246
1247 // --- background ---
1248 fLambdaBckgPIDPosDaug =
1249 new TH3F("fLambdaBckgPIDPosDaug","#Lambda: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1250 fLambdaBckgPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1251 fLambdaBckgPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1252 fLambdaBckgPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1253 fOutputQA->Add(fLambdaBckgPIDPosDaug);
1254
1255 fLambdaBckgPIDNegDaug =
1256 new TH3F("fLambdaBckgPIDNegDaug","#Lambda: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1257 fLambdaBckgPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1258 fLambdaBckgPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1259 fLambdaBckgPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1260 fOutputQA->Add(fLambdaBckgPIDNegDaug);
1261
1262 // Phi Eta
1263 // --- signal ---
1264 fLambdaPhiEtaPosDaug =
1265 new TH3F("fLambdaPhiEtaPosDaug","#Lambda: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1266 fLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1267 fLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1268 fLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1269 fOutputQA->Add(fLambdaPhiEtaPosDaug);
1270
1271 fLambdaPhiEtaNegDaug =
1272 new TH3F("fLambdaPhiEtaNegDaug","#Lambda: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1273 fLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1274 fLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1275 fLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1276 fOutputQA->Add(fLambdaPhiEtaNegDaug);
1277
1278 // --- background ---
1279 fLambdaBckgPhiEtaPosDaug =
1280 new TH3F("fLambdaBckgPhiEtaPosDaug","#Lambda: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1281 fLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1282 fLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1283 fLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1284 fOutputQA->Add(fLambdaBckgPhiEtaPosDaug);
1285
1286 fLambdaBckgPhiEtaNegDaug =
1287 new TH3F("fLambdaBckgPhiEtaNegDaug","#Lambda: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1288 fLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1289 fLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1290 fLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1291 fOutputQA->Add(fLambdaBckgPhiEtaNegDaug);
1292
1293 // Distance of closest approach
1294 // --- signal ---
1295 fLambdaDCAPosDaug =
1296 new TH2F("fLambdaDCAPosDaug","#Lambda: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1297 fLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1298 fLambdaDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1299 fOutputQA->Add(fLambdaDCAPosDaug);
1300
1301 fLambdaDCANegDaug =
1302 new TH2F("fLambdaDCANegDaug","#Lambda: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1303 fLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1304 fLambdaDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1305 fOutputQA->Add(fLambdaDCANegDaug);
1306
1307 // --- background ---
1308 fLambdaBckgDCAPosDaug =
1309 new TH2F("fLambdaBckgDCAPosDaug","#Lambda Bckg: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1310 fLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1311 fLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1312 fOutputQA->Add(fLambdaBckgDCAPosDaug);
1313
1314 fLambdaBckgDCANegDaug =
1315 new TH2F("fLambdaBckgDCANegDaug","#Lambda Bckg: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1316 fLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1317 fLambdaBckgDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1318 fOutputQA->Add(fLambdaBckgDCANegDaug);
1319
1320 // Difference in momentum
1321 // --- signal ---
1322 fLambdaDifPtPosDaug =
1323 new TH2F("fLambdaDifPtPosDaug","#Lambda: dif. p_{T} Pos",90,0.,3.3,nbins,pMin,pMax);
1324 fLambdaDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1325 fLambdaDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1326 fOutputQA->Add(fLambdaDifPtPosDaug);
1327
1328 fLambdaDifPtNegDaug =
1329 new TH2F("fLambdaDifPtNegDaug","#Lambda: dif. p_{T} Neg",90,0.,3.3,nbins,pMin,pMax);
1330 fLambdaDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1331 fLambdaDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1332 fOutputQA->Add(fLambdaDifPtNegDaug);
1333
1334 // --- background ---
1335 fLambdaBckgDifPtPosDaug =
1336 new TH2F("fLambdaBckgDifPtPosDaug","#Lambda Bckg: dif. p_{T} Pos.",90,0.,3.3,nbins,pMin,pMax);
1337 fLambdaBckgDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1338 fLambdaBckgDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1339 fOutputQA->Add(fLambdaBckgDifPtPosDaug);
1340
1341 fLambdaBckgDifPtNegDaug =
1342 new TH2F("fLambdaBckgDifPtNegDaug","#Lambda Bckg: dif. p_{t} Neg",90,0.,3.3,nbins,pMin,pMax);
1343 fLambdaBckgDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1344 fLambdaBckgDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1345 fOutputQA->Add(fLambdaBckgDifPtNegDaug);
1346
1347
1348 // Decay vertex reconstruction
1349 // --- signal ---
1350 fLambdaDecayPos =
1351 new TH3F("fLambdaDecayPos","#Lambda: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1352 fLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1353 fLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1354 fLambdaDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1355 fOutputQA->Add(fLambdaDecayPos);
1356
1357 fLambdaDecayVertex =
348080d3 1358 new TH2F("fLambdaDecayVertex","#Lambda: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1359 fLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1360 fLambdaDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1361 fOutputQA->Add(fLambdaDecayVertex);
1362
1363 fLambdaDecayVertexZoom =
348080d3 1364 new TH2F("fLambdaDecayVertexZoom","#Lambda: decay length",20,0.,1.,nbins,pMin,pMax);
6668159e 1365 fLambdaDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1366 fLambdaDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1367 fOutputQA->Add(fLambdaDecayVertexZoom);
1368
1369 // --- background ---
1370 fLambdaBckgDecayPos =
1371 new TH3F("fLambdaBckgDecayPos","#Lambda Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1372 fLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1373 fLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1374 fLambdaBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1375 fOutputQA->Add(fLambdaBckgDecayPos);
1376
1377 fLambdaBckgDecayVertex =
348080d3 1378 new TH2F("fLambdaBckgDecayVertex","#Lambda Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
6668159e 1379 fLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1380 fLambdaBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1381 fOutputQA->Add(fLambdaBckgDecayVertex);
1382
1383 fLambdaBckgDecayVertexZoom =
348080d3 1384 new TH2F("fLambdaBckgDecayVertexZoom","#Lambda Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
6668159e 1385 fLambdaBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1386 fLambdaBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1387 fOutputQA->Add(fLambdaBckgDecayVertexZoom);
1388
1389 // Cosine of the Pointing Angle
1390 // --- signal ---
1391 fLambdaCPA =
b6f9da99 1392 new TH2F("fLambdaCPA","#Lambda: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1393 fLambdaCPA->GetXaxis()->SetTitle("cpa");
1394 fLambdaCPA->GetYaxis()->SetTitle("p_{T} V0");
1395 fOutputQA->Add(fLambdaCPA);
1396 // --- background ---
1397 fLambdaBckgCPA =
b6f9da99 1398 new TH2F("fLambdaBckgCPA","#Lambda Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
6668159e 1399 fLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
1400 fLambdaBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1401 fOutputQA->Add(fLambdaBckgCPA);
1402
1403 // DCA between daughters
1404 // --- signal ---
1405 fLambdaDCAV0Daug =
1406 new TH2F("fLambdaDCAV0Daug","#Lambda: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1407 fLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1408 fLambdaDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1409 fOutputQA->Add(fLambdaDCAV0Daug);
1410 // --- background ---
1411 fLambdaBckgDCAV0Daug =
1412 new TH2F("fLambdaBckgDCAV0Daug","#Lambda Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1413 fLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1414 fLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1415 fOutputQA->Add(fLambdaBckgDCAV0Daug);
59e0735e 1416
1417 // Number of TPC clusters:
1418 // --- signal ---
1419 fLambdaNClustersTPC =
b6f9da99 1420 new TH3F("fLambdaNClustersTPCPos","#Lambda;#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1421 fLambdaNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1422 fLambdaNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1423 fOutputQA->Add(fLambdaNClustersTPC);
1424 // --- background ---
1425 fLambdaBckgNClustersTPC =
b6f9da99 1426 new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1427 fLambdaBckgNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1428 fLambdaBckgNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1429 fOutputQA->Add(fLambdaBckgNClustersTPC);
1430
1431 // Number of ITS clusters:
1432 // --- signal ---
1433 fLambdaNClustersITSPos =
1434 new TH3F("fLambdaNClustersITSPos","#Lambda: Pos. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1435 fOutputQA->Add(fLambdaNClustersITSPos);
1436
1437 fLambdaNClustersITSNeg =
1438 new TH3F("fLambdaNClustersITSNeg","#Lambda: Neg. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1439 fOutputQA->Add(fLambdaNClustersITSNeg);
1440 // --- background ---
1441 fLambdaBckgNClustersITSPos =
1442 new TH3F("fLambdaBckgNClustersITSPos","#Lambda Bckg: Pos. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1443 fOutputQA->Add(fLambdaBckgNClustersITSPos);
1444
1445 fLambdaBckgNClustersITSNeg =
1446 new TH3F("fLambdaBckgNClustersITSNeg","#Lambda Bckg: Neg. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1447 fOutputQA->Add(fLambdaBckgNClustersITSNeg);
1448
1449
1450
1451 // Quality Assurance AntiLambda:
1452 // Track PID :
1453 // --- signal ---
1454 fAntiLambdaPIDPosDaug =
1455 new TH3F("fAntiLambdaPIDPosDaug","#bar{#Lambda}: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1456 fAntiLambdaPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1457 fAntiLambdaPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1458 fAntiLambdaPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1459 fOutputQA->Add(fAntiLambdaPIDPosDaug);
1460
1461 fAntiLambdaPIDNegDaug =
1462 new TH3F("fAntiLambdaPIDNegDaug","#bar{#Lambda}: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1463 fAntiLambdaPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1464 fAntiLambdaPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1465 fAntiLambdaPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1466 fOutputQA->Add(fAntiLambdaPIDNegDaug);
1467
1468 // --- background ---
1469 fAntiLambdaBckgPIDPosDaug =
1470 new TH3F("fAntiLambdaBckgPIDPosDaug","#bar{#Lambda}: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1471 fAntiLambdaBckgPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1472 fAntiLambdaBckgPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1473 fAntiLambdaBckgPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1474 fOutputQA->Add(fAntiLambdaBckgPIDPosDaug);
1475
1476 fAntiLambdaBckgPIDNegDaug =
1477 new TH3F("fAntiLambdaBckgPIDNegDaug","#bar{#Lambda}: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1478 fAntiLambdaBckgPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1479 fAntiLambdaBckgPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1480 fAntiLambdaBckgPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1481 fOutputQA->Add(fAntiLambdaBckgPIDNegDaug);
1482
1483 // Phi Eta
1484 // --- signal ---
1485 fAntiLambdaPhiEtaPosDaug =
1486 new TH3F("fAntiLambdaPhiEtaPosDaug","#bar{#Lambda}: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1487 fAntiLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1488 fAntiLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1489 fAntiLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1490 fOutputQA->Add(fAntiLambdaPhiEtaPosDaug);
1491
1492 fAntiLambdaPhiEtaNegDaug =
1493 new TH3F("fAntiLambdaPhiEtaNegDaug","#bar{#Lambda}: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1494 fAntiLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1495 fAntiLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1496 fAntiLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1497 fOutputQA->Add(fAntiLambdaPhiEtaNegDaug);
1498
1499 // --- background ---
1500 fAntiLambdaBckgPhiEtaPosDaug =
1501 new TH3F("fAntiLambdaBckgPhiEtaPosDaug","#bar{#Lambda}: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1502 fAntiLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1503 fAntiLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1504 fAntiLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1505 fOutputQA->Add(fAntiLambdaBckgPhiEtaPosDaug);
1506
1507 fAntiLambdaBckgPhiEtaNegDaug =
1508 new TH3F("fAntiLambdaBckgPhiEtaNegDaug","#bar{#Lambda}: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1509 fAntiLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1510 fAntiLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1511 fAntiLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1512 fOutputQA->Add(fAntiLambdaBckgPhiEtaNegDaug);
1513
1514 // Distance of closest approach
1515 // --- signal ---
1516 fAntiLambdaDCAPosDaug =
1517 new TH2F("fAntiLambdaDCAPosDaug","#bar{#Lambda}: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1518 fAntiLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1519 fAntiLambdaDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1520 fOutputQA->Add(fAntiLambdaDCAPosDaug);
1521
1522 fAntiLambdaDCANegDaug =
1523 new TH2F("fAntiLambdaDCANegDaug","#bar{#Lambda}: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1524 fAntiLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1525 fAntiLambdaDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1526 fOutputQA->Add(fAntiLambdaDCANegDaug);
1527
1528 // --- background ---
1529 fAntiLambdaBckgDCAPosDaug =
1530 new TH2F("fAntiLambdaBckgDCAPosDaug","#bar{#Lambda} Bckg: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1531 fAntiLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1532 fAntiLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1533 fOutputQA->Add(fAntiLambdaBckgDCAPosDaug);
1534
1535 fAntiLambdaBckgDCANegDaug =
1536 new TH2F("fAntiLambdaBckgDCANegDaug","#bar{#Lambda} Bckg: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1537 fAntiLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1538 fAntiLambdaBckgDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1539 fOutputQA->Add(fAntiLambdaBckgDCANegDaug);
1540
1541 // Difference in momentum
1542 // --- signal ---
1543 fAntiLambdaDifPtPosDaug =
1544 new TH2F("fAntiLambdaDifPtPosDaug","#bar{#Lambda}: dif. p_{T} Pos",90,0.,3.3,nbins,pMin,pMax);
1545 fAntiLambdaDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1546 fAntiLambdaDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1547 fOutputQA->Add(fAntiLambdaDifPtPosDaug);
1548
1549 fAntiLambdaDifPtNegDaug =
1550 new TH2F("fAntiLambdaDifPtNegDaug","#bar{#Lambda}: dif. p_{T} Neg",90,0.,3.3,nbins,pMin,pMax);
1551 fAntiLambdaDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1552 fAntiLambdaDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1553 fOutputQA->Add(fAntiLambdaDifPtNegDaug);
1554
1555 // --- background ---
1556 fAntiLambdaBckgDifPtPosDaug =
1557 new TH2F("fAntiLambdaBckgDifPtPosDaug","#bar{#Lambda} Bckg: dif. p_{T} Pos.",90,0.,3.3,nbins,pMin,pMax);
1558 fAntiLambdaBckgDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1559 fAntiLambdaBckgDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1560 fOutputQA->Add(fAntiLambdaBckgDifPtPosDaug);
1561
1562 fAntiLambdaBckgDifPtNegDaug =
1563 new TH2F("fAntiLambdaBckgDifPtNegDaug","#bar{#Lambda} Bckg: dif. p_{t} Neg",90,0.,3.3,nbins,pMin,pMax);
1564 fAntiLambdaBckgDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1565 fAntiLambdaBckgDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1566 fOutputQA->Add(fAntiLambdaBckgDifPtNegDaug);
1567
1568
1569 // Decay vertex reconstruction
1570 // --- signal ---
1571 fAntiLambdaDecayPos =
1572 new TH3F("fAntiLambdaDecayPos","#bar{#Lambda}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1573 fAntiLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1574 fAntiLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1575 fAntiLambdaDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1576 fOutputQA->Add(fAntiLambdaDecayPos);
1577
1578 fAntiLambdaDecayVertex =
348080d3 1579 new TH2F("fAntiLambdaDecayVertex","#bar{#Lambda}: decay length",100,0.,100.,nbins,pMin,pMax);
59e0735e 1580 fAntiLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1581 fAntiLambdaDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1582 fOutputQA->Add(fAntiLambdaDecayVertex);
1583
1584 fAntiLambdaDecayVertexZoom =
348080d3 1585 new TH2F("fAntiLambdaDecayVertexZoom","#bar{#Lambda}: decay length",20,0.,1.,nbins,pMin,pMax);
59e0735e 1586 fAntiLambdaDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1587 fAntiLambdaDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1588 fOutputQA->Add(fAntiLambdaDecayVertexZoom);
1589
1590 // --- background ---
1591 fAntiLambdaBckgDecayPos =
1592 new TH3F("fAntiLambdaBckgDecayPos","#bar{#Lambda} Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1593 fAntiLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1594 fAntiLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1595 fAntiLambdaBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1596 fOutputQA->Add(fAntiLambdaBckgDecayPos);
1597
1598 fAntiLambdaBckgDecayVertex =
348080d3 1599 new TH2F("fAntiLambdaBckgDecayVertex","#bar{#Lambda} Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
59e0735e 1600 fAntiLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1601 fAntiLambdaBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1602 fOutputQA->Add(fAntiLambdaBckgDecayVertex);
1603
1604 fAntiLambdaBckgDecayVertexZoom =
348080d3 1605 new TH2F("fAntiLambdaBckgDecayVertexZoom","#bar{#Lambda} Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
59e0735e 1606 fAntiLambdaBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1607 fAntiLambdaBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1608 fOutputQA->Add(fAntiLambdaBckgDecayVertexZoom);
1609
1610 // Cosine of the Pointing Angle
1611 // --- signal ---
1612 fAntiLambdaCPA =
b6f9da99 1613 new TH2F("fAntiLambdaCPA","#bar{#Lambda}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
59e0735e 1614 fAntiLambdaCPA->GetXaxis()->SetTitle("cpa");
1615 fAntiLambdaCPA->GetYaxis()->SetTitle("p_{T} V0");
1616 fOutputQA->Add(fAntiLambdaCPA);
1617 // --- background ---
1618 fAntiLambdaBckgCPA =
b6f9da99 1619 new TH2F("fAntiLambdaBckgCPA","#bar{#Lambda} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
59e0735e 1620 fAntiLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
1621 fAntiLambdaBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1622 fOutputQA->Add(fAntiLambdaBckgCPA);
1623
1624 // DCA between daughters
1625 // --- signal ---
1626 fAntiLambdaDCAV0Daug =
1627 new TH2F("fAntiLambdaDCAV0Daug","#bar{#Lambda}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1628 fAntiLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1629 fAntiLambdaDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1630 fOutputQA->Add(fAntiLambdaDCAV0Daug);
1631 // --- background ---
1632 fAntiLambdaBckgDCAV0Daug =
1633 new TH2F("fAntiLambdaBckgDCAV0Daug","#bar{#Lambda} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1634 fAntiLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1635 fAntiLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1636 fOutputQA->Add(fAntiLambdaBckgDCAV0Daug);
1637
1638 // Number of TPC clusters:
1639 // --- signal ---
1640 fAntiLambdaNClustersTPC =
b6f9da99 1641 new TH3F("fAntiLambdaNClustersTPCPos","#bar{#Lambda};#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1642 fAntiLambdaNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1643 fAntiLambdaNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1644 fOutputQA->Add(fAntiLambdaNClustersTPC);
1645 // --- background ---
1646 fAntiLambdaBckgNClustersTPC =
b6f9da99 1647 new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#phi;Num. TPC Clusters",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,3,-0.5,2.5);
59e0735e 1648 fAntiLambdaBckgNClustersTPC->GetZaxis()->SetBinLabel(1,"Pos. Daug.");
1649 fAntiLambdaBckgNClustersTPC->GetZaxis()->SetBinLabel(3,"Neg. Daug.");
1650 fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
1651
1652 // Number of ITS clusters:
1653 // --- signal ---
1654 fAntiLambdaNClustersITSPos =
1655 new TH3F("fAntiLambdaNClustersITSPos","#bar{#Lambda}: Pos. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1656 fOutputQA->Add(fAntiLambdaNClustersITSPos);
1657
1658 fAntiLambdaNClustersITSNeg =
1659 new TH3F("fAntiLambdaNClustersITSNeg","#bar{#Lambda}: Neg. Daug;#phi;Num. ITS Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1660 fOutputQA->Add(fAntiLambdaNClustersITSNeg);
1661 // --- background ---
1662 fAntiLambdaBckgNClustersITSPos =
1663 new TH3F("fAntiLambdaBckgNClustersITSPos","#bar{#Lambda} Bckg: Pos. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1664 fOutputQA->Add(fAntiLambdaBckgNClustersITSPos);
1665
1666 fAntiLambdaBckgNClustersITSNeg =
1667 new TH3F("fAntiLambdaBckgNClustersITSNeg","#bar{#Lambda} Bckg: Neg. Daug;#phi;Num. ITS Clusters;;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),7,-0.5,6.5,nbins,pMin,pMax);
1668 fOutputQA->Add(fAntiLambdaBckgNClustersITSNeg);
6668159e 1669
1670 }
1671
6668159e 1672 // ============================================================= //
348080d3 1673
667b678a 1674 PostData(1, fOutput);
348080d3 1675 PostData(2, fOutputME);
1676 PostData(3, fOutputQA);
667b678a 1677
1678}
1679
1680//___________________________________________________________________________________________
1681
348080d3 1682static Int_t VtxBin(Double_t vtx)
1683{
1684 // Bin in vertez position Z
1685 Int_t bin = -1;
1686 for(Int_t i=0;i<kNVtxZ;i++)
1687 if ((vtx>=kBinVtxZ[i]) && (vtx<kBinVtxZ[i+1]) )
1688 bin = i;
1689
1690 return bin;
1691
1692}
1693
1694//___________________________________________________________________________________________
1695
1696static Int_t PtBin(Double_t pt)
1697{
1698 // Bin in pt
1699 Int_t bin = -1;
781e881f 1700 for(Int_t i=0;i<kN1;i++)
348080d3 1701 if ((pt>=kPtBinV0[i]) && (pt<kPtBinV0[i+1]) )
1702 bin = i;
1703
1704 return bin;
1705
1706}
1707
1708//___________________________________________________________________________________________
1709
1710static Int_t CentBin(Double_t cent)
1711{
1712 // Bin in pt
1713 Int_t bin = -1;
1714 for(Int_t i=0;i<kNCent;i++)
1715 if ((cent>=kBinCent[i]) && (cent<kBinCent[i+1]) )
1716 bin = i;
1717
1718 return bin;
1719
1720}
1721
1722//___________________________________________________________________________________________
1723
1724Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(AliAODTrack *t)
667b678a 1725{
1726 // Track criteria for primaries particles
348080d3 1727 if (TMath::Abs(t->Eta())>0.8 ) return kFALSE;
1728 if (!(t->TestFilterMask(1<<7))) return kFALSE;
1729
1730 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
1731 if (nCrossedRowsTPC < 70) return kFALSE;
1732
1733 // Point in the SPD
1734 Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
1735
1736 // Propagate the global track to the DCA.
1737 /*
b6f9da99 1738 Double_t PosAtDCA[2] = {-999,-999};
1739 Double_t covar[3] = {-999,-999,-999};
1740 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
1741 t->PropagateToDCA(vtx,fAOD->GetMagneticField(),100.,PosAtDCA,covar);
348080d3 1742 */
59e0735e 1743
348080d3 1744 // 5) DCA cut (See R_AA paper).
1745 //Double_t DCAcutvalue[2];
1746 //DCAcutvalue[0] = 0.018 + 0.035*TMath::Power(t->Pt(),-1.01);
1747 //DCAcutvalue[1] = 2.;
1748
1749 //if( SPDHits && (TMath::Abs(PosAtDCA[0])>DCAcutvalue[0] || TMath::Abs(PosAtDCA[1])>DCAcutvalue[1]) ){
1750 if( SPDHits )
1751 fTriggerWiSPDHit->Fill(1.5);
1752
667b678a 1753 return kTRUE;
1754}
59e0735e 1755
667b678a 1756//___________________________________________________________________________________________
1757
1758static Bool_t AcceptTrackV0(const AliAODTrack *t)
1759{
1760 // Track criteria for daughter particles of V0 candidate
667b678a 1761 if (!t->IsOn(AliAODTrack::kTPCrefit)) return kFALSE;
667b678a 1762 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
1763 if (nCrossedRowsTPC < 70) return kFALSE;
59e0735e 1764
667b678a 1765 return kTRUE;
1766}
1767
667b678a 1768//___________________________________________________________________________________________
1769
1770Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptV0(AliAODVertex *vtx, const AliAODv0 *v1)
1771{
1772 // Selection for accepting V0 candidates
1773
1774 if (v1->GetOnFlyStatus()) return kFALSE;
1775
1776 //if (v1->Pt() < pMin) return kFALSE; ***
1777
1778 const AliAODTrack *ntrack1=(AliAODTrack *)v1->GetDaughter(1);
1779 const AliAODTrack *ptrack1=(AliAODTrack *)v1->GetDaughter(0);
1780
1781 if( !ntrack1 || !ptrack1 ) return kFALSE;
1782 if( !AcceptTrackV0(ntrack1) ) return kFALSE;
1783 if( !AcceptTrackV0(ptrack1) ) return kFALSE;
1784
1785 if( ntrack1->Charge() == ptrack1->Charge())
1786 return kFALSE;
1787
1788 // Daughters: pseudo-rapidity cut
1789 if ( TMath::Abs(ntrack1->Eta()) > fMaxEtaDaughter ||
1790 TMath::Abs(ptrack1->Eta()) > fMaxEtaDaughter )
1791 return kFALSE;
1792
1793 // Daughters: transverse momentum cut
1794 if ( ( ntrack1->Pt() < fMinPtDaughter ) ||
1795 ( ptrack1->Pt() < fMinPtDaughter ) )
1796 return kFALSE;
1797
1798 // Daughters: Impact parameter of daughter to prim vtx
1799 Float_t xy = v1->DcaNegToPrimVertex();
1800 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
1801 xy = v1->DcaPosToPrimVertex();
1802 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
1803
1804 // Daughters: DCA
b6a9eae2 1805 Float_t dca = v1->DcaV0Daughters();
667b678a 1806 if (dca>fMaxDCADaughter) return kFALSE;
1807
1808 // V0: Cosine of the pointing angle
b6a9eae2 1809 Float_t cpa=v1->CosPointingAngle(vtx);
667b678a 1810 if (cpa<fMinCPA) return kFALSE;
1811
1812 // V0: Fiducial volume
1813 Double_t xyz[3]; v1->GetSecondaryVtx(xyz);
b6a9eae2 1814 Float_t r2=xyz[0]*xyz[0] + xyz[1]*xyz[1];
348080d3 1815 if (r2<5.*5.) return kFALSE;
667b678a 1816 if (r2>lMax*lMax) return kFALSE;
1817
1818 return kTRUE;
1819}
1820
1821//___________________________________________________________________________________________
1822
b6a9eae2 1823static Float_t dPHI(Float_t phi1, Float_t phi2)
667b678a 1824{
1825 // Calculate the phi difference between two tracks
b6a9eae2 1826 Float_t deltaPhi = phi1 - phi2;
667b678a 1827
1828 if (deltaPhi<-TMath::PiOver2()) deltaPhi = deltaPhi + 2*(TMath::Pi());
1829 if (deltaPhi>(3*TMath::PiOver2())) deltaPhi = deltaPhi - 2*(TMath::Pi());
1830 return deltaPhi;
1831}
1832
1833//___________________________________________________________________________________________
1834
b6a9eae2 1835static Float_t MyRapidity(Float_t rE, Float_t rPz)
667b678a 1836{
1837 // Local method for rapidity
1838 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
1839}
1840
1841//___________________________________________________________________________________________
1842
348080d3 1843static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
667b678a 1844{
1845 // Local method to compaire the momentum between two tracks
1846
348080d3 1847 //double const kEpsilon = 0.01;
667b678a 1848 Int_t isSamePt = 0;
1849
348080d3 1850 /*
1851 Float_t p[3]; trk->GetPxPyPz(p);
1852 Float_t pNegTrk[3]; nTrk->GetPxPyPz(pNegTrk);
1853 Float_t pPosTrk[3]; pTrk->GetPxPyPz(pPosTrk);
667b678a 1854
b6f9da99 1855 if( ( fabs(p[0]-pNegTrk[0])<kEpsilon &&
348080d3 1856 fabs(p[1]-pNegTrk[1])<kEpsilon &&
1857 fabs(p[2]-pNegTrk[2])<kEpsilon )
667b678a 1858 isSamePt = 1;
6668159e 1859 */
348080d3 1860
1861 if( (TMath::Abs(daugTrk->GetID())+1)==(TMath::Abs(trk->GetID())) )
1862 isSamePt = 1;
667b678a 1863
6668159e 1864 /*
348080d3 1865 if( (TMath::Abs(nTrk->GetID()))==(TMath::Abs(trk->GetID())) ||
1866 (TMath::Abs(pTrk->GetID()))==(TMath::Abs(trk->GetID())) ) isSamePt = 1;
6668159e 1867 */
1868
667b678a 1869 return isSamePt;
1870
1871}
1872
1873//___________________________________________________________________________________________
1874
348080d3 1875static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
1876{
1877 // Obtains the spacial resolution between trigger and V0
1878 // within a distance in (deltaPhi,deltaEta) < 0.1
1879
1880 Float_t res = -100.;
1881
1882 res = TMath::Sqrt( p1x*p1x + p1y*p1y )*TMath::Sqrt( p2x*p2x + p2y*p2y );
1883 res = (p1x*p2x + p1y*p2y)/res;
1884
1885 res = TMath::ACos(res);
1886
1887 return res = TMath::Sin(res)*dist;
1888
1889}
1890
1891//___________________________________________________________________________________________
1892
667b678a 1893void AliAnalysisTaskLambdaOverK0sJets::RecCascade(AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
1894{
1895 // Local method to reconstruct cascades candidates from the combinations of three tracks
1896 // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
1897 // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
1898 // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
1899
b6a9eae2 1900 Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
1901 Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
1902 Float_t pLambda[3] = {0.,0.,0.};
1903 Float_t pCascade[3] = {0.,0.,0.};
1904 Float_t lMassCascade = 0., lPtot2Cascade=0.;
667b678a 1905
1906 // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
1907 for(Int_t i=0;i<2;i++){
1908
1909 // 0. Check the charge for both tracks: trk1 & trk2.
1910 // Usefull in the Lambda step.
1911 if( trk1->Charge() == trk2->Charge() )
1912 continue;
1913
1914 // 1. Bachelor: Allocation for the track
1915 if(i==0) // Xi
1916 lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
1917 else if(i==1) //Omega
1918 lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
1919
1920 lPtot2Bach = TMath::Power(trkBch->P(),2);
1921
1922 lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
1923
1924 // 2. Lambda: Kinematical properties
1925 lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
1926
1927 pLambda[0] = trk1->Px() + trk2->Px();
1928 pLambda[1] = trk1->Py() + trk2->Py();
1929 pLambda[2] = trk1->Pz() + trk2->Pz();
1930
1931 lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
1932
1933 lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
1934
1935 // 3. Cascade: Reconstruction
1936 pCascade[0] = pLambda[0] + trkBch->Px();
1937 pCascade[1] = pLambda[1] + trkBch->Py();
1938 pCascade[2] = pLambda[2] + trkBch->Pz();
1939
1940 lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
1941
1942 lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
1943
1944 // 4. Filling histograms
1945 if( histo.Contains("K0s") ) {
f25a6d07 1946 if(i==0) // Xi
348080d3 1947 fV0MassCascade->Fill(lMassCascade,1);
1948 else if(i==1) //Omega
1949 fV0MassCascade->Fill(lMassCascade,3);
1950 }
1951 else if( histo.Contains("AntiLambda") ) {
1952 if(i==0) // Xi
1953 fV0MassCascade->Fill(lMassCascade,9);
f25a6d07 1954 else if(i==1) //Omega
348080d3 1955 fV0MassCascade->Fill(lMassCascade,11);
667b678a 1956 }
1957 else if( histo.Contains("Lambda") ) {
f25a6d07 1958 if(i==0) // Xi
348080d3 1959 fV0MassCascade->Fill(lMassCascade,5);
f25a6d07 1960 else if(i==1) //Omega
348080d3 1961 fV0MassCascade->Fill(lMassCascade,7);
667b678a 1962 }
1963
667b678a 1964 }
348080d3 1965
667b678a 1966}
1967
1968//___________________________________________________________________________________________
1969
348080d3 1970void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
667b678a 1971{
1972 // Three options for the 'step' variable:
1973 // 1) TriggerCheck
348080d3 1974 // 2) Reconstruction
667b678a 1975
fbaec09e 1976 AliAODTrack *trkTrig = 0x0;
348080d3 1977 Float_t ptTrig = -100.;
1978 Float_t phiTrig = -100.;
1979 Float_t etaTrig = -100.;
1980 Double_t pTrig[3];
f25a6d07 1981
348080d3 1982 if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
1983 trkTrig = (AliAODTrack*)fAOD->GetTrack(idTrig);
667b678a 1984 ptTrig = trkTrig->Pt();
1985 phiTrig = trkTrig->Phi();
1986 etaTrig = trkTrig->Eta();
348080d3 1987 trkTrig->GetPxPyPz(pTrig);
667b678a 1988 }
1989
667b678a 1990 // *************************************************
1991 // Centrality selection
1992 AliCentrality *cent = fAOD->GetCentrality();
b6a9eae2 1993 Float_t centrality = cent->GetCentralityPercentile("V0M");
b6f9da99 1994 Int_t curCentBin = CentBin(centrality);
667b678a 1995
1996 // *************************************************
1997 // MC Event
1998 TClonesArray *stackMC = 0x0;
b6a9eae2 1999 Float_t mcXv=0., mcYv=0., mcZv=0.;
667b678a 2000
2001 if(fIsMC){
2002 TList *lst = fAOD->GetList();
2003 stackMC = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
2004 if (!stackMC) {
2005 Printf("ERROR: stack not available");
2006 }
2007
2008 AliAODMCHeader *mcHdr =
2009 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
2010
2011 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
2012 }
2013
2014 // *************************************************
2015 // V0 loop - AOD
2016 const AliAODVertex *vtx=fAOD->GetPrimaryVertex();
b6a9eae2 2017 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
667b678a 2018 Int_t nV0sTot = fAOD->GetNumberOfV0s();
348080d3 2019
667b678a 2020 for (Int_t iV0 = 0; iV0 < nV0sTot; iV0++) {
2021
2022 AliAODv0 *v0=fAOD->GetV0(iV0);
2023 if (!v0) continue;
2024 if (!AcceptV0(fAOD->GetPrimaryVertex(),v0)) continue;
2025
2026 const AliAODTrack *ntrack=(AliAODTrack *)v0->GetDaughter(1);
2027 const AliAODTrack *ptrack=(AliAODTrack *)v0->GetDaughter(0);
59e0735e 2028
348080d3 2029 Float_t etaNeg = ntrack->Eta();
2030 Float_t etaPos = ptrack->Eta();
2031 Float_t lPtNeg = ntrack->Pt();
2032 Float_t lPtPos = ptrack->Pt();
2033
667b678a 2034 // Decay vertex
2035 Double_t xyz[3]; v0->GetSecondaryVtx(xyz);
348080d3 2036 Float_t dx=xyz[0]-xv, dy=xyz[1]-yv;//, dz=xyz[2]-zv;
2037 // Decay length: 2D & 3D
59e0735e 2038 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
348080d3 2039 //Float_t dl=TMath::Sqrt(dx*dx + dy*dy + dz*dz);
59e0735e 2040 // Momentum: 2D & 3D
b6a9eae2 2041 Float_t pt=TMath::Sqrt(v0->Pt2V0());
348080d3 2042 //Float_t p=v0->P();
2043
b6a9eae2 2044 Float_t dlK = 0.4977*lt/pt;
2045 Float_t dlL = 1.1157*lt/pt;
348080d3 2046 /*
2047 Float_t dlK = v0->MassK0Short()*dl/p;
2048 Float_t dlL = v0->MassLambda()*dl/p;
2049 Float_t dlAL = v0->MassAntiLambda()*dl/p;
59e0735e 2050 */
667b678a 2051
2052 // ctau
348080d3 2053 Bool_t ctK=kTRUE; if (dlK > fMaxCtau*2.68 || dlK < fMinCtau*2.68) ctK=kFALSE;
2054 Bool_t ctL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctL=kFALSE;
2055 Bool_t ctAL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctAL=kFALSE;
667b678a 2056
2057 // Armenteros variables:
b6a9eae2 2058 Float_t lAlphaV0 = v0->AlphaV0();
2059 Float_t lPtArmV0 = v0->PtArmV0();
667b678a 2060
2061 // MC Association:
2062 Bool_t lComeFromSigma = kFALSE;
2063 Bool_t lCheckMcK0Short = kFALSE;
2064 Bool_t lCheckMcLambda = kFALSE;
2065 Bool_t lCheckMcAntiLambda = kFALSE;
2066
2067 Int_t lMCAssocNegDaug = 0;
2068 Int_t lMCAssocPosDaug = 0;
2069
2070 // ********* MC - Association *********
2071 // In case of injected-MC, the correlations might be done with only natural particles
2072 Bool_t isNaturalPart = kTRUE;
348080d3 2073 if(step==kReconstruction){
667b678a 2074
2075 if(fIsMC){
2076 if(!stackMC) goto noas;
2077
2078 Int_t ntrkMC=stackMC->GetEntriesFast();
2079
2080 Int_t nlab = TMath::Abs(ntrack->GetLabel());//** UInt_t
2081 Int_t plab = TMath::Abs(ptrack->GetLabel());
2082
2083 // To avoid futher problems
2084 if ( (nlab<0 || plab<0) ||
2085 (nlab>=ntrkMC || plab>=ntrkMC) )
2086 goto noas;
2087
2088 AliAODMCParticle *nPart=(AliAODMCParticle*)stackMC->UncheckedAt(nlab);
2089 AliAODMCParticle *pPart=(AliAODMCParticle*)stackMC->UncheckedAt(plab);
2090 // MC origin of daughters: Primaries?
2091 if( nPart->IsPhysicalPrimary() ) lMCAssocNegDaug = 1;
2092 if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
2093
2094 if(!nPart || !pPart) goto noas;
2095
2096 if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
2097 TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
2098 goto noas;
2099
2100 // Daughter momentum cut
2101 if ( ( nPart->Pt() < fMinPtDaughter ) ||
2102 ( pPart->Pt() < fMinPtDaughter ) )
2103 goto noas;
2104
2105 // ----------------------------------------
2106
2107 Int_t lPDGCodeNegDaughter = nPart->GetPdgCode();
2108 Int_t lPDGCodePosDaughter = pPart->GetPdgCode();
2109
2110 Int_t ipMother = pPart->GetMother();
2111 Int_t inMother = nPart->GetMother();
2112
b6f9da99 2113 if(inMother<0 || inMother>=ntrkMC) lMCAssocNegDaug = 6;
2114 if(ipMother<0 || ipMother>=ntrkMC) lMCAssocPosDaug = 6;
667b678a 2115
2116 if(inMother<0 || inMother>=ntrkMC) { goto noas;}
2117 if(inMother != ipMother) { // did the negative daughter decay ?
2118 AliAODMCParticle *negMotherOfMotherPart = (AliAODMCParticle*)stackMC->UncheckedAt(inMother);
2119 if (negMotherOfMotherPart->GetMother() != ipMother)
2120 goto noas;
2121 }
2122
2123 if (ipMother<0 || ipMother>=ntrkMC)
2124 goto noas;
2125
2126 AliAODMCParticle *p0=(AliAODMCParticle*)stackMC->UncheckedAt(ipMother);
2127 if(!p0)
2128 goto noas;
2129
2130 // ----------------------------------------
2131
2132 if ( (ipMother>=fEndOfHijingEvent) &&
2133 (fEndOfHijingEvent!=-1) &&
2134 (p0->GetMother()<0) )
2135 isNaturalPart = kFALSE;
2136 else isNaturalPart = kTRUE;
2137
2138 // ----------------------------------------
2139
2140 if(fSeparateInjPart && !isNaturalPart) goto noas;
2141
2142 Int_t lPDGCodeV0 = p0->GetPdgCode();
2143
2144 // MC origin of daughters:
2145 //Decay from Weak Decay?
2146 if( (TMath::Abs(lPDGCodeV0) == kK0Short) || (TMath::Abs(lPDGCodeV0) == kLambda0) ||
2147 (TMath::Abs(lPDGCodeV0) == kSigmaMinus) || (TMath::Abs(lPDGCodeV0) == kSigmaPlus) ||
b6f9da99 2148 (TMath::Abs(lPDGCodeV0) == kSigma0) )
667b678a 2149 { lMCAssocNegDaug = 2; lMCAssocPosDaug = 2; }
b6f9da99 2150 // Cascade Gamma conversion
2151 if( (TMath::Abs(lPDGCodeV0) == kXiMinus) ||
2152 (TMath::Abs(lPDGCodeV0) == kOmegaMinus) )
2153 { lMCAssocNegDaug = 3; lMCAssocPosDaug = 3; }
667b678a 2154 // Gamma conversion
2155 else if( TMath::Abs(lPDGCodeV0) == kGamma )
b6f9da99 2156 { lMCAssocNegDaug = 4; lMCAssocPosDaug = 4; }
667b678a 2157 // Unidentied mother:
2158 else
b6f9da99 2159 { lMCAssocNegDaug = 5; lMCAssocPosDaug = 5; }
667b678a 2160
2161
2162 Int_t lIndexMotherOfMother = p0->GetMother();
2163 Int_t lPdgcodeMotherOfMother = 0;
2164 if (lIndexMotherOfMother ==-1) lPdgcodeMotherOfMother = 0;
2165 else {
2166 AliAODMCParticle *lMCAODMotherOfMother=(AliAODMCParticle*)stackMC->UncheckedAt(lIndexMotherOfMother);
2167 if (!lMCAODMotherOfMother) {lPdgcodeMotherOfMother=0;}
2168 lPdgcodeMotherOfMother = lMCAODMotherOfMother->GetPdgCode();
2169 }
2170
2171 // Daughter momentum cut: ! FIX it in case of AOD ! //MC or REc
2172 if ( (nPart->Pt() < fMinPtDaughter ) ||
2173 (pPart->Pt() < fMinPtDaughter ) )
2174 goto noas;
2175
2176 if( (lPDGCodeV0 != kK0Short) &&
2177 (lPDGCodeV0 != kLambda0) &&
2178 (lPDGCodeV0 != kLambda0Bar) )
2179 goto noas;
2180
2181
2182 lComeFromSigma = kFALSE;
2183 lCheckMcK0Short = kFALSE;
2184 lCheckMcLambda = kFALSE;
2185 lCheckMcAntiLambda = kFALSE;
2186
2187 // ----------------------------------------
2188
2189 // K0s
2190 if( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) &&
2191 (inMother==ipMother) && (lPDGCodeV0==310) ) {
2192
2193 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
2194 lCheckMcK0Short = kTRUE;
2195
2196 }
2197 // Lambda
2198 else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) &&
2199 (inMother==ipMother) && (lPDGCodeV0==3122) ){
2200
2201 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2202 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2203 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2204 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2205 ) lComeFromSigma = kTRUE;
2206 else lComeFromSigma = kFALSE;
2207
2208 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
2209 ( !(((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
2210 && (lComeFromSigma==kTRUE) )
2211 ) lCheckMcLambda = kTRUE;
2212
2213 }
2214 // AntiLambda
2215 else if( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) &&
2216 (inMother==ipMother) && (lPDGCodeV0==-3122) ) {
2217
2218
2219 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2220 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2221 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2222 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2223 ) lComeFromSigma = kTRUE;
2224 else lComeFromSigma = kFALSE;
2225
2226 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
2227 ( (!((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary())
2228 && (lComeFromSigma==kTRUE) )
2229 ) lCheckMcAntiLambda = kTRUE;
2230
2231 }
2232
2233 // ----------------------------------------
2234
2235 if ((p0->Pt())<pMin) goto noas;
2236 if (TMath::Abs(p0->Y())>fYMax ) goto noas;
2237
b6a9eae2 2238 Float_t dxAs = mcXv - p0->Xv(), dyAs = mcYv - p0->Yv(), dzAs = mcZv - p0->Zv();
2239 Float_t l = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs + dzAs*dzAs);
667b678a 2240
2241 dxAs = mcXv - pPart->Xv(); dyAs = mcYv - pPart->Yv();
b6a9eae2 2242 //Float_t ltAs = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs);
2243 Float_t ptAs = p0->Pt();
2244 Float_t rapAs = p0->Y();
2245 Float_t etaAs = p0->Eta();
2246 // phi resolution for V0-reconstruction
b6f9da99 2247 Float_t resEta = p0->Eta() - v0->Eta();
b6a9eae2 2248 Float_t resPhi = p0->Phi() - v0->Phi();
2249
667b678a 2250 if (l < 0.01) { // Primary V0
2251
59e0735e 2252 // K0s:
667b678a 2253 if(ctK && lCheckMcK0Short){
2254 fK0sAssocPt->Fill(ptAs);
b6a9eae2 2255 fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
b6f9da99 2256
2257 fK0sAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
667b678a 2258
2259 if(lPtArmV0 > TMath::Abs(0.2*lAlphaV0) )
b6a9eae2 2260 fK0sAssocPtArm->Fill(ptAs,rapAs,centrality);
2261
b6f9da99 2262 fK0sMCResEta->Fill(resEta,pt,centrality);
b6a9eae2 2263 fK0sMCResPhi->Fill(resPhi,pt,centrality);
59e0735e 2264 } // End K0s selection
2265 // Lambda:
667b678a 2266 else if(ctL && lCheckMcLambda) {
2267 fLambdaAssocPt->Fill(ptAs);
b6a9eae2 2268 fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
667b678a 2269
b6f9da99 2270 fLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
2271
2272 fLambdaMCResEta->Fill(resEta,pt,centrality);
b6a9eae2 2273 fLambdaMCResPhi->Fill(resPhi,pt,centrality);
59e0735e 2274 }// End Lambda:
2275 // AntiLambda:
2276 else if (ctAL && lCheckMcAntiLambda){
667b678a 2277 fAntiLambdaAssocPt->Fill(ptAs);
59e0735e 2278 fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
59e0735e 2279
b6f9da99 2280 fAntiLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
2281
2282 fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
59e0735e 2283 fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
2284 } // End AntiLambda:
667b678a 2285
59e0735e 2286 } // End Primary V0 selection
667b678a 2287
2288 // After the kinematical selection of K0s and Lambdas
2289 // it might be that the daugthers are not identified through MC Association
2290 if(lMCAssocNegDaug==0)
b6f9da99 2291 lMCAssocNegDaug = 6;
667b678a 2292 if(lMCAssocPosDaug==0)
b6f9da99 2293 lMCAssocPosDaug = 6;
667b678a 2294
2295
2296 } // End MC-Association
2297
2298 // ************************************
2299
2300 }// End Correlation Step
2301
2302 noas:
2303
b6a9eae2 2304 Float_t pPos = -100.;
2305 Float_t pNeg = -100.;
2306 Float_t dedxPos = -1000.;
2307 Float_t dedxNeg = -1000.;
348080d3 2308
2309 //Float_t nsigPosPion = 0.;
b6a9eae2 2310 Float_t nsigPosProton = 0.;
348080d3 2311 //Float_t nsigNegPion = 0.;
b6a9eae2 2312 Float_t nsigNegProton = 0.;
667b678a 2313
348080d3 2314 /*
2315 if(fUsePID && !fIsMC) {
2316 const AliAODPid *pidNeg = ntrack->GetDetPid();
2317 const AliAODPid *pidPos = ptrack->GetDetPid();
667b678a 2318
348080d3 2319 if (pidNeg && pidPos) {
667b678a 2320 pPos = pidPos->GetTPCmomentum();
6668159e 2321 pNeg = pidNeg->GetTPCmomentum();
667b678a 2322 dedxPos = pidPos->GetTPCsignal()/47.;
6668159e 2323 dedxNeg = pidNeg->GetTPCsignal()/47.;
348080d3 2324
2325
59e0735e 2326 if(pPos<1.){
348080d3 2327 nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
2328 nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
59e0735e 2329 }
2330 if(pNeg<1.){
348080d3 2331 nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
2332 nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
59e0735e 2333 }
2334
348080d3 2335 }
59e0735e 2336
348080d3 2337 }
2338 */
667b678a 2339
348080d3 2340 Double_t pNegDaug[3]; ntrack->GetPxPyPz(pNegDaug);
2341 Double_t pPosDaug[3]; ptrack->GetPxPyPz(pPosDaug);
2342
2343 Float_t dcaNeg = v0->DcaNegToPrimVertex();
2344 Float_t dcaPos = v0->DcaPosToPrimVertex();
2345
2346 Float_t phiNeg = ntrack->Phi();
2347 Float_t phiPos = ptrack->Phi();
2348 Float_t difPtNeg = pt - lPtNeg;
2349 Float_t difPtPos = pt - lPtPos;
2350
2351 Float_t dca = v0->DcaV0Daughters();
2352 Float_t cpa = v0->CosPointingAngle(fAOD->GetPrimaryVertex());
2353 Float_t lEta = v0->PseudoRapV0();
2354 Float_t lPhi = v0->Phi();
2355 //lPhi = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );
667b678a 2356
b6f9da99 2357 // Number of clusters of daughters in the TPC and ITS
2358 Double_t posITSNcls = ptrack->GetITSNcls();
2359 Double_t negITSNcls = ntrack->GetITSNcls();
2360
2361 Double_t posTPCNcls = ptrack->GetTPCNclsF();
2362 Double_t negTPCNcls = ntrack->GetTPCNclsF();
2363
2364
2365 //cout << " negITSNcls " << negITSNcls << " posITSNcls " << posITSNcls << endl;
2366 //cout << " negTPCNcls " << negTPCNcls << " posTPCNcls " << posTPCNcls << endl;
2367
348080d3 2368 /*
667b678a 2369 // Good regions
2370 lPhi = v0->Phi();
2371 if(lPhi>0. && lPhi<1.8) continue;
2372 if(lPhi>2.2 && lPhi<3.8) continue;
2373 if(lPhi>4.2 && lPhi<5.8) continue;
2374 */
2375
2376 /*
2377 // Bad regions
2378 lPhi = v0->Phi();
2379 if(lPhi>1.8 && lPhi<2.2) continue;
2380 if(lPhi>3.8 && lPhi<4.2) continue;
2381 if(lPhi>5.8 && lPhi<6.2) continue;
2382 */
2383
667b678a 2384 // Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
2385 // It is used as well for the side-band subtraction
348080d3 2386 Int_t isSameTrkPosDaug = -1;
2387 Int_t isSameTrkNegDaug = -1;
2388 if( step==kTriggerCheck ){
2389 isSameTrkPosDaug = SameTrack(trkTrig,ptrack);
2390 isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
2391 }
667b678a 2392
348080d3 2393 // **********************************
2394 // Disentangle the V0 candidate
b6a9eae2 2395 Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
2396 Float_t massLambda = 0., mLambda = 0., sLambda = 0.;
2397 Float_t massAntiLambda = 0.;
667b678a 2398
2399 Bool_t isCandidate2K0s = kFALSE;
2400 massK0s = v0->MassK0Short();
2401 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
2402 sK0s = 0.0044 + (0.008-0.0044)/(10-1)*(pt - 1.);
59e0735e 2403 if ( TMath::Abs(mK0s-massK0s) < 3*sK0s )
667b678a 2404 isCandidate2K0s = kTRUE;
2405
2406 Bool_t isCandidate2Lambda = kFALSE;
2407 massLambda = v0->MassLambda();
2408 mLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
667b678a 2409 sLambda=0.0023 + (0.004-0.0023)/(6-1)*(pt-1);
59e0735e 2410 if (TMath::Abs(mLambda-massLambda) < 3*sLambda)
667b678a 2411 isCandidate2Lambda = kTRUE;
2412
2413 Bool_t isCandidate2LambdaBar = kFALSE;
2414 massAntiLambda = v0->MassAntiLambda();
59e0735e 2415 if (TMath::Abs(mLambda-massAntiLambda) < 3*sLambda)
667b678a 2416 isCandidate2LambdaBar = kTRUE;
2417
348080d3 2418 // *******************
2419 // Gamma conversion
2420 // *******************
2421
2422 if(step==kReconstruction)
2423 if( (TMath::Sqrt(lPtArmV0*lPtArmV0 + lAlphaV0*lAlphaV0) < 0.2) && isNaturalPart ){
b6f9da99 2424 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 2) );
348080d3 2425 }
2426
667b678a 2427 // *******************
2428 // K0s selection
2429 // *******************
2430 if (ctK && (TMath::Abs(v0->RapK0Short())<fYMax) &&
59e0735e 2431 ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) ) {
667b678a 2432
2433 switch(step) {
2434 case kTriggerCheck:
2435
2436 if (isCandidate2K0s){
2437 if(pt>ptTrig){
f25a6d07 2438 fIsV0LP = 1;
2439 fPtV0LP = pt;
667b678a 2440 }
2441
348080d3 2442 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
667b678a 2443 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d",iV0);
6668159e 2444
348080d3 2445 if(fCheckIDTrig){ // Compare properties of daughters nad
2446 Float_t difNegP[3];
b6f9da99 2447 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
348080d3 2448 Float_t difPosP[3];
b6f9da99 2449 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 2450 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2451 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2452
2453 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
2454 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2455 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2456 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2457 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2458 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
2459 );
2460
2461 // Positive daughter
2462 if( isSameTrkPosDaug==1 ){
2463 for(Int_t i=0;i<3;i++)
2464 fCheckIDTrigPtK0s->Fill(difPosP[i],i,pt);
6668159e 2465 fCheckIDTrigPhiK0s->Fill(posDeltaPhi,0.,pt);
348080d3 2466 fCheckIDTrigEtaK0s->Fill(posDeltaEta,0.,pt);
6668159e 2467 }
348080d3 2468 // Negative daughter
2469 if( isSameTrkNegDaug==1 ){
2470 for(Int_t i=0;i<3;i++)
2471 fCheckIDTrigPtK0s->Fill(difPosP[i],i+3,pt);
6668159e 2472 fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
348080d3 2473 fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
6668159e 2474 }
2475
2476 } // End check ID
348080d3 2477
2478
2479 fTriggerParticles->RemoveAt(iArray);
b6f9da99 2480 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 2481
6668159e 2482 } // Close isTrigFromV0daug
2483
348080d3 2484 }// End K0s Mass cut
667b678a 2485
2486 break; // End K0s selection for TriggerCheck
348080d3 2487 case kReconstruction:
2488
667b678a 2489 fK0sMass->Fill(massK0s,pt,0);
2490 fK0sPtvsEta->Fill(pt,lEta,0);
2491 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),0);
2492 if(centrality<10) fK0sMass->Fill(massK0s,pt,1);
2493
348080d3 2494 fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
2495
348080d3 2496 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
b6f9da99 2497 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
348080d3 2498
2499 // Only for triggered events and in case of MC K0s is not an embeded particle
59e0735e 2500 if( isTriggered && isNaturalPart ){
667b678a 2501
2502 fK0sMass->Fill(massK0s,pt,3);
2503 fK0sPtvsEta->Fill(pt,lEta,1);
2504 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),1);
2505
667b678a 2506 if(centrality<10) fK0sMass->Fill(massK0s,pt,4);
2507
2508 }
348080d3 2509
667b678a 2510 // Invariant Mass cut
2511 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
348080d3 2512
2513 fK0sEtaPhi->Fill(lPhi,lEta);
2514 fK0sPtvsEta->Fill(pt,lEta,2);
2515 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),2);
2516
6668159e 2517 if(fDoQA){ // Quality Assurance
2518 fK0sPIDPosDaug->Fill(pPos,dedxPos,pt);
2519 fK0sPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2520
2521 fK0sPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2522 fK0sPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2523
2524 fK0sDCAPosDaug->Fill(dcaPos,pt);
2525 fK0sDCANegDaug->Fill(dcaNeg,pt);
2526
348080d3 2527 fK0sDifPtPosDaug->Fill(difPtPos,pt);
2528 fK0sDifPtNegDaug->Fill(difPtNeg,pt);
6668159e 2529
2530 fK0sDecayPos->Fill(dx,dy,pt);
2531 fK0sDecayVertex->Fill(lt,pt);
2532
2533 if(lt<1.0)
2534 fK0sDecayVertexZoom->Fill(lt,pt); //**
2535 fK0sCPA->Fill(cpa,pt); //**
2536 fK0sDCAV0Daug->Fill(dca,pt); //**
2537
b6f9da99 2538 fK0sNClustersTPC->Fill(phiPos,posTPCNcls,0);
2539 fK0sNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2540 fK0sNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2541 fK0sNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2542
348080d3 2543 }// End QA
2544
2545 } // End selection in mass
2546 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
2547 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
6668159e 2548
348080d3 2549 fK0sEtaPhi->Fill(lPhi,lEta,-1);
667b678a 2550
6668159e 2551 if(fDoQA){ // Quality Assurance
348080d3 2552 fK0sBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2553 fK0sBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
6668159e 2554
348080d3 2555 fK0sBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2556 fK0sBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
6668159e 2557
348080d3 2558 fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
2559 fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
6668159e 2560
348080d3 2561 fK0sBckgDifPtPosDaug->Fill(difPtPos,pt);
2562 fK0sBckgDifPtNegDaug->Fill(difPtNeg,pt);
6668159e 2563
348080d3 2564 fK0sBckgDecayPos->Fill(dx,dy,pt);
2565 fK0sBckgDecayVertex->Fill(lt,pt);
6668159e 2566
348080d3 2567 if(lt<1.0)
2568 fK0sBckgDecayVertexZoom->Fill(lt,pt); //**
2569 fK0sBckgCPA->Fill(cpa,pt); //**
2570 fK0sBckgDCAV0Daug->Fill(dca,pt); //**
6668159e 2571
b6f9da99 2572 fK0sBckgNClustersTPC->Fill(phiPos,posTPCNcls,0);
2573 fK0sBckgNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2574 fK0sBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2575 fK0sBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2576
6668159e 2577 } // End QA
2578
667b678a 2579 }// End selection in outside the mass cut
2580
2581 break; // End K0s selection for Corrleation
2582 default:
2583 Printf( " Selection of 'step' is not set properly");
2584 break;
2585
2586 }// End switch
2587
2588 } // End K0s selection
2589
2590 // *******************
2591 // Lambda selection
2592 // *******************
2593 if ( ctL && (TMath::Abs(v0->RapLambda())<fYMax) &&
b6f9da99 2594 (nsigPosProton < fNSigma) && !isCandidate2K0s && !isCandidate2LambdaBar){
667b678a 2595
667b678a 2596 switch(step) {
2597 case kTriggerCheck:
2598
2599 if (isCandidate2Lambda){
2600 if(pt>ptTrig) {
f25a6d07 2601 fIsV0LP = 1;
2602 fPtV0LP = pt;
667b678a 2603 }
2604
348080d3 2605 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
667b678a 2606 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d",iV0);
6668159e 2607
348080d3 2608 if(fCheckIDTrig){ // Compare properties of daughters nad
2609 Float_t difNegP[3];
b6f9da99 2610 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
348080d3 2611 Float_t difPosP[3];
b6f9da99 2612 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 2613 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2614 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2615
2616 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
2617 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2618 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2619 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2620 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2621 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
2622 );
6668159e 2623
348080d3 2624 // Positive daughter
2625 if( isSameTrkPosDaug==1 ){
2626 for(Int_t i=0;i<3;i++)
2627 fCheckIDTrigPtLambda->Fill(difPosP[i],i,pt);
6668159e 2628 fCheckIDTrigPhiLambda->Fill(posDeltaPhi,0.,pt);
348080d3 2629 fCheckIDTrigEtaLambda->Fill(posDeltaEta,0.,pt);
6668159e 2630 }
348080d3 2631 // Negative daughter
2632 if( isSameTrkNegDaug==1 ){
2633 for(Int_t i=0;i<3;i++)
2634 fCheckIDTrigPtLambda->Fill(difPosP[i],i+3,pt);
6668159e 2635 fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
348080d3 2636 fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
6668159e 2637 }
348080d3 2638
6668159e 2639 } // End check ID
348080d3 2640
2641 fTriggerParticles->RemoveAt(iArray);
b6f9da99 2642 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 2643
6668159e 2644 } // Close isTrigFromV0daug
2645
348080d3 2646 } // End Lambda Mass cut
667b678a 2647 break; // End Lambda selection for TriggerCheck
348080d3 2648 case kReconstruction:
667b678a 2649
667b678a 2650 fLambdaMass->Fill(massLambda,pt,0);
2651 fLambdaPtvsEta->Fill(pt,lEta,0);
2652 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),0);
2653 if(centrality<10) fLambdaMass->Fill(massLambda,pt,1);
348080d3 2654
2655 fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
667b678a 2656
348080d3 2657 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
b6f9da99 2658 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
667b678a 2659
59e0735e 2660 // Only for triggered events and in case of MC Lambda is not a embeded particle
667b678a 2661 if( isTriggered && isNaturalPart ){
2662
2663 fLambdaMass->Fill(massLambda,pt,3);
2664 fLambdaPtvsEta->Fill(pt,lEta,1);
2665 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),1);
2666
667b678a 2667 if(centrality<10) fLambdaMass->Fill(massLambda,pt,4);
2668
2669 }
2670 // Invariant Mass cut
2671 if (TMath::Abs(mLambda-massLambda) < 3*sLambda) {
2672
348080d3 2673 fLambdaEtaPhi->Fill(lPhi,lEta);
2674 fLambdaPtvsEta->Fill(pt,lEta,2);
2675 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),2);
2676
6668159e 2677 if(fDoQA){ // Quality Assurance
2678 fLambdaPIDPosDaug->Fill(pPos,dedxPos,pt);
2679 fLambdaPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2680
2681 fLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2682 fLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2683
2684 fLambdaDCAPosDaug->Fill(dcaPos,pt);
2685 fLambdaDCANegDaug->Fill(dcaNeg,pt);
2686
348080d3 2687 fLambdaDifPtPosDaug->Fill(difPtPos,pt);
2688 fLambdaDifPtNegDaug->Fill(difPtNeg,pt);
6668159e 2689
2690 fLambdaDecayPos->Fill(dx,dy,pt);
2691 fLambdaDecayVertex->Fill(lt,pt);
2692
2693 if(lt<1.0)
2694 fLambdaDecayVertexZoom->Fill(lt,pt); //**
2695 fLambdaCPA->Fill(cpa,pt); //**
2696 fLambdaDCAV0Daug->Fill(dca,pt); //**
2697
b6f9da99 2698 fLambdaNClustersTPC->Fill(phiPos,posTPCNcls,0);
2699 fLambdaNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2700 fLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2701 fLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2702
6668159e 2703 } //End QA
348080d3 2704
667b678a 2705 } // End selection in mass
2706
2707 if( (TMath::Abs(mLambda-massLambda + 6.5*sLambda) < 1.5*sLambda) ||
2708 (TMath::Abs(mLambda-massLambda - 6.5*sLambda) < 1.5*sLambda) ){
348080d3 2709
2710 fLambdaEtaPhi->Fill(lPhi,lEta,-1);
667b678a 2711
6668159e 2712 if(fDoQA){ // Quality Assurance
2713 fLambdaBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2714 fLambdaBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2715
2716 fLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2717 fLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2718
2719 fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
2720 fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
2721
348080d3 2722 fLambdaBckgDifPtPosDaug->Fill(difPtPos,pt);
2723 fLambdaBckgDifPtNegDaug->Fill(difPtNeg,pt);
6668159e 2724
2725 fLambdaBckgDecayPos->Fill(dx,dy,pt);
2726 fLambdaBckgDecayVertex->Fill(lt,pt);
2727
2728 if(lt<1.0)
2729 fLambdaBckgDecayVertexZoom->Fill(lt,pt); //**
2730 fLambdaBckgCPA->Fill(cpa,pt); //**
2731 fLambdaBckgDCAV0Daug->Fill(dca,pt); //**
2732
b6f9da99 2733 fLambdaBckgNClustersTPC->Fill(phiPos,posTPCNcls,0);
2734 fLambdaBckgNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2735 fLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2736 fLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2737
2738 } // End QA
6668159e 2739
667b678a 2740 }// End selection in outside the mass cut
2741
2742 break; // End Lambda selection for Correlation
2743 default:
2744 Printf(" Selection of 'step' is not set properly");
2745 break;
2746
2747 }// End switch
2748
2749 } // End Lambda selection
2750
2751 // *******************
2752 // AntiLambda selection
2753 // *******************
348080d3 2754 if ( ctAL && (TMath::Abs(v0->RapLambda())<fYMax) &&
b6f9da99 2755 (nsigNegProton < fNSigma) && !isCandidate2K0s && !isCandidate2Lambda ) {
667b678a 2756
2757 switch(step) {
2758 case kTriggerCheck:
2759
2760 if (isCandidate2LambdaBar){
2761 if(pt>ptTrig) {
f25a6d07 2762 fIsV0LP = 1;
2763 fPtV0LP = pt;
667b678a 2764 }
2765
348080d3 2766 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
667b678a 2767 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d",iV0);
6668159e 2768
348080d3 2769 if(fCheckIDTrig){ // Compare properties of daughters nad
2770 Float_t difNegP[3];
b6f9da99 2771 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
348080d3 2772 Float_t difPosP[3];
b6f9da99 2773 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
348080d3 2774 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2775 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2776
2777 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d \n\t\t %d %d %d \n\t\t %lf %lf %lf \n\t\t %lf %lf %lf \n\t\t %lf %lf \n\t\t %lf %lf ",
2778 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2779 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2780 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2781 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2782 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
6668159e 2783 );
2784
348080d3 2785 // Positive daughter
2786 if( isSameTrkPosDaug==1 ){
2787 for(Int_t i=0;i<3;i++)
2788 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i,pt);
2789 fCheckIDTrigPhiAntiLambda->Fill(posDeltaPhi,0.,pt);
2790 fCheckIDTrigEtaAntiLambda->Fill(posDeltaEta,0.,pt);
2791 }
2792 // Negative daughter
2793 if( isSameTrkNegDaug==1 ){
2794 for(Int_t i=0;i<3;i++)
2795 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i+3,pt);
2796 fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
2797 fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
2798 }
6668159e 2799
348080d3 2800 } // End check ID
2801
2802 fTriggerParticles->RemoveAt(iArray);
b6f9da99 2803 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
348080d3 2804
2805 }// Close isTrigFromV0daug
667b678a 2806
348080d3 2807 }// End AntiLambda Mass cut
59e0735e 2808 break; // End AntiLambda selection for CheckTrigger
348080d3 2809 case kReconstruction:
59e0735e 2810
2811 fAntiLambdaMass->Fill(massAntiLambda,pt,0);
2812 fAntiLambdaPtvsEta->Fill(pt,lEta,0);
2813 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),0);
2814 if(centrality<10) fAntiLambdaMass->Fill(massAntiLambda,pt,1);
2815
348080d3 2816 fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
2817
2818 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
b6f9da99 2819 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
59e0735e 2820
2821 // Only for triggered events and in case of MC AntiLambda is not a embeded particle
2822 if( isTriggered && isNaturalPart ){
2823
2824 fAntiLambdaMass->Fill(massAntiLambda,pt,3);
2825 fAntiLambdaPtvsEta->Fill(pt,lEta,1);
2826 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),1);
2827
59e0735e 2828 if(centrality<10) fAntiLambdaMass->Fill(massAntiLambda,pt,4);
2829
2830 }
2831 // Invariant Mass cut
2832 if (TMath::Abs(mLambda-massAntiLambda) < 3*sLambda) {
348080d3 2833 fAntiLambdaEtaPhi->Fill(lPhi,lEta);
2834 fAntiLambdaPtvsEta->Fill(pt,lEta,2);
2835 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),2);
59e0735e 2836
2837 if(fDoQA){ // Quality Assurance
2838 fAntiLambdaPIDPosDaug->Fill(pPos,dedxPos,pt);
2839 fAntiLambdaPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2840
2841 fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2842 fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2843
2844 fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
2845 fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
2846
348080d3 2847 fAntiLambdaDifPtPosDaug->Fill(difPtPos,pt);
2848 fAntiLambdaDifPtNegDaug->Fill(difPtNeg,pt);
59e0735e 2849
2850 fAntiLambdaDecayPos->Fill(dx,dy,pt);
2851 fAntiLambdaDecayVertex->Fill(lt,pt);
2852
2853 if(lt<1.0)
2854 fAntiLambdaDecayVertexZoom->Fill(lt,pt); //**
2855 fAntiLambdaCPA->Fill(cpa,pt); //**
2856 fAntiLambdaDCAV0Daug->Fill(dca,pt); //**
2857
b6f9da99 2858 fAntiLambdaNClustersTPC->Fill(phiPos,posTPCNcls,0);
2859 fAntiLambdaNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2860 fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2861 fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2862
2863
59e0735e 2864 } //End QA
2865
59e0735e 2866 } // End selection in mass
2867
2868 if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sLambda) < 1.5*sLambda) ||
2869 (TMath::Abs(mLambda-massAntiLambda - 6.5*sLambda) < 1.5*sLambda) ){
348080d3 2870
2871 fAntiLambdaEtaPhi->Fill(lPhi,lEta,-1);
59e0735e 2872
2873 if(fDoQA){ // Quality Assurance
2874 fAntiLambdaBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2875 fAntiLambdaBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2876
2877 fAntiLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2878 fAntiLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2879
2880 fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
2881 fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
2882
348080d3 2883 fAntiLambdaBckgDifPtPosDaug->Fill(difPtPos,pt);
2884 fAntiLambdaBckgDifPtNegDaug->Fill(difPtNeg,pt);
59e0735e 2885
2886 fAntiLambdaBckgDecayPos->Fill(dx,dy,pt);
2887 fAntiLambdaBckgDecayVertex->Fill(lt,pt);
2888
2889 if(lt<1.0)
2890 fAntiLambdaBckgDecayVertexZoom->Fill(lt,pt); //**
2891 fAntiLambdaBckgCPA->Fill(cpa,pt); //**
2892 fAntiLambdaBckgDCAV0Daug->Fill(dca,pt); //**
2893
b6f9da99 2894 fAntiLambdaBckgNClustersTPC->Fill(phiPos,posTPCNcls,0);
2895 fAntiLambdaBckgNClustersTPC->Fill(phiNeg,negTPCNcls,2);
2896 fAntiLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2897 fAntiLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2898
59e0735e 2899 } // End QA
59e0735e 2900
59e0735e 2901 }// End selection in outside the mass cut
667b678a 2902 break;
2903 default:
2904 Printf( " Selection of 'step' is not set properly");
2905 break;
2906 }// End switch
2907
2908 } // End AntiLambda selection
2909
2910 } // End V0 loop
2911
667b678a 2912}
2913
2914//___________________________________________________________________________________________
2915
f25a6d07 2916void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
667b678a 2917{
348080d3 2918 // Obtain the trigger particles of the event to perform the correlations in phi and eta
667b678a 2919
2920 // ----------------------------
348080d3 2921 // 1. Trigger particles
b6f9da99 2922 TClonesArray *stack = 0x0;
2923 if(fIsMC){
2924 TList *lst = fAOD->GetList();
2925 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
2926 if (!stack) {
2927 Printf("ERROR: stack not available");
2928 return;
2929 }
2930 }
2931
667b678a 2932 Int_t nTrk= fAOD->GetNumberOfTracks();
348080d3 2933 AliCentrality *cent = fAOD->GetCentrality();
2934 Float_t centrality = cent->GetCentralityPercentile("V0M");
2935 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
2936 Float_t zv=vtx->GetZ();
667b678a 2937
348080d3 2938 for (Int_t i=0; i<nTrk; i++) {
667b678a 2939 AliAODTrack *t = fAOD->GetTrack(i);
59e0735e 2940 if(!AcceptTrack(t)) continue;
348080d3 2941 Double_t pt=t->Pt();
2942 Double_t eta=t->Eta();
b6f9da99 2943 Double_t phi=t->Phi();
348080d3 2944
b6f9da99 2945 if( (pt>fTrigPtMin) && (pt<fTrigPtMax) && (TMath::Abs(eta)<fTrigEtaMax) ) {
2946 fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );
2947
2948 if(fIsMC){
2949 Int_t lab = TMath::Abs(t->GetLabel());
2950 AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
2951
2952 Float_t resPt = (part->Pt() - pt)/pt;
2953 Float_t resEta = part->Eta() - eta;
2954 Float_t resPhi = part->Phi() - phi;
2955
2956 fTriggerMCResPt->Fill(resPt,pt,centrality);
2957 fTriggerMCResEta->Fill(resEta,pt,centrality);
2958 fTriggerMCResPhi->Fill(resPhi,pt,centrality);
2959 }
2960
2961 }
667b678a 2962 }
2963
667b678a 2964 // ----------------------------
667b678a 2965 // 2. Checking if the trigger particle
2966 // might be a daughter from the V0-candidate
348080d3 2967 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
2968 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
2969 Int_t id = trig->ID();
2970 V0Loop(kTriggerCheck,kFALSE,i,id);
667b678a 2971 }
348080d3 2972
667b678a 2973}
2974
2975//___________________________________________________________________________________________
2976
2977void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
2978{
f25a6d07 2979 // Main loop for the Analysis
2980
2981 // Initializing global variables for the correlation studies (mandatory for each event).
2982 // ---- 1) Trigger Particle: id track
2983 fIdTrigger = -1;
2984 // ---- 2) TriggerCheck: Variables used to crosscheck if trigger particle is a V0 daughter ---- //
f25a6d07 2985 fIsV0LP = 0;
2986 fPtV0LP = -10.;
2987 fIsSndCheck = 0;
2988
2989 // Getting AOD Event
667b678a 2990 fAOD = (AliAODEvent *)InputEvent();
2991 fEvents->Fill(0); //event counter
2992
2993 if (!fAOD) {
2994 Printf("ERROR: aod not available");
2995 return;
2996 }
2997 fEvents->Fill(1);
2998
2999 // Physics selection
3000 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
3001 AliInputEventHandler *hdr=(AliInputEventHandler*)mgr->GetInputEventHandler();
3002 UInt_t maskIsSelected = hdr->IsEventSelected();
348080d3 3003 Bool_t isSelected = kFALSE;
3004
b6f9da99 3005 if( fCollision.Contains("PbPb2010") )
348080d3 3006 isSelected = (maskIsSelected & AliVEvent::kMB);
b6f9da99 3007 else if( fCollision.Contains("PbPb2011") ){
3008 Bool_t isSelectedCentral = maskIsSelected & AliVEvent::kCentral;
3009 Bool_t isSelectedSemiCentral = maskIsSelected & AliVEvent::kSemiCentral;
3010 Bool_t isSelectedMB = maskIsSelected & AliVEvent::kMB;
3011 if( isSelectedCentral || isSelectedSemiCentral || isSelectedMB ) isSelected = kTRUE;
348080d3 3012 }
3013
3014 if(!isSelected) return;
667b678a 3015 fEvents->Fill(2);
3016
3017 // Centrality selection
3018 AliCentrality *cent = fAOD->GetCentrality();
b6a9eae2 3019 Float_t centrality = cent->GetCentralityPercentile("V0M");
667b678a 3020 fCentrality->Fill(centrality);
3021
3022 if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
3023 fEvents->Fill(3);
3024
3025 // Primary vertex
3026 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
3027 if (vtx->GetNContributors()<3) return;
3028 fEvents->Fill(4);
3029
b6a9eae2 3030 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
667b678a 3031
3032 fPrimaryVertexX->Fill(xv);
3033 fPrimaryVertexY->Fill(yv);
3034 fPrimaryVertexZ->Fill(zv);
3035
3036 if (TMath::Abs(zv) > 10.) return;
3037 fEvents->Fill(5);
3038
348080d3 3039 // Getting PID Response
3040 fPIDResponse = hdr->GetPIDResponse();
667b678a 3041
348080d3 3042 Int_t curVtxBin = VtxBin(zv);
3043 Int_t curCentBin = CentBin(centrality);
667b678a 3044
348080d3 3045 // **********************************************
3046 // Triggered Particle - Trigger Particle
3047 fTriggerParticles = new TObjArray();
3048 fTriggerParticles->SetOwner(kTRUE);
3049 TriggerParticle();
3050
3051 // V0-candidate is the highest particle in the event:
3052 if(fIsV0LP) { fEvents->Fill(8); fTriggerIsV0->Fill(fPtV0LP);}
667b678a 3053
348080d3 3054 Int_t NtrigPerEvnt = 0;
3055 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
3056 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
3057
3058 if(trig->WhichCandidate()==0){
3059 fEvents->Fill(10);
3060 fTriggerComingFromDaug->Fill(trig->Pt());
3061 fCheckTriggerFromV0Daug->Fill(1);
3062 if(fIsV0LP) fCheckTriggerFromV0Daug->Fill(2);
3063 }
3064 else if( trig->WhichCandidate()==1){
3065 fEvents->Fill(12);
3066 fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
3067 fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
3068 fCheckTriggerFromV0Daug->Fill(0);
3069 NtrigPerEvnt++;
667b678a 3070 }
3071
3072 }
348080d3 3073
b6f9da99 3074 fNTrigPerEvt->Fill(NtrigPerEvnt,centrality);
59e0735e 3075
667b678a 3076 // ******************************************
3077 // Start loop over MC particles
3078
b6f9da99 3079 fTriggerPartMC = new TObjArray();
3080 fTriggerPartMC->SetOwner(kTRUE);
3081 fAssocPartMC = new TObjArray();
3082 fAssocPartMC->SetOwner(kTRUE);
3083
59e0735e 3084 fEndOfHijingEvent = -1;
667b678a 3085 TClonesArray *stack = 0x0;
b6a9eae2 3086 Float_t mcXv=0., mcYv=0., mcZv=0.;
667b678a 3087
3088 if(fIsMC) {
3089
3090 TList *lst = fAOD->GetList();
3091 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
3092 if (!stack) {
3093 Printf("ERROR: stack not available");
3094 return;
3095 }
3096
3097 AliAODMCHeader *mcHdr =
3098 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
3099
3100 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
3101
3102 Int_t nTrkMC = stack->GetEntriesFast();
3103 // -----------------------------------------
3104 // --------- Trigger particle --------------
3105 // -----------------------------------------
667b678a 3106 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
3107
3108 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
3109 if(!p0) continue;
b6f9da99 3110 if(p0->Charge()==0) continue;
3111 if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
3112 if( ( p0->Pt() < fTrigPtMin ) || ( p0->Pt() > fTrigPtMax ) ) continue;
667b678a 3113
3114 // ----------------------------------------
3115
3116 // For injected MC: determine where HIJING event ends
3117 if (fEndOfHijingEvent==-1) {
3118 if ( ( p0->GetStatus() == 21 ) ||
3119 ( (p0->GetPdgCode() == 443) &&
3120 (p0->GetMother() == -1) &&
3121 (p0->GetDaughter(0) == (iTrkMC+1))) ) {
3122 fEndOfHijingEvent = iTrkMC;
3123 }
3124 }
3125
3126 // ----------------------------------------
3127
3128 Int_t isNaturalPart = 1;
3129 if ( (iTrkMC>=fEndOfHijingEvent) &&
3130 (fEndOfHijingEvent!=-1) &&
3131 (p0->GetMother()<0) )
3132 isNaturalPart = 0;
3133
3134 // ----------------------------------------
b6f9da99 3135
667b678a 3136 if(isNaturalPart == 0) continue;
3137 if( !p0->IsPhysicalPrimary() ) continue;
3138
b6f9da99 3139 fTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 1) );
667b678a 3140
b6f9da99 3141 } // End loop over charged particles
667b678a 3142
3143
3144 // -----------------------------------------
3145 // ---------- Strange particles ------------
3146 // -----------------------------------------
59e0735e 3147 fEndOfHijingEvent = -1;
667b678a 3148 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
3149
3150 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
3151 if(!p0) continue;
b6f9da99 3152
667b678a 3153 // ----------------------------------------
3154
3155 Int_t lPdgcodeCurrentPart = p0->GetPdgCode();
3156 if ( (lPdgcodeCurrentPart != kK0Short) &&
3157 (lPdgcodeCurrentPart != kLambda0) &&
3158 (lPdgcodeCurrentPart != kLambda0Bar) ) continue;
3159
3160 // ----------------------------------------
3161
3162 Int_t isNaturalPart = 1;
3163 if ( (iTrkMC>=fEndOfHijingEvent) &&
3164 (fEndOfHijingEvent!=-1) &&
3165 (p0->GetMother()<0) )
3166 isNaturalPart = 0;
3167
3168 fInjectedParticles->Fill(isNaturalPart);
3169
59e0735e 3170 if(fSeparateInjPart && !isNaturalPart) continue;
667b678a 3171
3172 // ----------------------------------------
3173
b6a9eae2 3174 Float_t lRapCurrentPart = MyRapidity(p0->E(),p0->Pz());
3175 Float_t lEtaCurrentPart = p0->Eta();
3176 Float_t lPhiCurrentPart = p0->Phi();
3177 Float_t lPtCurrentPart = p0->Pt();
667b678a 3178
3179 Int_t iCurrentMother = p0->GetMother();
3180 AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
3181 Int_t lPdgCurrentMother = 0;
3182 if (iCurrentMother == -1) { lPdgCurrentMother = 0;}
3183 else { lPdgCurrentMother = pCurrentMother->GetPdgCode(); }
3184
3185 Int_t id0 = p0->GetDaughter(0);
3186 Int_t id1 = p0->GetDaughter(1);
3187
3188 //if ( id0 == id1 ) continue;
3189 if ( (id0 < 0 || id1 < 0) ||
3190 (id0 >=nTrkMC || id1 >= nTrkMC) ) continue;
3191
3192 AliAODMCParticle *pDaughter0 = (AliAODMCParticle *)stack->UncheckedAt(id0);
3193 AliAODMCParticle *pDaughter1 = (AliAODMCParticle *)stack->UncheckedAt(id1);
3194 if (!pDaughter0 || !pDaughter1) continue;
3195
3196 if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
3197 TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
3198 continue;
3199
3200 // Daughter momentum cut: ! FIX it in case of AOD !
3201 if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
3202 ( pDaughter1->Pt() < fMinPtDaughter ) )
3203 continue;
3204
3205 if ((p0->Pt())<pMin) continue;
3206 if (TMath::Abs(lRapCurrentPart) > fYMax) continue;
3207
b6a9eae2 3208 Float_t dx = mcXv-p0->Xv(), dy = mcYv-p0->Yv(), dz = mcZv-p0->Zv();
3209 Float_t l = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
667b678a 3210
3211 //Cut in the 3D-distance of the secondary vertex to primary vertex
3212 if (l > 0.01) continue; // secondary V0
3213
3214 //Transverse distance to vertex
3215 dx = mcXv-pDaughter0->Xv(); dy = mcYv-pDaughter0->Yv();
b6f9da99 3216 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
667b678a 3217
3218 // K0s
3219 if (lPdgcodeCurrentPart == kK0Short) {
59e0735e 3220
667b678a 3221 fK0sMCPt->Fill(lPtCurrentPart);
b6a9eae2 3222 fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
b6f9da99 3223 if(lt>5) fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
667b678a 3224
b6f9da99 3225 fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
667b678a 3226
b6f9da99 3227 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3228 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
667b678a 3229
3230 } // End K0s selection
3231
3232 // Lambda
3233 if (lPdgcodeCurrentPart == kLambda0) {
59e0735e 3234
667b678a 3235 fLambdaMCPt->Fill(lPtCurrentPart);
b6a9eae2 3236 fLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
b6f9da99 3237 if(lt>5) fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
59e0735e 3238
b6f9da99 3239 fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
667b678a 3240
b6f9da99 3241 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3242 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
667b678a 3243
3244 } // End Lambda
3245 // AntiLambda
667b678a 3246 if (lPdgcodeCurrentPart == kLambda0Bar) {
667b678a 3247
3248 fAntiLambdaMCPt->Fill(lPtCurrentPart);
59e0735e 3249 fAntiLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
b6f9da99 3250 if(lt>5) fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
667b678a 3251
b6f9da99 3252 fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
59e0735e 3253
b6f9da99 3254 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3255 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
59e0735e 3256
3257 } // End AntiLambda
3258
667b678a 3259 } // End loop over MC
3260
b6f9da99 3261 // -----------------------------------------
3262 // ---------- MC Correlations --------------
3263 // -----------------------------------------
3264
3265 Float_t triggerMCPt = -1000.;
3266 Float_t triggerMCPhi = -1000.;
3267 Float_t triggerMCEta = -1000.;
3268
3269 Float_t dPhiMC = -100.;
3270 Float_t dEtaMC = -100.;
3271
3272 for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
b6f9da99 3273 AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
3274
3275 triggerMCPt = trigMC->Pt();
3276 triggerMCPhi = trigMC->Phi();
3277 triggerMCEta = trigMC->Eta();
3278
3279 fTriggerMCPtCent->Fill(triggerMCPt,centrality);
3280
3281 for(Int_t jj=0; jj<(fAssocPartMC->GetEntriesFast()); jj++){
3282
1e9b7523 3283 AliMiniParticle* assocMC = (AliMiniParticle*) fAssocPartMC->At(jj);
b6f9da99 3284 if(assocMC->Pt()>triggerMCPt) continue;
3285
3286 dPhiMC = dPHI(triggerMCPhi,assocMC->Phi());
3287 dEtaMC = triggerMCEta - assocMC->Eta();
3288
3289 // Pt bin
3290 for(Int_t k=0;k<kN1;k++)
3291 if( (assocMC->Pt()>kPtBinV0[k]) && (assocMC->Pt()<kPtBinV0[k+1]) ){
3292 if(assocMC->WhichCandidate()==3)
3293 fK0sdPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3294 if(assocMC->WhichCandidate()==4)
3295 fLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3296 if(assocMC->WhichCandidate()==5)
3297 fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3298 } // End pt bin
3299
3300 } // End loop over trigger particles
3301
3302 } // End loop over trigger particles
3303
667b678a 3304 } // End MC condition
f25a6d07 3305
348080d3 3306
667b678a 3307 // *************************************************
3308 // V0 loop - AOD
348080d3 3309 fAssocParticles = new TObjArray();
3310 fAssocParticles->SetOwner(kTRUE);
3311 if(NtrigPerEvnt>0)
3312 V0Loop(kReconstruction,kTRUE,-1,-1);
3313 else
3314 V0Loop(kReconstruction,kFALSE,-1,-1);
3315
3316
3317 //-------------------------------------------------------------
3318 // Correlations
3319 //-------------------------------------------------------------
3320 Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
3321 Float_t massK0s=0., mK0s=0., sK0s=0.;
3322 Float_t massL=0., mL=0., sL=0.;
3323 Float_t massAL=0.; //, mAL=0., sAL=0.;
3324 Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
3325 Float_t lPhi=0., lEta=0.;
3326 Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
3327 Float_t dx=-100., dy=-100., dz=-100., lt=-100., res=-100.;
3328 Float_t dlK=-100., dlL=-100.;
3329 Float_t dPhi=-100., dEta=-100., radio=-100.;
3330
3331
3332 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
3333 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
3334 if( trig->WhichCandidate() == 0 ) continue;
3335
3336 AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
3337 ptTrig = tTrig->Pt(); pxTrig = tTrig->Px(); pyTrig = tTrig->Py();
3338
3339 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
3340 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
3341 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
3342 const AliAODTrack *ntrack=(AliAODTrack *)tAssoc->GetDaughter(1);
3343 const AliAODTrack *ptrack=(AliAODTrack *)tAssoc->GetDaughter(0);
3344
3345 if( SameTrack(tTrig,ntrack) || SameTrack(tTrig,ptrack) )
3346 continue;
667b678a 3347
b6f9da99 3348 if( ptTrig < trackAssocME->Pt() ) continue;
3349
348080d3 3350 lPhi = trackAssocME->Phi();
3351 lEta = trackAssocME->Eta();
3352
3353 // Correlation in deltaPhi & deltaEta
3354 dPhi = dPHI(trig->Phi(),lPhi);
3355 dEta = trig->Eta() - lEta;
3356 radio = TMath::Sqrt(dPhi*dPhi + dEta*dEta);
3357
3358 // Armenteros variables:
3359 lAlphaV0 = tAssoc->AlphaV0();
3360 lPtArmV0 = tAssoc->PtArmV0();
3361
3362 // 2D momentum
3363 pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py();
3364 // Decay vertex
3365 Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
3366 dx=xyz[0]-xv; dy=xyz[1]-yv; dz=xyz[2]-zv;
3367 // Decay length: 2D
3368 lt=TMath::Sqrt(dx*dx + dy*dy);
3369 // Spatial resolution trigger-V0 point decay
3370 res = SpatialResolution(pxTrig,pyTrig,pxAssoc,pyAssoc,lt);
3371 // Ctau
3372 dlK = 0.4977*lt/pt;
3373 dlL = 1.1157*lt/pt;
3374
3375 Int_t binPtv0 = PtBin( pt );
3376 if(binPtv0==-1) continue;
3377
b6f9da99 3378 Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
3379 Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
348080d3 3380
3381 // *******************
3382 // Gamma conversion
3383 // *******************
3384 if( trackAssocME->WhichCandidate() == 2 )
3385 fGammaConversiondPhidEta[curCentBin]->Fill(dPhi,dEta,zv);
3386
3387 // *******************
3388 // K0s selection
3389 // *******************
3390 if( trackAssocME->WhichCandidate() == 3 ){
3391
3392 massK0s = tAssoc->MassK0Short();
3393 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
3394 sK0s = 0.0044 + (0.008-0.0044)/(10-1)*(pt - 1.);
3395
3396 // ==== Correlations K0s invariant mass peak ==== //
3397 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
3398
b6f9da99 3399 // Only fills the histograms when it is a triggered event
3400 if(j==0){
348080d3 3401 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,0);
3402 fK0sPtvsEta->Fill(pt,lEta,3);
3403 fK0sPtvsRap->Fill(pt,tAssoc->RapK0Short(),3);
b6f9da99 3404 }
348080d3 3405
b6f9da99 3406 // Pt bin & centrality
3407 fK0sdPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3408
3409 if(radio<0.1)
3410 fK0sSpatialRes->Fill(dPhi,res,lt);
3411 if(radio < 0.4){
3412 fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3413 RecCascade(tTrig,ntrack,ptrack,"K0s");
3414 RecCascade(tTrig,ptrack,ntrack,"K0s");
3415 }
348080d3 3416
3417
3418 }
3419 // ==== Correlations K0s background ==== //
3420 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
3421 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
3422
b6f9da99 3423 // Only fills the histograms when it is a triggered event
3424 if(j==0){
3425 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,1);
3426 // MC Association of daughter particles
3427 fK0sBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3428 fK0sBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3429 }
348080d3 3430
3431 // Pt bin & centrality
3432 fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
b6f9da99 3433
348080d3 3434 if(radio < 0.4){ // Under the correlation peak
3435 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
3436 fK0sBckgDecLength->Fill(dlK,ptTrig);
3437 fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3438 fK0sBckgEtaPhi->Fill(lPhi,lEta);
3439 fK0sBckgPhiRadio->Fill(lPhi,lt);
3440
348080d3 3441 //RecCascade(trkTrig,ntrack,ptrack,"K0s");
3442 //RecCascade(trkTrig,ptrack,ntrack,"K0s");
3443
3444 }// End selection in the correlation peak
3445
3446 } // End background selection
3447
3448 } // End K0s selection
3449
3450 // *******************
3451 // Lambda selection
3452 // *******************
3453 if( trackAssocME->WhichCandidate() == 4 ){
3454 massL = tAssoc->MassLambda();
3455 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3456 sL = 0.0023 + (0.004-0.0023)/(6-1)*(pt-1);
3457
3458 // ==== Correlations Lambda invariant mass peak ==== //
3459 if (TMath::Abs(mL-massL) < 3*sL) {
3460
b6f9da99 3461 // Only fills the histograms when it is a triggered event
3462 if(j==0){
348080d3 3463 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,2);
3464 fLambdaPtvsEta->Fill(pt,lEta,3);
3465 fLambdaPtvsRap->Fill(pt,tAssoc->RapLambda(),3);
b6f9da99 3466 }
3467
3468 // Pt bin & centrality
3469 fLambdadPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
348080d3 3470
b6f9da99 3471 if(radio<0.1)
3472 fLambdaSpatialRes->Fill(dPhi,res,lt);
3473 if(radio < 0.4){
3474 fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3475 RecCascade(tTrig,ntrack,ptrack,"Lambda");
3476 RecCascade(tTrig,ptrack,ntrack,"Lambda");
3477 }
348080d3 3478
3479 } // End mass peak selection
3480 // ==== Correlations Lambda background ==== //
3481 if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
3482 TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
3483
b6f9da99 3484 // Only fills the histograms when it is a triggered event
3485 if(j==0){
348080d3 3486 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
b6f9da99 3487 // MC Association of daughter particles
3488 fLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3489 fLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3490 }
3491
3492 // Pt bin & centrality
3493 fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
348080d3 3494
b6f9da99 3495 if(radio < 0.4){ // Under the peak
3496 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
3497 fLambdaBckgDecLength->Fill(dlL,ptTrig);
3498 fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3499 fLambdaBckgEtaPhi->Fill(lPhi,lEta);
3500 fLambdaBckgPhiRadio->Fill(lPhi,lt);
348080d3 3501
b6f9da99 3502 //RecCascade(trkTrig,ntrack,ptrack,"Lambda");
3503 //RecCascade(trkTrig,ptrack,ntrack,"Lambda");
348080d3 3504
b6f9da99 3505 }// End selection in the correlation peak
348080d3 3506
3507 } // End bacground selection
3508
3509 }// End Lambda selection
3510 // *******************
3511 // AntiLambda selection
3512 // *******************
3513 if( trackAssocME->WhichCandidate() == 5 ){
3514 massAL = tAssoc->MassAntiLambda();
3515 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3516 sL = 0.0023 + (0.004-0.0023)/(6-1)*(pt-1);
3517
3518 // ==== Correlations AntiLambda invariant mass peak ==== //
3519 if (TMath::Abs(mL-massAL) < 3*sL) {
3520
b6f9da99 3521 // Only fills the histograms when it is a triggered event
3522 if(j==0){
3523 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,4);
3524 fAntiLambdaPtvsEta->Fill(pt,lEta,3);
3525 fAntiLambdaPtvsRap->Fill(pt,tAssoc->RapLambda(),3);
3526 }
3527
348080d3 3528 // Pt bin & centrality
3529 fAntiLambdadPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3530
3531 if(radio<0.1)
3532 fAntiLambdaSpatialRes->Fill(dPhi,res,lt);
3533 if(radio < 0.4){
3534 fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3535 RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
3536 RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
3537 }
3538
3539 } // End AntiLambda mass peak
3540 // ==== Correlations AntiLambda background ==== //
3541 if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
3542 (TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
b6f9da99 3543
3544 // Only fills the histograms when it is a triggered event
3545 if(j==0){
348080d3 3546 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
b6f9da99 3547 // MC Association of daughter particles
3548 fAntiLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3549 fAntiLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3550 }
348080d3 3551
b6f9da99 3552 // Pt bin & centrality
3553 fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
348080d3 3554
b6f9da99 3555 if(radio < 0.4){ // Under the peak
3556 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
3557 fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
3558 fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3559 fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
3560 fAntiLambdaBckgPhiRadio->Fill(lPhi,lt);
348080d3 3561
b6f9da99 3562 //RecCascade(trkTrig,ntrack,ptrack,"AntiLambda");
3563 //RecCascade(trkTrig,ptrack,ntrack,"AntiLambda");
348080d3 3564
b6f9da99 3565 }// End selection in the correlation peak
348080d3 3566
3567 }// End AntiLambda background
3568
3569 } // End AntiLambda selection
3570
3571 } // End loop over associated particles
3572
3573 } // End loop over trigger particles
3574
3575 //-------------------------------------------------------------
3576 // Mixing
3577 //-------------------------------------------------------------
3578
3579 TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
3580 Int_t nMixed = evMixList->GetSize();
3581
3582 if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
3583
3584 for(Int_t ii=0; ii<nMixed; ii++){
3585
3586 AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
3587 Double_t phiTrigME = trackTriggerME->Phi();
3588 Double_t etaTrigME = trackTriggerME->Eta();
3589
3590 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
3591
3592 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
3593 if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
3594 if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
3595 if( trackAssocME->WhichCandidate() == 2 ) continue;
3596
3597 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
3598 pt = tAssoc->Pt();
3599
3600 Bool_t IsSelected = kFALSE;
3601 // K0s
3602 if( trackAssocME->WhichCandidate() == 3 ){
3603 massK0s = tAssoc->MassK0Short();
3604 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
3605 sK0s = 0.0044 + (0.008-0.0044)/(10-1)*(pt - 1.);
3606 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
3607 }
3608 // Lambda
3609 if( trackAssocME->WhichCandidate() == 4 ){
3610 massL = tAssoc->MassLambda();
3611 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3612 sL = 0.0023 + (0.004-0.0023)/(6-1)*(pt-1);
3613 if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
3614 }
3615 // AntiLambda
3616 if( trackAssocME->WhichCandidate() == 5 ){
3617 massAL = tAssoc->MassAntiLambda();
3618 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3619 sL = 0.0023 + (0.004-0.0023)/(6-1)*(pt-1);
3620 if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
3621 }
3622
3623 if(!IsSelected) continue;
3624
3625 Double_t phiAssocME = trackAssocME->Phi();
3626 Double_t etaAssocME = trackAssocME->Eta();
3627
3628 Double_t deltaPhi = dPHI(phiTrigME,phiAssocME);
3629 Double_t deltaEta = etaTrigME - etaAssocME;
3630
3631 Int_t binPtv0 = PtBin( trackAssocME->Pt() );
3632 if(binPtv0==-1) continue;
3633
3634 if( trackAssocME->WhichCandidate() == 3 ) {
b6f9da99 3635 fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
348080d3 3636 else if( trackAssocME->WhichCandidate() == 4 )
3637 fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
3638 else if( trackAssocME->WhichCandidate() == 5 )
3639 fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
3640
3641 }
3642
3643 }
3644
3645 }
3646
3647 //--------------------------------------------------------
3648 //Add the current event to the list of events for mixing
3649 //--------------------------------------------------------
3650
3651 //Add current event to buffer and Remove redundant events
3652 if(fTriggerParticles->GetEntriesFast()>=0){
3653
3654 for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
3655 AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
3656 //cout << trkTrig->Pt() << " " << ii << endl;
3657
3658 evMixList->AddFirst(trkTrig);
3659 if(evMixList->GetSize() >= nMaxEvMix) {
3660 AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
3661 evMixList->RemoveLast();
3662 delete tmp;
3663 }
3664
3665 }// End loop over fTriggerParticles
3666
3667 }// End adding trigger particles to buffers
3668
b6f9da99 3669 }
667b678a 3670
3671//___________________________________________________________________________________________
3672
3673void AliAnalysisTaskLambdaOverK0sJets::Terminate(Option_t *)
3674{
3675 // The Terminate() function is the last function to be called during
3676 // a query. It always runs on the client, it can be used to present
3677 // the results graphically or save the results to file.
3678
3679 fOutput=(TList*)GetOutputData(1);
348080d3 3680 fOutputME=(TList*)GetOutputData(2);
3681 fOutputQA=(TList*)GetOutputData(3);
3682
3683 if (fOutput || fOutputME || fOutputQA) {
3684
3685 if(fOutput)
3686 Printf("\n\t *** DONE: fOutput available *** \n");
3687 if(fOutputME)
3688 Printf("\n\t *** DONE: fOutputME available *** \n");
3689 if (fOutputQA)
3690 Printf("\n\t *** DONE: fOutputQA available *** \n");
667b678a 3691 }
348080d3 3692 if (!fOutput || !fOutputME || !fOutputQA) {
3693
3694 if(!fOutput)
3695 Printf("\n\t *** ERROR: fOutput not available *** \n");
3696 if(!fOutputME)
3697 Printf("\n\t *** ERROR: fOutputME available *** \n");
3698 if(!fOutputQA)
3699 Printf("\n\t *** ERROR: fOutputQA not available *** \n");
667b678a 3700 }
348080d3 3701
3702
3703 return;
3704
667b678a 3705}