1 /*************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: X. Sanchez Castro *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
23 #include <TDatabasePDG.h>
24 #include <TClonesArray.h>
27 #include "AliOADBContainer.h"
29 #include "AliAODMCHeader.h"
30 #include "AliAODMCParticle.h"
31 #include "AliGenHijingEventHeader.h"
33 #include "AliAODEvent.h"
35 #include "AliAODcascade.h"
37 #include "AliCFContainer.h"
38 #include "AliCentrality.h"
41 #include "AliPIDResponse.h"
42 #include "AliAODPid.h"
44 #include "AliInputEventHandler.h"
45 #include "AliAnalysisManager.h"
47 #include "AliAnalysisTaskLambdaOverK0sJets.h"
52 ClassImp(AliAnalysisTaskLambdaOverK0sJets)
53 ClassImp(AliMiniParticle)
56 static Int_t nbins = 100; // Number of bins for l, pt, mass for V0
57 static Int_t nbinsPhi = 120; // Number of bins for Phi
58 static Int_t nbinsdPhi = 20; // Number of bins for dPhi
59 static Int_t nbinsdEta = 30; // Number of bins for dEta
60 static Int_t nbinPtLP = 200;
61 static Int_t nbinsVtx = 20;
63 static Float_t pMin = 0.0; // Lower cut for transverse momentum
64 static Float_t pMax = 10.; // Max cut for transverse momentum for V0
65 static Float_t ptMaxLP = 50.; // Max cut for transverse momentum LP
67 static Float_t lMin = 0.0; // Limits in the histo for fidutial volume
68 static Float_t lMax = 100.; // Limits in the fidutial volume
70 static Int_t nMaxEvMix = 250;
76 AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
77 AliAnalysisTaskSE(name),
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),
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),
83 fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fCentrality(0), fCentrality2(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0), fCentMult(0), fdEdx(0), fdEdxPid(0),
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),
87 fK0sMCPt(0), fK0sMCPtRap(0),fK0sMCPtRap2(0), fK0sMCPtRapEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtMassArm(0), fK0sAssocPtArmEmbeded(0), fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaMCPtRapEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocPtMass(0), fLambdaAssocPtRapEmbeded(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocPtMass(0), fAntiLambdaAssocPtRapEmbeded(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0),
89 fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
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),
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),
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),
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),
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),
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)
107 for (Int_t i=0; i<kNCent; i++){
109 fK0sMCPtPhiEta[i] = 0;
110 fK0sAssocPtPhiEta[i] = 0;
113 fLambdaMCPtPhiEta[i] = 0;
114 fLambdaAssocPtPhiEta[i] = 0;
117 fAntiLambdaMCPtPhiEta[i] = 0;
118 fAntiLambdaAssocPtPhiEta[i] = 0;
121 for (Int_t i=0; i<kNCent*kN1; i++){
123 fK0sdPhidEtaMC[i] = 0;
125 fLambdadPhidEtaMC[i] = 0;
127 fAntiLambdadPhidEtaMC[i] = 0;
131 for (Int_t i=0; i<(kNCent*kN1*kNVtxZ); i++){
133 fK0sdPhidEtaPtL[i] = 0;
134 //fK0sdPhidEtaPtLBckg[i] = 0;
136 fLambdadPhidEtaPtL[i] = 0;
137 //fLambdadPhidEtaPtLBckg[i] = 0;
139 fAntiLambdadPhidEtaPtL[i] = 0;
140 //fAntiLambdadPhidEtaPtLBckg[i] = 0;
145 for (Int_t i=0; i<kNCent; i++)
146 fGammaConversiondPhidEta[i] = 0;
148 // Mixed events distributions
149 for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){
150 fK0sdPhidEtaME[i] = 0;
151 fLambdadPhidEtaME[i] = 0;
152 fAntiLambdadPhidEtaME[i] = 0;
155 // Constructor. Initialization of pointers
156 DefineOutput(1, TList::Class());
157 DefineOutput(2, TList::Class());
158 DefineOutput(3, TList::Class());
163 //___________________________________________________________________________________________
165 AliAnalysisTaskLambdaOverK0sJets::~AliAnalysisTaskLambdaOverK0sJets()
171 for(Int_t icent=0; icent<kNCent; icent++){
172 for(Int_t iz=0; iz<kNVtxZ; iz++){
173 fMEList[icent*kNVtxZ+iz]->Delete(); delete fMEList[icent*kNVtxZ+iz];
176 delete[] fMEList; fMEList=0x0;
179 if(fTriggerParticles) {
180 delete fTriggerParticles;
181 fTriggerParticles=0x0;
185 delete fTriggerPartMC;
189 if(fAssocParticles) {
190 delete fAssocParticles;
202 //___________________________________________________________________________________________
204 void AliAnalysisTaskLambdaOverK0sJets::UserCreateOutputObjects()
206 // Creating the histograms that are needed for the output
208 fOutput = new TList();
211 fOutputQA = new TList();
212 fOutputQA->SetOwner();
214 fOutputME = new TList();
215 fOutputME->SetOwner();
217 fMEList = new TList*[kNCent*kNVtxZ];
218 for(Int_t icent=0; icent<kNCent; icent++){
219 for(Int_t iz=0; iz<kNVtxZ; iz++){
220 fMEList[icent*kNVtxZ+iz] = new TList();
221 fMEList[icent*kNVtxZ+iz]->SetOwner(kFALSE);
227 // ====== General characteristics of the event and tracks ====== //
229 // Counter for the number of events in each step:
230 fEvents=new TH1F("fEvents","Number of events",14,-0.5,13.5);
231 fEvents->GetXaxis()->SetBinLabel(1,"calls to UserExec()");
232 fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
233 fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
234 fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
235 fEvents->GetXaxis()->SetBinLabel(5,"Vtx > 3 part");
236 fEvents->GetXaxis()->SetBinLabel(6,"|VtxZ| < 10 cm");
237 fEvents->GetXaxis()->SetBinLabel(7,"Mult && Cent");
238 fEvents->GetXaxis()->SetBinLabel(8,"Bad ID Trigger");
239 fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
240 fEvents->GetXaxis()->SetBinLabel(10,"Trigger is V0 daug");
241 fEvents->GetXaxis()->SetBinLabel(11,"Trigger is V0 daug && 2nd check");
242 fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
243 fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
244 fEvents->GetXaxis()->SetBinLabel(14,"V0 is LP in MC");
245 fEvents->GetYaxis()->SetTitle("Counts");
246 fOutput->Add(fEvents);
249 fCentrality = new TH1F("fCentrality","Centrality;Centrality (%);Events",100,0.,100.);
250 fOutput->Add(fCentrality);
252 fCentrality2 = new TH1F("fCentrality2","Centrality in events with |VtxZ|<10 cm;Centrality (%);Events",100,0.,100.);
253 fOutput->Add(fCentrality2);
256 fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
257 fOutput->Add(fPrimaryVertexX);
259 fPrimaryVertexY = new TH1F("fPrimaryVertexY", "Primary Vertex Position Y;Primary Vertex Position Y (cm);Events",100,-0.5,0.5);
260 fOutput->Add(fPrimaryVertexY);
262 fPrimaryVertexZ = new TH1F("fPrimaryVertexZ", "Primary Vertex Position Z;Primary Vertex Position Z (cm);Events",200,-20,20);
263 fOutput->Add(fPrimaryVertexZ);
266 // ====== Trigger Particle characteristics ====== //
268 // MC: Pt Trigger particle vs centrality:
270 fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;p_{T} (GeV/c);centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
271 fOutput->Add(fTriggerMCPtCent);
273 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.);
274 fOutput->Add(fTriggerMCResPt);
276 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.);
277 fOutput->Add(fTriggerMCResEta);
279 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.);
280 fOutput->Add(fTriggerMCResPhi);
283 // Pt Trigger particle vs centrality:
284 fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;p_{T} (GeV/c);centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
285 fOutput->Add(fTriggerPtCent);
287 fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",21,-0.5,20.5,100,0.,100);
288 fOutput->Add(fNTrigPerEvt);
290 fTriggerWiSPDHit = new TH1F("fTriggerWiSPDHit","Number of Trigger Particles wi SPD Hits",3,0.,3.);
291 fOutput->Add(fTriggerWiSPDHit);
293 // Phi vs pseudorapidity:
294 fTriggerEtaPhi = new TH2F("fTriggerEtaPhi","Trigger particle;#phi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
295 fOutput->Add(fTriggerEtaPhi);
297 // Check if Trigger particle comes from a V0 daughter:
298 fCheckTriggerFromV0Daug =
299 new TH1F("fCheckTriggerFromV0Daug","Trigger particle from a V0 daughter;;Counts",4,-0.5,3.5);
300 fCheckTriggerFromV0Daug->GetXaxis()->SetTitle("Flag");
301 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(1,"NOT V0 daug");
302 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(2,"V0 daug");
303 fCheckTriggerFromV0Daug->GetXaxis()->SetBinLabel(3,"V0 daug & V0 LP");
304 fOutput->Add(fCheckTriggerFromV0Daug);
306 fTriggerComingFromDaug = new TH1F("fTriggerComingFromDaug","Trigger particle from a V0 daughter;p_{T} (GeV/c);Counts",240, 0, 12);
307 fOutput->Add(fTriggerComingFromDaug);
309 fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;p_{T} (GeV/c);Counts",nbinPtLP,pMin,ptMaxLP);
310 fOutput->Add(fTriggerIsV0);
312 // ------------------- > Comaring properties of this trigger with the daughters
314 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.);
315 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
316 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
317 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
318 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(4,"Neg Daug X");
319 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
320 fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
321 fOutput->Add(fCheckIDTrigPtK0s);
323 fCheckIDTrigPhiK0s = new TH3F("fCheckIDTrigPhiK0s","K^{0}_{S};#delta#phi;;p_{V0}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
324 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
325 fCheckIDTrigPhiK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
326 fOutput->Add(fCheckIDTrigPhiK0s);
328 fCheckIDTrigEtaK0s = new TH3F("fCheckIDTrigEtaK0s","K^{0}_{S};#delta#eta;;p_{V0}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
329 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
330 fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
331 fOutput->Add(fCheckIDTrigEtaK0s);
334 fCheckIDTrigPtLambda = new TH3F("fCheckIDTrigPtLambda","#Lambda",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
335 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
336 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
337 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
338 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
339 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
340 fCheckIDTrigPtLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
341 fOutput->Add(fCheckIDTrigPtLambda);
343 fCheckIDTrigPhiLambda = new TH3F("fCheckIDTrigPhiLambda","#Lambda",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
344 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
345 fCheckIDTrigPhiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
346 fOutput->Add(fCheckIDTrigPhiLambda);
348 fCheckIDTrigEtaLambda = new TH3F("fCheckIDTrigEtaLambda","#Lambda",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
349 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
350 fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
351 fOutput->Add(fCheckIDTrigEtaLambda);
354 fCheckIDTrigPtAntiLambda = new TH3F("fCheckIDTrigPtAntiLambda","#bar{#Lambda}",40,-0.2,0.2,7,-0.5,6.5,100,1.,11.);
355 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug X");
356 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(2,"Pos Daug Y");
357 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(3,"Pos Daug Z");
358 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(4,"Neg Daug X");
359 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(5,"Neg Daug Y");
360 fCheckIDTrigPtAntiLambda->GetYaxis()->SetBinLabel(6,"Neg Daug Z");
361 fOutput->Add(fCheckIDTrigPtAntiLambda);
363 fCheckIDTrigPhiAntiLambda = new TH3F("fCheckIDTrigPhiAntiLambda","#bar{#Lambda}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
364 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
365 fCheckIDTrigPhiAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
366 fOutput->Add(fCheckIDTrigPhiAntiLambda);
368 fCheckIDTrigEtaAntiLambda = new TH3F("fCheckIDTrigEtaAntiLambda","#bar{#Lambda}",20,-0.2,0.2,3,-0.5,2.5,100,1.,11.);
369 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
370 fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
371 fOutput->Add(fCheckIDTrigEtaAntiLambda);
373 // ====== MC-true and MC-Association information ====== //
376 fInjectedParticles = new TH1F("fInjectedParticles","Injected particles;;Counts",2,0.,2.);
377 fInjectedParticles->GetXaxis()->SetBinLabel(1,"Injected");
378 fInjectedParticles->GetXaxis()->SetBinLabel(2,"Natural");
379 fOutput->Add(fInjectedParticles);
382 fK0sMCPt = new TH1F("fK0sMCPt", "K^{0}_{S} MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
383 fOutput->Add(fK0sMCPt);
385 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.);
386 fOutput->Add(fK0sMCPtRap);
388 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.);
389 fOutput->Add(fK0sMCPtRap2);
391 fK0sMCPtRapEmbeded = new TH3F("fK0sMCPtRapEmbeded", "K^{0}_{S} Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
392 fOutput->Add(fK0sMCPtRapEmbeded);
395 for(Int_t jj=0;jj<kNCent;jj++){
396 snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
397 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);
398 fOutput->Add(fK0sMCPtPhiEta[jj]);
401 // K0s MC-Association:
403 new TH1F("fK0sAssocPt","K^{0}_{S} Assoc: L_{T} vs p_{T};p_{T} (GeV/c);Counts",nbins,pMin,pMax);
404 fOutput->Add(fK0sAssocPt);
407 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.);
408 fOutput->Add(fK0sAssocPtArm);
410 fK0sAssocPtArmEmbeded =
411 new TH3F("fK0sAssocPtArmEmbeded","K^{0}_{S} Assoc - Embeded MC: p_{T} vs y vs centrality;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
412 fOutput->Add(fK0sAssocPtArmEmbeded);
414 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.);
415 fOutput->Add(fK0sAssocPtRap);
417 fK0sAssocPtMassArm = new TH3F("fK0sAssocPtMassArm","K^{0}_{S} Assoc;Mass (GeV/c^{2})p_{T} (GeV/c);centrality",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
418 fOutput->Add(fK0sAssocPtMassArm);
420 fK0sAssocPtRapEmbeded = new TH3F("fK0sAssocPtRapEmbeded","K^{0}_{S} Assoc - Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
421 fOutput->Add(fK0sAssocPtRapEmbeded);
423 for(Int_t jj=0;jj<kNCent;jj++){
424 snprintf(hNameHist,100, "fK0sAssocPtPhiEta_Cent_%d",jj);
425 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);
426 fOutput->Add(fK0sAssocPtPhiEta[jj]);
429 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.);
430 fOutput->Add(fK0sMCResEta);
432 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.);
433 fOutput->Add(fK0sMCResPhi);
436 fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
437 fOutput->Add(fLambdaMCPt);
439 fLambdaMCPtRap = new TH3F("fLambdaMCPtRap","#Lambda MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
440 fOutput->Add(fLambdaMCPtRap);
442 fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
443 fOutput->Add(fLambdaMCPtRap2);
445 fLambdaMCPtRapEmbeded = new TH3F("fLambdaMCPtRapEmbeded","#Lambda Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
446 fOutput->Add(fLambdaMCPtRapEmbeded);
448 fLambdaMCFromXi = new TH2F("fLambdaMCFromXi", "#Lambda from Xi MC;p_{T} (GeV/c);centrality",nbins,pMin,pMax,100,0.,100.);
449 fOutput->Add(fLambdaMCFromXi);
451 for(Int_t jj=0;jj<kNCent;jj++){
452 snprintf(hNameHist,100, "fLambdaMCPtPhiEta_Cent_%d",jj);
453 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);
454 fOutput->Add(fLambdaMCPtPhiEta[jj]);
457 // Lambda MC-Association:
459 new TH1F("fLambdaAssocPt","#Lambda Assoc: L_{T} vs p_{T};p_{T} (GeV/c);Counts",nbins,pMin,pMax);
460 fOutput->Add(fLambdaAssocPt);
462 fLambdaAssocPtRap = new TH3F("fLambdaAssocPtRap", "#Lambda Assoc;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
463 fOutput->Add(fLambdaAssocPtRap);
465 fLambdaAssocPtMass = new TH3F("fLambdaAssocPtMass","#Lambda Assoc;Mass (GeV/c^{2})p_{T} (GeV/c);centrality",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
466 fOutput->Add(fLambdaAssocPtMass);
468 fLambdaAssocPtRapEmbeded = new TH3F("fLambdaAssocPtRapEmbeded", "#Lambda Assoc - Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
469 fOutput->Add(fLambdaAssocPtRapEmbeded);
471 fLambdaAssocFromXi = new TH2F("fLambdaAssocFromXi", "#Lambda from Xi Assoc;p_{T} (GeV/c);centrality",nbins,pMin,pMax,100,0.,100.);
472 fOutput->Add(fLambdaAssocFromXi);
474 for(Int_t jj=0;jj<kNCent;jj++){
475 snprintf(hNameHist,100, "fLambdaAssocPtPhiEta_Cent_%d",jj);
476 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);
477 fOutput->Add(fLambdaAssocPtPhiEta[jj]);
480 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.);
481 fOutput->Add(fLambdaMCResEta);
483 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.);
484 fOutput->Add(fLambdaMCResPhi);
486 // AntiLambda MC-true:
487 fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;p_{T} (GeV/c);Counts",nbins,pMin,pMax);
488 fOutput->Add(fAntiLambdaMCPt);
490 fAntiLambdaMCPtRap = new TH3F("fAntiLambdaMCPtRap","#bar{#Lambda} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
491 fOutput->Add(fAntiLambdaMCPtRap);
493 fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
494 fOutput->Add(fAntiLambdaMCPtRap2);
496 fAntiLambdaMCPtRapEmbeded = new TH3F("fAntiLambdaMCPtRapEmbeded","#bar{#Lambda} Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
497 fOutput->Add(fAntiLambdaMCPtRapEmbeded);
499 fAntiLambdaMCFromXi = new TH2F("fAntiLambdaMCFromXi", "#bar{#Lambda} from Xi MC;p_{T} (GeV/c);centrality",nbins,pMin,pMax,100,0.,100.);
500 fOutput->Add(fAntiLambdaMCFromXi);
502 for(Int_t jj=0;jj<kNCent;jj++){
503 snprintf(hNameHist,100, "fAntiLambdaMCPtPhiEta_Cent_%d",jj);
504 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);
505 fOutput->Add(fAntiLambdaMCPtPhiEta[jj]);
508 // AntiLambda MC-Association:
510 new TH1F("fAntiLambdaAssocPt","#bar{#Lambda} Assoc: L_{T} vs p_{T};p_{T} (GeV/c)",nbins,pMin,pMax);
511 fOutput->Add(fAntiLambdaAssocPt);
513 fAntiLambdaAssocPtRap = new TH3F("fAntiLambdaAssocPtRap", "#bar{#Lambda} Assoc;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
514 fOutput->Add(fAntiLambdaAssocPtRap);
516 fAntiLambdaAssocPtMass = new TH3F("fAntiLambdaAssocPtMass","#bar{#Lambda} Assoc;Mass (GeV/c^{2})p_{T} (GeV/c);centrality",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
517 fOutput->Add(fAntiLambdaAssocPtMass);
519 fAntiLambdaAssocPtRapEmbeded = new TH3F("fAntiLambdaAssocPtRapEmbeded", "#bar{#Lambda} Assoc - Embeded MC;p_{T} (GeV/c);y;centrality",nbins,pMin,pMax,30,-1.5,1.5,100,0.,100.);
520 fOutput->Add(fAntiLambdaAssocPtRapEmbeded);
522 fAntiLambdaAssocFromXi = new TH2F("fAntiLambdaAssocFromXi", "#bar{#Lambda} from Xi MC;p_{T} (GeV/c);centrality",nbins,pMin,pMax,100,0.,100.);
523 fOutput->Add(fAntiLambdaAssocFromXi);
526 for(Int_t jj=0;jj<kNCent;jj++){
527 snprintf(hNameHist,100, "fAntiLambdaAssocPtPhiEta_Cent_%d",jj);
528 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);
529 fOutput->Add(fAntiLambdaAssocPtPhiEta[jj]);
532 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.);
533 fOutput->Add(fAntiLambdaMCResEta);
535 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.);
536 fOutput->Add(fAntiLambdaMCResPhi);
540 // ====== Reconstruction information in AOD ====== //
541 fHistArmenterosPodolanski =
542 new TH3F("fHistArmenterosPodolanski","Armenteros-Podolanski phase space;#alpha;p_{t} arm",
543 100,-1.0,1.0,50,0,0.5,7,-0.5,6.5);
544 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(1,"K^{0}_{S} Inv. Mass Peak");
545 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bckg");
546 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(3,"#Lambda Inv. Mass Peak");
547 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(4,"#Lambda Bckg");
548 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} Inv. Mass Peak");
549 fHistArmenterosPodolanski->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bckg");
550 fOutput->Add(fHistArmenterosPodolanski);
553 new TH3F("fHistArmPodBckg","Background: Armenteros-Podolanski phase space;#alpha;p_{t} arm",
554 100,-1.0,1.0,50,0,0.5,4,-0.5,3.5);
555 fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S}: Trig events");
556 fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"#Lambda: Trig events");
557 fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#bar{#Lambda}: Trig events");
558 fOutput->Add(fHistArmPodBckg);
562 new TH3F("fK0sMass", "K^{0}_{s}: mass vs p_{T}",nbins,0.398,0.598,nbins,pMin,pMax,100,0.,100.);
563 fK0sMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
564 fK0sMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
565 fK0sMass->GetZaxis()->SetTitle("centrality");
566 fOutput->Add(fK0sMass);
569 new TH3F("fK0sPtvsEta","K^{0}_{s}: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
570 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
571 fK0sPtvsEta->GetYaxis()->SetTitle("#eta");
572 fK0sPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
573 fK0sPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
574 fK0sPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
575 fK0sPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
576 fOutput->Add(fK0sPtvsEta);
579 new TH3F("fK0sPtvsRap","K^{0}_{s}: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
580 fK0sPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
581 fK0sPtvsRap->GetYaxis()->SetTitle("y");
582 fK0sPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
583 fK0sPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
584 fK0sPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
585 fK0sPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
586 fOutput->Add(fK0sPtvsRap);
589 new TH2F("fK0sEtaPhi","K^{0}_{s}: #phi vs #eta;#phi (rad);#eta",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
590 fOutput->Add(fK0sEtaPhi);
593 new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs pt vs #phi;Mass (GeV/c^2);p_{T} (GeV/c);#phi (rad)",
594 nbins,0.398,0.598,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
595 fOutput->Add(fK0sMassPtPhi);
600 = 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)",
601 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
602 fOutput->Add(fK0sDCADaugToPrimVtx);
604 // Spatial Resoltuion between trigger- and asosciated- particles
605 fK0sSpatialRes = new TH3F("fK0sSpatialRes","K^{0}_{S}: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
606 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
607 fOutput->Add(fK0sSpatialRes);
609 for(Int_t jj=0;jj<kNCent;jj++){
610 for(Int_t k=0;k<kN1;k++){
612 // Monte-Carlo level:
614 snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
615 fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
616 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
619 fK0sdPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
620 fK0sdPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
621 fK0sdPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
622 fOutput->Add(fK0sdPhidEtaMC[jj*kN1+k]);
625 // Reconstruction level:
626 for(Int_t ll=0;ll<kNVtxZ;ll++){
627 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
628 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#phi vs #Delta#eta vs Inv. Mass",
629 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
632 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#phi (rad)");
633 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
634 fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
635 fOutput->Add(fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
639 snprintf(hNameHist,100, "fK0sdPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
640 fK0sdPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#phi vs #Delta#eta vs p_{T,l}",
641 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
644 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
645 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
646 fK0sdPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
647 fOutput->Add(fK0sdPhidEtaPtLBckg[jj*kN1+k]);
653 // Correlations (side-band):
655 = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. p_{T,l}",
656 100,0.,15.,nbinPtLP,pMin,ptMaxLP);
657 fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
658 fK0sBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
659 fOutput->Add(fK0sBckgDecLength);
661 fK0sBckgDCADaugToPrimVtx
662 = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l}",
663 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
664 fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
665 fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
666 fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
667 fOutput->Add(fK0sBckgDCADaugToPrimVtx);
670 new TH2F("fK0sBckgEtaPhi","K^{0}_{s} Bckg: #phi vs #eta",
671 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
672 fK0sBckgEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
673 fK0sBckgEtaPhi->GetYaxis()->SetTitle("#eta");
674 fOutput->Add(fK0sBckgEtaPhi);
677 = new TH2F("fK0sBckgPhiRadio","K^{0}_{S} Bckg: #phi vs l_{T}",
678 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
679 fK0sBckgPhiRadio->GetXaxis()->SetTitle("#phi (rad)");
680 fK0sBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
681 fOutput->Add(fK0sBckgPhiRadio);
683 fK0sBckgDCANegDaugToPrimVtx
684 = new TH2F("fK0sBckgDCANegDaugToPrimVtx","K^{0}_{S} Bckg: dca NegDaughter",
685 7,-0.5,6.5,90,0.,3.3);
686 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
687 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
688 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
689 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
690 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
691 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
692 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
693 fK0sBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
694 fK0sBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
695 fOutput->Add(fK0sBckgDCANegDaugToPrimVtx);
697 fK0sBckgDCAPosDaugToPrimVtx
698 = new TH2F("fK0sBckgDCAPosDaugToPrimVtx","K^{0}_{S} Bckg: dca PosDaughter",
699 7,-0.5,6.5,90,0.,3.3);
700 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
701 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
702 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
703 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
704 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
705 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
706 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
707 fK0sBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
708 fK0sBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
709 fOutput->Add(fK0sBckgDCAPosDaugToPrimVtx);
712 = 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);
713 fOutput->Add(fV0MassCascade);
716 // ****** Lambda ******
718 new TH3F("fLambdaMass","Mass vs p_{T} for \\Lambda",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
719 fLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
720 fLambdaMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
721 fLambdaMass->GetZaxis()->SetTitle("centrality");
722 fOutput->Add(fLambdaMass);
725 new TH3F("fLambdaPtvsEta","\\Lambda: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
726 fLambdaPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
727 fLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
728 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
729 fLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
730 fLambdaPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
731 fLambdaPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
732 fLambdaPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
733 fLambdaPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
734 fOutput->Add(fLambdaPtvsEta);
737 new TH3F("fLambdaPtvsRap","\\Lambda: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
738 fLambdaPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
739 fLambdaPtvsRap->GetYaxis()->SetTitle("y");
740 fLambdaPtvsRap->GetYaxis()->SetTitle("#eta");
741 fLambdaPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
742 fLambdaPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
743 fLambdaPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
744 fLambdaPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
745 fOutput->Add(fLambdaPtvsRap);
748 new TH2F("fLambdaEtaPhi","#phi vs #eta for #Lambda",
749 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
750 fLambdaEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
751 fLambdaEtaPhi->GetYaxis()->SetTitle("#eta");
752 fOutput->Add(fLambdaEtaPhi);
756 new TH3F("fLambdaMassPtPhi","#Lambda: mass vs pt vs #phi",
757 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
758 fLambdaMassPtPhi->GetXaxis()->SetTitle("Mass (GeV/c^2)");
759 fLambdaMassPtPhi->GetYaxis()->SetTitle("p_{T} (GeV/c)");
760 fLambdaMassPtPhi->GetZaxis()->SetTitle("#phi (rad)");
761 fOutput->Add(fLambdaMassPtPhi);
764 fLambdaDCADaugToPrimVtx
765 = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
766 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
767 fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
768 fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
769 fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
770 fOutput->Add(fLambdaDCADaugToPrimVtx);
772 // Spatial Resoltuion between trigger- and asosciated- particles
773 fLambdaSpatialRes = new TH3F("fLambdaSpatialRes","#Lambda: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
774 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
775 fOutput->Add(fLambdaSpatialRes);
778 for(Int_t jj=0;jj<kNCent;jj++){
779 for(Int_t k=0;k<kN1;k++){
781 // Monte-Carlo level:
783 snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
784 fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
785 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
788 fLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
789 fLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
790 fLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
791 fOutput->Add(fLambdadPhidEtaMC[jj*kN1+k]);
794 // Reconstruction level:
795 for(Int_t ll=0;ll<kNVtxZ;ll++){
796 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
797 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta vs p_{T,l}",
798 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
801 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#phi (rad)");
802 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
803 fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
804 fOutput->Add(fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
807 snprintf(hNameHist,100, "fLambdadPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
808 fLambdadPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta vs p_{T,l}",
809 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
812 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
813 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
814 fLambdadPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
815 fOutput->Add(fLambdadPhidEtaPtLBckg[jj*kN1+k]);
821 // Correlations (side-band):
823 = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. p_{T,l}",
824 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
825 fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
826 fLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
827 fOutput->Add(fLambdaBckgDecLength);
829 fLambdaBckgDCADaugToPrimVtx
830 = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
831 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
832 fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
833 fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
834 fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
835 fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
838 new TH2F("fLambdaBckgEtaPhi","#Lambda Bckg: #phi vs #eta",
839 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
840 fLambdaBckgEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
841 fLambdaBckgEtaPhi->GetYaxis()->SetTitle("#eta");
842 fOutput->Add(fLambdaBckgEtaPhi);
845 = new TH2F("fLambdaBckgPhiRadio","#Lambda Bckg: #phi vs l_{T}",
846 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
847 fLambdaBckgPhiRadio->GetXaxis()->SetTitle("#phi (rad)");
848 fLambdaBckgPhiRadio->GetYaxis()->SetTitle("l_{T} (cm)");
849 fOutput->Add(fLambdaBckgPhiRadio);
852 fLambdaBckgDCANegDaugToPrimVtx
853 = new TH2F("fLambdaBckgDCANegDaugToPrimVtx","#Lambda Bckg: dca NegDaughter",
854 7,-0.5,6.5,90,0.,3.3);
855 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
856 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
857 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
858 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
859 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
860 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
861 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
862 fLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
863 fLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
864 fOutput->Add(fLambdaBckgDCANegDaugToPrimVtx);
867 fLambdaBckgDCAPosDaugToPrimVtx
868 = new TH2F("fLambdaBckgDCAPosDaugToPrimVtx","#Lambda Bckg: dca PosDaughter",
869 7,-0.5,6.5,90,0.,3.3);
870 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
871 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
872 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
873 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
874 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
875 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
876 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
877 fLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
878 fLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
879 fOutput->Add(fLambdaBckgDCAPosDaugToPrimVtx);
882 // ****** AntiLambda ******
884 new TH3F("fAntiLambdaMass","Mass vs p_{T} for #bar{#Lambda}",nbins,1.065,1.165,nbins,pMin,pMax,100,0.,100.);
885 fAntiLambdaMass->GetXaxis()->SetTitle("Mass (GeV/c^2)");
886 fAntiLambdaMass->GetYaxis()->SetTitle("p_{T} (GeV/c)");
887 fAntiLambdaMass->GetZaxis()->SetTitle("centrality");
888 fOutput->Add(fAntiLambdaMass);
891 new TH3F("fAntiLambdaPtvsEta","#bar{#Lambda}: p_{T} vs #eta",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
892 fAntiLambdaPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
893 fAntiLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
894 fK0sPtvsEta->GetXaxis()->SetTitle("p_{T} (GeV/c)");
895 fAntiLambdaPtvsEta->GetYaxis()->SetTitle("#eta");
896 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(1,"All events");
897 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(2,"Triggered events");
898 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
899 fAntiLambdaPtvsEta->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
900 fOutput->Add(fAntiLambdaPtvsEta);
903 new TH3F("fAntiLambdaPtvsRap","#bar{#Lambda}: p_{T} vs y",nbins,pMin,pMax,30,-1.5,1.5,4,-0.5,3.5);
904 fAntiLambdaPtvsRap->GetXaxis()->SetTitle("p_{T} (GeV/c)");
905 fAntiLambdaPtvsRap->GetYaxis()->SetTitle("y");
906 fAntiLambdaPtvsRap->GetYaxis()->SetTitle("#eta");
907 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(1,"All events");
908 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(2,"Triggered events");
909 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(3,"All ev wi Inv Mass cut");
910 fAntiLambdaPtvsRap->GetZaxis()->SetBinLabel(4,"Trig ev wi Inv Mass cut");
911 fOutput->Add(fAntiLambdaPtvsRap);
914 new TH2F("fAntiLambdaEtaPhi","#phi vs #eta for #bar{#Lambda}",
915 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
916 fAntiLambdaEtaPhi->GetXaxis()->SetTitle("#phi (rad)");
917 fAntiLambdaEtaPhi->GetYaxis()->SetTitle("#eta");
918 fOutput->Add(fAntiLambdaEtaPhi);
921 fAntiLambdaMassPtPhi =
922 new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs pt vs #phi",
923 nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
924 fAntiLambdaMassPtPhi->GetXaxis()->SetTitle("Mass (GeV/c^2)");
925 fAntiLambdaMassPtPhi->GetYaxis()->SetTitle("p_{T} (GeV/c)");
926 fAntiLambdaMassPtPhi->GetZaxis()->SetTitle("#phi (rad)");
927 fOutput->Add(fAntiLambdaMassPtPhi);
931 fAntiLambdaDCADaugToPrimVtx
932 = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
933 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
934 fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
935 fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
936 fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
937 fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
939 // Spatial Resoltuion between trigger- and asosciated- particles
940 fAntiLambdaSpatialRes = new TH3F("fAntiLambdaSpatialRes","#bar{#Lambda}: Spatial resolution;#Delta#phi (rad);trig-assoc. resolution (cm);dec. length (cm)",
941 20,-0.1,0.1,100,0.,10,2*nbins,lMin,lMax);
942 fOutput->Add(fAntiLambdaSpatialRes);
944 for(Int_t jj=0;jj<kNCent;jj++){
945 for(Int_t k=0;k<kN1;k++){
947 // Monte-Carlo level:
949 snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
950 fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#phi vs #Delta#eta vs p_{T,l}",
951 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
954 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
955 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
956 fAntiLambdadPhidEtaMC[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
957 fOutput->Add(fAntiLambdadPhidEtaMC[jj*kN1+k]);
960 // Reconstruction level:
961 for(Int_t ll=0;ll<kNVtxZ;ll++){
962 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
963 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta vs p_{T,l}",
964 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
967 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#phi (rad)");
968 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
969 fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
970 fOutput->Add(fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]);
975 snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_Bckg_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
976 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta vs p_{T,l}",
977 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
980 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetXaxis()->SetTitle("#Delta#phi (rad)");
981 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetYaxis()->SetTitle("#Delta#eta");
982 fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]->GetZaxis()->SetTitle("Vertex Z (cm)");
983 fOutput->Add(fAntiLambdadPhidEtaPtLBckg[jj*kN1+k]);
989 // Correlations (side-band):
990 fAntiLambdaBckgDecLength
991 = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. p_{T,l}",
992 100,0.,25.,nbinPtLP,pMin,ptMaxLP);
993 fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
994 fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/c)");
995 fOutput->Add(fAntiLambdaBckgDecLength);
997 fAntiLambdaBckgDCADaugToPrimVtx
998 = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
999 90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
1000 fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
1001 fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
1002 fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/c)");
1003 fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
1005 fAntiLambdaBckgEtaPhi =
1006 new TH2F("fAntiLambdaBckgEtaPhi","#bar{#Lambda} Bckg: #phi vs #eta;#phi (rad);l_{T} (cm)",
1007 nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.);
1008 fOutput->Add(fAntiLambdaBckgEtaPhi);
1010 fAntiLambdaBckgPhiRadio
1011 = new TH2F("fAntiLambdaBckgPhiRadio","#bar{#Lambda} Bckg: #phi vs l_{T};#phi (rad);l_{T} (cm)",
1012 nbinsPhi,0.,2.*TMath::Pi(),2*nbins,lMin,lMax);
1013 fOutput->Add(fAntiLambdaBckgPhiRadio);
1016 fAntiLambdaBckgDCANegDaugToPrimVtx
1017 = new TH2F("fAntiLambdaBckgDCANegDaugToPrimVtx","#bar{#Lambda} Bckg: dca NegDaughter",
1018 7,-0.5,6.5,90,0.,3.3);
1019 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1020 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1021 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1022 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1023 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1024 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1025 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1026 fAntiLambdaBckgDCANegDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1027 fAntiLambdaBckgDCANegDaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg Daug (cm)");
1028 fOutput->Add(fAntiLambdaBckgDCANegDaugToPrimVtx);
1031 fAntiLambdaBckgDCAPosDaugToPrimVtx
1032 = new TH2F("fAntiLambdaBckgDCAPosDaugToPrimVtx","#bar{#Lambda} Bckg: dca PosDaughter",
1033 7,-0.5,6.5,90,0.,3.3);
1034 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetTitle("MC Production");
1035 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(1,"Rec");
1036 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(2,"Primary");
1037 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(3,"V0's");
1038 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(4,"Cascades");
1039 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(5,"Gamma conv.");
1040 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(6,"Unidentified mother");
1041 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetXaxis()->SetBinLabel(7,"Other");
1042 fAntiLambdaBckgDCAPosDaugToPrimVtx->GetYaxis()->SetTitle("DCA Pos Daug (cm)");
1043 fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
1047 for(Int_t jj=0;jj<kNCent;jj++){
1048 snprintf(hNameHist,100, "fGammaConversiondPhidEta_Cent_%.0f_%.0f",kBinCent[jj],kBinCent[jj+1]);
1049 fGammaConversiondPhidEta[jj] = new TH3F(hNameHist,"Gamma Conversion: #Delta#phi vs #Delta#eta;#Delta#phi (rad);#Delta#eta;Vertex Z (cm)",
1050 2*nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1053 fOutput->Add(fGammaConversiondPhidEta[jj]);
1056 // ============================================================= //
1059 for(Int_t ll=0;ll<kNCent;ll++){
1060 for(Int_t k=0;k<kN1;k++){
1061 for(Int_t j=0;j<kNVtxZ;j++){
1063 snprintf(hNameHist,100,"fK0sdPhidEtaME_%.2f_%.2f_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1064 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",
1065 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1066 nbinsdEta,-1.5,1.5);
1067 fOutputME->Add(fK0sdPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1073 for(Int_t ll=0;ll<kNCent;ll++){
1074 for(Int_t k=0;k<kN1;k++){
1075 for(Int_t j=0;j<kNVtxZ;j++){
1077 snprintf(hNameHist,100,"fLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1078 fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#Lambda: #Delta#phi vs #Delta#eta in ME;#Delta#phi (rad);#Delta#eta",
1079 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1080 nbinsdEta,-1.5,1.5);
1081 fOutputME->Add(fLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1086 // AntiLambda in ME:
1087 for(Int_t ll=0;ll<kNCent;ll++){
1088 for(Int_t k=0;k<kN1;k++){
1089 for(Int_t j=0;j<kNVtxZ;j++){
1091 snprintf(hNameHist,100,"fAntiLambdadPhidEtaME_%.2f_%.2f_%.0lf_%.0lf_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[ll],kBinCent[ll+1],j);
1092 fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j] = new TH2F(hNameHist,"#bar{#Lambda}: #Delta#phi vs #Delta#eta in ME;#Delta#phi (rad);#Delta#eta",
1093 nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
1094 nbinsdEta,-1.5,1.5);
1095 fOutputME->Add(fAntiLambdadPhidEtaME[ll*kN1*kNVtxZ + k*kNVtxZ + j]);
1101 // ============================================================= //
1105 // Quality Assurance K0s:
1109 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);
1110 fOutputQA->Add(fK0sPIDPosDaug);
1113 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);
1114 fOutputQA->Add(fK0sPIDNegDaug);
1116 // --- background ---
1117 fK0sBckgPIDPosDaug =
1118 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);
1119 fOutputQA->Add(fK0sBckgPIDPosDaug);
1121 fK0sBckgPIDNegDaug =
1122 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);
1123 fOutputQA->Add(fK0sBckgPIDNegDaug);
1128 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);
1129 fOutputQA->Add(fK0sPhiEtaPosDaug);
1132 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);
1133 fOutputQA->Add(fK0sPhiEtaNegDaug);
1135 // --- background ---
1136 fK0sBckgPhiEtaPosDaug =
1137 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);
1138 fOutputQA->Add(fK0sBckgPhiEtaPosDaug);
1140 fK0sBckgPhiEtaNegDaug =
1141 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);
1142 fOutputQA->Add(fK0sBckgPhiEtaNegDaug);
1144 // Distance of closest approach:
1147 new TH2F("fK0sDCAPosDaug","K^{0}_{S}: dca Pos;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1148 fOutputQA->Add(fK0sDCAPosDaug);
1151 new TH2F("fK0sDCANegDaug","K^{0}_{S}: dca Neg;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1152 fOutputQA->Add(fK0sDCANegDaug);
1154 // --- background ---
1155 fK0sBckgDCAPosDaug =
1156 new TH2F("fK0sBckgDCAPosDaug","K^{0}_{S} Bckg: dca Pos;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1157 fOutputQA->Add(fK0sBckgDCAPosDaug);
1159 fK0sBckgDCANegDaug =
1160 new TH2F("fK0sBckgDCANegDaug","K^{0}_{S} Bckg: dca Neg;dca;p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1161 fOutputQA->Add(fK0sBckgDCANegDaug);
1163 // Difference in momentum:
1166 new TH2F("fK0sDifPtPosDaug","K^{0}_{S}: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1167 fOutputQA->Add(fK0sDifPtPosDaug);
1170 new TH2F("fK0sDifPtNegDaug","K^{0}_{S}: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1171 fOutputQA->Add(fK0sDifPtNegDaug);
1173 // --- background ---
1174 fK0sBckgDifPtPosDaug =
1175 new TH2F("fK0sBckgDifPtPosDaug","K^{0}_{S} Bckg: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1176 fOutputQA->Add(fK0sBckgDifPtPosDaug);
1178 fK0sBckgDifPtNegDaug =
1179 new TH2F("fK0sBckgDifPtNegDaug","K^{0}_{S} Bckg: dif. p_{T};#Delta p_{T};p_{T} V0",90,0.,3.3,nbins,pMin,pMax);
1180 fOutputQA->Add(fK0sBckgDifPtNegDaug);
1183 // Decay vertex reconstruction:
1186 new TH3F("fK0sDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1187 fK0sDecayPos->GetXaxis()->SetTitle("Pos. X");
1188 fK0sDecayPos->GetYaxis()->SetTitle("Pos. Y");
1189 fK0sDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1190 fOutputQA->Add(fK0sDecayPos);
1193 new TH2F("fK0sDecayVertex","K^{0}_{S}: decay length",100,0.,100.,nbins,pMin,pMax);
1194 fK0sDecayVertex->GetXaxis()->SetTitle("l_{T}");
1195 fK0sDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1196 fOutputQA->Add(fK0sDecayVertex);
1198 fK0sDecayVertexZoom =
1199 new TH2F("fK0sDecayVertexZoom","K^{0}_{S}: decay length",20,0.,1.,nbins,pMin,pMax);
1200 fK0sDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1201 fK0sDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1202 fOutputQA->Add(fK0sDecayVertexZoom);
1204 // --- background ---
1206 new TH3F("fK0sBckgDecayPos","K^{0}_{S}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1207 fK0sBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1208 fK0sBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1209 fK0sBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1210 fOutputQA->Add(fK0sBckgDecayPos);
1212 fK0sBckgDecayVertex =
1213 new TH2F("fK0sBckgDecayVertex","K^{0}_{S} Bckg: decay vertex",100,0.,100.,nbins,pMin,pMax);
1214 fK0sBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1215 fK0sBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1216 fOutputQA->Add(fK0sBckgDecayVertex);
1218 fK0sBckgDecayVertexZoom =
1219 new TH2F("fK0sBckgDecayVertexZoom","K^{0}_{S} Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
1220 fK0sBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1221 fK0sBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1222 fOutputQA->Add(fK0sBckgDecayVertexZoom);
1224 // Cosine of the Pointing Angle:
1227 new TH2F("fK0sCPA","K^{0}_{S}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1228 fK0sCPA->GetXaxis()->SetTitle("cpa");
1229 fK0sCPA->GetYaxis()->SetTitle("p_{T} V0");
1230 fOutputQA->Add(fK0sCPA);
1231 // --- background ---
1233 new TH2F("fK0sBckgCPA","K^{0}_{S} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1234 fK0sBckgCPA->GetXaxis()->SetTitle("cpa");
1235 fK0sBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1236 fOutputQA->Add(fK0sBckgCPA);
1238 // DCA between daughters:
1241 new TH2F("fK0sDCAV0Daug","K^{0}_{S}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1242 fK0sDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1243 fK0sDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1244 fOutputQA->Add(fK0sDCAV0Daug);
1245 // --- background ---
1247 new TH2F("fK0sBckgDCAV0Daug","K^{0}_{S} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1248 fK0sBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1249 fK0sBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1250 fOutputQA->Add(fK0sBckgDCAV0Daug);
1252 // Number of TPC clusters:
1254 fK0sNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
1255 new TH3F("fK0sNClustersTPC","K^{0}_{S};#phi;Num. TPC Clusters; p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1256 fOutputQA->Add(fK0sNClustersTPC);
1257 // --- background ---
1258 fK0sBckgNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
1259 new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#phi;Num. TPC Clusters; p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1260 fOutputQA->Add(fK0sBckgNClustersTPC);
1262 // Number of ITS clusters:
1264 fK0sNClustersITSPos =
1265 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);
1266 fOutputQA->Add(fK0sNClustersITSPos);
1268 fK0sNClustersITSNeg =
1269 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);
1270 fOutputQA->Add(fK0sNClustersITSNeg);
1271 // --- background ---
1272 fK0sBckgNClustersITSPos =
1273 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);
1274 fOutputQA->Add(fK0sBckgNClustersITSPos);
1276 fK0sBckgNClustersITSNeg =
1277 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);
1278 fOutputQA->Add(fK0sBckgNClustersITSNeg);
1281 // Quality Assurance Lambda:
1285 new TH3F("fLambdaPIDPosDaug","#Lambda: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1286 fLambdaPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1287 fLambdaPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1288 fLambdaPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1289 fOutputQA->Add(fLambdaPIDPosDaug);
1292 new TH3F("fLambdaPIDNegDaug","#Lambda: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1293 fLambdaPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1294 fLambdaPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1295 fLambdaPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1296 fOutputQA->Add(fLambdaPIDNegDaug);
1298 // --- background ---
1299 fLambdaBckgPIDPosDaug =
1300 new TH3F("fLambdaBckgPIDPosDaug","#Lambda: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1301 fLambdaBckgPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1302 fLambdaBckgPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1303 fLambdaBckgPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1304 fOutputQA->Add(fLambdaBckgPIDPosDaug);
1306 fLambdaBckgPIDNegDaug =
1307 new TH3F("fLambdaBckgPIDNegDaug","#Lambda: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1308 fLambdaBckgPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1309 fLambdaBckgPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1310 fLambdaBckgPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1311 fOutputQA->Add(fLambdaBckgPIDNegDaug);
1315 fLambdaPhiEtaPosDaug =
1316 new TH3F("fLambdaPhiEtaPosDaug","#Lambda: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1317 fLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1318 fLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1319 fLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1320 fOutputQA->Add(fLambdaPhiEtaPosDaug);
1322 fLambdaPhiEtaNegDaug =
1323 new TH3F("fLambdaPhiEtaNegDaug","#Lambda: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1324 fLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1325 fLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1326 fLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1327 fOutputQA->Add(fLambdaPhiEtaNegDaug);
1329 // --- background ---
1330 fLambdaBckgPhiEtaPosDaug =
1331 new TH3F("fLambdaBckgPhiEtaPosDaug","#Lambda: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1332 fLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1333 fLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1334 fLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1335 fOutputQA->Add(fLambdaBckgPhiEtaPosDaug);
1337 fLambdaBckgPhiEtaNegDaug =
1338 new TH3F("fLambdaBckgPhiEtaNegDaug","#Lambda: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1339 fLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1340 fLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1341 fLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1342 fOutputQA->Add(fLambdaBckgPhiEtaNegDaug);
1344 // Distance of closest approach
1347 new TH2F("fLambdaDCAPosDaug","#Lambda: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1348 fLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1349 fLambdaDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1350 fOutputQA->Add(fLambdaDCAPosDaug);
1353 new TH2F("fLambdaDCANegDaug","#Lambda: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1354 fLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1355 fLambdaDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1356 fOutputQA->Add(fLambdaDCANegDaug);
1358 // --- background ---
1359 fLambdaBckgDCAPosDaug =
1360 new TH2F("fLambdaBckgDCAPosDaug","#Lambda Bckg: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1361 fLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1362 fLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1363 fOutputQA->Add(fLambdaBckgDCAPosDaug);
1365 fLambdaBckgDCANegDaug =
1366 new TH2F("fLambdaBckgDCANegDaug","#Lambda Bckg: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1367 fLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1368 fLambdaBckgDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1369 fOutputQA->Add(fLambdaBckgDCANegDaug);
1371 // Difference in momentum
1373 fLambdaDifPtPosDaug =
1374 new TH2F("fLambdaDifPtPosDaug","#Lambda: dif. p_{T} Pos",90,0.,3.3,nbins,pMin,pMax);
1375 fLambdaDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1376 fLambdaDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1377 fOutputQA->Add(fLambdaDifPtPosDaug);
1379 fLambdaDifPtNegDaug =
1380 new TH2F("fLambdaDifPtNegDaug","#Lambda: dif. p_{T} Neg",90,0.,3.3,nbins,pMin,pMax);
1381 fLambdaDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1382 fLambdaDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1383 fOutputQA->Add(fLambdaDifPtNegDaug);
1385 // --- background ---
1386 fLambdaBckgDifPtPosDaug =
1387 new TH2F("fLambdaBckgDifPtPosDaug","#Lambda Bckg: dif. p_{T} Pos.",90,0.,3.3,nbins,pMin,pMax);
1388 fLambdaBckgDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1389 fLambdaBckgDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1390 fOutputQA->Add(fLambdaBckgDifPtPosDaug);
1392 fLambdaBckgDifPtNegDaug =
1393 new TH2F("fLambdaBckgDifPtNegDaug","#Lambda Bckg: dif. p_{t} Neg",90,0.,3.3,nbins,pMin,pMax);
1394 fLambdaBckgDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1395 fLambdaBckgDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1396 fOutputQA->Add(fLambdaBckgDifPtNegDaug);
1399 // Decay vertex reconstruction
1402 new TH3F("fLambdaDecayPos","#Lambda: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1403 fLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1404 fLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1405 fLambdaDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1406 fOutputQA->Add(fLambdaDecayPos);
1408 fLambdaDecayVertex =
1409 new TH2F("fLambdaDecayVertex","#Lambda: decay length",100,0.,100.,nbins,pMin,pMax);
1410 fLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1411 fLambdaDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1412 fOutputQA->Add(fLambdaDecayVertex);
1414 fLambdaDecayVertexZoom =
1415 new TH2F("fLambdaDecayVertexZoom","#Lambda: decay length",20,0.,1.,nbins,pMin,pMax);
1416 fLambdaDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1417 fLambdaDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1418 fOutputQA->Add(fLambdaDecayVertexZoom);
1420 // --- background ---
1421 fLambdaBckgDecayPos =
1422 new TH3F("fLambdaBckgDecayPos","#Lambda Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1423 fLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1424 fLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1425 fLambdaBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1426 fOutputQA->Add(fLambdaBckgDecayPos);
1428 fLambdaBckgDecayVertex =
1429 new TH2F("fLambdaBckgDecayVertex","#Lambda Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
1430 fLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1431 fLambdaBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1432 fOutputQA->Add(fLambdaBckgDecayVertex);
1434 fLambdaBckgDecayVertexZoom =
1435 new TH2F("fLambdaBckgDecayVertexZoom","#Lambda Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
1436 fLambdaBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1437 fLambdaBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1438 fOutputQA->Add(fLambdaBckgDecayVertexZoom);
1440 // Cosine of the Pointing Angle
1443 new TH2F("fLambdaCPA","#Lambda: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1444 fLambdaCPA->GetXaxis()->SetTitle("cpa");
1445 fLambdaCPA->GetYaxis()->SetTitle("p_{T} V0");
1446 fOutputQA->Add(fLambdaCPA);
1447 // --- background ---
1449 new TH2F("fLambdaBckgCPA","#Lambda Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1450 fLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
1451 fLambdaBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1452 fOutputQA->Add(fLambdaBckgCPA);
1454 // DCA between daughters
1457 new TH2F("fLambdaDCAV0Daug","#Lambda: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1458 fLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1459 fLambdaDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1460 fOutputQA->Add(fLambdaDCAV0Daug);
1461 // --- background ---
1462 fLambdaBckgDCAV0Daug =
1463 new TH2F("fLambdaBckgDCAV0Daug","#Lambda Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1464 fLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1465 fLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1466 fOutputQA->Add(fLambdaBckgDCAV0Daug);
1468 // Number of TPC clusters:
1470 fLambdaNClustersTPC =
1471 new TH3F("fLambdaNClustersTPC","#Lambda;#phi;Num. TPC Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1472 fOutputQA->Add(fLambdaNClustersTPC);
1473 // --- background ---
1474 fLambdaBckgNClustersTPC =
1475 new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#phi;Num. TPC Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1476 fOutputQA->Add(fLambdaBckgNClustersTPC);
1478 // Number of ITS clusters:
1480 fLambdaNClustersITSPos =
1481 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);
1482 fOutputQA->Add(fLambdaNClustersITSPos);
1484 fLambdaNClustersITSNeg =
1485 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);
1486 fOutputQA->Add(fLambdaNClustersITSNeg);
1487 // --- background ---
1488 fLambdaBckgNClustersITSPos =
1489 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);
1490 fOutputQA->Add(fLambdaBckgNClustersITSPos);
1492 fLambdaBckgNClustersITSNeg =
1493 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);
1494 fOutputQA->Add(fLambdaBckgNClustersITSNeg);
1498 // Quality Assurance AntiLambda:
1501 fAntiLambdaPIDPosDaug =
1502 new TH3F("fAntiLambdaPIDPosDaug","#bar{#Lambda}: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1503 fAntiLambdaPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1504 fAntiLambdaPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1505 fAntiLambdaPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1506 fOutputQA->Add(fAntiLambdaPIDPosDaug);
1508 fAntiLambdaPIDNegDaug =
1509 new TH3F("fAntiLambdaPIDNegDaug","#bar{#Lambda}: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1510 fAntiLambdaPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1511 fAntiLambdaPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1512 fAntiLambdaPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1513 fOutputQA->Add(fAntiLambdaPIDNegDaug);
1515 // --- background ---
1516 fAntiLambdaBckgPIDPosDaug =
1517 new TH3F("fAntiLambdaBckgPIDPosDaug","#bar{#Lambda}: dE/dx Pos. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1518 fAntiLambdaBckgPIDPosDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1519 fAntiLambdaBckgPIDPosDaug->GetYaxis()->SetTitle("a.u.");
1520 fAntiLambdaBckgPIDPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1521 fOutputQA->Add(fAntiLambdaBckgPIDPosDaug);
1523 fAntiLambdaBckgPIDNegDaug =
1524 new TH3F("fAntiLambdaBckgPIDNegDaug","#bar{#Lambda}: dE/dx Neg. Daug.",50,0.2,3,50,0.,6.,nbins,pMin,pMax);
1525 fAntiLambdaBckgPIDNegDaug->GetXaxis()->SetTitle("TPC Momentum (GeV/c)");
1526 fAntiLambdaBckgPIDNegDaug->GetYaxis()->SetTitle("a.u.");
1527 fAntiLambdaBckgPIDNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1528 fOutputQA->Add(fAntiLambdaBckgPIDNegDaug);
1532 fAntiLambdaPhiEtaPosDaug =
1533 new TH3F("fAntiLambdaPhiEtaPosDaug","#bar{#Lambda}: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1534 fAntiLambdaPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1535 fAntiLambdaPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1536 fAntiLambdaPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1537 fOutputQA->Add(fAntiLambdaPhiEtaPosDaug);
1539 fAntiLambdaPhiEtaNegDaug =
1540 new TH3F("fAntiLambdaPhiEtaNegDaug","#bar{#Lambda}: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1541 fAntiLambdaPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1542 fAntiLambdaPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1543 fAntiLambdaPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1544 fOutputQA->Add(fAntiLambdaPhiEtaNegDaug);
1546 // --- background ---
1547 fAntiLambdaBckgPhiEtaPosDaug =
1548 new TH3F("fAntiLambdaBckgPhiEtaPosDaug","#bar{#Lambda}: #phi vs #eta Pos. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1549 fAntiLambdaBckgPhiEtaPosDaug->GetXaxis()->SetTitle("#phi");
1550 fAntiLambdaBckgPhiEtaPosDaug->GetYaxis()->SetTitle("#eta");
1551 fAntiLambdaBckgPhiEtaPosDaug->GetZaxis()->SetTitle("p_{T} V0");
1552 fOutputQA->Add(fAntiLambdaBckgPhiEtaPosDaug);
1554 fAntiLambdaBckgPhiEtaNegDaug =
1555 new TH3F("fAntiLambdaBckgPhiEtaNegDaug","#bar{#Lambda}: #phi vs #eta Neg. Daug.",nbinsPhi,0.,2.*TMath::Pi(),100,-1.,1.,nbins,pMin,pMax);
1556 fAntiLambdaBckgPhiEtaNegDaug->GetXaxis()->SetTitle("#phi");
1557 fAntiLambdaBckgPhiEtaNegDaug->GetYaxis()->SetTitle("#eta");
1558 fAntiLambdaBckgPhiEtaNegDaug->GetZaxis()->SetTitle("p_{T} V0");
1559 fOutputQA->Add(fAntiLambdaBckgPhiEtaNegDaug);
1561 // Distance of closest approach
1563 fAntiLambdaDCAPosDaug =
1564 new TH2F("fAntiLambdaDCAPosDaug","#bar{#Lambda}: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1565 fAntiLambdaDCAPosDaug->GetXaxis()->SetTitle("dca");
1566 fAntiLambdaDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1567 fOutputQA->Add(fAntiLambdaDCAPosDaug);
1569 fAntiLambdaDCANegDaug =
1570 new TH2F("fAntiLambdaDCANegDaug","#bar{#Lambda}: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1571 fAntiLambdaDCANegDaug->GetXaxis()->SetTitle("dca");
1572 fAntiLambdaDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1573 fOutputQA->Add(fAntiLambdaDCANegDaug);
1575 // --- background ---
1576 fAntiLambdaBckgDCAPosDaug =
1577 new TH2F("fAntiLambdaBckgDCAPosDaug","#bar{#Lambda} Bckg: dca Pos",90,0.,3.3,nbins,pMin,pMax);
1578 fAntiLambdaBckgDCAPosDaug->GetXaxis()->SetTitle("dca");
1579 fAntiLambdaBckgDCAPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1580 fOutputQA->Add(fAntiLambdaBckgDCAPosDaug);
1582 fAntiLambdaBckgDCANegDaug =
1583 new TH2F("fAntiLambdaBckgDCANegDaug","#bar{#Lambda} Bckg: dca Neg",90,0.,3.3,nbins,pMin,pMax);
1584 fAntiLambdaBckgDCANegDaug->GetXaxis()->SetTitle("dca");
1585 fAntiLambdaBckgDCANegDaug->GetYaxis()->SetTitle("p_{T} V0");
1586 fOutputQA->Add(fAntiLambdaBckgDCANegDaug);
1588 // Difference in momentum
1590 fAntiLambdaDifPtPosDaug =
1591 new TH2F("fAntiLambdaDifPtPosDaug","#bar{#Lambda}: dif. p_{T} Pos",90,0.,3.3,nbins,pMin,pMax);
1592 fAntiLambdaDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1593 fAntiLambdaDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1594 fOutputQA->Add(fAntiLambdaDifPtPosDaug);
1596 fAntiLambdaDifPtNegDaug =
1597 new TH2F("fAntiLambdaDifPtNegDaug","#bar{#Lambda}: dif. p_{T} Neg",90,0.,3.3,nbins,pMin,pMax);
1598 fAntiLambdaDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1599 fAntiLambdaDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1600 fOutputQA->Add(fAntiLambdaDifPtNegDaug);
1602 // --- background ---
1603 fAntiLambdaBckgDifPtPosDaug =
1604 new TH2F("fAntiLambdaBckgDifPtPosDaug","#bar{#Lambda} Bckg: dif. p_{T} Pos.",90,0.,3.3,nbins,pMin,pMax);
1605 fAntiLambdaBckgDifPtPosDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1606 fAntiLambdaBckgDifPtPosDaug->GetYaxis()->SetTitle("p_{T} V0");
1607 fOutputQA->Add(fAntiLambdaBckgDifPtPosDaug);
1609 fAntiLambdaBckgDifPtNegDaug =
1610 new TH2F("fAntiLambdaBckgDifPtNegDaug","#bar{#Lambda} Bckg: dif. p_{t} Neg",90,0.,3.3,nbins,pMin,pMax);
1611 fAntiLambdaBckgDifPtNegDaug->GetXaxis()->SetTitle("#Delta p_{T}");
1612 fAntiLambdaBckgDifPtNegDaug->GetYaxis()->SetTitle("p_{T} V0");
1613 fOutputQA->Add(fAntiLambdaBckgDifPtNegDaug);
1616 // Decay vertex reconstruction
1618 fAntiLambdaDecayPos =
1619 new TH3F("fAntiLambdaDecayPos","#bar{#Lambda}: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1620 fAntiLambdaDecayPos->GetXaxis()->SetTitle("Pos. X");
1621 fAntiLambdaDecayPos->GetYaxis()->SetTitle("Pos. Y");
1622 fAntiLambdaDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1623 fOutputQA->Add(fAntiLambdaDecayPos);
1625 fAntiLambdaDecayVertex =
1626 new TH2F("fAntiLambdaDecayVertex","#bar{#Lambda}: decay length",100,0.,100.,nbins,pMin,pMax);
1627 fAntiLambdaDecayVertex->GetXaxis()->SetTitle("l_{T}");
1628 fAntiLambdaDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1629 fOutputQA->Add(fAntiLambdaDecayVertex);
1631 fAntiLambdaDecayVertexZoom =
1632 new TH2F("fAntiLambdaDecayVertexZoom","#bar{#Lambda}: decay length",20,0.,1.,nbins,pMin,pMax);
1633 fAntiLambdaDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1634 fAntiLambdaDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1635 fOutputQA->Add(fAntiLambdaDecayVertexZoom);
1637 // --- background ---
1638 fAntiLambdaBckgDecayPos =
1639 new TH3F("fAntiLambdaBckgDecayPos","#bar{#Lambda} Bckg: Position of Dec. Vtx",200,-100.,100.,200,-100.,100.,nbins,pMin,pMax);
1640 fAntiLambdaBckgDecayPos->GetXaxis()->SetTitle("Pos. X");
1641 fAntiLambdaBckgDecayPos->GetYaxis()->SetTitle("Pos. Y");
1642 fAntiLambdaBckgDecayPos->GetZaxis()->SetTitle("p_{T} V0");
1643 fOutputQA->Add(fAntiLambdaBckgDecayPos);
1645 fAntiLambdaBckgDecayVertex =
1646 new TH2F("fAntiLambdaBckgDecayVertex","#bar{#Lambda} Bckg: decay length",100,0.,100.,nbins,pMin,pMax);
1647 fAntiLambdaBckgDecayVertex->GetXaxis()->SetTitle("l_{T}");
1648 fAntiLambdaBckgDecayVertex->GetYaxis()->SetTitle("p_{T} V0");
1649 fOutputQA->Add(fAntiLambdaBckgDecayVertex);
1651 fAntiLambdaBckgDecayVertexZoom =
1652 new TH2F("fAntiLambdaBckgDecayVertexZoom","#bar{#Lambda} Bckg: decay length",20,0.,1.,nbins,pMin,pMax);
1653 fAntiLambdaBckgDecayVertexZoom->GetXaxis()->SetTitle("l_{T}");
1654 fAntiLambdaBckgDecayVertexZoom->GetYaxis()->SetTitle("p_{T} V0");
1655 fOutputQA->Add(fAntiLambdaBckgDecayVertexZoom);
1657 // Cosine of the Pointing Angle
1660 new TH2F("fAntiLambdaCPA","#bar{#Lambda}: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1661 fAntiLambdaCPA->GetXaxis()->SetTitle("cpa");
1662 fAntiLambdaCPA->GetYaxis()->SetTitle("p_{T} V0");
1663 fOutputQA->Add(fAntiLambdaCPA);
1664 // --- background ---
1665 fAntiLambdaBckgCPA =
1666 new TH2F("fAntiLambdaBckgCPA","#bar{#Lambda} Bckg: cosine of the pointing angle",100,0.98,1.,nbins,pMin,pMax);
1667 fAntiLambdaBckgCPA->GetXaxis()->SetTitle("cpa");
1668 fAntiLambdaBckgCPA->GetYaxis()->SetTitle("p_{T} V0");
1669 fOutputQA->Add(fAntiLambdaBckgCPA);
1671 // DCA between daughters
1673 fAntiLambdaDCAV0Daug =
1674 new TH2F("fAntiLambdaDCAV0Daug","#bar{#Lambda}: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1675 fAntiLambdaDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1676 fAntiLambdaDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1677 fOutputQA->Add(fAntiLambdaDCAV0Daug);
1678 // --- background ---
1679 fAntiLambdaBckgDCAV0Daug =
1680 new TH2F("fAntiLambdaBckgDCAV0Daug","#bar{#Lambda} Bckg: DCA daughters",60,0,1.2,nbins,pMin,pMax);
1681 fAntiLambdaBckgDCAV0Daug->GetXaxis()->SetTitle("dca between daughters");
1682 fAntiLambdaBckgDCAV0Daug->GetYaxis()->SetTitle("p_{T} V0");
1683 fOutputQA->Add(fAntiLambdaBckgDCAV0Daug);
1685 // Number of TPC clusters:
1687 fAntiLambdaNClustersTPC =
1688 new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#phi;Num. TPC Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1689 fOutputQA->Add(fAntiLambdaNClustersTPC);
1690 // --- background ---
1691 fAntiLambdaBckgNClustersTPC =
1692 new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#phi;Num. TPC Clusters;p_{T} (GeV/c)",nbinsPhi,0.,2.*TMath::Pi(),111,69.5,180.5,nbins,-pMax,pMax);
1693 fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
1695 // Number of ITS clusters:
1697 fAntiLambdaNClustersITSPos =
1698 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);
1699 fOutputQA->Add(fAntiLambdaNClustersITSPos);
1701 fAntiLambdaNClustersITSNeg =
1702 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);
1703 fOutputQA->Add(fAntiLambdaNClustersITSNeg);
1704 // --- background ---
1705 fAntiLambdaBckgNClustersITSPos =
1706 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);
1707 fOutputQA->Add(fAntiLambdaBckgNClustersITSPos);
1709 fAntiLambdaBckgNClustersITSNeg =
1710 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);
1711 fOutputQA->Add(fAntiLambdaBckgNClustersITSNeg);
1715 // ============================================================= //
1717 PostData(1, fOutput);
1718 PostData(2, fOutputME);
1719 PostData(3, fOutputQA);
1723 //___________________________________________________________________________________________
1725 static Int_t VtxBin(Double_t vtx)
1727 // Bin in vertez position Z
1729 for(Int_t i=0;i<kNVtxZ;i++)
1730 if ((vtx>=kBinVtxZ[i]) && (vtx<kBinVtxZ[i+1]) )
1737 //___________________________________________________________________________________________
1739 static Int_t PtBin(Double_t pt)
1743 for(Int_t i=0;i<kN1;i++)
1744 if ((pt>=kPtBinV0[i]) && (pt<kPtBinV0[i+1]) )
1751 //___________________________________________________________________________________________
1753 static Int_t CentBin(Double_t cent)
1757 for(Int_t i=0;i<kNCent;i++)
1758 if ((cent>=kBinCent[i]) && (cent<kBinCent[i+1]) )
1765 //___________________________________________________________________________________________
1767 Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(AliAODTrack *t)
1769 // Track criteria for primaries particles
1770 if (TMath::Abs(t->Eta())>0.8 ) return kFALSE;
1771 if (!(t->TestFilterMask(1<<7))) return kFALSE;
1773 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
1774 if (nCrossedRowsTPC < 70) return kFALSE;
1777 Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
1779 // Propagate the global track to the DCA.
1781 Double_t PosAtDCA[2] = {-999,-999};
1782 Double_t covar[3] = {-999,-999,-999};
1783 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
1784 t->PropagateToDCA(vtx,fAOD->GetMagneticField(),100.,PosAtDCA,covar);
1787 // 5) DCA cut (See R_AA paper).
1788 //Double_t DCAcutvalue[2];
1789 //DCAcutvalue[0] = 0.018 + 0.035*TMath::Power(t->Pt(),-1.01);
1790 //DCAcutvalue[1] = 2.;
1792 //if( SPDHits && (TMath::Abs(PosAtDCA[0])>DCAcutvalue[0] || TMath::Abs(PosAtDCA[1])>DCAcutvalue[1]) ){
1794 fTriggerWiSPDHit->Fill(1.5);
1799 //___________________________________________________________________________________________
1801 static Bool_t AcceptTrackV0(const AliAODTrack *t)
1803 // Track criteria for daughter particles of V0 candidate
1804 if (!t->IsOn(AliAODTrack::kTPCrefit)) return kFALSE;
1805 Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
1806 if (nCrossedRowsTPC < 70) return kFALSE;
1811 //___________________________________________________________________________________________
1813 Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptV0(AliAODVertex *vtx, const AliAODv0 *v1)
1815 // Selection for accepting V0 candidates
1817 if (v1->GetOnFlyStatus()) return kFALSE;
1819 //if (v1->Pt() < pMin) return kFALSE; ***
1821 const AliAODTrack *ntrack1=(AliAODTrack *)v1->GetDaughter(1);
1822 const AliAODTrack *ptrack1=(AliAODTrack *)v1->GetDaughter(0);
1824 if( !ntrack1 || !ptrack1 ) return kFALSE;
1825 if( !AcceptTrackV0(ntrack1) ) return kFALSE;
1826 if( !AcceptTrackV0(ptrack1) ) return kFALSE;
1828 if( ntrack1->Charge() == ptrack1->Charge())
1831 // Daughters: pseudo-rapidity cut
1832 if ( TMath::Abs(ntrack1->Eta()) > fMaxEtaDaughter ||
1833 TMath::Abs(ptrack1->Eta()) > fMaxEtaDaughter )
1836 // Daughters: transverse momentum cut
1837 if ( ( ntrack1->Pt() < fMinPtDaughter ) ||
1838 ( ptrack1->Pt() < fMinPtDaughter ) )
1841 // Daughters: Impact parameter of daughter to prim vtx
1842 Float_t xy = v1->DcaNegToPrimVertex();
1843 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
1844 xy = v1->DcaPosToPrimVertex();
1845 if (TMath::Abs(xy)<fDCAToPrimVtx) return kFALSE;
1848 Float_t dca = v1->DcaV0Daughters();
1849 if (dca>fMaxDCADaughter) return kFALSE;
1851 // V0: Cosine of the pointing angle
1852 Float_t cpa=v1->CosPointingAngle(vtx);
1853 if (cpa<fMinCPA) return kFALSE;
1855 // V0: Fiducial volume
1856 Double_t xyz[3]; v1->GetSecondaryVtx(xyz);
1857 Float_t r2=xyz[0]*xyz[0] + xyz[1]*xyz[1];
1858 if (r2<5.*5.) return kFALSE;
1859 if (r2>lMax*lMax) return kFALSE;
1864 //___________________________________________________________________________________________
1866 static Float_t dPHI(Float_t phi1, Float_t phi2)
1868 // Calculate the phi difference between two tracks
1869 Float_t deltaPhi = phi1 - phi2;
1871 if (deltaPhi<-TMath::PiOver2()) deltaPhi = deltaPhi + 2*(TMath::Pi());
1872 if (deltaPhi>(3*TMath::PiOver2())) deltaPhi = deltaPhi - 2*(TMath::Pi());
1876 //___________________________________________________________________________________________
1878 static Float_t MyRapidity(Float_t rE, Float_t rPz)
1880 // Local method for rapidity
1881 return 0.5*TMath::Log((rE+rPz)/(rE-rPz+1.e-13));
1884 //___________________________________________________________________________________________
1886 static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
1888 // Local method to compaire the momentum between two tracks
1890 //double const kEpsilon = 0.01;
1894 Float_t p[3]; trk->GetPxPyPz(p);
1895 Float_t pNegTrk[3]; nTrk->GetPxPyPz(pNegTrk);
1896 Float_t pPosTrk[3]; pTrk->GetPxPyPz(pPosTrk);
1898 if( ( fabs(p[0]-pNegTrk[0])<kEpsilon &&
1899 fabs(p[1]-pNegTrk[1])<kEpsilon &&
1900 fabs(p[2]-pNegTrk[2])<kEpsilon )
1904 if( (TMath::Abs(daugTrk->GetID())+1)==(TMath::Abs(trk->GetID())) )
1908 if( (TMath::Abs(nTrk->GetID()))==(TMath::Abs(trk->GetID())) ||
1909 (TMath::Abs(pTrk->GetID()))==(TMath::Abs(trk->GetID())) ) isSamePt = 1;
1916 //___________________________________________________________________________________________
1918 static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
1920 // Obtains the spacial resolution between trigger and V0
1921 // within a distance in (deltaPhi,deltaEta) < 0.1
1923 Float_t res = -100.;
1925 res = TMath::Sqrt( p1x*p1x + p1y*p1y )*TMath::Sqrt( p2x*p2x + p2y*p2y );
1926 res = (p1x*p2x + p1y*p2y)/res;
1928 res = TMath::ACos(res);
1930 return res = TMath::Sin(res)*dist;
1934 //___________________________________________________________________________________________
1936 void AliAnalysisTaskLambdaOverK0sJets::RecCascade(AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
1938 // Local method to reconstruct cascades candidates from the combinations of three tracks
1939 // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
1940 // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
1941 // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
1943 Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
1944 Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
1945 Float_t pLambda[3] = {0.,0.,0.};
1946 Float_t pCascade[3] = {0.,0.,0.};
1947 Float_t lMassCascade = 0., lPtot2Cascade=0.;
1949 // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
1950 for(Int_t i=0;i<2;i++){
1952 // 0. Check the charge for both tracks: trk1 & trk2.
1953 // Usefull in the Lambda step.
1954 if( trk1->Charge() == trk2->Charge() )
1957 // 1. Bachelor: Allocation for the track
1959 lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
1960 else if(i==1) //Omega
1961 lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
1963 lPtot2Bach = TMath::Power(trkBch->P(),2);
1965 lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
1967 // 2. Lambda: Kinematical properties
1968 lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
1970 pLambda[0] = trk1->Px() + trk2->Px();
1971 pLambda[1] = trk1->Py() + trk2->Py();
1972 pLambda[2] = trk1->Pz() + trk2->Pz();
1974 lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
1976 lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
1978 // 3. Cascade: Reconstruction
1979 pCascade[0] = pLambda[0] + trkBch->Px();
1980 pCascade[1] = pLambda[1] + trkBch->Py();
1981 pCascade[2] = pLambda[2] + trkBch->Pz();
1983 lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
1985 lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
1987 // 4. Filling histograms
1988 if( histo.Contains("K0s") ) {
1990 fV0MassCascade->Fill(lMassCascade,1);
1991 else if(i==1) //Omega
1992 fV0MassCascade->Fill(lMassCascade,3);
1994 else if( histo.Contains("AntiLambda") ) {
1996 fV0MassCascade->Fill(lMassCascade,9);
1997 else if(i==1) //Omega
1998 fV0MassCascade->Fill(lMassCascade,11);
2000 else if( histo.Contains("Lambda") ) {
2002 fV0MassCascade->Fill(lMassCascade,5);
2003 else if(i==1) //Omega
2004 fV0MassCascade->Fill(lMassCascade,7);
2011 //___________________________________________________________________________________________
2013 void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
2015 // Three options for the 'step' variable:
2017 // 2) Reconstruction
2019 AliAODTrack *trkTrig = 0x0;
2020 Float_t ptTrig = -100.;
2021 Float_t phiTrig = -100.;
2022 Float_t etaTrig = -100.;
2025 if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
2026 trkTrig = (AliAODTrack*)fAOD->GetTrack(idTrig);
2027 ptTrig = trkTrig->Pt();
2028 phiTrig = trkTrig->Phi();
2029 etaTrig = trkTrig->Eta();
2030 trkTrig->GetPxPyPz(pTrig);
2033 // *************************************************
2034 // Centrality selection
2035 AliCentrality *cent = fAOD->GetCentrality();
2036 Float_t centrality = cent->GetCentralityPercentile("V0M");
2037 Int_t curCentBin = CentBin(centrality);
2039 // *************************************************
2041 TClonesArray *stackMC = 0x0;
2042 Float_t mcXv=0., mcYv=0., mcZv=0.;
2045 TList *lst = fAOD->GetList();
2046 stackMC = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
2048 Printf("ERROR: stack not available");
2051 AliAODMCHeader *mcHdr =
2052 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
2054 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
2057 // *************************************************
2059 const AliAODVertex *vtx=fAOD->GetPrimaryVertex();
2060 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
2061 Int_t nV0sTot = fAOD->GetNumberOfV0s();
2063 for (Int_t iV0 = 0; iV0 < nV0sTot; iV0++) {
2065 AliAODv0 *v0=fAOD->GetV0(iV0);
2067 if (!AcceptV0(fAOD->GetPrimaryVertex(),v0)) continue;
2069 const AliAODTrack *ntrack=(AliAODTrack *)v0->GetDaughter(1);
2070 const AliAODTrack *ptrack=(AliAODTrack *)v0->GetDaughter(0);
2072 Float_t etaNeg = ntrack->Eta();
2073 Float_t etaPos = ptrack->Eta();
2074 Float_t lPtNeg = ntrack->Pt();
2075 Float_t lPtPos = ptrack->Pt();
2078 Double_t xyz[3]; v0->GetSecondaryVtx(xyz);
2079 Float_t dx=xyz[0]-xv, dy=xyz[1]-yv;//, dz=xyz[2]-zv;
2080 // Decay length: 2D & 3D
2081 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
2082 //Float_t dl=TMath::Sqrt(dx*dx + dy*dy + dz*dz);
2083 // Momentum: 2D & 3D
2084 Float_t pt=TMath::Sqrt(v0->Pt2V0());
2085 //Float_t p=v0->P();
2087 Float_t dlK = 0.4977*lt/pt;
2088 Float_t dlL = 1.1157*lt/pt;
2090 Float_t dlK = v0->MassK0Short()*dl/p;
2091 Float_t dlL = v0->MassLambda()*dl/p;
2092 Float_t dlAL = v0->MassAntiLambda()*dl/p;
2096 Bool_t ctK=kTRUE; if (dlK > fMaxCtau*2.68 || dlK < fMinCtau*2.68) ctK=kFALSE;
2097 Bool_t ctL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctL=kFALSE;
2098 Bool_t ctAL=kTRUE; if (dlL > fMaxCtau*7.89 || dlL < fMinCtau*7.89) ctAL=kFALSE;
2100 // Armenteros variables:
2101 Float_t lAlphaV0 = v0->AlphaV0();
2102 Float_t lPtArmV0 = v0->PtArmV0();
2105 Bool_t lComeFromSigma = kTRUE;
2106 Bool_t lCheckMcK0Short = kTRUE;
2107 Bool_t lCheckMcLambda = kTRUE;
2108 Bool_t lCheckMcAntiLambda = kTRUE;
2109 Bool_t lComeFromXi = kTRUE;
2111 Int_t lMCAssocNegDaug = 0;
2112 Int_t lMCAssocPosDaug = 0;
2114 // ********* MC - Association *********
2115 // In case of injected-MC, the correlations might be done with only natural particles
2116 Bool_t isNaturalPart = kTRUE;
2117 if(step==kReconstruction){
2120 if(!stackMC) goto noas;
2122 lComeFromSigma = kFALSE;
2123 lCheckMcK0Short = kFALSE;
2124 lCheckMcLambda = kFALSE;
2125 lCheckMcAntiLambda = kFALSE;
2126 lComeFromXi = kFALSE;
2128 Int_t ntrkMC=stackMC->GetEntriesFast();
2130 Int_t nlab = TMath::Abs(ntrack->GetLabel());//** UInt_t
2131 Int_t plab = TMath::Abs(ptrack->GetLabel());
2133 // To avoid futher problems
2134 if ( (nlab<0 || plab<0) ||
2135 (nlab>=ntrkMC || plab>=ntrkMC) )
2138 AliAODMCParticle *nPart=(AliAODMCParticle*)stackMC->UncheckedAt(nlab);
2139 AliAODMCParticle *pPart=(AliAODMCParticle*)stackMC->UncheckedAt(plab);
2141 if(!nPart || !pPart) goto noas;
2143 // MC origin of daughters: Primaries?
2144 if( nPart->IsPhysicalPrimary() ) lMCAssocNegDaug = 1;
2145 if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
2147 if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
2148 TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
2151 // Daughter momentum cut
2152 if ( ( nPart->Pt() < fMinPtDaughter ) ||
2153 ( pPart->Pt() < fMinPtDaughter ) )
2156 // ----------------------------------------
2158 Int_t lPDGCodeNegDaughter = nPart->GetPdgCode();
2159 Int_t lPDGCodePosDaughter = pPart->GetPdgCode();
2161 Int_t ipMother = pPart->GetMother();
2162 Int_t inMother = nPart->GetMother();
2164 if(inMother<0 || inMother>=ntrkMC) lMCAssocNegDaug = 6;
2165 if(ipMother<0 || ipMother>=ntrkMC) lMCAssocPosDaug = 6;
2167 if(inMother<0 || inMother>=ntrkMC) { goto noas;}
2168 if(inMother != ipMother) { // did the negative daughter decay ?
2169 AliAODMCParticle *negMotherOfMotherPart = (AliAODMCParticle*)stackMC->UncheckedAt(inMother);
2170 if (negMotherOfMotherPart->GetMother() != ipMother)
2174 if (ipMother<0 || ipMother>=ntrkMC)
2177 AliAODMCParticle *p0=(AliAODMCParticle*)stackMC->UncheckedAt(ipMother);
2181 // ----------------------------------------
2183 if ( (ipMother>=fEndOfHijingEvent) &&
2184 (fEndOfHijingEvent!=-1) &&
2185 (p0->GetMother()<0) )
2186 isNaturalPart = kFALSE;
2187 else isNaturalPart = kTRUE;
2189 // ----------------------------------------
2191 if(fSeparateInjPart && !isNaturalPart) goto noas;
2193 Int_t lPDGCodeV0 = p0->GetPdgCode();
2195 // MC origin of daughters:
2196 //Decay from Weak Decay?
2197 if( (TMath::Abs(lPDGCodeV0) == kK0Short) || (TMath::Abs(lPDGCodeV0) == kLambda0) ||
2198 (TMath::Abs(lPDGCodeV0) == kSigmaMinus) || (TMath::Abs(lPDGCodeV0) == kSigmaPlus) ||
2199 (TMath::Abs(lPDGCodeV0) == kSigma0) )
2200 { lMCAssocNegDaug = 2; lMCAssocPosDaug = 2; }
2201 // Cascade Gamma conversion
2202 if( (TMath::Abs(lPDGCodeV0) == kXiMinus) ||
2203 (TMath::Abs(lPDGCodeV0) == kOmegaMinus) )
2204 { lMCAssocNegDaug = 3; lMCAssocPosDaug = 3; }
2206 else if( TMath::Abs(lPDGCodeV0) == kGamma )
2207 { lMCAssocNegDaug = 4; lMCAssocPosDaug = 4; }
2208 // Unidentied mother:
2210 { lMCAssocNegDaug = 5; lMCAssocPosDaug = 5; }
2213 Int_t lIndexMotherOfMother = p0->GetMother();
2214 Int_t lPdgcodeMotherOfMother = 0;
2215 if (lIndexMotherOfMother != -1) {
2216 AliAODMCParticle *lMCAODMotherOfMother=(AliAODMCParticle*)stackMC->UncheckedAt(lIndexMotherOfMother);
2217 if (lMCAODMotherOfMother) {lPdgcodeMotherOfMother = lMCAODMotherOfMother->GetPdgCode();}
2220 // Daughter momentum cut: ! FIX it in case of AOD ! //MC or REc
2221 if ( (nPart->Pt() < fMinPtDaughter ) ||
2222 (pPart->Pt() < fMinPtDaughter ) )
2225 if( (lPDGCodeV0 != kK0Short) &&
2226 (lPDGCodeV0 != kLambda0) &&
2227 (lPDGCodeV0 != kLambda0Bar) )
2231 // ----------------------------------------
2234 if( (lPDGCodePosDaughter==+211) && (lPDGCodeNegDaughter==-211) &&
2235 (inMother==ipMother) && (lPDGCodeV0==310) ) {
2237 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
2238 lCheckMcK0Short = kTRUE;
2242 else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) &&
2243 (inMother==ipMother) && (lPDGCodeV0==3122) ){
2245 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2246 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2247 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2248 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2249 ) lComeFromSigma = kTRUE;
2250 else lComeFromSigma = kFALSE;
2252 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
2253 ( !(((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() )
2254 && (lComeFromSigma==kTRUE) )
2255 ) lCheckMcLambda = kTRUE;
2258 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312)
2259 lComeFromXi = kTRUE;
2263 else if( (lPDGCodePosDaughter==211) && (lPDGCodeNegDaughter==-2212) &&
2264 (inMother==ipMother) && (lPDGCodeV0==-3122) ) {
2267 if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
2268 ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
2269 ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
2270 ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
2271 ) lComeFromSigma = kTRUE;
2272 else lComeFromSigma = kFALSE;
2274 if ( ((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary() ||
2275 ( (!((AliAODMCParticle*)stackMC->UncheckedAt(ipMother))->IsPrimary())
2276 && (lComeFromSigma==kTRUE) )
2277 ) lCheckMcAntiLambda = kTRUE;
2279 if ( TMath::Abs(lPdgcodeMotherOfMother) == 3312)
2280 lComeFromXi = kTRUE;
2284 // ----------------------------------------
2286 if ((p0->Pt())<pMin) goto noas;
2287 if (TMath::Abs(p0->Y())>fYMax ) goto noas;
2289 Float_t dxAs = mcXv - p0->Xv(), dyAs = mcYv - p0->Yv(), dzAs = mcZv - p0->Zv();
2290 Float_t l = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs + dzAs*dzAs);
2292 dxAs = mcXv - pPart->Xv(); dyAs = mcYv - pPart->Yv();
2293 //Float_t ltAs = TMath::Sqrt(dxAs*dxAs + dyAs*dyAs);
2294 Float_t ptAs = p0->Pt();
2295 Float_t rapAs = p0->Y();
2296 Float_t etaAs = p0->Eta();
2297 // phi resolution for V0-reconstruction
2298 Float_t resEta = p0->Eta() - v0->Eta();
2299 Float_t resPhi = p0->Phi() - v0->Phi();
2301 if (l < 0.01) { // Primary V0
2306 if(lCheckMcK0Short && isNaturalPart){
2307 fK0sAssocPt->Fill(ptAs);
2308 fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
2310 fK0sAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
2312 if(lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ){
2313 fK0sAssocPtArm->Fill(ptAs,rapAs,centrality);
2314 if(TMath::Abs(rapAs)<fYMax) fK0sAssocPtMassArm->Fill(v0->MassK0Short(),ptAs,centrality);
2317 fK0sMCResEta->Fill(resEta,pt,centrality);
2318 fK0sMCResPhi->Fill(resPhi,pt,centrality);
2321 // Embeded particles
2323 fK0sAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
2324 if(lPtArmV0 > TMath::Abs(0.2*lAlphaV0) )
2325 fK0sAssocPtArmEmbeded->Fill(ptAs,rapAs,centrality);
2329 // End K0s selection
2333 if(lCheckMcLambda && isNaturalPart){
2334 fLambdaAssocPt->Fill(ptAs);
2335 fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
2337 fLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
2339 if(TMath::Abs(rapAs)<fYMax) fLambdaAssocPtMass->Fill(v0->MassLambda(),ptAs,centrality);
2341 fLambdaMCResEta->Fill(resEta,pt,centrality);
2342 fLambdaMCResPhi->Fill(resPhi,pt,centrality);
2344 // Embeded particles
2345 if(ctL && !isNaturalPart)
2346 fLambdaAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
2348 } // End Lambda selection
2352 if(lCheckMcAntiLambda && isNaturalPart){
2353 fAntiLambdaAssocPt->Fill(ptAs);
2354 fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
2356 fAntiLambdaAssocPtPhiEta[curCentBin]->Fill(p0->Phi(),etaAs,ptAs);
2358 if(TMath::Abs(rapAs)<fYMax) fAntiLambdaAssocPtMass->Fill(v0->MassAntiLambda(),ptAs,centrality);
2360 fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
2361 fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
2363 // Embeded particles
2364 if(ctAL && !isNaturalPart)
2365 fAntiLambdaAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
2367 } // End AntiLambda:
2370 if(lPDGCodeV0==3122) { fLambdaAssocFromXi->Fill(ptAs,centrality); }
2371 else if(lPDGCodeV0==-3122) { fAntiLambdaAssocFromXi->Fill(ptAs,centrality); }
2374 } // End Primary V0 selection
2376 // After the kinematical selection of K0s and Lambdas
2377 // it might be that the daugthers are not identified through MC Association
2378 if(lMCAssocNegDaug==0)
2379 lMCAssocNegDaug = 6;
2380 if(lMCAssocPosDaug==0)
2381 lMCAssocPosDaug = 6;
2384 } // End MC-Association
2386 // ************************************
2388 }// End Correlation Step
2392 Float_t pPos = -100.;
2393 Float_t pNeg = -100.;
2394 Float_t dedxPos = -1000.;
2395 Float_t dedxNeg = -1000.;
2397 //Float_t nsigPosPion = 0.;
2398 Float_t nsigPosProton = 0.;
2399 //Float_t nsigNegPion = 0.;
2400 Float_t nsigNegProton = 0.;
2403 if(fUsePID && !fIsMC) {
2404 const AliAODPid *pidNeg = ntrack->GetDetPid();
2405 const AliAODPid *pidPos = ptrack->GetDetPid();
2407 if (pidNeg && pidPos) {
2408 pPos = pidPos->GetTPCmomentum();
2409 pNeg = pidNeg->GetTPCmomentum();
2410 dedxPos = pidPos->GetTPCsignal()/47.;
2411 dedxNeg = pidNeg->GetTPCsignal()/47.;
2415 nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
2416 nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
2419 nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
2420 nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
2428 Double_t pNegDaug[3]; ntrack->GetPxPyPz(pNegDaug);
2429 Double_t pPosDaug[3]; ptrack->GetPxPyPz(pPosDaug);
2431 Float_t dcaNeg = v0->DcaNegToPrimVertex();
2432 Float_t dcaPos = v0->DcaPosToPrimVertex();
2434 Float_t phiNeg = ntrack->Phi();
2435 Float_t phiPos = ptrack->Phi();
2436 Float_t difPtNeg = pt - lPtNeg;
2437 Float_t difPtPos = pt - lPtPos;
2439 Float_t dca = v0->DcaV0Daughters();
2440 Float_t cpa = v0->CosPointingAngle(fAOD->GetPrimaryVertex());
2441 Float_t lEta = v0->PseudoRapV0();
2442 Float_t lPhi = v0->Phi();
2443 //lPhi = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );
2445 // Number of clusters of daughters in the TPC and ITS
2446 Double_t posITSNcls = ptrack->GetITSNcls();
2447 Double_t negITSNcls = ntrack->GetITSNcls();
2449 Double_t posTPCNcls = ptrack->GetTPCNclsF();
2450 Double_t negTPCNcls = ntrack->GetTPCNclsF();
2453 //cout << " negITSNcls " << negITSNcls << " posITSNcls " << posITSNcls << endl;
2454 //cout << " negTPCNcls " << negTPCNcls << " posTPCNcls " << posTPCNcls << endl;
2459 if(lPhi>0. && lPhi<1.8) continue;
2460 if(lPhi>2.2 && lPhi<3.8) continue;
2461 if(lPhi>4.2 && lPhi<5.8) continue;
2467 if(lPhi>1.8 && lPhi<2.2) continue;
2468 if(lPhi>3.8 && lPhi<4.2) continue;
2469 if(lPhi>5.8 && lPhi<6.2) continue;
2472 // Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
2473 // It is used as well for the side-band subtraction
2474 Int_t isSameTrkPosDaug = -1;
2475 Int_t isSameTrkNegDaug = -1;
2476 if( step==kTriggerCheck ){
2477 isSameTrkPosDaug = SameTrack(trkTrig,ptrack);
2478 isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
2481 // **********************************
2482 // Disentangle the V0 candidate
2483 Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
2484 Float_t massLambda = 0., mLambda = 0., sL = 0.;
2485 Float_t massAntiLambda = 0., sAL = 0.;
2487 Bool_t isCandidate2K0s = kFALSE;
2488 massK0s = v0->MassK0Short();
2489 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
2490 if( fCollision.Contains("PbPb2010") )
2491 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
2492 else if( fCollision.Contains("PbPb2011") )
2493 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
2494 if ( TMath::Abs(mK0s-massK0s) < 3*sK0s ) isCandidate2K0s = kTRUE;
2496 Bool_t isCandidate2Lambda = kFALSE;
2497 massLambda = v0->MassLambda();
2498 mLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
2499 if( fCollision.Contains("PbPb2010") )
2500 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
2501 else if( fCollision.Contains("PbPb2011") )
2502 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
2503 if (TMath::Abs(mLambda-massLambda) < 3*sL) isCandidate2Lambda = kTRUE;
2505 Bool_t isCandidate2LambdaBar = kFALSE;
2506 massAntiLambda = v0->MassAntiLambda();
2507 if( fCollision.Contains("PbPb2010") )
2508 sAL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
2509 else if( fCollision.Contains("PbPb2011") )
2510 sAL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
2511 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) isCandidate2LambdaBar = kTRUE;
2513 // *******************
2515 // *******************
2517 if(step==kReconstruction)
2518 if( (TMath::Sqrt(lPtArmV0*lPtArmV0 + lAlphaV0*lAlphaV0) < 0.2) && isNaturalPart ){
2519 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 2) );
2522 // *******************
2524 // *******************
2525 if (ctK && (TMath::Abs(v0->RapK0Short())<fYMax) &&
2526 ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
2531 if (isCandidate2K0s){
2537 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
2538 Printf(" The LP has the same momentum in X and Y as one of the K0s daughters *** iV0 %d",iV0);
2540 if(fCheckIDTrig){ // Compare properties of daughters nad
2542 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
2544 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
2545 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2546 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2549 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 ",
2550 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2551 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2552 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2553 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2554 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
2558 // Positive daughter
2559 if( isSameTrkPosDaug==1 ){
2560 for(Int_t i=0;i<3;i++)
2561 fCheckIDTrigPtK0s->Fill(difPosP[i],i,pt);
2562 fCheckIDTrigPhiK0s->Fill(posDeltaPhi,0.,pt);
2563 fCheckIDTrigEtaK0s->Fill(posDeltaEta,0.,pt);
2565 // Negative daughter
2566 if( isSameTrkNegDaug==1 ){
2567 for(Int_t i=0;i<3;i++)
2568 fCheckIDTrigPtK0s->Fill(difPosP[i],i+3,pt);
2569 fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
2570 fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
2576 fTriggerParticles->RemoveAt(iArray);
2577 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
2579 } // Close isTrigFromV0daug
2581 }// End K0s Mass cut
2583 break; // End K0s selection for TriggerCheck
2584 case kReconstruction:
2586 fK0sMass->Fill(massK0s,pt,centrality);
2588 fK0sPtvsEta->Fill(pt,lEta,0);
2589 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),0);
2590 fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
2592 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
2593 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
2595 // Only for triggered events and in case of MC K0s is not an embeded particle
2596 if( isTriggered && isNaturalPart ){
2598 fK0sPtvsEta->Fill(pt,lEta,1);
2599 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),1);
2603 // Invariant Mass cut
2604 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
2606 fK0sEtaPhi->Fill(lPhi,lEta);
2607 fK0sPtvsEta->Fill(pt,lEta,2);
2608 fK0sPtvsRap->Fill(pt,v0->RapK0Short(),2);
2610 if(fDoQA && lCheckMcK0Short){ // Quality Assurance
2611 fK0sPIDPosDaug->Fill(pPos,dedxPos,pt);
2612 fK0sPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2614 fK0sPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2615 fK0sPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2617 fK0sDCAPosDaug->Fill(dcaPos,pt);
2618 fK0sDCANegDaug->Fill(dcaNeg,pt);
2620 fK0sDifPtPosDaug->Fill(difPtPos,pt);
2621 fK0sDifPtNegDaug->Fill(difPtNeg,pt);
2623 fK0sDecayPos->Fill(dx,dy,pt);
2624 fK0sDecayVertex->Fill(lt,pt);
2627 fK0sDecayVertexZoom->Fill(lt,pt); //**
2628 fK0sCPA->Fill(cpa,pt); //**
2629 fK0sDCAV0Daug->Fill(dca,pt); //**
2631 fK0sNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2632 fK0sNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2633 fK0sNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2634 fK0sNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2638 } // End selection in mass
2639 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
2640 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
2642 fK0sEtaPhi->Fill(lPhi,lEta,-1);
2644 if(fDoQA && lCheckMcK0Short){ // Quality Assurance
2645 fK0sBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2646 fK0sBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2648 fK0sBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2649 fK0sBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2651 fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
2652 fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
2654 fK0sBckgDifPtPosDaug->Fill(difPtPos,pt);
2655 fK0sBckgDifPtNegDaug->Fill(difPtNeg,pt);
2657 fK0sBckgDecayPos->Fill(dx,dy,pt);
2658 fK0sBckgDecayVertex->Fill(lt,pt);
2661 fK0sBckgDecayVertexZoom->Fill(lt,pt); //**
2662 fK0sBckgCPA->Fill(cpa,pt); //**
2663 fK0sBckgDCAV0Daug->Fill(dca,pt); //**
2665 fK0sBckgNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2666 fK0sBckgNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2667 fK0sBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2668 fK0sBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2672 }// End selection in outside the mass cut
2674 break; // End K0s selection for Corrleation
2676 Printf( " Selection of 'step' is not set properly");
2681 } // End K0s selection
2683 // *******************
2685 // *******************
2686 if ( ctL && (TMath::Abs(v0->RapLambda())<fYMax) &&
2687 (nsigPosProton < fNSigma) && !isCandidate2K0s && !isCandidate2LambdaBar
2688 && (massLambda > 1.0649 && massLambda < 1.1651 ) ){
2693 if (isCandidate2Lambda){
2699 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
2700 Printf(" The LP has the same momentum in X and Y as one of the Lambda daughters *** iV0 %d",iV0);
2702 if(fCheckIDTrig){ // Compare properties of daughters nad
2704 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
2706 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
2707 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2708 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2711 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 ",
2712 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2713 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2714 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2715 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2716 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
2720 // Positive daughter
2721 if( isSameTrkPosDaug==1 ){
2722 for(Int_t i=0;i<3;i++)
2723 fCheckIDTrigPtLambda->Fill(difPosP[i],i,pt);
2724 fCheckIDTrigPhiLambda->Fill(posDeltaPhi,0.,pt);
2725 fCheckIDTrigEtaLambda->Fill(posDeltaEta,0.,pt);
2727 // Negative daughter
2728 if( isSameTrkNegDaug==1 ){
2729 for(Int_t i=0;i<3;i++)
2730 fCheckIDTrigPtLambda->Fill(difPosP[i],i+3,pt);
2731 fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
2732 fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
2737 fTriggerParticles->RemoveAt(iArray);
2738 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
2740 } // Close isTrigFromV0daug
2742 } // End Lambda Mass cut
2743 break; // End Lambda selection for TriggerCheck
2744 case kReconstruction:
2746 fLambdaMass->Fill(massLambda,pt,centrality);
2747 fLambdaPtvsEta->Fill(pt,lEta,0);
2748 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),0);
2750 fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
2752 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
2753 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
2755 // Only for triggered events and in case of MC Lambda is not a embeded particle
2756 if( isTriggered && isNaturalPart ){
2758 fLambdaPtvsEta->Fill(pt,lEta,1);
2759 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),1);
2762 // Invariant Mass cut
2763 if (TMath::Abs(mLambda-massLambda) < 3*sL) {
2765 fLambdaEtaPhi->Fill(lPhi,lEta);
2766 fLambdaPtvsEta->Fill(pt,lEta,2);
2767 fLambdaPtvsRap->Fill(pt,v0->RapLambda(),2);
2769 if(fDoQA && lCheckMcLambda){ // Quality Assurance
2770 fLambdaPIDPosDaug->Fill(pPos,dedxPos,pt);
2771 fLambdaPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2773 fLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2774 fLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2776 fLambdaDCAPosDaug->Fill(dcaPos,pt);
2777 fLambdaDCANegDaug->Fill(dcaNeg,pt);
2779 fLambdaDifPtPosDaug->Fill(difPtPos,pt);
2780 fLambdaDifPtNegDaug->Fill(difPtNeg,pt);
2782 fLambdaDecayPos->Fill(dx,dy,pt);
2783 fLambdaDecayVertex->Fill(lt,pt);
2786 fLambdaDecayVertexZoom->Fill(lt,pt); //**
2787 fLambdaCPA->Fill(cpa,pt); //**
2788 fLambdaDCAV0Daug->Fill(dca,pt); //**
2790 fLambdaNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2791 fLambdaNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2792 fLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2793 fLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2797 } // End selection in mass
2799 if( (TMath::Abs(mLambda-massLambda + 6.5*sL) < 1.5*sL) ||
2800 (TMath::Abs(mLambda-massLambda - 6.5*sL) < 1.5*sL) ){
2802 fLambdaEtaPhi->Fill(lPhi,lEta,-1);
2804 if(fDoQA && lCheckMcLambda){ // Quality Assurance
2805 fLambdaBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2806 fLambdaBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2808 fLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2809 fLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2811 fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
2812 fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
2814 fLambdaBckgDifPtPosDaug->Fill(difPtPos,pt);
2815 fLambdaBckgDifPtNegDaug->Fill(difPtNeg,pt);
2817 fLambdaBckgDecayPos->Fill(dx,dy,pt);
2818 fLambdaBckgDecayVertex->Fill(lt,pt);
2821 fLambdaBckgDecayVertexZoom->Fill(lt,pt); //**
2822 fLambdaBckgCPA->Fill(cpa,pt); //**
2823 fLambdaBckgDCAV0Daug->Fill(dca,pt); //**
2825 fLambdaBckgNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2826 fLambdaBckgNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2827 fLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2828 fLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2832 }// End selection in outside the mass cut
2834 break; // End Lambda selection for Correlation
2836 Printf(" Selection of 'step' is not set properly");
2841 } // End Lambda selection
2843 // *******************
2844 // AntiLambda selection
2845 // *******************
2846 if ( ctAL && (TMath::Abs(v0->RapLambda())<fYMax) &&
2847 (nsigNegProton < fNSigma) && !isCandidate2K0s && !isCandidate2Lambda
2848 && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) ) {
2853 if (isCandidate2LambdaBar){
2859 if( isSameTrkPosDaug==1 || isSameTrkNegDaug==1 ){
2860 Printf(" The LP has the same momentum in X and Y as one of the AntiLambda daughters *** iV0 %d",iV0);
2862 if(fCheckIDTrig){ // Compare properties of daughters nad
2864 difNegP[0] = (pTrig[0]-pNegDaug[0])/pTrig[0]; difNegP[1] = (pTrig[1]-pNegDaug[1])/pTrig[1]; difNegP[2] = (pTrig[2]-pNegDaug[2])/pTrig[2];
2866 difPosP[0] = (pTrig[0]-pPosDaug[0])/pTrig[0]; difPosP[1] = (pTrig[1]-pPosDaug[1])/pTrig[1]; difPosP[2] = (pTrig[2]-pPosDaug[2])/pTrig[2];
2867 Float_t posDeltaPhi = phiTrig - phiPos, negDeltaPhi = phiTrig - phiNeg;
2868 Float_t posDeltaEta = etaTrig - etaPos, negDeltaEta = etaTrig - etaNeg;
2871 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 ",
2872 iV0, TMath::Abs( trkTrig->GetID() ), ntrack->GetID() , ptrack->GetID() ,
2873 TMath::Abs( difNegP[1] ), TMath::Abs( difNegP[2] ), TMath::Abs( difNegP[0] ),
2874 TMath::Abs( difPosP[1] ), TMath::Abs( difPosP[2] ), TMath::Abs( difPosP[0] ),
2875 TMath::Abs( negDeltaPhi ), TMath::Abs( negDeltaEta ),
2876 TMath::Abs( posDeltaPhi ), TMath::Abs( posDeltaEta )
2880 // Positive daughter
2881 if( isSameTrkPosDaug==1 ){
2882 for(Int_t i=0;i<3;i++)
2883 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i,pt);
2884 fCheckIDTrigPhiAntiLambda->Fill(posDeltaPhi,0.,pt);
2885 fCheckIDTrigEtaAntiLambda->Fill(posDeltaEta,0.,pt);
2887 // Negative daughter
2888 if( isSameTrkNegDaug==1 ){
2889 for(Int_t i=0;i<3;i++)
2890 fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i+3,pt);
2891 fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
2892 fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
2897 fTriggerParticles->RemoveAt(iArray);
2898 fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
2900 }// Close isTrigFromV0daug
2902 }// End AntiLambda Mass cut
2903 break; // End AntiLambda selection for CheckTrigger
2904 case kReconstruction:
2906 fAntiLambdaMass->Fill(massAntiLambda,pt,centrality);
2907 fAntiLambdaPtvsEta->Fill(pt,lEta,0);
2908 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),0);
2910 fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
2912 if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
2913 fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
2915 // Only for triggered events and in case of MC AntiLambda is not a embeded particle
2916 if( isTriggered && isNaturalPart ){
2918 fAntiLambdaPtvsEta->Fill(pt,lEta,1);
2919 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),1);
2922 // Invariant Mass cut
2923 if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) {
2924 fAntiLambdaEtaPhi->Fill(lPhi,lEta);
2925 fAntiLambdaPtvsEta->Fill(pt,lEta,2);
2926 fAntiLambdaPtvsRap->Fill(pt,v0->RapLambda(),2);
2928 if(fDoQA && lCheckMcAntiLambda){ // Quality Assurance
2929 fAntiLambdaPIDPosDaug->Fill(pPos,dedxPos,pt);
2930 fAntiLambdaPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2932 fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2933 fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2935 fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
2936 fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
2938 fAntiLambdaDifPtPosDaug->Fill(difPtPos,pt);
2939 fAntiLambdaDifPtNegDaug->Fill(difPtNeg,pt);
2941 fAntiLambdaDecayPos->Fill(dx,dy,pt);
2942 fAntiLambdaDecayVertex->Fill(lt,pt);
2945 fAntiLambdaDecayVertexZoom->Fill(lt,pt); //**
2946 fAntiLambdaCPA->Fill(cpa,pt); //**
2947 fAntiLambdaDCAV0Daug->Fill(dca,pt); //**
2949 fAntiLambdaNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2950 fAntiLambdaNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2951 fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2952 fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2957 } // End selection in mass
2959 if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sAL) < 1.5*sAL) ||
2960 (TMath::Abs(mLambda-massAntiLambda - 6.5*sAL) < 1.5*sAL) ){
2962 fAntiLambdaEtaPhi->Fill(lPhi,lEta,-1);
2964 if(fDoQA && lCheckMcAntiLambda){ // Quality Assurance
2965 fAntiLambdaBckgPIDPosDaug->Fill(pPos,dedxPos,pt);
2966 fAntiLambdaBckgPIDNegDaug->Fill(pNeg,dedxNeg,pt);
2968 fAntiLambdaBckgPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
2969 fAntiLambdaBckgPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
2971 fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
2972 fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
2974 fAntiLambdaBckgDifPtPosDaug->Fill(difPtPos,pt);
2975 fAntiLambdaBckgDifPtNegDaug->Fill(difPtNeg,pt);
2977 fAntiLambdaBckgDecayPos->Fill(dx,dy,pt);
2978 fAntiLambdaBckgDecayVertex->Fill(lt,pt);
2981 fAntiLambdaBckgDecayVertexZoom->Fill(lt,pt); //**
2982 fAntiLambdaBckgCPA->Fill(cpa,pt); //**
2983 fAntiLambdaBckgDCAV0Daug->Fill(dca,pt); //**
2985 fAntiLambdaBckgNClustersTPC->Fill(phiPos,posTPCNcls,pt);
2986 fAntiLambdaBckgNClustersTPC->Fill(phiNeg,negTPCNcls,-pt);
2987 fAntiLambdaBckgNClustersITSPos->Fill(phiPos,posITSNcls,pt);
2988 fAntiLambdaBckgNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
2992 }// End selection in outside the mass cut
2995 Printf( " Selection of 'step' is not set properly");
2999 } // End AntiLambda selection
3005 //___________________________________________________________________________________________
3007 void AliAnalysisTaskLambdaOverK0sJets::TriggerParticle()
3009 // Obtain the trigger particles of the event to perform the correlations in phi and eta
3011 // ----------------------------
3012 // 1. Trigger particles
3013 TClonesArray *stack = 0x0;
3015 TList *lst = fAOD->GetList();
3016 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
3018 Printf("ERROR: stack not available");
3023 Int_t nTrk= fAOD->GetNumberOfTracks();
3024 AliCentrality *cent = fAOD->GetCentrality();
3025 Float_t centrality = cent->GetCentralityPercentile("V0M");
3026 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
3027 Float_t zv=vtx->GetZ();
3029 for (Int_t i=0; i<nTrk; i++) {
3030 AliAODTrack *t = fAOD->GetTrack(i);
3031 if(!AcceptTrack(t)) continue;
3032 Double_t pt=t->Pt();
3033 Double_t eta=t->Eta();
3034 Double_t phi=t->Phi();
3036 if( (pt>fTrigPtMin) && (pt<fTrigPtMax) && (TMath::Abs(eta)<fTrigEtaMax) ) {
3037 fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );
3040 Int_t lab = TMath::Abs(t->GetLabel());
3041 AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
3043 Float_t resPt = (part->Pt() - pt)/pt;
3044 Float_t resEta = part->Eta() - eta;
3045 Float_t resPhi = part->Phi() - phi;
3047 fTriggerMCResPt->Fill(resPt,pt,centrality);
3048 fTriggerMCResEta->Fill(resEta,pt,centrality);
3049 fTriggerMCResPhi->Fill(resPhi,pt,centrality);
3055 // ----------------------------
3056 // 2. Checking if the trigger particle
3057 // might be a daughter from the V0-candidate
3058 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
3059 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
3060 Int_t id = trig->ID();
3061 V0Loop(kTriggerCheck,kFALSE,i,id);
3066 //___________________________________________________________________________________________
3068 void AliAnalysisTaskLambdaOverK0sJets::UserExec(Option_t *)
3070 // Main loop for the Analysis
3072 // Initializing global variables for the correlation studies (mandatory for each event).
3073 // ---- 1) Trigger Particle: id track
3075 // ---- 2) TriggerCheck: Variables used to crosscheck if trigger particle is a V0 daughter ---- //
3080 // Getting AOD Event
3081 fAOD = (AliAODEvent *)InputEvent();
3082 fEvents->Fill(0); //event counter
3085 Printf("ERROR: aod not available");
3090 // Physics selection
3091 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
3092 AliInputEventHandler *hdr=(AliInputEventHandler*)mgr->GetInputEventHandler();
3093 UInt_t maskIsSelected = hdr->IsEventSelected();
3094 Bool_t isSelected = kFALSE;
3096 if( fCollision.Contains("PbPb2010") )
3097 isSelected = (maskIsSelected & AliVEvent::kMB);
3098 else if( fCollision.Contains("PbPb2011") ){
3099 Bool_t isSelectedCentral = maskIsSelected & AliVEvent::kCentral;
3100 Bool_t isSelectedSemiCentral = maskIsSelected & AliVEvent::kSemiCentral;
3101 Bool_t isSelectedMB = maskIsSelected & AliVEvent::kMB;
3102 if( isSelectedCentral || isSelectedSemiCentral || isSelectedMB ) isSelected = kTRUE;
3105 if(!isSelected) return;
3108 // Centrality selection
3109 AliCentrality *cent = fAOD->GetCentrality();
3110 Float_t centrality = cent->GetCentralityPercentile("V0M");
3111 fCentrality->Fill(centrality);
3113 if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
3117 const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
3118 if (vtx->GetNContributors()<3) return;
3121 Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
3123 fPrimaryVertexX->Fill(xv);
3124 fPrimaryVertexY->Fill(yv);
3125 fPrimaryVertexZ->Fill(zv);
3127 if (TMath::Abs(zv) > 10.) return;
3129 fCentrality2->Fill(centrality);
3131 // Protect the code: only interested in events with centrality < 40%
3132 if(centrality>=40.) return;
3134 // Getting PID Response
3135 fPIDResponse = hdr->GetPIDResponse();
3137 Int_t curVtxBin = VtxBin(zv);
3138 Int_t curCentBin = CentBin(centrality);
3140 // **********************************************
3141 // Triggered Particle - Trigger Particle
3142 fTriggerParticles = new TObjArray();
3143 fTriggerParticles->SetOwner(kTRUE);
3146 // V0-candidate is the highest particle in the event:
3147 if(fIsV0LP) { fEvents->Fill(8); fTriggerIsV0->Fill(fPtV0LP);}
3149 Int_t NtrigPerEvnt = 0;
3150 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
3151 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
3153 if(trig->WhichCandidate()==0){
3155 fTriggerComingFromDaug->Fill(trig->Pt());
3156 fCheckTriggerFromV0Daug->Fill(1);
3157 if(fIsV0LP) fCheckTriggerFromV0Daug->Fill(2);
3159 else if( trig->WhichCandidate()==1){
3161 fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
3162 fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
3163 fCheckTriggerFromV0Daug->Fill(0);
3169 fNTrigPerEvt->Fill(NtrigPerEvnt,centrality);
3171 // ******************************************
3172 // Start loop over MC particles
3174 fTriggerPartMC = new TObjArray();
3175 fTriggerPartMC->SetOwner(kTRUE);
3176 fAssocPartMC = new TObjArray();
3177 fAssocPartMC->SetOwner(kTRUE);
3179 fEndOfHijingEvent = -1;
3180 TClonesArray *stack = 0x0;
3181 Float_t mcXv=0., mcYv=0., mcZv=0.;
3185 TList *lst = fAOD->GetList();
3186 stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
3188 Printf("ERROR: stack not available");
3192 AliAODMCHeader *mcHdr =
3193 (AliAODMCHeader*)lst->FindObject(AliAODMCHeader::StdBranchName());
3195 mcXv=mcHdr->GetVtxX(); mcYv=mcHdr->GetVtxY(); mcZv=mcHdr->GetVtxZ();
3197 Int_t nTrkMC = stack->GetEntriesFast();
3198 // -----------------------------------------
3199 // --------- Trigger particle --------------
3200 // -----------------------------------------
3201 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
3203 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
3205 if(p0->Charge()==0) continue;
3206 if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
3207 if( ( p0->Pt() < fTrigPtMin ) || ( p0->Pt() > fTrigPtMax ) ) continue;
3209 // ----------------------------------------
3211 // For injected MC: it determines where HIJING event ends
3212 if (fEndOfHijingEvent==-1) {
3213 if ( ( p0->GetStatus() == 21 ) ||
3214 ( (p0->GetPdgCode() == 443) &&
3215 (p0->GetMother() == -1) &&
3216 (p0->GetDaughter(0) == (iTrkMC+1))) ) {
3217 fEndOfHijingEvent = iTrkMC;
3221 // ----------------------------------------
3223 Int_t isNaturalPart = 1;
3224 if ( (iTrkMC>=fEndOfHijingEvent) &&
3225 (fEndOfHijingEvent!=-1) &&
3226 (p0->GetMother()<0) )
3229 // ----------------------------------------
3231 if(isNaturalPart == 0) continue;
3232 if( !p0->IsPhysicalPrimary() ) continue;
3234 fTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 1) );
3236 } // End loop over charged particles
3239 // -----------------------------------------
3240 // ---------- Strange particles ------------
3241 // -----------------------------------------
3242 //fEndOfHijingEvent = -1;
3243 for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
3245 AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
3248 // ----------------------------------------
3250 Int_t lPdgcodeCurrentPart = p0->GetPdgCode();
3251 if ( (lPdgcodeCurrentPart != kK0Short) &&
3252 (lPdgcodeCurrentPart != kLambda0) &&
3253 (lPdgcodeCurrentPart != kLambda0Bar) ) continue;
3255 // ----------------------------------------
3257 Int_t isNaturalPart = 1;
3258 if ( (iTrkMC>=fEndOfHijingEvent) &&
3259 (fEndOfHijingEvent!=-1) &&
3260 (p0->GetMother()<0) )
3263 fInjectedParticles->Fill(isNaturalPart);
3265 if(fSeparateInjPart && !isNaturalPart) continue;
3267 // ----------------------------------------
3269 Float_t lRapCurrentPart = MyRapidity(p0->E(),p0->Pz());
3270 Float_t lEtaCurrentPart = p0->Eta();
3271 Float_t lPhiCurrentPart = p0->Phi();
3272 Float_t lPtCurrentPart = p0->Pt();
3274 Int_t iCurrentMother = p0->GetMother();
3275 AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
3276 Int_t lPdgCurrentMother = 0;
3277 if (iCurrentMother == -1) { lPdgCurrentMother = 0;}
3278 else { lPdgCurrentMother = pCurrentMother->GetPdgCode(); }
3280 Int_t id0 = p0->GetDaughter(0);
3281 Int_t id1 = p0->GetDaughter(1);
3283 //if ( id0 == id1 ) continue;
3284 if ( (id0 < 0 || id1 < 0) ||
3285 (id0 >=nTrkMC || id1 >= nTrkMC) ) continue;
3287 AliAODMCParticle *pDaughter0 = (AliAODMCParticle *)stack->UncheckedAt(id0);
3288 AliAODMCParticle *pDaughter1 = (AliAODMCParticle *)stack->UncheckedAt(id1);
3289 if (!pDaughter0 || !pDaughter1) continue;
3291 if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
3292 TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
3295 // Daughter momentum cut: ! FIX it in case of AOD !
3296 if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
3297 ( pDaughter1->Pt() < fMinPtDaughter ) )
3300 if ((p0->Pt())<pMin) continue;
3301 if (TMath::Abs(lRapCurrentPart) > fYMax) continue;
3303 Float_t dx = mcXv-p0->Xv(), dy = mcYv-p0->Yv(), dz = mcZv-p0->Zv();
3304 Float_t l = TMath::Sqrt(dx*dx + dy*dy + dz*dz);
3306 //Cut in the 3D-distance of the secondary vertex to primary vertex
3307 if (l > 0.01) continue; // secondary V0
3309 //Transverse distance to vertex
3310 dx = mcXv-pDaughter0->Xv(); dy = mcYv-pDaughter0->Yv();
3311 Float_t lt=TMath::Sqrt(dx*dx + dy*dy);
3314 if (lPdgcodeCurrentPart == kK0Short) {
3316 fK0sMCPt->Fill(lPtCurrentPart);
3317 fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3321 fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3322 fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
3324 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3325 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
3327 else{ fK0sMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); }
3331 } // End K0s selection
3333 if (lPdgcodeCurrentPart == kLambda0) {
3335 fLambdaMCPt->Fill(lPtCurrentPart);
3336 fLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3339 fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3340 fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
3342 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3343 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
3345 else{ fLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); }
3347 if ( TMath::Abs(lPdgCurrentMother) == 3312)
3348 fLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
3353 if (lPdgcodeCurrentPart == kLambda0Bar) {
3355 fAntiLambdaMCPt->Fill(lPtCurrentPart);
3356 fAntiLambdaMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3360 fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
3362 fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
3364 if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
3365 fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
3367 else{ fAntiLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality); }
3369 if ( TMath::Abs(lPdgCurrentMother) == 3312)
3370 fAntiLambdaMCFromXi->Fill(lPtCurrentPart,centrality);
3375 } // End loop over MC
3377 // -----------------------------------------
3378 // ---------- MC Correlations --------------
3379 // -----------------------------------------
3381 Float_t triggerMCPt = -1000.;
3382 Float_t triggerMCPhi = -1000.;
3383 Float_t triggerMCEta = -1000.;
3385 Float_t dPhiMC = -100.;
3386 Float_t dEtaMC = -100.;
3388 for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
3389 AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
3391 triggerMCPt = trigMC->Pt();
3392 triggerMCPhi = trigMC->Phi();
3393 triggerMCEta = trigMC->Eta();
3395 fTriggerMCPtCent->Fill(triggerMCPt,centrality);
3397 for(Int_t jj=0; jj<(fAssocPartMC->GetEntriesFast()); jj++){
3399 AliMiniParticle* assocMC = (AliMiniParticle*) fAssocPartMC->At(jj);
3400 if(assocMC->Pt()>triggerMCPt) continue;
3402 dPhiMC = dPHI(triggerMCPhi,assocMC->Phi());
3403 dEtaMC = triggerMCEta - assocMC->Eta();
3406 for(Int_t k=0;k<kN1;k++)
3407 if( (assocMC->Pt()>kPtBinV0[k]) && (assocMC->Pt()<kPtBinV0[k+1]) ){
3408 if(assocMC->WhichCandidate()==3)
3409 fK0sdPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3410 if(assocMC->WhichCandidate()==4)
3411 fLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3412 if(assocMC->WhichCandidate()==5)
3413 fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
3416 } // End loop over trigger particles
3418 } // End loop over trigger particles
3420 } // End MC condition
3422 // *************************************************
3424 fAssocParticles = new TObjArray();
3425 fAssocParticles->SetOwner(kTRUE);
3427 V0Loop(kReconstruction,kTRUE,-1,-1);
3429 V0Loop(kReconstruction,kFALSE,-1,-1);
3431 //-------------------------------------------------------------
3433 //-------------------------------------------------------------
3434 Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
3435 Float_t massK0s=0., mK0s=0., sK0s=0.;
3436 Float_t massL=0., mL=0., sL=0.;
3437 Float_t massAL=0.; //, mAL=0., sAL=0.;
3438 Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
3439 Float_t lPhi=0., lEta=0.;
3440 Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
3441 Float_t dx=-100., dy=-100., dz=-100., lt=-100., res=-100.;
3442 Float_t dlK=-100., dlL=-100.;
3443 Float_t dPhi=-100., dEta=-100., radio=-100.;
3446 for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
3447 AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
3448 if( trig->WhichCandidate() == 0 ) continue;
3450 AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
3451 ptTrig = tTrig->Pt(); pxTrig = tTrig->Px(); pyTrig = tTrig->Py();
3453 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
3454 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
3455 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
3456 const AliAODTrack *ntrack=(AliAODTrack *)tAssoc->GetDaughter(1);
3457 const AliAODTrack *ptrack=(AliAODTrack *)tAssoc->GetDaughter(0);
3459 if( SameTrack(tTrig,ntrack) || SameTrack(tTrig,ptrack) )
3462 if( ptTrig < trackAssocME->Pt() ) continue;
3464 lPhi = trackAssocME->Phi();
3465 lEta = trackAssocME->Eta();
3467 // Correlation in deltaPhi & deltaEta
3468 dPhi = dPHI(trig->Phi(),lPhi);
3469 dEta = trig->Eta() - lEta;
3470 radio = TMath::Sqrt(dPhi*dPhi + dEta*dEta);
3472 // Armenteros variables:
3473 lAlphaV0 = tAssoc->AlphaV0();
3474 lPtArmV0 = tAssoc->PtArmV0();
3477 pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py();
3479 Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
3480 dx=xyz[0]-xv; dy=xyz[1]-yv; dz=xyz[2]-zv;
3482 lt=TMath::Sqrt(dx*dx + dy*dy);
3483 // Spatial resolution trigger-V0 point decay
3484 res = SpatialResolution(pxTrig,pyTrig,pxAssoc,pyAssoc,lt);
3489 Int_t binPtv0 = PtBin( pt );
3490 if(binPtv0==-1) continue;
3492 Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
3493 Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
3495 // *******************
3497 // *******************
3498 if( trackAssocME->WhichCandidate() == 2 )
3499 fGammaConversiondPhidEta[curCentBin]->Fill(dPhi,dEta,zv);
3501 // *******************
3503 // *******************
3504 if( trackAssocME->WhichCandidate() == 3 ){
3506 massK0s = tAssoc->MassK0Short();
3507 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
3508 if( fCollision.Contains("PbPb2010") )
3509 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
3510 else if( fCollision.Contains("PbPb2011") )
3511 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
3513 // ==== Correlations K0s invariant mass peak ==== //
3514 // +++++++++++ Pt bin & centrality
3515 fK0sdPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massK0s);
3517 // ==== Correlations K0s invariant mass peak ==== //
3518 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
3520 // Only fills the histograms when it is a triggered event
3522 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,0);
3523 fK0sPtvsEta->Fill(pt,lEta,3);
3524 fK0sPtvsRap->Fill(pt,tAssoc->RapK0Short(),3);
3527 // Pt bin & centrality
3528 //fK0sdPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3531 fK0sSpatialRes->Fill(dPhi,res,lt);
3533 fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3534 RecCascade(tTrig,ntrack,ptrack,"K0s");
3535 RecCascade(tTrig,ptrack,ntrack,"K0s");
3540 // ==== Correlations K0s background ==== //
3541 if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
3542 TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
3544 // Only fills the histograms when it is a triggered event
3546 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,1);
3547 // MC Association of daughter particles
3548 fK0sBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3549 fK0sBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3552 // Pt bin & centrality
3553 //fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3555 if(radio < 0.4){ // Under the correlation peak
3556 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
3557 fK0sBckgDecLength->Fill(dlK,ptTrig);
3558 fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3559 fK0sBckgEtaPhi->Fill(lPhi,lEta);
3560 fK0sBckgPhiRadio->Fill(lPhi,lt);
3562 //RecCascade(trkTrig,ntrack,ptrack,"K0s");
3563 //RecCascade(trkTrig,ptrack,ntrack,"K0s");
3565 }// End selection in the correlation peak
3567 } // End background selection
3569 } // End K0s selection
3571 // *******************
3573 // *******************
3574 if( trackAssocME->WhichCandidate() == 4 ){
3575 massL = tAssoc->MassLambda();
3576 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3577 if( fCollision.Contains("PbPb2010") )
3578 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
3579 else if( fCollision.Contains("PbPb2011") )
3580 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
3582 // ==== Correlations Lambda invariant mass peak ==== //
3583 // +++++++++++ Pt bin & centrality
3584 fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
3586 // ==== Correlations Lambda invariant mass peak ==== //
3587 if (TMath::Abs(mL-massL) < 3*sL) {
3589 // Only fills the histograms when it is a triggered event
3591 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,2);
3592 fLambdaPtvsEta->Fill(pt,lEta,3);
3593 fLambdaPtvsRap->Fill(pt,tAssoc->RapLambda(),3);
3596 // Pt bin & centrality
3597 //fLambdadPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3600 fLambdaSpatialRes->Fill(dPhi,res,lt);
3602 fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3603 RecCascade(tTrig,ntrack,ptrack,"Lambda");
3604 RecCascade(tTrig,ptrack,ntrack,"Lambda");
3607 } // End mass peak selection
3608 // ==== Correlations Lambda background ==== //
3609 if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
3610 TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
3612 // Only fills the histograms when it is a triggered event
3614 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
3615 // MC Association of daughter particles
3616 fLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3617 fLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3620 // Pt bin & centrality
3621 //fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3623 if(radio < 0.4){ // Under the peak
3624 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
3625 fLambdaBckgDecLength->Fill(dlL,ptTrig);
3626 fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3627 fLambdaBckgEtaPhi->Fill(lPhi,lEta);
3628 fLambdaBckgPhiRadio->Fill(lPhi,lt);
3630 //RecCascade(trkTrig,ntrack,ptrack,"Lambda");
3631 //RecCascade(trkTrig,ptrack,ntrack,"Lambda");
3633 }// End selection in the correlation peak
3635 } // End bacground selection
3637 }// End Lambda selection
3638 // *******************
3639 // AntiLambda selection
3640 // *******************
3641 if( trackAssocME->WhichCandidate() == 5 ){
3642 massAL = tAssoc->MassAntiLambda();
3643 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3644 if( fCollision.Contains("PbPb2010") )
3645 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
3646 else if( fCollision.Contains("PbPb2011") )
3647 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
3650 // ==== Correlations Lambda invariant mass peak ==== //
3651 // +++++++++++ Pt bin & centrality
3652 fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
3654 // ==== Correlations AntiLambda invariant mass peak ==== //
3655 if (TMath::Abs(mL-massAL) < 3*sL) {
3657 // Only fills the histograms when it is a triggered event
3659 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,4);
3660 fAntiLambdaPtvsEta->Fill(pt,lEta,3);
3661 fAntiLambdaPtvsRap->Fill(pt,tAssoc->RapLambda(),3);
3664 // Pt bin & centrality
3665 //fAntiLambdadPhidEtaPtL[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3668 fAntiLambdaSpatialRes->Fill(dPhi,res,lt);
3670 fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3671 RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
3672 RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
3675 } // End AntiLambda mass peak
3676 // ==== Correlations AntiLambda background ==== //
3677 if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
3678 (TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
3680 // Only fills the histograms when it is a triggered event
3682 fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
3683 // MC Association of daughter particles
3684 fAntiLambdaBckgDCANegDaugToPrimVtx->Fill(lMCAssocNegDaug,dcaNeg);
3685 fAntiLambdaBckgDCAPosDaugToPrimVtx->Fill(lMCAssocPosDaug,dcaPos);
3688 // Pt bin & centrality
3689 //fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
3691 if(radio < 0.4){ // Under the peak
3692 fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
3693 fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
3694 fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
3695 fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
3696 fAntiLambdaBckgPhiRadio->Fill(lPhi,lt);
3698 //RecCascade(trkTrig,ntrack,ptrack,"AntiLambda");
3699 //RecCascade(trkTrig,ptrack,ntrack,"AntiLambda");
3701 }// End selection in the correlation peak
3703 }// End AntiLambda background
3705 } // End AntiLambda selection
3707 } // End loop over associated particles
3709 } // End loop over trigger particles
3711 //-------------------------------------------------------------
3713 //-------------------------------------------------------------
3715 TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
3716 Int_t nMixed = evMixList->GetSize();
3718 if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
3720 for(Int_t ii=0; ii<nMixed; ii++){
3722 AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
3723 Double_t phiTrigME = trackTriggerME->Phi();
3724 Double_t etaTrigME = trackTriggerME->Eta();
3726 for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
3728 AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
3729 if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
3730 if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
3731 if( trackAssocME->WhichCandidate() == 2 ) continue;
3733 AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
3736 Bool_t IsSelected = kFALSE;
3738 if( trackAssocME->WhichCandidate() == 3 ){
3739 massK0s = tAssoc->MassK0Short();
3740 mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
3741 if( fCollision.Contains("PbPb2010") )
3742 sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
3743 else if( fCollision.Contains("PbPb2011") )
3744 sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
3746 if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
3749 if( trackAssocME->WhichCandidate() == 4 ){
3750 massL = tAssoc->MassLambda();
3751 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3752 if( fCollision.Contains("PbPb2010") )
3753 sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
3754 else if( fCollision.Contains("PbPb2011") )
3755 sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
3757 if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
3760 if( trackAssocME->WhichCandidate() == 5 ){
3761 massAL = tAssoc->MassAntiLambda();
3762 mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
3763 if( fCollision.Contains("PbPb2010") )
3764 sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
3765 else if( fCollision.Contains("PbPb2011") )
3766 sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
3768 if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
3771 if(!IsSelected) continue;
3773 Double_t phiAssocME = trackAssocME->Phi();
3774 Double_t etaAssocME = trackAssocME->Eta();
3776 Double_t deltaPhi = dPHI(phiTrigME,phiAssocME);
3777 Double_t deltaEta = etaTrigME - etaAssocME;
3779 Int_t binPtv0 = PtBin( trackAssocME->Pt() );
3780 if(binPtv0==-1) continue;
3782 if( trackAssocME->WhichCandidate() == 3 ) {
3783 fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
3784 else if( trackAssocME->WhichCandidate() == 4 )
3785 fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
3786 else if( trackAssocME->WhichCandidate() == 5 )
3787 fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
3795 //--------------------------------------------------------
3796 //Add the current event to the list of events for mixing
3797 //--------------------------------------------------------
3799 //Add current event to buffer and Remove redundant events
3800 if(fTriggerParticles->GetEntriesFast()>=0){
3802 for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
3803 AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
3804 //cout << trkTrig->Pt() << " " << ii << endl;
3806 if(evMixList->GetSize() < nMaxEvMix)
3807 evMixList->AddFirst(trkTrig);
3809 if(evMixList->GetSize() >= nMaxEvMix) {
3810 AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
3811 evMixList->RemoveLast();
3816 }// End loop over fTriggerParticles
3818 }// End adding trigger particles to buffers
3822 //___________________________________________________________________________________________
3824 void AliAnalysisTaskLambdaOverK0sJets::Terminate(Option_t *)
3826 // The Terminate() function is the last function to be called during
3827 // a query. It always runs on the client, it can be used to present
3828 // the results graphically or save the results to file.
3830 fOutput=(TList*)GetOutputData(1);
3831 fOutputME=(TList*)GetOutputData(2);
3832 fOutputQA=(TList*)GetOutputData(3);
3834 if (fOutput || fOutputME || fOutputQA) {
3837 Printf("\n\t *** DONE: fOutput available *** \n");
3839 Printf("\n\t *** DONE: fOutputME available *** \n");
3841 Printf("\n\t *** DONE: fOutputQA available *** \n");
3843 if (!fOutput || !fOutputME || !fOutputQA) {
3846 Printf("\n\t *** ERROR: fOutput not available *** \n");
3848 Printf("\n\t *** ERROR: fOutputME available *** \n");
3850 Printf("\n\t *** ERROR: fOutputQA not available *** \n");