#include <TFile.h>
#include <TH1F.h>
#include <TH2F.h>
+#include <THnSparse.h>
#include <TH3F.h>
#include <TPDGCode.h>
#include <TDatabasePDG.h>
#include "AliInputEventHandler.h"
#include "AliAnalysisManager.h"
+#include "AliExternalTrackParam.h"
+
#include "AliAnalysisTaskLambdaOverK0sJets.h"
-extern TROOT *gROOT;
+//extern TROOT *gROOT;
ClassImp(AliAnalysisTaskLambdaOverK0sJets)
static Float_t lMin = 0.0; // Limits in the histo for fidutial volume
static Float_t lMax = 100.; // Limits in the fidutial volume
-static Int_t nMaxEvMix = 250;
+//static Int_t nMaxEvMix = 250;
//
//
//
AliAnalysisTaskLambdaOverK0sJets::AliAnalysisTaskLambdaOverK0sJets(const char *name) :
- AliAnalysisTaskSE(name),
+AliAnalysisTaskSE(name),
fAOD(0), fCollision("PbPb2010"), fIsMC(kFALSE), fUsePID(kFALSE), fCentMin(0.), fCentMax(90.), fDoQA(kFALSE), fDoMixEvt(kFALSE), fTrigPtMin(5.), fTrigPtMax(10.), fTrigPtMCMin(5.), fTrigPtMCMax(10000.), fTrigEtaMax(0.8), fCheckIDTrig(kFALSE), fSeparateInjPart(kTRUE), fEndOfHijingEvent(-1), fPIDResponse(0),
- fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fYMax(0.5), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0),fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
+ fMinPtDaughter(0.160), fMaxEtaDaughter(0.8), fMaxDCADaughter(1.0), fUseEtaCut(kFALSE), fYMax(0.7), fDCAToPrimVtx(0.1), fMinCPA(0.998), fNSigma(3.0), fDaugNClsTPC(70.), fMinCtau(0.), fMaxCtau(3.), fIdTrigger(-1), fIsV0LP(0), fPtV0LP(0.), fIsSndCheck(0),
+
+ fTPCRadius(125.), fDiffTrigDaugFracTPCSharedCls(0.06),
- fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fXiTriggerPartMC(0x0), fEvents(0), fCentrality(0), fCentrality2(0), fCentralityTrig(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
+ fOutput(0), fOutputQA(0), fOutputME(0), fMEList(0x0), fTriggerParticles(0x0), fTriggerPartMC(0x0), fAssocParticles(0x0), fAssocPartMC(0x0), fEvents(0), fCentrality(0), fCentrality2(0), fCentralityTrig(0), fPrimayVtxGlobalvsSPD(0), fPrimaryVertexX(0), fPrimaryVertexY(0), fPrimaryVertexZ(0),
- fTriggerEventPlane(0), 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), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0), fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0),
+ fTriggerEventPlane(0), fTriggerMCPtCent(0), fTriggerMCResPt(0), fTriggerMCResEta(0), fTriggerMCResPhi(0), fTriggerPtCent(0), fTriggerPtCentCh(0), fNTrigPerEvt(0), fTriggerWiSPDHit(0), fTriggerEtaPhi(0), fCheckTriggerFromV0Daug(0), fTriggerComingFromDaug(0), fTriggerIsV0(0), fCheckIDTrigPtK0s(0), fCheckIDTrigPhiK0s(0), fCheckIDTrigEtaK0s(0), fCheckIDTrigNclsK0s(0), fCheckIDTrigPtLambda(0), fCheckIDTrigPhiLambda(0), fCheckIDTrigEtaLambda(0), fCheckIDTrigNclsLambda(0), fCheckIDTrigPtAntiLambda(0), fCheckIDTrigPhiAntiLambda(0), fCheckIDTrigEtaAntiLambda(0), fCheckIDTrigNclsAntiLambda(0),
-fInjectedParticles(0),
+ fInjectedParticles(0),
-fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapVtx(0), fK0sMCPtRapEmbeded(0), fK0sMCPtRapVtxEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaMCPtRapVtx(0), fLambdaMCPtRapEmbeded(0), fLambdaMCPtRapVtxEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapVtx(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCPtRapVtxEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0),
+ fK0sMCPt(0), fK0sMCPtRap(0), fK0sMCPtRap2(0), fK0sMCPtRapEmbeded(0), fK0sAssocPt(0), fK0sAssocPtArm(0), fK0sAssocPtRap(0), fK0sAssocPtRapEmbeded(0), fK0sMCResEta(0), fK0sMCResPhi(0), fK0sMCResPt(0), fK0sPosMCResEta(0), fK0sPosMCResPhi(0), fK0sPosMCResPt(0), fK0sNegMCResEta(0), fK0sNegMCResPhi(0), fK0sNegMCResPt(0), fLambdaMCPt(0), fLambdaMCPtRap(0), fLambdaMCPtRap2(0), fLambdaMCPtRapEmbeded(0), fLambdaMCFromXi(0), fLambdaAssocPt(0), fLambdaAssocPtRap(0), fLambdaAssocFromXi(0), fLambdaMCResEta(0), fLambdaMCResPhi(0), fLambdaMCResPt(0), fLambdaPosMCResEta(0), fLambdaPosMCResPhi(0), fLambdaPosMCResPt(0), fLambdaNegMCResEta(0), fLambdaNegMCResPhi(0), fLambdaNegMCResPt(0), fAntiLambdaMCPt(0), fAntiLambdaMCPtRap(0), fAntiLambdaMCPtRap2(0), fAntiLambdaMCPtRapEmbeded(0), fAntiLambdaMCFromXi(0), fAntiLambdaAssocPt(0), fAntiLambdaAssocPtRap(0), fAntiLambdaAssocFromXi(0), fAntiLambdaMCResEta(0), fAntiLambdaMCResPhi(0), fAntiLambdaMCResPt(0), fAntiLambdaPosMCResEta(0), fAntiLambdaPosMCResPhi(0), fAntiLambdaPosMCResPt(0), fAntiLambdaNegMCResEta(0), fAntiLambdaNegMCResPhi(0), fAntiLambdaNegMCResPt(0),
fHistArmenterosPodolanski(0), fHistArmPodBckg(0),
- fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtRap(0), fK0sMassPtPhi(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
+ fK0sMass(0), fK0sMassEmbeded(0), fK0sMassPtEta(0), fK0sMassPtPhi(0), fK0sDaughtersPt(0), fK0sDCADaugToPrimVtx(0), fK0sSpatialRes(0), fK0sBckgDecLength(0), fK0sBckgDCADaugToPrimVtx(0), fK0sBckgEtaPhi(0), fK0sBckgPhiRadio(0), fK0sBckgDCANegDaugToPrimVtx(0), fK0sBckgDCAPosDaugToPrimVtx(0), fV0MassCascade(0),
- fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtRap(0), fLambdaMassPtPhi(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0),
+ fLambdaMass(0), fLambdaMassEmbeded(0), fLambdaMass2(0), fLambdaMass2Embeded(0), fLambdaMassPtEta(0), fLambdaMassPtPhi(0), fLambdaDaughtersPt(0), fLambdaDCADaugToPrimVtx(0), fLambdaSpatialRes(0), fLambdaBckgDecLength(0), fLambdaBckgDCADaugToPrimVtx(0), fLambdaBckgEtaPhi(0), fLambdaBckgPhiRadio(0), fLambdaBckgDCANegDaugToPrimVtx(0), fLambdaBckgDCAPosDaugToPrimVtx(0),
- fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtRap(0), fAntiLambdaMassPtPhi(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0),
-
- fXiMinusPtMCAssoc(0), fXiMinusPtMCTrigger(0),
+ fAntiLambdaMass(0), fAntiLambdaMassEmbeded(0), fAntiLambdaMass2(0), fAntiLambdaMass2Embeded(0), fAntiLambdaMassPtEta(0), fAntiLambdaMassPtPhi(0), fAntiLambdaDaughtersPt(0), fAntiLambdaDCADaugToPrimVtx(0), fAntiLambdaSpatialRes(0), fAntiLambdaBckgDecLength(0), fAntiLambdaBckgDCADaugToPrimVtx(0), fAntiLambdaBckgEtaPhi(0), fAntiLambdaBckgPhiRadio(0), fAntiLambdaBckgDCANegDaugToPrimVtx(0), fAntiLambdaBckgDCAPosDaugToPrimVtx(0),
fK0sPtPosDaug(0), fK0sPtNegDaug(0), fK0sBckgPtPosDaug(0), fK0sBckgPtNegDaug(0), fK0sPhiEtaPosDaug(0), fK0sPhiEtaNegDaug(0), fK0sBckgPhiEtaPosDaug(0), fK0sBckgPhiEtaNegDaug(0), fK0sDCAPosDaug(0), fK0sDCANegDaug(0), fK0sBckgDCAPosDaug(0), fK0sBckgDCANegDaug(0), fK0sDecayPos(0), fK0sBckgDecayPos(0), fK0sDecayVertex(0), fK0sBckgDecayVertex(0), fK0sCPA(0), fK0sBckgCPA(0), fK0sDCAV0Daug(0), fK0sBckgDCAV0Daug(0), fK0sNClustersTPC(0), fK0sBckgNClustersTPC(0), fK0sNClustersITSPos(0), fK0sNClustersITSNeg(0), fK0sBckgNClustersITSPos(0), fK0sBckgNClustersITSNeg(0),
- fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0),fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0), fLambdaBckgNClustersITSNeg(0),
+ fLambdaPtPosDaug(0), fLambdaPtNegDaug(0), fLambdaBckgPtPosDaug(0), fLambdaBckgPtNegDaug(0), fLambdaPhiEtaPosDaug(0),fLambdaPhiEtaNegDaug(0), fLambdaBckgPhiEtaPosDaug(0), fLambdaBckgPhiEtaNegDaug(0), fLambdaDCAPosDaug(0),fLambdaDCANegDaug(0), fLambdaBckgDCAPosDaug(0), fLambdaBckgDCANegDaug(0), fLambdaDecayPos(0), fLambdaBckgDecayPos(0), fLambdaDecayVertex(0), fLambdaBckgDecayVertex(0), fLambdaCPA(0), fLambdaBckgCPA(0), fLambdaDCAV0Daug(0), fLambdaBckgDCAV0Daug(0), fLambdaNClustersTPC(0), fLambdaBckgNClustersTPC(0), fLambdaNClustersITSPos(0), fLambdaNClustersITSNeg(0), fLambdaBckgNClustersITSPos(0), fLambdaBckgNClustersITSNeg(0),
fAntiLambdaPtPosDaug(0), fAntiLambdaPtNegDaug(0), fAntiLambdaBckgPtPosDaug(0), fAntiLambdaBckgPtNegDaug(0), fAntiLambdaPhiEtaPosDaug(0),fAntiLambdaPhiEtaNegDaug(0), fAntiLambdaBckgPhiEtaPosDaug(0),fAntiLambdaBckgPhiEtaNegDaug(0), fAntiLambdaDCAPosDaug(0),fAntiLambdaDCANegDaug(0), fAntiLambdaBckgDCAPosDaug(0), fAntiLambdaBckgDCANegDaug(0), fAntiLambdaDecayPos(0), fAntiLambdaBckgDecayPos(0), fAntiLambdaDecayVertex(0), fAntiLambdaBckgDecayVertex(0), fAntiLambdaCPA(0), fAntiLambdaBckgCPA(0), fAntiLambdaDCAV0Daug(0), fAntiLambdaBckgDCAV0Daug(0), fAntiLambdaNClustersTPC(0), fAntiLambdaBckgNClustersTPC(0), fAntiLambdaNClustersITSPos(0), fAntiLambdaNClustersITSNeg(0), fAntiLambdaBckgNClustersITSPos(0), fAntiLambdaBckgNClustersITSNeg(0)
{
// Dummy Constructor
+ // variables for track splitting:
+ // shifted positionf for thw tracks
+ for(Int_t i=0; i<3; i++){
+ fTrigSftR125[i] = -9999.;
+ fDaugSftR125[i] = -9999.;
+ }
+
// Particles properties in MC
for (Int_t i=0; i<kNCent; i++){
// K0s
+ fK0sMCPtRapVtx[i] = 0;
+ fK0sMCPtRapVtxEmbeded[i] = 0;
fK0sMCPtPhiEta[i] = 0;
fK0sAssocPtPhiEta[i] = 0;
// -- Natural particles
fK0sAssocMassPtCPAEmbeded[i] = 0;
fK0sAssocMassPtDCAPVEmbeded[i] = 0;
fK0sAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+ // -- Mass vs rapidity vs pt vs centrlaity
+ fK0sMassPtRap[i] = 0;
+ // -- Splitting checks
+ fK0sPosDaugSplCheckCovMat[i] = 0x0;
+ fK0sNegDaugSplCheckCovMat[i] = 0x0;
+ fK0sPosDaugdPhiSdEtaS[i] = 0x0;
+ fK0sNegDaugdPhiSdEtaS[i] = 0x0;
+ fK0sPosMCResdEtaSdPhiS[i] = 0x0;
+ fK0sNegMCResdEtaSdPhiS[i] = 0x0;
// Lambda
+ fLambdaMCPtRapVtx[i] = 0;
+ fLambdaMCPtRapVtxEmbeded[i] = 0;
fLambdaMCPtPhiEta[i] = 0;
fLambdaAssocPtPhiEta[i] = 0;
// -- Natural particles
fLambdaAssocMassPtCPAEmbeded[i] = 0;
fLambdaAssocMassPtDCAPVEmbeded[i] = 0;
fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+ // -- Mass vs rapidity vs pt vs centrlaity
+ fLambdaMassPtRap[i] = 0;
+ // -- Splitting checks
+ fLambdaPosDaugSplCheckCovMat[i] = 0x0;
+ fLambdaNegDaugSplCheckCovMat[i] =0x0;
+ fLambdaPosDaugdPhiSdEtaS[i] = 0x0;
+ fLambdaNegDaugdPhiSdEtaS[i] = 0x0;
+ fLambdaPosMCResdEtaSdPhiS[i] = 0x0;
+ fLambdaNegMCResdEtaSdPhiS[i] = 0x0;
// AntiLambda
+ fAntiLambdaMCPtRapVtx[i] = 0;
+ fAntiLambdaMCPtRapVtxEmbeded[i] = 0;
fAntiLambdaMCPtPhiEta[i] = 0;
fAntiLambdaAssocPtPhiEta[i] = 0;
// -- Natural particles
fAntiLambdaAssocMassPtCPAEmbeded[i] = 0;
fAntiLambdaAssocMassPtDCAPVEmbeded[i] = 0;
fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = 0;
+ // -- Mass vs rapidity vs pt vs centrlaity
+ fAntiLambdaMassPtRap[i] = 0;
+ // -- Splitting checks
+ fAntiLambdaPosDaugSplCheckCovMat[i] = 0x0;
+ fAntiLambdaNegDaugSplCheckCovMat[i] = 0x0;
+ fAntiLambdaPosDaugdPhiSdEtaS[i] = 0x0;
+ fAntiLambdaNegDaugdPhiSdEtaS[i] = 0x0;
+ fAntiLambdaPosMCResdEtaSdPhiS[i] = 0x0;
+ fAntiLambdaNegMCResdEtaSdPhiS[i] = 0x0;
+
}
// Correlations in MC
fAntiLambdadPhidEtaMC[i] = 0;
}
- for (Int_t i=0; i<kNCent*kN2; i++){
- // Xi-: associated particle
- fXiMinusdPhidEtaMC[i] = 0; // Pt of Trigger particle as in the analysis
- fXiMinusdPhidEtaMC2[i] = 0; // Higher Pt of Trigger particle
- }
-
- for (Int_t i=0; i<kNCent*kN3; i++)
- fXiMinusdPhidEtaMC3[i] = 0; // Xi is the leading particle in the event
-
// Correlations
for (Int_t i=0; i<(kNCent*kN1*kNVtxZ); i++){
// K0s
fAntiLambdadPhidEtaPtL[i] = 0;
}
- // Gamma Conversion correlation
- for (Int_t i=0; i<kNCent; i++)
- fGammaConversiondPhidEta[i] = 0;
-
// Mixed events distributions
for (Int_t i=0; i<(kN1*kNVtxZ*kNCent); i++){
fK0sdPhidEtaME[i] = 0;
delete fAssocPartMC;
fAssocPartMC=0x0;
}
-
- if(fXiTriggerPartMC) {
- delete fXiTriggerPartMC;
- fXiTriggerPartMC=0x0;
- }
-
+
}
fEvents->GetXaxis()->SetBinLabel(2,"AOD available");
fEvents->GetXaxis()->SetBinLabel(3,"CINT1B");
fEvents->GetXaxis()->SetBinLabel(4,"V0M Cent");
- fEvents->GetXaxis()->SetBinLabel(5,"Vtx > 3 part");
- fEvents->GetXaxis()->SetBinLabel(6,"|VtxZ| < 10 cm");
- fEvents->GetXaxis()->SetBinLabel(7,"Mult && Cent");
- fEvents->GetXaxis()->SetBinLabel(8,"Bad ID Trigger");
+ fEvents->GetXaxis()->SetBinLabel(5,"Global Vtx > 3 part");
+ fEvents->GetXaxis()->SetBinLabel(6,"SPD Vtx > 3 part");
+ fEvents->GetXaxis()->SetBinLabel(7,"|ZVtx Global - Zvtx SPD| < 0.5 cm");
+ fEvents->GetXaxis()->SetBinLabel(8,"|VtxZ| < 10 cm");
fEvents->GetXaxis()->SetBinLabel(9,"V0 is LP");
- fEvents->GetXaxis()->SetBinLabel(10,"Trigger is V0 daug");
- fEvents->GetXaxis()->SetBinLabel(11,"Trigger is V0 daug && 2nd check");
+ fEvents->GetXaxis()->SetBinLabel(10," ");
+ fEvents->GetXaxis()->SetBinLabel(11," ");
fEvents->GetXaxis()->SetBinLabel(12,"Triggered");
fEvents->GetXaxis()->SetBinLabel(13,"NOT Triggered");
- fEvents->GetXaxis()->SetBinLabel(14,"V0 is LP in MC");
+ fEvents->GetXaxis()->SetBinLabel(14," ");
fEvents->GetYaxis()->SetTitle("Counts");
fOutput->Add(fEvents);
fOutput->Add(fCentralityTrig);
// Primary Vertex:
+ fPrimayVtxGlobalvsSPD = new TH2F("fPrimayVtxGlobalvsSPD",";Z_{vtx,tr} (cm);Z_{SPD,tr} (cm)",200,-20,20,200,-20,20);
+ fOutput->Add(fPrimayVtxGlobalvsSPD);
+
fPrimaryVertexX = new TH1F("fPrimaryVertexX", "Primary Vertex Position X;Primary Vertex Position X (cm);Events",100,-0.5,0.5);
fOutput->Add(fPrimaryVertexX);
fTriggerMCPtCent = new TH2F("fTriggerMCPtCent","Trigger particle MC;#it{p}_{T} (GeV/#it{c});centrality (%)",2*nbinPtLP,pMin,2*ptMaxLP,100,0.,100.);
fOutput->Add(fTriggerMCPtCent);
- fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: p_{t} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};p_{t} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+ fTriggerMCResPt = new TH3F("fTriggerMCResPt","Trigger particle MC: #it{p}_{T} resolution;(p_{t,MC}-p_{t,Rec})/p_{t,Rec};#it{p}_{T} (GeV/#it{c});centrality",60,-0.3,0.3,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
fOutput->Add(fTriggerMCResPt);
- fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};p_{t} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+ fTriggerMCResEta = new TH3F("fTriggerMCResEta","Trigger particle MC: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
fOutput->Add(fTriggerMCResEta);
- fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};p_{t} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
+ fTriggerMCResPhi = new TH3F("fTriggerMCResPhi","Trigger particle MC: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,2*nbinPtLP,pMin,ptMaxLP,100,0.,100.);
fOutput->Add(fTriggerMCResPhi);
}
fTriggerPtCent = new TH3F("fTriggerPtCent","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
fOutput->Add(fTriggerPtCent);
+ fTriggerPtCentCh = new TH3F("fTriggerPtCentCh","Trigger particle;#it{p}_{T} (GeV/#it{c});centrality (%);Vertex Z (cm)",nbinPtLP,pMin,ptMaxLP,100,0.,100.,nbinsVtx,-10.,10.);
+ fOutput->Add(fTriggerPtCentCh);
+
fNTrigPerEvt = new TH2F("fNTrigPerEvt","Number of Trigger Particles Per Event;Counts;Centrality",51,-0.5,50.5,100,0.,100);
fOutput->Add(fNTrigPerEvt);
fTriggerIsV0 = new TH1F("fTriggerIsV0","V0 candidate is a LP;#it{p}_{T} (GeV/#it{c});Counts",nbinPtLP,pMin,ptMaxLP);
fOutput->Add(fTriggerIsV0);
- // ------------------- > Comaring properties of this trigger with the daughters
+ // ------------------- > Comparing properties of this trigger with the daughters
// K0s
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.);
fCheckIDTrigPtK0s->GetYaxis()->SetBinLabel(1,"Pos Daug X");
fCheckIDTrigEtaK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigEtaK0s);
- fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+ fCheckIDTrigNclsK0s = new TH3F("fCheckIDTrigNclsK0s","K^{0}_{S};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(1,"Pos Daug");
fCheckIDTrigNclsK0s->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigNclsK0s);
fCheckIDTrigEtaLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigEtaLambda);
- fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+ fCheckIDTrigNclsLambda = new TH3F("fCheckIDTrigNclsLambda","#Lambda;NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
fCheckIDTrigNclsLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigNclsLambda);
fCheckIDTrigEtaAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigEtaAntiLambda);
- fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",131,49.5,180.5,3,-0.5,2.5,100,1.,11.);
+ fCheckIDTrigNclsAntiLambda = new TH3F("fCheckIDTrigNclsAntiLambda","#bar{#Lambda};NCls TPC;;p_{V0}",181,0.5,180.5,3,-0.5,2.5,100,1.,11.);
fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(1,"Pos Daug");
fCheckIDTrigNclsAntiLambda->GetYaxis()->SetBinLabel(2,"Neg Daug");
fOutput->Add(fCheckIDTrigNclsAntiLambda);
fK0sMCPtRap2 = new TH3F("fK0sMCPtRap2", "K^{0}_{S} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
fOutput->Add(fK0sMCPtRap2);
- fK0sMCPtRapVtx = new TH3F("fK0sMCPtRapVtx", "K^{0}_{S} MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});VtxZ;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fK0sMCPtRapVtx);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fK0sMCPtRapVtx_Cent_%d",jj);
+ fK0sMCPtRapVtx[jj] = new TH3F(hNameHist, "K^{0}_{S} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fK0sMCPtRapVtx[jj]);
+ }
fK0sMCPtRapEmbeded = new TH3F("fK0sMCPtRapEmbeded", "K^{0}_{S} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.,1.,100,0.,100.);
fOutput->Add(fK0sMCPtRapEmbeded);
- fK0sMCPtRapVtxEmbeded = new TH3F("fK0sMCPtRapVtxEmbeded", "K^{0}_{S} Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});VtxZ;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fK0sMCPtRapVtxEmbeded);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fK0sMCPtRapVtxEmbeded_Cent_%d",jj);
+ fK0sMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist, "K^{0}_{S} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;VtxZ",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fK0sMCPtRapVtxEmbeded[jj]);
+ }
for(Int_t jj=0;jj<kNCent;jj++){
snprintf(hNameHist,100, "fK0sMCPtPhiEta_Cent_%d",jj);
fOutput->Add(fK0sAssocPtPhiEta[jj]);
}
+
// Histogramas para estudios sistematicos de la eficiencia
+ Int_t binsEff1[3] = {nbins,nbins,20}; Double_t xminEff1[3] = {0.398,pMin,-1.0}; Double_t xmaxEff1[3] = {0.598,pMax,1.0}; // gral efficiency
+ Int_t binsEff2[4] = {nbins,nbins,20,10}; Double_t xminEff2[4] = {0.398,pMin,-1.0,-10.}; Double_t xmaxEff2[4] = {0.598,pMax,1.0,10.}; // vtx cut
+ Int_t binsEff3[4] = {nbins,nbins,20,60}; Double_t xminEff3[4] = {0.398,pMin,-1.0,0.}; Double_t xmaxEff3[4] = {0.598,pMax,1.0,1.2}; // dca between daughters
+ Int_t binsEff4[4] = {nbins,nbins,20,50}; Double_t xminEff4[4] = {0.398,pMin,-1.0,0.9975}; Double_t xmaxEff4[4] = {0.598,pMax,1.0,1.}; // cpa
+ Int_t binsEff5[5] = {nbins,nbins,20,99,99}; Double_t xminEff5[5] = {0.398,pMin,-1.0,0.,0.}; Double_t xmaxEff5[5] = {0.598,pMax,1.0,3.3,3.3}; // dca to prim. vtx
+ Int_t binsEff6[5] = {nbins,nbins,20,170,170}; Double_t xminEff6[5] = {0.398,pMin,-1.0,0.5,0.5}; Double_t xmaxEff6[5] = {0.598,pMax,1.0,170.5,170}; // No. TPC Cls
+
for(Int_t i=0; i<kNCent; i++){
/// ------- Natural particles
snprintf(hNameHist,100, "fK0sAssocPtMassArm_Cent_%d",i);
- fK0sAssocPtMassArm[i] = new TH3F(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap",nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+ fK0sAssocPtMassArm[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
fOutput->Add(fK0sAssocPtMassArm[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtVtx_Cent_%d",i);
- fK0sAssocMassPtVtx[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; VtxZ",nbins,0.398,0.598,nbins,pMin,pMax,20,-10.,10.);
+ fK0sAssocMassPtVtx[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
fOutput->Add(fK0sAssocMassPtVtx[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtDCADaug_Cent_%d",i);
- fK0sAssocMassPtDCADaug[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCADaug",nbins,0.398,0.598,nbins,pMin,pMax,60,0,1.2);
+ fK0sAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
fOutput->Add(fK0sAssocMassPtDCADaug[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtCPA_Cent_%d",i);
- fK0sAssocMassPtCPA[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; CPA",nbins,0.398,0.598,nbins,pMin,pMax,25,0.9975,1.);
+ fK0sAssocMassPtCPA[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
fOutput->Add(fK0sAssocMassPtCPA[i]);
-
+
snprintf(hNameHist,100, "fK0sAssocMassPtDCAPV_Cent_%d",i);
- fK0sAssocMassPtDCAPV[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+ fK0sAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
fOutput->Add(fK0sAssocMassPtDCAPV[i]);
-
-
+
snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPC_Cent_%d",i);
- fK0sAssocMassPtDaugNClsTPC[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; # TPC Cls",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+ fK0sAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
fOutput->Add(fK0sAssocMassPtDaugNClsTPC[i]);
/// ----- Embeded particles
snprintf(hNameHist,100, "fK0sAssocPtMassArmEmbeded_Cent_%d",i);
- fK0sAssocPtMassArmEmbeded[i] = new TH3F(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap",nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+ fK0sAssocPtMassArmEmbeded[i] = new THnSparseD(hNameHist,"K^{0}_{S} Assoc Embeded;Mass (GeV/c^{2});#it{p}_{T} (GeV/#it{c});rap;",3,binsEff1,xminEff1,xmaxEff1);
fOutput->Add(fK0sAssocPtMassArmEmbeded[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtVtxEmbeded_Cent_%d",i);
- fK0sAssocMassPtVtxEmbeded[i] = new TH3F(hNameHist, "K^{0}_{S} Embeded; mass; #it{p}_{T}; VtxZ",nbins,0.398,0.598,nbins,pMin,pMax,20,-10.,10.);
+ fK0sAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff2,xminEff2,xmaxEff2);
fOutput->Add(fK0sAssocMassPtVtxEmbeded[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtDCADaugEmbeded_Cent_%d",i);
- fK0sAssocMassPtDCADaugEmbeded[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCADaug",nbins,0.398,0.598,nbins,pMin,pMax,60,0,1.2);
+ fK0sAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff3,xminEff3,xmaxEff3);
fOutput->Add(fK0sAssocMassPtDCADaugEmbeded[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtCPAEmbeded_Cent_%d",i);
- fK0sAssocMassPtCPAEmbeded[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; CPA",nbins,0.398,0.598,nbins,pMin,pMax,25,0.9975,1.);
+ fK0sAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff4,xminEff4,xmaxEff4);
fOutput->Add(fK0sAssocMassPtCPAEmbeded[i]);
snprintf(hNameHist,100, "fK0sAssocMassPtDCAPVEmbeded_Cent_%d",i);
- fK0sAssocMassPtDCAPVEmbeded[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+ fK0sAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff5,xminEff5,xmaxEff5);
fOutput->Add(fK0sAssocMassPtDCAPVEmbeded[i]);
-
snprintf(hNameHist,100, "fK0sAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
- fK0sAssocMassPtDaugNClsTPCEmbeded[i] = new TH3F(hNameHist, "K^{0}_{S}; mass; #it{p}_{T}; # TPC Cls",nbins,0.398,0.598,nbins,pMin,pMax,4,0.5,4.5);
+ fK0sAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "K^{0}_{S}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff6,xminEff6,xmaxEff6);
fOutput->Add(fK0sAssocMassPtDaugNClsTPCEmbeded[i]);
}
fK0sMCResPhi = new TH3F("fK0sMCResPhi","K^{0}_{S} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
fOutput->Add(fK0sMCResPhi);
+ fK0sMCResPt = new TH3F("fK0sMCResPt","K^{0}_{S} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sMCResPt);
+
+ fK0sPosMCResEta = new TH3F("fK0sPosMCResEta","K^{0}_{S} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sPosMCResEta);
+
+ fK0sPosMCResPhi = new TH3F("fK0sPosMCResPhi","K^{0}_{S} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sPosMCResPhi);
+
+ fK0sPosMCResPt = new TH3F("fK0sPosMCResPt","K^{0}_{S} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sPosMCResPt);
+
+ fK0sNegMCResEta = new TH3F("fK0sNegMCResEta","K^{0}_{S} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sNegMCResEta);
+
+ fK0sNegMCResPhi = new TH3F("fK0sNegMCResPhi","K^{0}_{S} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sNegMCResPhi);
+
+ fK0sNegMCResPt = new TH3F("fK0sNegMCResPt","K^{0}_{S} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fK0sNegMCResPt);
+
// Lambda MC-true:
fLambdaMCPt = new TH1F("fLambdaMCPt","#Lambda MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
fOutput->Add(fLambdaMCPt);
fLambdaMCPtRap2 = new TH3F("fLambdaMCPtRap2","#Lambda MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
fOutput->Add(fLambdaMCPtRap2);
- fLambdaMCPtRapVtx = new TH3F("fLambdaMCPtRapVtx","#Lambda MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fLambdaMCPtRapVtx);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fLambdaMCPtRapVtx_Cent_%d",jj);
+ fLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#Lambda MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fLambdaMCPtRapVtx[jj]);
+ }
fLambdaMCPtRapEmbeded = new TH3F("fLambdaMCPtRapEmbeded","#Lambda Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
fOutput->Add(fLambdaMCPtRapEmbeded);
- fLambdaMCPtRapVtxEmbeded = new TH3F("fLambdaMCPtRapVtxEmbeded","#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fLambdaMCPtRapVtxEmbeded);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
+ fLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#Lambda Embeded MC |VtxZ|<3 cm;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fLambdaMCPtRapVtxEmbeded[jj]);
+ }
fLambdaMCFromXi = new TH2F("fLambdaMCFromXi", "#Lambda from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
fOutput->Add(fLambdaMCFromXi);
}
// Histogramas para estudios sistematicos de la eficiencia
+ Int_t binsEff7[3] = {nbins,nbins,20}; Double_t xminEff7[3] = {1.065,pMin,-1.0}; Double_t xmaxEff7[3] = {1.165,pMax,1.0}; // gral efficiency
+ Int_t binsEff8[4] = {nbins,nbins,20,10}; Double_t xminEff8[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff8[4] = {1.165,pMax,1.0,10.}; // vtx
+ Int_t binsEff9[4] = {nbins,nbins,20,60}; Double_t xminEff9[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff9[4] = {1.165,pMax,1.0,1.2}; // dca between daughters
+ Int_t binsEff10[4] = {nbins,nbins,20,50}; Double_t xminEff10[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff10[4] = {1.165,pMax,1.0,1.}; // cpa
+ Int_t binsEff11[5] = {nbins,nbins,20,99,99}; Double_t xminEff11[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff11[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
+ Int_t binsEff12[5] = {nbins,nbins,20,170,170}; Double_t xminEff12[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff12[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
+
for(Int_t i=0; i<kNCent; i++){
+
// --------- Natural particles
snprintf(hNameHist,100, "fLambdaAssocMassPtRap_Cent_%d",i);
- fLambdaAssocMassPtRap[i] = new TH3F(hNameHist, "#Lambda: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
fOutput->Add(fLambdaAssocMassPtRap[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtRap2_Cent_%d",i);
- fLambdaAssocMassPtRap2[i] = new TH3F(hNameHist, "#Lambda: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
fOutput->Add(fLambdaAssocMassPtRap2[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtVtx_Cent_%d",i);
- fLambdaAssocMassPtVtx[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+ fLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
fOutput->Add(fLambdaAssocMassPtVtx[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaug_Cent_%d",i);
- fLambdaAssocMassPtDCADaug[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+ fLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
fOutput->Add(fLambdaAssocMassPtDCADaug[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtCPA_Cent_%d",i);
- fLambdaAssocMassPtCPA[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+ fLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
fOutput->Add(fLambdaAssocMassPtCPA[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPV_Cent_%d",i);
- fLambdaAssocMassPtDCAPV[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+ fLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
fOutput->Add(fLambdaAssocMassPtDCAPV[i]);
snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
- fLambdaAssocMassPtDaugNClsTPC[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+ fLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
fOutput->Add(fLambdaAssocMassPtDaugNClsTPC[i]);
// ------------ Embeded particles
snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded_Cent_%d",i);
- fLambdaAssocMassPtRapEmbeded[i] = new TH3F(hNameHist, "#Lambda Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
fOutput->Add(fLambdaAssocMassPtRapEmbeded[i]);
snprintf(hNameHist,100, "fLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
- fLambdaAssocMassPtRapEmbeded2[i] = new TH3F(hNameHist, "#Lambda Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff7,xminEff7,xmaxEff7);
fOutput->Add(fLambdaAssocMassPtRapEmbeded2[i]);
snprintf(hNameHist,100, "fLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
- fLambdaAssocMassPtVtxEmbeded[i] = new TH3F(hNameHist, "#Lambda Embeded; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+ fLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#Lambda Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff8,xminEff8,xmaxEff8);
fOutput->Add(fLambdaAssocMassPtVtxEmbeded[i]);
snprintf(hNameHist,100, "fLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
- fLambdaAssocMassPtDCADaugEmbeded[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+ fLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff9,xminEff9,xmaxEff9);
fOutput->Add(fLambdaAssocMassPtDCADaugEmbeded[i]);
-
+
snprintf(hNameHist,100, "fLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
- fLambdaAssocMassPtCPAEmbeded[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+ fLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff10,xminEff10,xmaxEff10);
fOutput->Add(fLambdaAssocMassPtCPAEmbeded[i]);
snprintf(hNameHist,100, "fLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
- fLambdaAssocMassPtDCAPVEmbeded[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+ fLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff11,xminEff11,xmaxEff11);
fOutput->Add(fLambdaAssocMassPtDCAPVEmbeded[i]);
-
snprintf(hNameHist,100, "fLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
- fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new TH3F(hNameHist, "#Lambda; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+ fLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#Lambda; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff12,xminEff12,xmaxEff12);
fOutput->Add(fLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
}
fLambdaMCResPhi = new TH3F("fLambdaMCResPhi","#Lambda Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
fOutput->Add(fLambdaMCResPhi);
+ fLambdaMCResPt = new TH3F("fLambdaMCResPt","#Lambda Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaMCResPt);
+
+ fLambdaPosMCResEta = new TH3F("fLambdaPosMCResEta","#Lambda Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaPosMCResEta);
+
+ fLambdaPosMCResPhi = new TH3F("fLambdaPosMCResPhi","#Lambda Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaPosMCResPhi);
+
+ fLambdaPosMCResPt = new TH3F("fLambdaPosMCResPt","#Lambda Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaPosMCResPt);
+
+ fLambdaNegMCResEta = new TH3F("fLambdaNegMCResEta","#Lambda Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaNegMCResEta);
+
+ fLambdaNegMCResPhi = new TH3F("fLambdaNegMCResPhi","#Lambda Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaNegMCResPhi);
+
+ fLambdaNegMCResPt = new TH3F("fLambdaNegMCResPt","#Lambda Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fLambdaNegMCResPt);
+
// AntiLambda MC-true:
fAntiLambdaMCPt = new TH1F("fAntiLambdaMCPt","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});Counts",nbins,pMin,pMax);
fOutput->Add(fAntiLambdaMCPt);
fAntiLambdaMCPtRap2 = new TH3F("fAntiLambdaMCPtRap2","#bar{#Lambda} MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
fOutput->Add(fAntiLambdaMCPtRap2);
- fAntiLambdaMCPtRapVtx = new TH3F("fAntiLambdaMCPtRapVtx","#bar{#Lambda} MC |VtxZ|<3;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fAntiLambdaMCPtRapVtx);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtx_Cent_%d",jj);
+ fAntiLambdaMCPtRapVtx[jj] = new TH3F(hNameHist,"#bar{#Lambda} MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fAntiLambdaMCPtRapVtx[jj]);
+ }
fAntiLambdaMCPtRapEmbeded = new TH3F("fAntiLambdaMCPtRapEmbeded","#bar{#Lambda} Embeded MC;#it{p}_{T} (GeV/#it{c});y;centrality",nbins,pMin,pMax,20,-1.0,1.0,100,0.,100.);
fOutput->Add(fAntiLambdaMCPtRapEmbeded);
- fAntiLambdaMCPtRapVtxEmbeded = new TH3F("fAntiLambdaMCPtRapVtxEmbeded","#bar{#Lambda} Embeded MC |VtxZ|<3;#it{p}_{T} (GeV/#it{c});zv;centrality",nbins,pMin,pMax,20,-10.,10.,100,0.,100.);
- fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded);
+ for(Int_t jj=0;jj<kNCent;jj++){
+ snprintf(hNameHist,100, "fAntiLambdaMCPtRapVtxEmbeded_Cent_%d",jj);
+ fAntiLambdaMCPtRapVtxEmbeded[jj] = new TH3F(hNameHist,"#bar{#Lambda} Embeded MC |VtxZ|;#it{p}_{T} (GeV/#it{c});y;zv",nbins,pMin,pMax,20,-1.0,1.0,20,-10.,10.);
+ fOutput->Add(fAntiLambdaMCPtRapVtxEmbeded[jj]);
+ }
fAntiLambdaMCFromXi = new TH2F("fAntiLambdaMCFromXi", "#bar{#Lambda} from Xi MC;#it{p}_{T} (GeV/#it{c});centrality",nbins,pMin,pMax,100,0.,100.);
fOutput->Add(fAntiLambdaMCFromXi);
}
// Histogramas para estudios sistematicos de la eficiencia
+ Int_t binsEff13[3] = {nbins,nbins,20}; Double_t xminEff13[3] = {1.065,pMin,-1.0}; Double_t xmaxEff13[3] = {1.165,pMax,1.0}; // gral efficiency
+ Int_t binsEff14[4] = {nbins,nbins,20,10}; Double_t xminEff14[4] = {1.065,pMin,-1.0,-10.}; Double_t xmaxEff14[4] = {1.165,pMax,1.0,10.}; // vtx
+ Int_t binsEff15[4] = {nbins,nbins,20,60}; Double_t xminEff15[4] = {1.065,pMin,-1.0,0.}; Double_t xmaxEff15[4] = {1.165,pMax,1.0,1.2}; // dca between daug
+ Int_t binsEff16[4] = {nbins,nbins,20,50}; Double_t xminEff16[4] = {1.065,pMin,-1.0,0.9975}; Double_t xmaxEff16[4] = {1.165,pMax,1.0,1.}; // cpa
+ Int_t binsEff17[5] = {nbins,nbins,20,99,99}; Double_t xminEff17[5] = {1.065,pMin,-1.0,0.,0.}; Double_t xmaxEff17[5] = {1.165,pMax,1.0,3.3,3.3}; // dca to prim. vtx
+ Int_t binsEff18[5] = {nbins,nbins,20,170,170}; Double_t xminEff18[5] = {1.065,pMin,-1.0,0.5,0.5}; Double_t xmaxEff18[5] = {1.165,pMax,1.0,170.5,170.5}; // No. TPC Cls
+
for(Int_t i=0; i<kNCent; i++){
// --------- Natural particles
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap_Cent_%d",i);
- fAntiLambdaAssocMassPtRap[i] = new TH3F(hNameHist, "#bar{#Lambda}: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fAntiLambdaAssocMassPtRap[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
fOutput->Add(fAntiLambdaAssocMassPtRap[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRap2_Cent_%d",i);
- fAntiLambdaAssocMassPtRap2[i] = new TH3F(hNameHist, "#bar{#Lambda}: mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fAntiLambdaAssocMassPtRap2[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
fOutput->Add(fAntiLambdaAssocMassPtRap2[i]);
-
+
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtx_Cent_%d",i);
- fAntiLambdaAssocMassPtVtx[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+ fAntiLambdaAssocMassPtVtx[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
fOutput->Add(fAntiLambdaAssocMassPtVtx[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaug_Cent_%d",i);
- fAntiLambdaAssocMassPtDCADaug[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+ fAntiLambdaAssocMassPtDCADaug[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
fOutput->Add(fAntiLambdaAssocMassPtDCADaug[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPA_Cent_%d",i);
- fAntiLambdaAssocMassPtCPA[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+ fAntiLambdaAssocMassPtCPA[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
fOutput->Add(fAntiLambdaAssocMassPtCPA[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPV_Cent_%d",i);
- fAntiLambdaAssocMassPtDCAPV[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+ fAntiLambdaAssocMassPtDCAPV[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
fOutput->Add(fAntiLambdaAssocMassPtDCAPV[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPC_Cent_%d",i);
- fAntiLambdaAssocMassPtDaugNClsTPC[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+ fAntiLambdaAssocMassPtDaugNClsTPC[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPC[i]);
// ------------ Embeded particles
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtRapEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fAntiLambdaAssocMassPtRapEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtRapEmbeded2_Cent_%d",i);
- fAntiLambdaAssocMassPtRapEmbeded2[i] = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass, #it{p}_{T}, rap",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fAntiLambdaAssocMassPtRapEmbeded2[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap;",3,binsEff13,xminEff13,xmaxEff13);
fOutput->Add(fAntiLambdaAssocMassPtRapEmbeded2[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtVtxEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtVtxEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda} Embeded; mass; #it{p}_{T}; VtxZ",nbins,1.065,1.165,nbins,pMin,pMax,20,-10.,10.);
+ fAntiLambdaAssocMassPtVtxEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda} Embeded; Mass (GeV/c^{2}); #it{p}_{T}; rap; VtxZ;",4,binsEff14,xminEff14,xmaxEff14);
fOutput->Add(fAntiLambdaAssocMassPtVtxEmbeded[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCADaugEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtDCADaugEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCADaug",nbins,1.065,1.165,nbins,pMin,pMax,60,0,1.2);
+ fAntiLambdaAssocMassPtDCADaugEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; DCADaug;",4,binsEff15,xminEff15,xmaxEff15);
fOutput->Add(fAntiLambdaAssocMassPtDCADaugEmbeded[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtCPAEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtCPAEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; CPA",nbins,1.065,1.165,nbins,pMin,pMax,25,0.9975,1.);
+ fAntiLambdaAssocMassPtCPAEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; CPA;",4,binsEff16,xminEff16,xmaxEff16);
fOutput->Add(fAntiLambdaAssocMassPtCPAEmbeded[i]);
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDCAPVEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtDCAPVEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; DCA to Prim. Vtx",nbins,1.065,1.165,nbins,pMin,pMax,7,0.5,7.5);
+ fAntiLambdaAssocMassPtDCAPVEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos DCA to Prim. Vtx; Neg DCA to Prim. Vtx;",5,binsEff17,xminEff17,xmaxEff17);
fOutput->Add(fAntiLambdaAssocMassPtDCAPVEmbeded[i]);
-
snprintf(hNameHist,100, "fAntiLambdaAssocMassPtDaugNClsTPCEmbeded_Cent_%d",i);
- fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new TH3F(hNameHist, "#bar{#Lambda}; mass; #it{p}_{T}; # TPC Cls",nbins,1.065,1.165,nbins,pMin,pMax,4,0.5,4.5);
+ fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i] = new THnSparseD(hNameHist, "#bar{#Lambda}; Mass (GeV/c^{2}); #it{p}_{T}; rap; Pos # TPC Cls; Neg # TPC Cls;",5,binsEff18,xminEff18,xmaxEff18);
fOutput->Add(fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[i]);
}
fAntiLambdaMCResPhi = new TH3F("fAntiLambdaMCResPhi","#bar{#Lambda} Assoc: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
fOutput->Add(fAntiLambdaMCResPhi);
+ fAntiLambdaMCResPt = new TH3F("fAntiLambdaMCResPt","#bar{#Lambda} Assoc: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaMCResPt);
+
+ fAntiLambdaPosMCResEta = new TH3F("fAntiLambdaPosMCResEta","#bar{#Lambda} Pos. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaPosMCResEta);
+
+ fAntiLambdaPosMCResPhi = new TH3F("fAntiLambdaPosMCResPhi","#bar{#Lambda} Pos. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaPosMCResPhi);
+
+ fAntiLambdaPosMCResPt = new TH3F("fAntiLambdaPosMCResPt","#bar{#Lambda} Pos. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaPosMCResPt);
+
+ fAntiLambdaNegMCResEta = new TH3F("fAntiLambdaNegMCResEta","#bar{#Lambda} Neg. Daug.: #eta resolution; #eta_{MC}-#eta_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaNegMCResEta);
+
+ fAntiLambdaNegMCResPhi = new TH3F("fAntiLambdaNegMCResPhi","#bar{#Lambda} Neg. Daug.: #varphi resolution; #varphi_{MC}-#varphi_{Rec};#it{p}_{T} (GeV/#it{c}); centrality",40,-0.1,0.1,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaNegMCResPhi);
+
+ fAntiLambdaNegMCResPt = new TH3F("fAntiLambdaNegMCResPt","#bar{#Lambda} Neg. Daug.: pt resolution; #it{p}_{T,MC}-#it{p]_{T,Rec};#it{p}_{T} (GeV/#it{c}); centrality",60,-0.3,0.3,nbins,pMin,pMax,100,0.,100.);
+ fOutput->Add(fAntiLambdaNegMCResPt);
+
} //End MC
// ======================================================== //
fOutput->Add(fHistArmenterosPodolanski);
fHistArmPodBckg =
- new TH3F("fHistArmPodBckg","Background: Armenteros-Podolanski phase space;#alpha;p_{t} arm",
- 100,-1.0,1.0,50,0,0.5,4,-0.5,3.5);
- fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S}: Trig events");
- fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"#Lambda: Trig events");
- fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#bar{#Lambda}: Trig events");
+ new TH3F("fHistArmPodBckg","Armenteros-Podolanski phase space for correlations;#alpha;p_{t} arm",
+ 100,-1.0,1.0,50,0,0.5,6,-0.5,5.5);
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(1,"K^{0}_{S} SigBck: Trig events");
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(2,"K^{0}_{S} Bck: Trig events");
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(3,"#Lambda SigBck: Trig events");
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(4,"#Lambda Bck: Trig events");
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(5,"#bar{#Lambda} SigBck: Trig events");
+ fHistArmPodBckg->GetZaxis()->SetBinLabel(6,"#bar{#Lambda} Bck: Trig events");
fOutput->Add(fHistArmPodBckg);
// ****** K0s ******
fOutput->Add(fK0sMassEmbeded);
fK0sMassPtEta =
- new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass;#it{p}_{T} (GeV/#it{c});#eta",
+ new TH3F("fK0sMassPtEta","K^{0}_{s}: Mass vs #it{p}_{T} vs #eta;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});#eta",
nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
fOutput->Add(fK0sMassPtEta);
- fK0sMassPtRap =
- new TH3F("fK0sMassPtRap","K^{0}_{s}: mass vs #it{p}_{T} vs yMass;#it{p}_{T} (GeV/#it{c});y",
- nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
- fOutput->Add(fK0sMassPtRap);
+ for(Int_t i=0; i<kNCent; i++){
+ fK0sMassPtRap[i] =
+ new TH3F(Form("fK0sMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"K^{0}_{s}: mass vs #it{p}_{T} vs y;Mass (GeV/C^{2});#it{p}_{T} (GeV/#it{c});y",
+ nbins,0.398,0.598,nbins,pMin,pMax,20,-1.0,1.0);
+ fOutput->Add(fK0sMassPtRap[i]);
+ }
fK0sMassPtPhi =
new TH3F("fK0sMassPtPhi","K^{0}_{s}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/c^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
nbins,0.398,0.598,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
fOutput->Add(fK0sMassPtPhi);
- // Correlations:
+ // ================== Correlations =================
+
+ // ------------------------ Splitting:
+ Double_t binsDev[121];
+ binsDev[0] = 0;
+
+ for (Int_t k=-7;k<=4;k++)
+ for (Int_t j=1;j<=10;j++)
+ binsDev[(k+7)*10+j] = j*TMath::Power(10,k);
+
+ Int_t binsSplit[9] = {100,nbins,100,2,301,101,101,120,9}; Double_t xminSplit[9] = {pMin,0.398,pMin,-0.5,-0.001,-0.005,-0.005,0,-0.5}; Double_t xmaxSplit[9] = {pMax,0.598,pMax,1.5,0.3,1.005,1.005,10e+4,8.5};
+
+ Int_t binsSplit2[12] = {100,nbins,100,2,10,20,101,101,100,120,99,2};
+ Double_t xminSplit2[12] = {pMin,0.398,pMin,-0.5,0.,-0.1,-0.005,-0.005,-1.,0,0.,-0.5};
+ Double_t xmaxSplit2[12] = {pMax,0.598,pMax,1.5,0.1,0.1,1.005,1.005,1.,10e+4,3.3,1.5};
+
+ Int_t binsSplit3[6] = {100,nbins,100,46,46,2};
+ Double_t xminSplit3[6] = {pMin,0.398,pMin,-0.16,-0.16,-0.5};
+ Double_t xmaxSplit3[6] = {pMax,0.598,pMax,0.16,0.16,1.5};
+
+ for(Int_t j=0; j<kNCent; j++){
+
+ // positive daughter
+ fK0sPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sPosDaugSplCheckCovMat_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fK0sPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fK0sPosDaugSplCheckCovMat[j]);
+
+ // negative daughter
+ fK0sNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fK0sNegDaugSplCheckCovMat_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fK0sNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fK0sNegDaugSplCheckCovMat[j]);
+
+ // Positive daughter:
+ fK0sPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sPosDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fK0sPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fK0sPosDaugdPhiSdEtaS[j]);
+
+ // Negative daughter:
+ fK0sNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fK0sNegDaugdPhiSdEtaS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fK0sNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fK0sNegDaugdPhiSdEtaS[j]);
+
+ if(fIsMC){
+ // Positive daughter:
+ fK0sPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sPosMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fK0sPosMCResdEtaSdPhiS[j]);
+
+ // Negative daughter:
+ fK0sNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fK0sNegMCResdEtaSdPhiS_%d",j), "K^{0}_{S} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fK0sNegMCResdEtaSdPhiS[j]);
+ }
+
+ }
+
+
+ // DCA to prim vertex
fK0sDCADaugToPrimVtx
- = 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/#it{c})",
+ = new TH3F("fK0sDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l};DCA Pos daug (cm);DCA Neg daug (cm);#it{p}_{T,l} (GeV/#it{c})",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fOutput->Add(fK0sDCADaugToPrimVtx);
// Monte-Carlo level:
if(fIsMC){
snprintf(hNameHist,100, "fK0sdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
- fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+ fK0sdPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"K^{0}_{S} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
nbinsdEta,-1.5,1.5,
nbinsVtx,-10.,10.);
for(Int_t ll=0;ll<kNVtxZ;ll++){
snprintf(hNameHist,100, "fK0sdPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"K^{0}_{S}: #Delta#varphi vs #Delta#eta vs Inv. Mass",
- nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
- nbinsdEta,-1.5,1.5,
- nbins,0.398,0.598);
+ nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
+ nbinsdEta,-1.5,1.5,
+ nbins,0.398,0.598);
fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetXaxis()->SetTitle("#Delta#varphi (rad)");
fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetYaxis()->SetTitle("#Delta#eta");
fK0sdPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll]->GetZaxis()->SetTitle("Inv. Mass");
// Correlations (side-band):
fK0sBckgDecLength
- = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. p_{T,l}",
+ = new TH2F("fK0sBckgDecLength","K^{0}_{S} Bckg: c#tau vs. #it{p}_{T,l}",
100,0.,15.,nbinPtLP,pMin,ptMaxLP);
fK0sBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
- fK0sBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fK0sBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fK0sBckgDecLength);
fK0sBckgDCADaugToPrimVtx
- = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. p_{T,l}",
+ = new TH3F("fK0sBckgDCADaugToPrimVtx","K^{0}_{S} Bckg: dca daughter vs. #it{p}_{T,l}",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fK0sBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
fK0sBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
- fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fK0sBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fK0sBckgDCADaugToPrimVtx);
fK0sBckgEtaPhi =
nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
fOutput->Add(fLambdaMassPtEta);
- fLambdaMassPtRap =
- new TH3F("fLambdaMassPtRap","\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
- nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
- fOutput->Add(fLambdaMassPtRap);
+ for(Int_t i=0; i<kNCent; i++){
+ fLambdaMassPtRap[i] =
+ new TH3F(Form("fLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"\\Lambda: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",
+ nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fOutput->Add(fLambdaMassPtRap[i]);
+ }
fLambdaMassPtPhi =
new TH3F("fLambdaMassPtPhi","#Lambda: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
nbins,1.065,1.165,nbins,pMin,pMax,nbinsPhi,0.,2.*TMath::Pi());
fOutput->Add(fLambdaMassPtPhi);
- // Correlations:
+ // ================== Correlations =================
+
+ // ----------------Splitting:
+ xminSplit[1] = 1.065; xmaxSplit[1] = 1.165;
+ xminSplit2[1] = 1.065; xmaxSplit2[1] = 1.165;
+ xminSplit3[1] = 1.065; xmaxSplit3[1] = 1.165;
+
+ for(Int_t j=0; j<kNCent; j++){
+
+ // positive daughter:
+ fLambdaPosDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaPosDaugSplCheckCovMat_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fLambdaPosDaugSplCheckCovMat[j]);
+
+ // negative daughter:
+ fLambdaNegDaugSplCheckCovMat[j] = new THnSparseD( Form("fLambdaNegDaugSplCheckCovMat_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fLambdaNegDaugSplCheckCovMat[j]);
+
+ // Positive daughter:
+ fLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaPosDaugdPhiSdEtaS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fLambdaPosDaugdPhiSdEtaS[j]);
+
+ // Negative daughter:
+ fLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fLambdaNegDaugdPhiSdEtaS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; #sum_{x,y,z}(#it{p}_{i,Trig}-#it{p}_{i,Daug})^{2}/( #sigma_{i,Trig}^{2} + #sigma_{i,Daug}^{2} ); DCA to prim. vtx; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fLambdaNegDaugdPhiSdEtaS[j]);
+
+ if(fIsMC){
+ // Positive daughter:
+ fLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaPosMCResdEtaSdPhiS_%d",j), "#Lambda Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fLambdaPosMCResdEtaSdPhiS[j]);
+
+ // Negative daughter:
+ fLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fLambdaNegMCResdEtaSdPhiS_%d",j), "#Lambda Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fLambdaNegMCResdEtaSdPhiS[j]);
+ }
+
+ }
+
+
+ // DCA to prim vertex
fLambdaDCADaugToPrimVtx
- = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
+ = new TH3F("fLambdaDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
fLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
- fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fLambdaDCADaugToPrimVtx);
// Spatial Resoltuion between trigger- and asosciated- particles
// Monte-Carlo level:
if(fIsMC){
snprintf(hNameHist,100, "fLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
- fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+ fLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#Lambda MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
nbinsdEta,-1.5,1.5,
nbinsVtx,-10.,10.);
// Reconstruction level:
for(Int_t ll=0;ll<kNVtxZ;ll++){
snprintf(hNameHist,100, "fLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
- fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+ fLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#Lambda: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
nbinsdEta,-1.5,1.5,
nbins,1.065,1.165);
// Correlations (side-band):
fLambdaBckgDecLength
- = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. p_{T,l}",
+ = new TH2F("fLambdaBckgDecLength","#Lambda Bckg: c#tau vs. #it{p}_{T,l}",
100,0.,25.,nbinPtLP,pMin,ptMaxLP);
fLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
- fLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fLambdaBckgDecLength);
fLambdaBckgDCADaugToPrimVtx
- = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. p_{T,l}",
+ = new TH3F("fLambdaBckgDCADaugToPrimVtx","#Lambda Bckg: dca daughter vs. #it{p}_{T,l}",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
fLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
- fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fLambdaBckgDCADaugToPrimVtx);
fLambdaBckgEtaPhi =
new TH3F("fAntiLambdaMassPtEta","#bar{#Lambda}: mass vs #it{p}_{T} vs #eta;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#eta",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
fOutput->Add(fAntiLambdaMassPtEta);
- fAntiLambdaMassPtRap =
- new TH3F("fAntiLambdaMassPtRap","#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
- fOutput->Add(fAntiLambdaMassPtRap);
+ for(Int_t i=0; i<kNCent; i++){
+ fAntiLambdaMassPtRap[i] =
+ new TH3F(Form("fAntiLambdaMassPtRap_cent_%.0lf_%.0lf",kBinCent[i],kBinCent[i+1]),"#bar{#Lambda}: mass vs #it{p}_{T} vs y;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});y",nbins,1.065,1.165,nbins,pMin,pMax,20,-1.0,1.0);
+ fOutput->Add(fAntiLambdaMassPtRap[i]);
+ }
fAntiLambdaMassPtPhi =
new TH3F("fAntiLambdaMassPtPhi","#bar{#Lambda}: mass vs #it{p}_{T} vs #varphi;Mass (GeV/#it{c}^2);#it{p}_{T} (GeV/#it{c});#varphi (rad)",
fOutput->Add(fAntiLambdaMassPtPhi);
- // Correlations:
+
+ // ================== Correlations =================
+
+ // ----------------Splitting:
+ for(Int_t j=0; j<kNCent; j++){
+
+ // positive daughter:
+ fAntiLambdaPosDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaPosDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fAntiLambdaPosDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fAntiLambdaPosDaugSplCheckCovMat[j]);
+
+ // negative daughter:
+ fAntiLambdaNegDaugSplCheckCovMat[j] = new THnSparseD(Form("fAntiLambdaNegDaugSplCheckCovMat_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; R#Delta#varphi*_{max}; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; (X-X')^{2}/( #sigma^{2} + #sigma'^{2} ); Variables;",9,binsSplit,xminSplit,xmaxSplit);
+ fAntiLambdaNegDaugSplCheckCovMat[j]->SetBinEdges(7,binsDev);
+ fOutput->Add(fAntiLambdaNegDaugSplCheckCovMat[j]);
+
+ // Positive daughter:
+ fAntiLambdaPosDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaPosDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fAntiLambdaPosDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fAntiLambdaPosDaugdPhiSdEtaS[j]);
+
+ // Negative daughter:
+ fAntiLambdaNegDaugdPhiSdEtaS[j] = new THnSparseD(Form("fAntiLambdaNegDaugdPhiSdEtaS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); Same Sign as Trigger Particle; #Delta#varphi*; #Delta#eta*; Trigger: fraction of TPC shared cls; Daughter: fraction of TPC shared cls; Correlation fraction of shared cls: Trigger - Daughter; same MC label;",12,binsSplit2,xminSplit2,xmaxSplit2);
+ fAntiLambdaNegDaugdPhiSdEtaS[j]->SetBinEdges(9,binsDev);
+ fOutput->Add(fAntiLambdaNegDaugdPhiSdEtaS[j]);
+
+ if(fIsMC){
+ // Positive daughter:
+ fAntiLambdaPosMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaPosMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Pos. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fAntiLambdaPosMCResdEtaSdPhiS[j]);
+
+ // Negative daughter:
+ fAntiLambdaNegMCResdEtaSdPhiS[j] = new THnSparseD(Form("fAntiLambdaNegMCResdEtaSdPhiS_%d",j), "#bar{#Lambda} Neg. daughter; #it{p}_{T,V0} (GeV/#it{c}); Mass (GeV/c^2); #it{p}_{Daug} (GeV/#it{c}); #Delta#varphi*; #Delta#eta*; Same Sign as Trigger Particle;",6,binsSplit3,xminSplit3,xmaxSplit3);
+ fOutput->Add(fAntiLambdaNegMCResdEtaSdPhiS[j]);
+ }
+
+ }
+
+
+
+ // DCA to prim vertex
fAntiLambdaDCADaugToPrimVtx
- = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
+ = new TH3F("fAntiLambdaDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fAntiLambdaDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
fAntiLambdaDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
- fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fAntiLambdaDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fAntiLambdaDCADaugToPrimVtx);
// Spatial Resoltuion between trigger- and asosciated- particles
// Monte-Carlo level:
if(fIsMC){
snprintf(hNameHist,100, "fAntiLambdadPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1]);
- fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+ fAntiLambdadPhidEtaMC[jj*kN1+k] = new TH3F(hNameHist,"#bar{#Lambda} MC: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
nbinsdEta,-1.5,1.5,
nbinsVtx,-10.,10.);
// Reconstruction level:
for(Int_t ll=0;ll<kNVtxZ;ll++){
snprintf(hNameHist,100, "fAntiLambdadPhidEtaPtL_%.2f_%.2f_Cent_%.0f_%.0f_%d",kPtBinV0[k],kPtBinV0[k+1],kBinCent[jj],kBinCent[jj+1],ll);
- fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs p_{T,l}",
+ fAntiLambdadPhidEtaPtL[jj*kN1*kNVtxZ + k*kNVtxZ + ll] = new TH3F(hNameHist,"#bar{#Lambda}: #Delta#varphi vs #Delta#eta vs #it{p}_{T,l}",
nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
nbinsdEta,-1.5,1.5,
nbins,1.065,1.165);
// Correlations (side-band):
fAntiLambdaBckgDecLength
- = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. p_{T,l}",
+ = new TH2F("fAntiLambdaBckgDecLength","#bar{#Lambda} Bckg: c#tau vs. #it{p}_{T,l}",
100,0.,25.,nbinPtLP,pMin,ptMaxLP);
fAntiLambdaBckgDecLength->GetXaxis()->SetTitle("c#tau (cm)");
- fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fAntiLambdaBckgDecLength->GetYaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fAntiLambdaBckgDecLength);
fAntiLambdaBckgDCADaugToPrimVtx
- = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. p_{T,l}",
+ = new TH3F("fAntiLambdaBckgDCADaugToPrimVtx","#bar{#Lambda} Bckg: dca daughter vs. #it{p}_{T,l}",
90,0.,3.3,90,0.,3.3,nbinPtLP,pMin,ptMaxLP);
fAntiLambdaBckgDCADaugToPrimVtx->GetXaxis()->SetTitle("DCA Pos daug (cm)");
fAntiLambdaBckgDCADaugToPrimVtx->GetYaxis()->SetTitle("DCA Neg daug (cm)");
- fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("p_{T,l} (GeV/#it{c})");
+ fAntiLambdaBckgDCADaugToPrimVtx->GetZaxis()->SetTitle("#it{p}_{T,l} (GeV/#it{c})");
fOutput->Add(fAntiLambdaBckgDCADaugToPrimVtx);
fAntiLambdaBckgEtaPhi =
fOutput->Add(fAntiLambdaBckgDCAPosDaugToPrimVtx);
- // Xi: correlations in MC
- if(fIsMC){ // Monte-Carlo level:
-
- // Pt of Xi as associated particles
- fXiMinusPtMCAssoc = new TH2F("fXiMinusPtMCAssoc","Xi Minus MC (Assocaiated particle);#it{p}_{T} (GeV/#it{c});Centrality",50,0.,50.,100,0.,100.);
- fOutput->Add(fXiMinusPtMCAssoc);
-
- // Pt of Xi as trigger particles
- fXiMinusPtMCTrigger = new TH2F("fXiMinusPtMCTrigger","Xi Minus MC (Leadinf particle);#it{p}_{T} (GeV/#it{c});Centrality",50,0.,50.,100,0.,100.);
- fOutput->Add(fXiMinusPtMCTrigger);
-
- // Correlations: h-Xi
- for(Int_t jj=0;jj<kNCent;jj++){
- for(Int_t k=0;k<kN2;k++){
-
- snprintf(hNameHist,100, "fXiMinusdPhidEtaMC_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]);
- fXiMinusdPhidEtaMC[jj*kN2+k] = new TH3F(hNameHist,"Xi Minus MC: #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
- nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
- nbinsdEta,-1.5,1.5,
- nbinsVtx,-10.,10.);
- fOutput->Add(fXiMinusdPhidEtaMC[jj*kN2+k]);
-
-
- snprintf(hNameHist,100, "fXiMinusdPhidEtaMC2_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]);
- fXiMinusdPhidEtaMC2[jj*kN2+k] = new TH3F(hNameHist,"Xi Minus MC: #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
- nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
- nbinsdEta,-1.5,1.5,
- nbinsVtx,-10.,10.);
- fOutput->Add(fXiMinusdPhidEtaMC2[jj*kN2+k]);
-
- }
- }
-
- // Correlations: Xi-h
- for(Int_t jj=0;jj<kNCent;jj++){
- for(Int_t k=0;k<kN3;k++){
- snprintf(hNameHist,100, "fXiMinusdPhidEtaMC3_%.2f_%.2f_Cent_%.0f_%.0f",kPtBinV02[k],kPtBinV02[k+1],kBinCent[jj],kBinCent[jj+1]);
- fXiMinusdPhidEtaMC3[jj*kN3+k] = new TH3F(hNameHist,"Xi Minus MC (LP): #Delta#varphi vs #Delta#eta vs p_{T,l}; #Delta#varphi (rad); #Delta#eta; Vertex Z (cm)",
- nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
- nbinsdEta,-1.5,1.5,
- nbinsVtx,-10.,10.);
- fOutput->Add(fXiMinusdPhidEtaMC3[jj*kN3+k]);
- }
- }
-
- } // End MC condition
-
- // Gamma conversion
- for(Int_t jj=0;jj<kNCent;jj++){
- snprintf(hNameHist,100, "fGammaConversiondPhidEta_Cent_%.0f_%.0f",kBinCent[jj],kBinCent[jj+1]);
- fGammaConversiondPhidEta[jj] = new TH3F(hNameHist,"Gamma Conversion: #Delta#varphi vs #Delta#eta;#Delta#varphi (rad);#Delta#eta;Vertex Z (cm)",
- 2*nbinsdPhi,-TMath::PiOver2(),3*TMath::PiOver2(),
- nbinsdEta,-1.5,1.5,
- nbinsVtx,-10.,10.);
- fOutput->Add(fGammaConversiondPhidEta[jj]);
- }
-
// ============================================================= //
// K0s in ME:
// Number of TPC clusters:
// --- signal ---
fK0sNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
- new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fK0sNClustersTPC","K^{0}_{S};#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fK0sNClustersTPC);
// --- background ---
fK0sBckgNClustersTPC = // Positive momentum to positive daugther - Negative momentum to negative daugther
- new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fK0sBckgNClustersTPC","K^{0}_{S} Bckg;#varphi;Num. TPC Clusters; #it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fK0sBckgNClustersTPC);
// Number of ITS clusters:
// Number of TPC clusters:
// --- signal ---
fLambdaNClustersTPC =
- new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fLambdaNClustersTPC","#Lambda;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fLambdaNClustersTPC);
// --- background ---
fLambdaBckgNClustersTPC =
- new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fLambdaBckgNClustersTPC","#Lambda Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fLambdaBckgNClustersTPC);
// Number of ITS clusters:
// Number of TPC clusters:
// --- signal ---
fAntiLambdaNClustersTPC =
- new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fAntiLambdaNClustersTPC","#bar{#Lambda};#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fAntiLambdaNClustersTPC);
// --- background ---
fAntiLambdaBckgNClustersTPC =
- new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),131,49.5,180.5,nbins,-pMax,pMax);
+ new TH3F("fAntiLambdaBckgNClustersTPC","#bar{#Lambda} Bckg;#varphi;Num. TPC Clusters;#it{p}_{T} (GeV/#it{c})",nbinsPhi,0.,2.*TMath::Pi(),181,0.5,180.5,nbins,-pMax,pMax);
fOutputQA->Add(fAntiLambdaBckgNClustersTPC);
// Number of ITS clusters:
//___________________________________________________________________________________________
-Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(AliAODTrack *t)
+Bool_t AliAnalysisTaskLambdaOverK0sJets::AcceptTrack(const AliAODTrack *t)
{
// Track criteria for primaries particles
+
if (TMath::Abs(t->Eta())>0.8 ) return kFALSE;
- if (!(t->TestFilterMask(1<<7))) return kFALSE;
+ // TPC only tracks
+ //if (!(t->TestFilterMask(1<<7))) return kFALSE;
+ // Hybrid tracks
+ if( !(t->TestFilterBit(272)) ) return kFALSE;
Float_t nCrossedRowsTPC = t->GetTPCClusterInfo(2,1);
- if (nCrossedRowsTPC < 70) return kFALSE;
+ if (nCrossedRowsTPC < 70) return kFALSE;
- // Point in the SPD
+ // Point in the SPD
Int_t SPDHits = t->HasPointOnITSLayer(0) + t->HasPointOnITSLayer(1);
-
- // Propagate the global track to the DCA.
- /*
- Double_t PosAtDCA[2] = {-999,-999};
- Double_t covar[3] = {-999,-999,-999};
- const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
- t->PropagateToDCA(vtx,fAOD->GetMagneticField(),100.,PosAtDCA,covar);
- */
-
- // 5) DCA cut (See R_AA paper).
- //Double_t DCAcutvalue[2];
- //DCAcutvalue[0] = 0.018 + 0.035*TMath::Power(t->Pt(),-1.01);
- //DCAcutvalue[1] = 2.;
-
- //if( SPDHits && (TMath::Abs(PosAtDCA[0])>DCAcutvalue[0] || TMath::Abs(PosAtDCA[1])>DCAcutvalue[1]) ){
if( SPDHits )
fTriggerWiSPDHit->Fill(1.5);
//___________________________________________________________________________________________
-static Int_t SameTrack(AliAODTrack *trk, const AliAODTrack *daugTrk)
+static Int_t SameTrack(const AliAODTrack *trig, const AliAODTrack *daug)
{
// Local method to compaire the momentum between two tracks
isSamePt = 1;
*/
- if( (TMath::Abs(daugTrk->GetID())+1)==(TMath::Abs(trk->GetID())) )
+ if( (TMath::Abs(daug->GetID())+1)==(TMath::Abs(trig->GetID())) )
isSamePt = 1;
- /*
- if( (TMath::Abs(nTrk->GetID()))==(TMath::Abs(trk->GetID())) ||
- (TMath::Abs(pTrk->GetID()))==(TMath::Abs(trk->GetID())) ) isSamePt = 1;
- */
return isSamePt;
//___________________________________________________________________________________________
+static Int_t SameLabel(const AliAODTrack *trig, const AliAODTrack *daug)
+{
+ // Compaire the the label value that points back to the Monte Carlo production
+ //cout << trig->GetLabel() << " " << daug->GetLabel() << endl;
+
+ if( TMath::Abs(trig->GetLabel() ) ==
+ TMath::Abs(daug->GetLabel() ) )
+ return 1.0;
+
+ return 0.;
+
+}
+
+//___________________________________________________________________________________________
+
static Float_t SpatialResolution(Float_t p1x,Float_t p1y,Float_t p2x,Float_t p2y,Float_t dist)
{
// Obtains the spacial resolution between trigger and V0
//___________________________________________________________________________________________
-void AliAnalysisTaskLambdaOverK0sJets::RecCascade(AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
+static Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign)
{
- // Local method to reconstruct cascades candidates from the combinations of three tracks
- // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
- // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
- // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
+ //
+ // calculates dphistar
+ //
- Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
- Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
- Float_t pLambda[3] = {0.,0.,0.};
- Float_t pCascade[3] = {0.,0.,0.};
- Float_t lMassCascade = 0., lPtot2Cascade=0.;
+ Float_t dphistar = phi1 - phi2 - charge1 * bSign * TMath::ASin(0.075 * radius / pt1) + charge2 * bSign * TMath::ASin(0.075 * radius / pt2);
+ static const Double_t kPi = TMath::Pi();
- // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
- for(Int_t i=0;i<2;i++){
+ // circularity
+ if (dphistar > kPi)
+ dphistar = kPi * 2 - dphistar;
+ if (dphistar < -kPi)
+ dphistar = -kPi * 2 - dphistar;
+ if (dphistar > kPi) // might look funny but is needed
+ dphistar = kPi * 2 - dphistar;
- // 0. Check the charge for both tracks: trk1 & trk2.
- // Usefull in the Lambda step.
- if( trk1->Charge() == trk2->Charge() )
- continue;
-
- // 1. Bachelor: Allocation for the track
- if(i==0) // Xi
- lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
- else if(i==1) //Omega
- lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
+ return dphistar;
- lPtot2Bach = TMath::Power(trkBch->P(),2);
+}
- lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
- // 2. Lambda: Kinematical properties
- lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
-
- pLambda[0] = trk1->Px() + trk2->Px();
- pLambda[1] = trk1->Py() + trk2->Py();
- pLambda[2] = trk1->Pz() + trk2->Pz();
+//___________________________________________________________________________________________
- lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
+static Float_t TwoTrackEfficiencyCut(Float_t phi1, Float_t eta1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t eta2, Float_t pt2, Float_t charge2, Float_t bSign)
+{
+ // Code taken from the HBT analysis to reject the track splitting
+ // It was modified to provide only the value of kDphiStarMax
+ // and a possible rejection in the kDphiStarMean
- lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
+ Float_t kRadiousDphiStarMax = -0.0005;
+ Float_t deta = eta1 - eta2;
+ Float_t twoTrackEfficiencyCutValue = 0.02;
- // 3. Cascade: Reconstruction
- pCascade[0] = pLambda[0] + trkBch->Px();
- pCascade[1] = pLambda[1] + trkBch->Py();
- pCascade[2] = pLambda[2] + trkBch->Pz();
+ // optimization
+ if (TMath::Abs(deta) < twoTrackEfficiencyCutValue * 2.5 * 3) {
- lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
+ // check first boundaries to see if is worth to loop and find the minimum
+ Float_t dphistar1 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 0.8, bSign);
+ Float_t dphistar2 = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, 2.5, bSign);
- lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
-
- // 4. Filling histograms
- if( histo.Contains("K0s") ) {
- if(i==0) // Xi
- fV0MassCascade->Fill(lMassCascade,1);
- else if(i==1) //Omega
- fV0MassCascade->Fill(lMassCascade,3);
- }
- else if( histo.Contains("AntiLambda") ) {
- if(i==0) // Xi
- fV0MassCascade->Fill(lMassCascade,9);
- else if(i==1) //Omega
- fV0MassCascade->Fill(lMassCascade,11);
- }
- else if( histo.Contains("Lambda") ) {
- if(i==0) // Xi
- fV0MassCascade->Fill(lMassCascade,5);
- else if(i==1) //Omega
- fV0MassCascade->Fill(lMassCascade,7);
- }
+ const Float_t kLimit = twoTrackEfficiencyCutValue * 3;
- }
+ //Float_t dphistarminabs = 1e5;
+ //Float_t dphistarmin = 1e5;
+
+ if (TMath::Abs(dphistar1) < kLimit || TMath::Abs(dphistar2) < kLimit || dphistar1 * dphistar2 < 0){
+ kRadiousDphiStarMax = 0;
+ //kDphiStarMean = 0;
+ //Int_t i=0;
+
+ for (Double_t rad=0.8; rad<2.51; rad+=0.01){
+
+ if ( TMath::Abs(0.075 * rad / pt2)>1 ) break;
+
+ Float_t dphistar = GetDPhiStar(phi1, pt1, charge1, phi2, pt2, charge2, rad, bSign);
+ Float_t dphistarabs = TMath::Abs(dphistar);
+
+ if( ( (dphistarabs*rad) > kRadiousDphiStarMax) && ( TMath::Abs(deta) < twoTrackEfficiencyCutValue ) ){
+ kRadiousDphiStarMax = dphistarabs*rad;
+ }
+
+ //kDphiStarMean += dphistarabs;
+ //i++;
+
+ }
+
+ //kDphiStarMean = kDphiStarMean/i;
+ /*if (TMath::Abs(deta) < twoTrackEfficiencyCutValue && kDphiStarMean < twoTrackEfficiencyCutValue ){
+ return kFALSE;
+ }*/
+
+ } // End selection in dphistar
+
+ } // End dEta value
+
+
+ return kRadiousDphiStarMax;
+
}
//___________________________________________________________________________________________
+/*
+static Bool_t GoodTPCSharedMap(const AliAODTrack *track)
+{
+ // Rejects tracks with shared clusters after filling a control histogram
+ // This overload is used for primaries
-void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
-{
- // Three options for the 'step' variable:
- // 1) TriggerCheck
- // 2) Reconstruction
+ // Get the shared maps
+ const TBits sharedMap = track->GetTPCSharedMap();
+ // Fill a control histogram
+ //fPriHistShare->Fill(sharedMap.CountBits());
+ // Reject shared clusters
+ if((sharedMap.CountBits()) >= 1){
+ // Bad track, has too many shared clusters!
+ return kFALSE;
+ }
+ return kTRUE;
+}
+*/
+//___________________________________________________________________________________________
+
+static Float_t GetFractionTPCSharedCls(const AliAODTrack *track)
+{
+ // Rejects tracks with shared clusters after filling a control histogram
+ // This overload is used for primaries
+
+ // Get the shared maps
+ const TBits sharedMap = track->GetTPCSharedMap();
- AliAODTrack *trkTrig = 0x0;
- Float_t ptTrig = -100.;
- Float_t phiTrig = -100.;
- Float_t etaTrig = -100.;
- Double_t pTrig[3];
+ return 1.*sharedMap.CountBits()/track->GetTPCNclsF();
+
+}
- if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
+//___________________________________________________________________________________________
+
+Double_t AliAnalysisTaskLambdaOverK0sJets::ThetaS(TString part)
+{
+ // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+ // private communication with Hans Beck
+
+ // Returns the longitudinal angle of the particles propagated
+ // position at R=1.25m. See
+ // https://edms.cern.ch/file/406391/2/ALICE-INT-2003-038.pdf
+ // for the ALICE coordinate system. Theta is zero at positive z,
+ // pi/2 at z = 0 aka the xy plane and pi at negative z
+
+ // R^ ^
+ // | /
+ // |θ'/
+ // | / θ
+ // |/____>z
+ //
+ // Let's compute θ' and θ = π/2 - θ'
+ // where θ' can even be and should
+ // sometimes be negative
+ // tan(θ') = z/R
+ // θ' = arctan(z/R)
+ // θ = π/2 - θ'
+ // = π/2 - arctan(z/R)
+ // Note that in the doc above theta
+ // is calculated as arccos(z/sqrt(x^2+y^2+z^2))
+
+ // Array of positions is 85,105,125,..cm,
+ // we take the z position at R=1.25m
+ // return TMath::Pi()/2. - TMath::ATan(fXshifted[2][2]/125.);
+ /*
+ if( part.EqualTo("Trigger") )
+ return TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/125.);
+ else if( part.EqualTo("Daughter") )
+ return TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/125.);
+ */
+
+ Double_t thetaS = -100.;
+
+ if( part.EqualTo("Trigger") )
+ thetaS = TMath::Pi()/2. - TMath::ATan(fTrigSftR125[2]/fTPCRadius);
+ if( part.EqualTo("Daughter") )
+ thetaS = TMath::Pi()/2. - TMath::ATan(fDaugSftR125[2]/fTPCRadius);
+
+ return thetaS;
+
+}
+
+//___________________________________________________________________________________________
+
+Double_t AliAnalysisTaskLambdaOverK0sJets::EtaS(TString part)
+{
+ // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+ // private communication with Hans Beck
+
+ // Returns the corresponding eta of a pri. part.
+ // with this particles pos at R=1.25m
+
+ // http://en.wikipedia.org/wiki/Pseudorapidity
+ // η = -ln[ tan(θ/2)]
+ // printf("z: %+04.0f, thetaS %+03.2f etaS %+1.2f\n"
+ // ,fXshifted[2][2],ThetaS(),-TMath::Log( TMath::Tan(ThetaS()/2.) ));
+
+ return -TMath::Log( TMath::Tan(ThetaS(part)/2.) );
+}
+
+//___________________________________________________________________________________________
+
+Float_t AliAnalysisTaskLambdaOverK0sJets::dEtaS()
+{
+ // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+ // private communication with Hans Beck
+
+ // Returns the pseudorapidity star difference
+
+ // It is important to keep the calculations easy and separated.
+ // The calculation of EtaS is straight forward, one just has to
+ // do it step by step to not get confused.
+ return EtaS("Trigger") - EtaS("Daughter");
+}
+
+//___________________________________________________________________________________________
+
+Float_t AliAnalysisTaskLambdaOverK0sJets::dPhiSAtR125()
+{
+ // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+ // private communication with Hans Beck
+
+ // returns delta phi star at R=1.2m
+ // position at R=1.2m is stored as second radius
+ // const Float_t distSft= TMath::Sqrt(TMath::Power(track1.fXshifted[2][0] - track2.fXshifted[2][0],2)
+ // +TMath::Power(track1.fXshifted[2][1] - track2.fXshifted[2][1],2));
+ const Float_t distSft= TMath::Sqrt( TMath::Power(fTrigSftR125[0] - fDaugSftR125[0],2) +
+ TMath::Power(fTrigSftR125[1] - fDaugSftR125[1],2) );
+ //return 2.0 * TMath::ATan(distSft/2./(125.));
+ return 2.0 * TMath::ATan(distSft/2./(fTPCRadius));
+}
+
+
+//___________________________________________________________________________________________
+
+void AliAnalysisTaskLambdaOverK0sJets::SetSftPosR125(const AliAODTrack *track,const Float_t bfield,const Float_t priVtx[3], TString part)
+{
+ // LINES OBTAINED FROM THE FEMTOSCOPY ANALYSIS:
+ // private communication with Hans Beck
+
+ // Sets the spatial position of the track at the radius R=1.25m in the shifted coordinate system
+
+ // Initialize the array to something indicating there was no propagation
+ if(part.EqualTo("Trigger")){
+ fTrigSftR125[0] = -9999.;
+ fTrigSftR125[1] = -9999.;
+ fTrigSftR125[2] = -9999.;
+ }
+ if(part.EqualTo("Daughter")){
+ fDaugSftR125[0] = -9999.;
+ fDaugSftR125[1] = -9999.;
+ fDaugSftR125[2] = -9999.;
+ }
+
+ // Make a copy of the track to not change parameters of the track
+ AliExternalTrackParam etp;
+ etp.CopyFromVTrack(track);
+
+ // The global position of the the track
+ Double_t xyz[3]={-9999.,-9999.,-9999.};
+
+ // The radius we want to propagate to, squared
+ //const Float_t RSquaredWanted(125.*125.);
+ const Float_t RSquaredWanted(fTPCRadius*fTPCRadius);
+
+ // Propagation is done in local x of the track
+ for (Float_t x = 58.; x < 247.; x+=1.){
+ // Starts at 83 / Sqrt(2) and goes outwards. 85/Sqrt(2) is the smallest local x
+ // for global radius 85 cm. x = 245 is the outer radial limit of the TPC when
+ // the track is straight, i.e. has inifinite pt and doesn't get bent.
+ // If the track's momentum is smaller than infinite, it will develop a y-component,
+ // which adds to the global radius
+ // We don't change the propagation steps to not mess up things!
+
+ // Stop if the propagation was not succesful. This can happen for low pt tracks
+ // that don't reach outer radii
+ if(!etp.PropagateTo(x,bfield)) break;
+ etp.GetXYZ(xyz); // GetXYZ returns global coordinates
+
+ // Calculate the shifted radius we are at, squared.
+ // Compare squared radii for faster code
+ Float_t shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
+ + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
+
+ // Roughly reached the radius we want
+ if(shiftedRadiusSquared > RSquaredWanted){
+
+ // Bigger loop has bad precision, we're nearly one centimeter too far,
+ // go back in small steps.
+ while (shiftedRadiusSquared>RSquaredWanted){
+ // Propagate a mm inwards
+ x-=.1;
+ if(!etp.PropagateTo(x,bfield)){
+ // Propagation failed but we're already with a
+ // cm precision at R=1.25m so we only break the
+ // inner loop
+ break;
+ }
+ // Get the global position
+ etp.GetXYZ(xyz);
+ // Calculate shifted radius, squared
+ shiftedRadiusSquared = (xyz[0]-priVtx[0])*(xyz[0]-priVtx[0])
+ + (xyz[1]-priVtx[1])*(xyz[1]-priVtx[1]);
+ }
+
+ // We reached R=1.25m with a precission of a cm to a mm,
+ // set the spatial position
+ if(part.EqualTo("Trigger")){
+ fTrigSftR125[0] = xyz[0] - priVtx[0];
+ fTrigSftR125[1] = xyz[1] - priVtx[1];
+ fTrigSftR125[2] = xyz[2] - priVtx[2];
+
+ /*cout << endl
+ << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl;
+ cout << fTrigSftR125[0] << " " << fTrigSftR125[1] << " " <<fTrigSftR125[2] << endl;*/
+ }
+ if(part.EqualTo("Daughter")){
+ fDaugSftR125[0] = xyz[0] - priVtx[0];
+ fDaugSftR125[1] = xyz[1] - priVtx[1];
+ fDaugSftR125[2] = xyz[2] - priVtx[2];
+
+ /*cout << endl
+ << xyz[0] << " " << xyz[1] << " " << xyz[2] << endl
+ << fDaugSftR125[0] << " " << fDaugSftR125[1] << " " <<fDaugSftR125[2] << endl;*/
+ }
+
+ // Done
+ return;
+
+ } // End of if roughly reached radius
+
+ } // End of coarse propagation loop
+
+}
+
+//___________________________________________________________________________________________
+
+void AliAnalysisTaskLambdaOverK0sJets::RecCascade(const AliAODTrack *trk1,const AliAODTrack *trk2,const AliAODTrack *trkBch,TString histo)
+{
+ // Local method to reconstruct cascades candidates from the combinations of three tracks
+ // The input tracks correspond to the trigger particle and the daughter tracks of the V0 candidate (correlation step)
+ // The trigger particle track will be always consider as a possible daughter of the V0 which coming from the Cascade decay.
+ // The daughters of the V0 candidates are switched to be the bachelor track for the Cascade reconstruction.
+
+ Float_t lMassBach=0., lPtot2Bach=0., lEBach=0.;
+ Float_t lMassLambda=0., lPtot2Lambda=0., lELambda = 0.;
+ Float_t pLambda[3] = {0.,0.,0.};
+ Float_t pCascade[3] = {0.,0.,0.};
+ Float_t lMassCascade = 0., lPtot2Cascade=0.;
+
+ // Two loops are done to consider the posibility to reconstruct a Xi or an Omega
+ for(Int_t i=0;i<2;i++){
+
+ // 0. Check the charge for both tracks: trk1 & trk2.
+ // Usefull in the Lambda step.
+ if( trk1->Charge() == trk2->Charge() )
+ continue;
+
+ // 1. Bachelor: Allocation for the track
+ if(i==0) // Xi
+ lMassBach = TDatabasePDG::Instance()->GetParticle(kPiMinus)->Mass();
+ else if(i==1) //Omega
+ lMassBach = TDatabasePDG::Instance()->GetParticle(kKMinus)->Mass();
+
+ lPtot2Bach = TMath::Power(trkBch->P(),2);
+
+ lEBach = TMath::Sqrt(lPtot2Bach + lMassBach*lMassBach);
+
+ // 2. Lambda: Kinematical properties
+ lMassLambda = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
+
+ pLambda[0] = trk1->Px() + trk2->Px();
+ pLambda[1] = trk1->Py() + trk2->Py();
+ pLambda[2] = trk1->Pz() + trk2->Pz();
+
+ lPtot2Lambda = pLambda[0]*pLambda[0] + pLambda[1]*pLambda[1] + pLambda[2]*pLambda[2];
+
+ lELambda = TMath::Sqrt(lPtot2Lambda + lMassLambda*lMassLambda);
+
+ // 3. Cascade: Reconstruction
+ pCascade[0] = pLambda[0] + trkBch->Px();
+ pCascade[1] = pLambda[1] + trkBch->Py();
+ pCascade[2] = pLambda[2] + trkBch->Pz();
+
+ lPtot2Cascade = pCascade[0]*pCascade[0] + pCascade[1]*pCascade[1] + pCascade[2]*pCascade[2];
+
+ lMassCascade = TMath::Sqrt( TMath::Power(lEBach+lELambda,2) - lPtot2Cascade );
+
+ // 4. Filling histograms
+ if( histo.Contains("K0s") ) {
+ if(i==0) // Xi
+ fV0MassCascade->Fill(lMassCascade,1);
+ else if(i==1) //Omega
+ fV0MassCascade->Fill(lMassCascade,3);
+ }
+ else if( histo.Contains("AntiLambda") ) {
+ if(i==0) // Xi
+ fV0MassCascade->Fill(lMassCascade,9);
+ else if(i==1) //Omega
+ fV0MassCascade->Fill(lMassCascade,11);
+ }
+ else if( histo.Contains("Lambda") ) {
+ if(i==0) // Xi
+ fV0MassCascade->Fill(lMassCascade,5);
+ else if(i==1) //Omega
+ fV0MassCascade->Fill(lMassCascade,7);
+ }
+
+ }
+
+}
+
+//___________________________________________________________________________________________
+
+void AliAnalysisTaskLambdaOverK0sJets::V0Loop(V0LoopStep_t step, Bool_t isTriggered, Int_t iArray, Int_t idTrig)
+{
+ // Three options for the 'step' variable:
+ // 1) TriggerCheck
+ // 2) Reconstruction
+
+ const AliAODTrack *trkTrig = 0x0;
+ Float_t ptTrig = -100.;
+ Float_t phiTrig = -100.;
+ Float_t etaTrig = -100.;
+ Double_t pTrig[3];
+
+ if( (step==kTriggerCheck || isTriggered) && idTrig>=0 ){
trkTrig = (AliAODTrack*)fAOD->GetTrack(idTrig);
ptTrig = trkTrig->Pt();
phiTrig = trkTrig->Phi();
Float_t lPhi = v0->Phi();
//lPhi = ( (lPhi < 0) ? lPhi + 2*TMath::Pi() : lPhi );
+ // rapidity
+ Float_t rapK0s = v0->RapK0Short();
+ Float_t rapLambda = v0->RapLambda();
+
+ if(fUseEtaCut){
+ rapK0s = lEta;
+ rapLambda = lEta;
+ }
+
+ // **********************************
+ // PID - tracks
+ Float_t pPos = -100.;
+ Float_t pNeg = -100.;
+
+ //Float_t dedxPos = -1000.;
+ //Float_t dedxNeg = -1000.;
+ //Float_t nsigPosPion = 0.;
+ //Float_t nsigNegPion = 0.;
+ Float_t nsigPosProton = 0.;
+ Float_t nsigNegProton = 0.;
+
+ if(fUsePID && !fIsMC) {
+ const AliAODPid *pidNeg = ntrack->GetDetPid();
+ const AliAODPid *pidPos = ptrack->GetDetPid();
+
+ if (pidNeg && pidPos) {
+ pPos = pidPos->GetTPCmomentum();
+ pNeg = pidNeg->GetTPCmomentum();
+ //dedxPos = pidPos->GetTPCsignal()/47.;
+ //dedxNeg = pidNeg->GetTPCsignal()/47.;
+
+
+ if(pPos<1.){
+ //nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
+ nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
+ }
+ if(pNeg<1.){
+ //nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
+ nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
+ }
+
+ }
+
+ }
+
// **********************************
// Disentangle the V0 candidate
Float_t massK0s = 0., mK0s = 0., sK0s = 0.;
if( pPart->IsPhysicalPrimary() ) lMCAssocPosDaug = 1;
/*
- if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
- TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
+ if ( TMath::Abs(nPart->Eta()) > fMaxEtaDaughter ||
+ TMath::Abs(pPart->Eta()) > fMaxEtaDaughter )
goto noas;
*/
/*
else if( (lPDGCodePosDaughter==+2212) && (lPDGCodeNegDaughter==-211) &&
(inMother==ipMother) && (lPDGCodeV0==3122) ){
- if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
+ if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
) lComeFromSigma = kTRUE;
else lComeFromSigma = kFALSE;
(inMother==ipMother) && (lPDGCodeV0==-3122) ) {
- if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
- ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)
+ if ( ( TMath::Abs(lPdgcodeMotherOfMother) == 3212) /*||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3224) ||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3214) ||
+ ( TMath::Abs(lPdgcodeMotherOfMother) == 3114)*/
) lComeFromSigma = kTRUE;
else lComeFromSigma = kFALSE;
Float_t ptAs = p0->Pt();
Float_t rapAs = p0->Y();
Float_t etaAs = p0->Eta();
- // phi resolution for V0-reconstruction
+
+ if(fUseEtaCut){
+ rapAs = etaAs;
+ }
+
+ // phi resolution for V0-reconstruction and daughter tracks
Float_t resEta = p0->Eta() - v0->Eta();
Float_t resPhi = p0->Phi() - v0->Phi();
+ Float_t resPt = p0->Pt() - v0->Pt();
+
+ Float_t resEtaPosDaug = pPart->Eta() - ptrack->Eta();
+ Float_t resPhiPosDaug = pPart->Phi() - ptrack->Phi();
+ Float_t resPtPosDaug = pPart->Pt() - ptrack->Pt();
+
+ Float_t resEtaNegDaug = nPart->Eta() - ntrack->Eta();
+ Float_t resPhiNegDaug = nPart->Phi() - ntrack->Phi();
+ Float_t resPtNegDaug = nPart->Pt() - ntrack->Pt();
if ( (l < 0.01) && (ptAs<10.) ) { // Primary V0
// Natural particles
if(isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fK0sAssocPt->Fill(ptAs);
fK0sAssocPtRap->Fill(ptAs,rapAs,centrality);
// Armenteros Pod. and rapidity cut
if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
+ Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
+ Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
+ Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
+ Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
+
// Distributions for the efficiency (systematics chechks)
- fK0sAssocPtMassArm[curCentBin]->Fill(v0->MassK0Short(),ptAs,rapAs);
- fK0sAssocMassPtVtx[curCentBin]->Fill(v0->MassK0Short(),ptAs,zv);
- fK0sAssocMassPtDCADaug[curCentBin]->Fill(v0->MassK0Short(),ptAs,dca);
- fK0sAssocMassPtCPA[curCentBin]->Fill(v0->MassK0Short(),ptAs,cpa);
+ fK0sAssocPtMassArm[curCentBin]->Fill(effK0sArm);
+ fK0sAssocMassPtVtx[curCentBin]->Fill(effK0sVtx);
+ fK0sAssocMassPtDCADaug[curCentBin]->Fill(effK0sDCA);
+ fK0sAssocMassPtCPA[curCentBin]->Fill(effK0sCPA);
}
fK0sMCResEta->Fill(resEta,pt,centrality);
fK0sMCResPhi->Fill(resPhi,pt,centrality);
-
+ fK0sMCResPt->Fill(resPt,pt,centrality);
+
+ fK0sPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+ fK0sPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+ fK0sPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+ fK0sNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+ fK0sNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+ fK0sNegMCResPt->Fill(resPtNegDaug,pt,centrality);
+
} // End selection in the dca to prim. vtx and the number of clusters
// Distributions for the efficiency (Systematic checks)
if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
-
+
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fK0sAssocMassPtDCAPV[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+ Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
+ fK0sAssocMassPtDCAPV[curCentBin]->Fill(effK0sdcaPV);
}
- // cut in the number of tpc ckusters
- if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+ // cut in the number of tpc clusters
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
+
+ Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fK0sAssocMassPtDaugNClsTPC[curCentBin]->Fill(effK0sTPCcls);
+
}
} // End selection for systematics
// Embeded particles
if(!isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fK0sAssocPtRapEmbeded->Fill(ptAs,rapAs,centrality);
if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0)) && TMath::Abs(rapAs)<fYMax ){
+ Double_t effK0sArm[3] = {v0->MassK0Short(),ptAs,rapAs};
+ Double_t effK0sVtx[4] = {v0->MassK0Short(),ptAs,rapAs,zv};
+ Double_t effK0sDCA[4] = {v0->MassK0Short(),ptAs,rapAs,dca};
+ Double_t effK0sCPA[4] = {v0->MassK0Short(),ptAs,rapAs,cpa};
+
// Distributions for the efficiency (systematics chechks)
- fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,rapAs);
- fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,zv);
- fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,dca);
- fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,cpa);
+ fK0sAssocPtMassArmEmbeded[curCentBin]->Fill(effK0sArm);
+ fK0sAssocMassPtVtxEmbeded[curCentBin]->Fill(effK0sVtx);
+ fK0sAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effK0sDCA);
+ fK0sAssocMassPtCPAEmbeded[curCentBin]->Fill(effK0sCPA);
}
} // End selection in the dca to prim. vtx and the number of clusters
if( (lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && TMath::Abs(rapAs)<fYMax ){
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+ Double_t effK0sdcaPV[5] = {v0->MassK0Short(),ptAs,rapAs,dcaPos,dcaNeg};
+ fK0sAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effK0sdcaPV);
}
- // cut in the number of tpc ckusters
- if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassK0Short(),ptAs,4);
+ // cut in the number of tpc clusters
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax ){
+
+ Double_t effK0sTPCcls[5] = {v0->MassK0Short(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fK0sAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effK0sTPCcls);
}
} // End selection for systematics
} // End embeded particle selection
} // End K0s selection
-
+
// Lambda:
- if(ctL && lCheckMcLambda) {
+ if(ctL && lCheckMcLambda && (TMath::Abs(nsigPosProton)<fNSigma) ) {
// Natural particles
if(isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fLambdaAssocPt->Fill(ptAs);
fLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
// Rapidity cut
if(TMath::Abs(rapAs)<fYMax) {
+ Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
+ Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
+ Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
+ Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
+
// Distributions for the efficiency (systematics chechks)
- fLambdaAssocMassPtRap[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
- fLambdaAssocMassPtVtx[curCentBin]->Fill(v0->MassLambda(),ptAs,zv);
- fLambdaAssocMassPtDCADaug[curCentBin]->Fill(v0->MassLambda(),ptAs,dca);
- fLambdaAssocMassPtCPA[curCentBin]->Fill(v0->MassLambda(),ptAs,cpa);
+ fLambdaAssocMassPtRap[curCentBin]->Fill(effLambda);
+ fLambdaAssocMassPtVtx[curCentBin]->Fill(effLambdaVtx);
+ fLambdaAssocMassPtDCADaug[curCentBin]->Fill(effLambdaDCA);
+ fLambdaAssocMassPtCPA[curCentBin]->Fill(effLambdaCPA);
if( !isCandidate2K0s && !isCandidate2LambdaBar)
- fLambdaAssocMassPtRap2[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
+ fLambdaAssocMassPtRap2[curCentBin]->Fill(effLambda);
}
fLambdaMCResEta->Fill(resEta,pt,centrality);
fLambdaMCResPhi->Fill(resPhi,pt,centrality);
+ fLambdaMCResPt->Fill(resPt,pt,centrality);
+
+ fLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+ fLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+ fLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+ fLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+ fLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+ fLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
} // End selection in the dca to prim. vtx and the number of clusters
if( TMath::Abs(rapAs)<fYMax ){
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
- if( (dcaPos>0.15) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,5);
- if( (dcaPos>0.2) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,6);
- if( (dcaPos>0.25) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassLambda(),ptAs,7);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+ Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+ fLambdaAssocMassPtDCAPV[curCentBin]->Fill(effLambdadcaPV);
}
- // cut in the number of tpc ckusters
- if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
+ // cut in the number of tpc clusters
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
+
+ Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effLambdaTPCcls);
}
} // End selection for systematics
// Embeded particles
if(!isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
if( TMath::Abs(rapAs)<fYMax ){
+
+ Double_t effLambda[3] = {v0->MassLambda(),ptAs,rapAs};
+ Double_t effLambdaVtx[4] = {v0->MassLambda(),ptAs,rapAs,zv};
+ Double_t effLambdaDCA[4] = {v0->MassLambda(),ptAs,rapAs,dca};
+ Double_t effLambdaCPA[4] = {v0->MassLambda(),ptAs,rapAs,cpa};
+
// Distributions for the efficiency (systematics chechks)
- fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
- fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,zv);
- fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,dca);
- fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,cpa);
+ fLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effLambda);
+ fLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effLambdaVtx);
+ fLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effLambdaDCA);
+ fLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effLambdaCPA);
if( !isCandidate2K0s && !isCandidate2LambdaBar)
- fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(v0->MassLambda(),ptAs,rapAs);
+ fLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effLambda);
}
} // End selection in the dca to prim. vtx and the number of clusters
if( TMath::Abs(rapAs)<fYMax ){
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
- if( (dcaPos>0.15) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,5);
- if( (dcaPos>0.2) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,6);
- if( (dcaPos>0.25) && (dcaNeg>0.1) )
- fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,7);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+ Double_t effLambdadcaPV[5] = {v0->MassLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+ fLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effLambdadcaPV);
}
- // cut in the number of tpc ckusters
+ // cut in the number of tpc clusters
if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassLambda(),ptAs,4);
+ Double_t effLambdaTPCcls[5] = {v0->MassLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effLambdaTPCcls);
}
} // End selection for systematics
} // End embeded particle selection
} // End Lambda selection
-
+
// AntiLambda:
- if (ctAL && lCheckMcAntiLambda){
+ if (ctAL && lCheckMcAntiLambda && (TMath::Abs(nsigNegProton)<fNSigma) ){
if(isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fAntiLambdaAssocPt->Fill(ptAs);
fAntiLambdaAssocPtRap->Fill(ptAs,rapAs,centrality);
// Rapidity cut
if(TMath::Abs(rapAs)<fYMax) {
+
+ Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
+ Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
+ Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
+ Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
// Distributions for the efficiency (systematics chechks)
- fAntiLambdaAssocMassPtRap[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
- fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,zv);
- fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,dca);
- fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,cpa);
+ fAntiLambdaAssocMassPtRap[curCentBin]->Fill(effAntiLambda);
+ fAntiLambdaAssocMassPtVtx[curCentBin]->Fill(effAntiLambdaVtx);
+ fAntiLambdaAssocMassPtDCADaug[curCentBin]->Fill(effAntiLambdaDCA);
+ fAntiLambdaAssocMassPtCPA[curCentBin]->Fill(effAntiLambdaCPA);
if( !isCandidate2K0s && !isCandidate2Lambda )
- fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
+ fAntiLambdaAssocMassPtRap2[curCentBin]->Fill(effAntiLambda);
}
fAntiLambdaMCResEta->Fill(resEta,pt,centrality);
fAntiLambdaMCResPhi->Fill(resPhi,pt,centrality);
+ fAntiLambdaMCResPt->Fill(resPt,pt,centrality);
+
+ fAntiLambdaPosMCResEta->Fill(resEtaPosDaug,pt,centrality);
+ fAntiLambdaPosMCResPhi->Fill(resPhiPosDaug,pt,centrality);
+ fAntiLambdaPosMCResPt->Fill(resPtPosDaug,pt,centrality);
+
+ fAntiLambdaNegMCResEta->Fill(resEtaNegDaug,pt,centrality);
+ fAntiLambdaNegMCResPhi->Fill(resPhiNegDaug,pt,centrality);
+ fAntiLambdaNegMCResPt->Fill(resPtNegDaug,pt,centrality);
} // End selection in the dca to prim. vtx and the number of clusters
if( TMath::Abs(rapAs)<fYMax ){
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
- if( (dcaPos>0.15) && (dcaNeg>0.1) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,5);
- if( (dcaPos>0.2) && (dcaNeg>0.1) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,6);
- if( (dcaPos>0.25) && (dcaNeg>0.1) )
- fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,7);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+ Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+ fAntiLambdaAssocMassPtDCAPV[curCentBin]->Fill(effAntiLambdadcaPV);
}
- // cut in the number of tpc ckusters
- if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
+ // cut in the number of tpc clusters
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && TMath::Abs(rapAs)<fYMax){
+ Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fAntiLambdaAssocMassPtDaugNClsTPC[curCentBin]->Fill(effAntiLambdaTPCcls);
}
} // End selection for systematics
// Embeded particles
if(!isNaturalPart){
- if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
if( TMath::Abs(rapAs)<fYMax ){
+
+ Double_t effAntiLambda[3] = {v0->MassAntiLambda(),ptAs,rapAs};
+ Double_t effAntiLambdaVtx[4] = {v0->MassAntiLambda(),ptAs,rapAs,zv};
+ Double_t effAntiLambdaDCA[4] = {v0->MassAntiLambda(),ptAs,rapAs,dca};
+ Double_t effAntiLambdaCPA[4] = {v0->MassAntiLambda(),ptAs,rapAs,cpa};
+
// Distributions for the efficiency (systematics chechks)
- fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
- fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,zv);
- fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,dca);
- fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,cpa);
+ fAntiLambdaAssocMassPtRapEmbeded[curCentBin]->Fill(effAntiLambda);
+ fAntiLambdaAssocMassPtVtxEmbeded[curCentBin]->Fill(effAntiLambdaVtx);
+ fAntiLambdaAssocMassPtDCADaugEmbeded[curCentBin]->Fill(effAntiLambdaDCA);
+ fAntiLambdaAssocMassPtCPAEmbeded[curCentBin]->Fill(effAntiLambdaCPA);
if( !isCandidate2K0s && !isCandidate2Lambda )
- fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,rapAs);
+ fAntiLambdaAssocMassPtRapEmbeded2[curCentBin]->Fill(effAntiLambda);
}
} // End selection in the dca to prim. vtx and the number of clusters
if( TMath::Abs(rapAs)<fYMax ){
// Cut in the DCA ToPrim Vtx
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- if( (dcaPos>0.1) && (dcaNeg>0.1) ) // default value
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
- if( (dcaPos>0.095) && (dcaNeg>0.095) )
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
- if( (dcaPos>0.115) && (dcaNeg>0.115) )
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
- if( (dcaPos>0.12) && (dcaNeg>0.12) )
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
- if( (dcaPos>0.2) && (dcaNeg>0.2) )
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,5);
- if( (dcaPos>0.5) && (dcaNeg>0.5) )
- fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,6);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+
+ Double_t effAntiLambdadcaPV[5] = {v0->MassAntiLambda(),ptAs,rapAs,dcaPos,dcaNeg};
+ fAntiLambdaAssocMassPtDCAPVEmbeded[curCentBin]->Fill(effAntiLambdadcaPV);
}
// cut in the number of tpc ckusters
if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ) // default value
- fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,1);
- if( (nClsTPCPos>50) && (nClsTPCNeg>50) )
- fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,2);
- if( (nClsTPCPos>60) && (nClsTPCNeg>60) )
- fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,3);
- if( (nClsTPCPos>80) && (nClsTPCNeg>80) )
- fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(v0->MassAntiLambda(),ptAs,4);
+
+ Double_t effAntiLambdaTPCcls[5] = {v0->MassAntiLambda(),ptAs,rapAs,nClsTPCPos,nClsTPCNeg};
+ fAntiLambdaAssocMassPtDaugNClsTPCEmbeded[curCentBin]->Fill(effAntiLambdaTPCcls);
}
} // End selection for systematics
} // End embeded particle selection
-
- } // End AntiLambda:
+
+ } // End AntiLambda
// Xi decay:
if( lComeFromXi && isNaturalPart ){
if(lPDGCodeV0==3122) { fLambdaAssocFromXi->Fill(ptAs,centrality); }
}
} // End Primary V0 selection
-
+
// After the kinematical selection of K0s and Lambdas
// it might be that the daugthers are not identified through MC Association
if(lMCAssocNegDaug==0)
}// End Correlation Step
// ************************************
- noas:
-
- /*
- Float_t pPos = -100.;
- Float_t pNeg = -100.;
-
- Float_t dedxPos = -1000.;
- Float_t dedxNeg = -1000.;
- Float_t nsigPosPion = 0.;
- Float_t nsigNegPion = 0.;
- Float_t nsigPosProton = 0.;
- Float_t nsigNegProton = 0.;
-
- if(fUsePID && !fIsMC) {
- const AliAODPid *pidNeg = ntrack->GetDetPid();
- const AliAODPid *pidPos = ptrack->GetDetPid();
-
- if (pidNeg && pidPos) {
- pPos = pidPos->GetTPCmomentum();
- pNeg = pidNeg->GetTPCmomentum();
- dedxPos = pidPos->GetTPCsignal()/47.;
- dedxNeg = pidNeg->GetTPCsignal()/47.;
-
- if(pPos<1.){
- nsigPosPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kPion));
- nsigPosProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ptrack,AliPID::kProton));
- }
- if(pNeg<1.){
- nsigNegPion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kPion));
- nsigNegProton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(ntrack,AliPID::kProton));
- }
-
- }
-
- }
- */
+ noas:
// Comparing the pt of the trigger particle wrt the v0-candidate's daughter:
// It is used as well for the side-band subtraction
isSameTrkNegDaug = SameTrack(trkTrig,ntrack);
}
- // *******************
- // Gamma conversion
- // *******************
- if(step==kReconstruction)
- if( (TMath::Sqrt(lPtArmV0*lPtArmV0 + lAlphaV0*lAlphaV0) < 0.2) && isNaturalPart ){
- fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 2) );
- }
-
// *******************
// K0s selection
// *******************
- if (ctK && (TMath::Abs(v0->RapK0Short())<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
+ if (ctK && (TMath::Abs(rapK0s)<fYMax) && ( lPtArmV0 > TMath::Abs(0.2*lAlphaV0) ) && ( massK0s > 0.3979 && massK0s < 0.5981 ) ) {
switch(step) {
case kTriggerCheck:
- if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if (isCandidate2K0s && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
if(pt>ptTrig){
fIsV0LP = 1;
// Negative daughter
if( isSameTrkNegDaug==1 ){
for(Int_t i=0;i<3;i++)
- fCheckIDTrigPtK0s->Fill(difPosP[i],i+3,pt);
+ fCheckIDTrigPtK0s->Fill(difNegP[i],i+3,pt);
fCheckIDTrigPhiK0s->Fill(negDeltaPhi,2.,pt);
fCheckIDTrigEtaK0s->Fill(negDeltaEta,2.,pt);
fCheckIDTrigNclsK0s->Fill(nClsTPCNeg,2.,pt);
fTriggerParticles->RemoveAt(iArray);
fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
+
} // Close isTrigFromV0daug
}// End K0s Mass cut
break; // End K0s selection for TriggerCheck
case kReconstruction:
- if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) && (pt<10.) ){
+ if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
if(isNaturalPart) fK0sMass->Fill(massK0s,pt,centrality);
else fK0sMassEmbeded->Fill(massK0s,pt,centrality);
fK0sMassPtEta->Fill(massK0s,pt,lEta);
- fK0sMassPtRap->Fill(massK0s,pt,v0->RapK0Short());
+ fK0sMassPtRap[curCentBin]->Fill(massK0s,pt,rapK0s);
fK0sMassPtPhi->Fill(massK0s,pt,lPhi);
+
if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 3) );
+
}
if( fDoQA && lCheckMcK0Short && isNaturalPart && (pt<10.) ){ // Quality Assurance
// Invariant Mass cut
if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fK0sDCAPosDaug->Fill(dcaPos,pt);
fK0sDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC ) ){
fK0sPtPosDaug->Fill(pt,lPtPos);
fK0sPtNegDaug->Fill(pt,lPtNeg);
if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
TMath::Abs(mK0s-massK0s - 6.5*sK0s) < 1.5*sK0s ) {
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fK0sBckgDCAPosDaug->Fill(dcaPos,pt);
fK0sBckgDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fK0sBckgPtPosDaug->Fill(pt,lPtPos);
fK0sBckgPtNegDaug->Fill(pt,lPtNeg);
// *******************
// Lambda selection
// *******************
- if ( ctL && (TMath::Abs(v0->RapLambda())<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) ){
+ if ( ctL && (TMath::Abs(rapLambda)<fYMax) && (massLambda > 1.0649 && massLambda < 1.1651 ) && (TMath::Abs(nsigPosProton)<fNSigma) ){
switch(step) {
case kTriggerCheck:
- if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && !isCandidate2K0s && !isCandidate2LambdaBar ){
+ if (isCandidate2Lambda && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2LambdaBar ){
if(pt>ptTrig) {
fIsV0LP = 1;
// Negative daughter
if( isSameTrkNegDaug==1 ){
for(Int_t i=0;i<3;i++)
- fCheckIDTrigPtLambda->Fill(difPosP[i],i+3,pt);
+ fCheckIDTrigPtLambda->Fill(difNegP[i],i+3,pt);
fCheckIDTrigPhiLambda->Fill(negDeltaPhi,2.,pt);
fCheckIDTrigEtaLambda->Fill(negDeltaEta,2.,pt);
fCheckIDTrigNclsLambda->Fill(nClsTPCNeg,2.,pt);
break; // End Lambda selection for TriggerCheck
case kReconstruction:
- if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && (pt<10.) ){
+ if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ){
if(isNaturalPart) fLambdaMass->Fill(massLambda,pt,centrality);
else fLambdaMassEmbeded->Fill(massLambda,pt,centrality);
}
fLambdaMassPtEta->Fill(massLambda,pt,lEta);
- fLambdaMassPtRap->Fill(massLambda,pt,v0->RapLambda());
+ fLambdaMassPtRap[curCentBin]->Fill(massLambda,pt,rapLambda);
fLambdaMassPtPhi->Fill(massLambda,pt,lPhi);
+
if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 4) );
-
+
+
}
// Invariant Mass cut
// Invariant Mass cut
if (TMath::Abs(mLambda-massLambda) < 3*sL) {
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fLambdaDCAPosDaug->Fill(dcaPos,pt);
fLambdaDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fLambdaPtPosDaug->Fill(pt,lPtPos);
fLambdaPtNegDaug->Fill(pt,lPtNeg);
if( (TMath::Abs(mLambda-massLambda + 6.5*sL) < 1.5*sL) ||
(TMath::Abs(mLambda-massLambda - 6.5*sL) < 1.5*sL) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
fLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos > 0.1) && (dcaNeg > 0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fLambdaBckgPtPosDaug->Fill(pt,lPtPos);
fLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
// *******************
// AntiLambda selection
// *******************
- if ( ctAL && (TMath::Abs(v0->RapLambda())<fYMax) && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) ) {
+ if ( ctAL && (TMath::Abs(rapLambda)<fYMax) && (massAntiLambda > 1.0649 && massAntiLambda < 1.1651 ) && (TMath::Abs(nsigNegProton)<fNSigma) ) {
switch(step) {
case kTriggerCheck:
- if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70) && !isCandidate2K0s && !isCandidate2Lambda ){
+ if (isCandidate2LambdaBar && (dcaPos>0.1) && (dcaNeg>0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && !isCandidate2K0s && !isCandidate2Lambda ){
if(pt>ptTrig) {
fIsV0LP = 1;
// Negative daughter
if( isSameTrkNegDaug==1 ){
for(Int_t i=0;i<3;i++)
- fCheckIDTrigPtAntiLambda->Fill(difPosP[i],i+3,pt);
+ fCheckIDTrigPtAntiLambda->Fill(difNegP[i],i+3,pt);
fCheckIDTrigPhiAntiLambda->Fill(negDeltaPhi,2.,pt);
fCheckIDTrigEtaAntiLambda->Fill(negDeltaEta,2.,pt);
fCheckIDTrigNclsAntiLambda->Fill(nClsTPCNeg,2.,pt);
} // End check ID
+
fTriggerParticles->RemoveAt(iArray);
fTriggerParticles->AddAt( new AliMiniParticle(centrality, zv, idTrig, ptTrig, phiTrig, etaTrig, 0, 0, 0), iArray);
break; // End AntiLambda selection for CheckTrigger
case kReconstruction:
- if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>70) && (nClsTPCNeg>70 ) && (pt<10.) ) {
+ if( (dcaPos > 0.1) && (dcaNeg > 0.1) && (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) && (pt<10.) ) {
if(isNaturalPart) fAntiLambdaMass->Fill(massAntiLambda,pt,centrality);
else fAntiLambdaMassEmbeded->Fill(massAntiLambda,pt,centrality);
}
fAntiLambdaMassPtEta->Fill(massAntiLambda,pt,lEta);
- fAntiLambdaMassPtRap->Fill(massAntiLambda,pt,v0->RapLambda());
+ fAntiLambdaMassPtRap[curCentBin]->Fill(massAntiLambda,pt,rapLambda);
fAntiLambdaMassPtPhi->Fill(massAntiLambda,pt,lPhi);
+
if( (pt>kPtBinV0[0]) && (pt<kPtBinV0[kN1]) && isNaturalPart )
fAssocParticles->Add( new AliMiniParticle(centrality, zv, iV0, pt, lPhi, lEta, lMCAssocNegDaug, lMCAssocPosDaug, 5) );
-
+
}
if( fDoQA && lCheckMcAntiLambda && isNaturalPart && (pt<10.) ){ // Quality Assurance
// Invariant Mass cut
if (TMath::Abs(mLambda-massAntiLambda) < 3*sAL) {
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fAntiLambdaDCAPosDaug->Fill(dcaPos,pt);
fAntiLambdaDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70) ){
- fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
- fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
+ fAntiLambdaPtPosDaug->Fill(pt,lPtPos);
+ fAntiLambdaPtNegDaug->Fill(pt,lPtNeg);
- fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
- fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
+ fAntiLambdaPhiEtaPosDaug->Fill(phiPos,etaPos,pt);
+ fAntiLambdaPhiEtaNegDaug->Fill(phiNeg,etaNeg,pt);
- fAntiLambdaDecayPos->Fill(dx,dy,pt);
- fAntiLambdaDecayVertex->Fill(lt,pt);
+ fAntiLambdaDecayPos->Fill(dx,dy,pt);
+ fAntiLambdaDecayVertex->Fill(lt,pt);
- fAntiLambdaCPA->Fill(cpa,pt);
- fAntiLambdaDCAV0Daug->Fill(dca,pt);
+ fAntiLambdaCPA->Fill(cpa,pt);
+ fAntiLambdaDCAV0Daug->Fill(dca,pt);
- fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
- fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
- }
+ fAntiLambdaNClustersITSPos->Fill(phiPos,posITSNcls,pt);
+ fAntiLambdaNClustersITSNeg->Fill(phiNeg,negITSNcls,pt);
+ }
fAntiLambdaNClustersTPC->Fill(phiPos,nClsTPCPos,pt);
fAntiLambdaNClustersTPC->Fill(phiNeg,nClsTPCNeg,-pt);
if( (TMath::Abs(mLambda-massAntiLambda + 6.5*sAL) < 1.5*sAL) ||
(TMath::Abs(mLambda-massAntiLambda - 6.5*sAL) < 1.5*sAL) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fAntiLambdaBckgDCAPosDaug->Fill(dcaPos,pt);
fAntiLambdaBckgDCANegDaug->Fill(dcaNeg,pt);
}
if( (dcaPos>0.1) && (dcaNeg>0.1) ){
- if( (nClsTPCPos>70) && (nClsTPCNeg>70 ) ){
+ if( (nClsTPCPos>fDaugNClsTPC) && (nClsTPCNeg>fDaugNClsTPC) ){
fAntiLambdaBckgPtPosDaug->Fill(pt,lPtPos);
fAntiLambdaBckgPtNegDaug->Fill(pt,lPtNeg);
Float_t centrality = cent->GetCentralityPercentile("V0M");
const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
Float_t zv=vtx->GetZ();
+ Double_t pt = -1000.;
+ Double_t eta = -1000.;
+ Double_t phi = -1000.;
+ Float_t resPt = -1000.;
+ Float_t resEta = -1000.;
+ Float_t resPhi = -1000.;
for (Int_t i=0; i<nTrk; i++) {
- AliAODTrack *t = fAOD->GetTrack(i);
+ const AliAODTrack *t = fAOD->GetTrack(i);
if(!AcceptTrack(t)) continue;
- Double_t pt=t->Pt();
- Double_t eta=t->Eta();
- Double_t phi=t->Phi();
-
+ pt=t->Pt();
+ eta=t->Eta();
+
if( (pt>fTrigPtMin) && (pt<fTrigPtMax) && (TMath::Abs(eta)<fTrigEtaMax) ) {
+
+ phi=t->Phi();
fTriggerParticles->Add( new AliMiniParticle(centrality, zv, i, pt, phi, eta, 0, 0, 1) );
if(fIsMC){
Int_t lab = TMath::Abs(t->GetLabel());
AliAODMCParticle *part=(AliAODMCParticle*)stack->UncheckedAt(lab);
- Float_t resPt = (part->Pt() - pt)/pt;
- Float_t resEta = part->Eta() - eta;
- Float_t resPhi = part->Phi() - phi;
+ resPt = (part->Pt() - pt)/pt;
+ resEta = part->Eta() - eta;
+ resPhi = part->Phi() - phi;
fTriggerMCResPt->Fill(resPt,pt,centrality);
fTriggerMCResEta->Fill(resEta,pt,centrality);
// ----------------------------
// 2. Checking if the trigger particle
// might be a daughter from the V0-candidate
+
for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
Int_t id = trig->ID();
V0Loop(kTriggerCheck,kFALSE,i,id);
}
+
}
if (!cent->IsEventInCentralityClass(fCentMin,fCentMax,"V0M")) return;
fEvents->Fill(3);
- // Primary vertex
+ // Global primary vertex
const AliAODVertex *vtx = fAOD->GetPrimaryVertex();
if (vtx->GetNContributors()<3) return;
fEvents->Fill(4);
- Float_t xv=vtx->GetX(), yv=vtx->GetY(), zv=vtx->GetZ();
+ // SPD primary vertex
+ const AliAODVertex *vtxSPD = fAOD->GetPrimaryVertexSPD();
+ if (vtxSPD->GetNContributors()<3) return;
+ fEvents->Fill(5);
+
+ // Correlaiton between global Zvtx and SPD Zvtx
+ Float_t zv=vtx->GetZ(), zvSPD=vtxSPD->GetZ();
+ fPrimayVtxGlobalvsSPD->Fill(zv,zvSPD);
+
+ if( TMath::Abs( zv - zvSPD ) > 0.5) return;
+ fEvents->Fill(6);
+
+ Float_t xv=vtx->GetX(), yv=vtx->GetY();
+ const Float_t priVtx[3] = {xv,yv,zv};
if (TMath::Abs(zv) > 10.) return;
- fEvents->Fill(5);
+ fEvents->Fill(7);
fPrimaryVertexX->Fill(xv);
fPrimaryVertexY->Fill(yv);
eventPlane = ( (eventPlane < 0) ? eventPlane + TMath::Pi() : eventPlane );
eventPlane = ( ( eventPlane > TMath::Pi() ) ? eventPlane - TMath::Pi() : eventPlane );
+ // Magnetic field sign
+ const Float_t bSign = (fAOD->GetMagneticField() > 0) ? 1 : -1;
+
// Getting PID Response
fPIDResponse = hdr->GetPIDResponse();
if(fIsV0LP) fCheckTriggerFromV0Daug->Fill(2);
}
else if( trig->WhichCandidate()==1){
- fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
- fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
fCheckTriggerFromV0Daug->Fill(0);
+ fTriggerPtCentCh->Fill(trig->Pt(),centrality,zv);
phi2 = ( (trig->Phi() > TMath::Pi()) ? trig->Phi() - TMath::Pi() : trig->Phi() ) ;
fTriggerEventPlane->Fill(phi2);
Float_t lPhiCurrentPart = p0->Phi();
Float_t lPtCurrentPart = p0->Pt();
+ if(fUseEtaCut){
+ lRapCurrentPart = lEtaCurrentPart;
+ }
+
Int_t iCurrentMother = p0->GetMother();
AliAODMCParticle *pCurrentMother = (AliAODMCParticle *)stack->At(iCurrentMother);
Int_t lPdgCurrentMother = 0;
if (!pDaughter0 || !pDaughter1) continue;
/*
- if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
- TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
+ if ( TMath::Abs(pDaughter0->Eta()) > fMaxEtaDaughter ||
+ TMath::Abs(pDaughter1->Eta()) > fMaxEtaDaughter )
continue;
*/
// Daughter momentum cut: ! FIX it in case of AOD !
/*
- if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
- ( pDaughter1->Pt() < fMinPtDaughter ) )
- continue;
+ if ( ( pDaughter0->Pt() < fMinPtDaughter ) ||
+ ( pDaughter1->Pt() < fMinPtDaughter ) )
+ continue;
*/
if ((p0->Pt())<pMin || (p0->Pt())>100. ) continue;
// K0s
if (lPdgcodeCurrentPart == kK0Short) {
-
fK0sMCPt->Fill(lPtCurrentPart);
fK0sMCPtRap->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
fK0sMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
fK0sMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
- if(TMath::Abs(lRapCurrentPart)<0.7) fK0sMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+ if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 3) );
}
else{
fK0sMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
- if(TMath::Abs(lRapCurrentPart)<0.7) fK0sMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+ if(TMath::Abs(lRapCurrentPart)<fYMax) fK0sMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
}
} // End K0s selection
fLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
fLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
- if(TMath::Abs(lRapCurrentPart)<0.7) fLambdaMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+ if(TMath::Abs(lRapCurrentPart)<fYMax) fLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 4) );
}
else{
fLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
- if(TMath::Abs(lRapCurrentPart)<0.7) fLambdaMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+ fLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
}
if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
fAntiLambdaMCPtRap2->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
fAntiLambdaMCPtPhiEta[curCentBin]->Fill(lPhiCurrentPart,lEtaCurrentPart,lPtCurrentPart);
- if(TMath::Abs(lRapCurrentPart)<0.7) fAntiLambdaMCPtRapVtx->Fill(lPtCurrentPart,zv,centrality);
+ if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtx[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
if( (lPtCurrentPart>kPtBinV0[0]) && (lPtCurrentPart<kPtBinV0[kN1]) && isNaturalPart )
fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 5) );
}
else{
fAntiLambdaMCPtRapEmbeded->Fill(lPtCurrentPart,lRapCurrentPart,centrality);
- if(TMath::Abs(lRapCurrentPart)<0.7) fAntiLambdaMCPtRapVtxEmbeded->Fill(lPtCurrentPart,zv,centrality);
+ if(TMath::Abs(lRapCurrentPart)<fYMax) fAntiLambdaMCPtRapVtxEmbeded[curCentBin]->Fill(lPtCurrentPart,lRapCurrentPart,zv);
}
if ( isNaturalPart && TMath::Abs(lPdgCurrentMother) == 3312 )
} // End pt selection
// Xi-
- if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
+ /*
+ if(lPdgcodeCurrentPart == kXiMinus || lPdgcodeCurrentPart == 3322){
if( isNaturalPart )
- fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
+ fAssocPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, lPtCurrentPart, lPhiCurrentPart, lEtaCurrentPart, 0, 0, 6) );
+
+ } //End Xi
+ */
- } //End Xi
-
} // End loop over MC
// -----------------------------------------
fAntiLambdadPhidEtaMC[curCentBin*kN1+k]->Fill(dPhiMC,dEtaMC,zv);
} // End pt bin
- // Xi Minus (h-Xi correlations)
- if( (assocMC->WhichCandidate()==6) ){
-
- fXiMinusPtMCAssoc->Fill(assocMC->Pt(),centrality);
-
- for(Int_t k=0;k<kN2;k++)
- if( (assocMC->Pt()>=kPtBinV02[k]) && (assocMC->Pt()<kPtBinV02[k+1]) ){
- if(triggerMCPt<fTrigPtMax)
- fXiMinusdPhidEtaMC[curCentBin*kN2+k]->Fill(dPhiMC,dEtaMC,zv);
- else
- fXiMinusdPhidEtaMC2[curCentBin*kN2+k]->Fill(dPhiMC,dEtaMC,zv);
- } // End pt bin
-
- } // End Xi selection
-
} // End loop over trigger particles
} // End loop over trigger particles
- // -----------------------------------------
- // ---------- MC Correlations --------------
- // -------- Xi leading particle ------------
- // -----------------------------------------
-
- // With natural Xi's do loop over the MC trigger particle
- // to see if Xi are the leading particle in the event:
- // in that case, does the correlations with charged particles as associated particles
-
- Bool_t isXiLP = kFALSE;
- for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
-
- AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
- if(!p0) continue;
-
- // ----------------------------------------
- // Selecting only Xi Minus
- Int_t lPdgcodeCurrentPart = p0->GetPdgCode();
- if ( (lPdgcodeCurrentPart != kXiMinus) ||
- (lPdgcodeCurrentPart != 3322) ) continue;
-
- // ----------------------------------------
- Int_t isNaturalPart = 1;
- if ( (iTrkMC>=fEndOfHijingEvent) &&
- (fEndOfHijingEvent!=-1) &&
- (p0->GetMother()<0) )
- isNaturalPart = 0;
-
- if(!isNaturalPart) continue;
-
- // ----------------------------------------
- // Loop over Trigger particles
- isXiLP = kFALSE;
- for(Int_t ii=0; ii<(fTriggerPartMC->GetEntriesFast()); ii++){
- AliMiniParticle* trigMC = (AliMiniParticle*) fTriggerPartMC->At(ii);
-
- if( p0->Pt() > trigMC->Pt() ) isXiLP = kTRUE;
- else isXiLP = kFALSE;
-
- if( isXiLP == kFALSE ) break;
-
- } // End loop over trigger particles
-
- // ----------------------------------------
- // Xi is Leading particle
- if(isXiLP){
- fXiMinusPtMCTrigger->Fill(p0->Pt(),centrality);
- fXiTriggerPartMC->Add( new AliMiniParticle(centrality, zv, iTrkMC, p0->Pt(), p0->Phi(), p0->Eta(), 0, 0, 10) );
- }
-
- }
-
- // ----------------------------------------
- // Xi-h: Do correlations with primary particles
- if(isXiLP){
- for(Int_t ii=0; ii<(fXiTriggerPartMC->GetEntriesFast()); ii++){
- AliMiniParticle* trigXiMC = (AliMiniParticle*) fXiTriggerPartMC->At(ii);
-
- // ========= Charged particles
- for (Int_t iTrkMC = 0; iTrkMC < nTrkMC; iTrkMC++){
- AliAODMCParticle *p0 = (AliAODMCParticle*)stack->At(iTrkMC);
- if(!p0) continue;
-
- // ----------------------------------------
- Int_t isNaturalPart = 1;
- if ( (iTrkMC>=fEndOfHijingEvent) &&
- (fEndOfHijingEvent!=-1) &&
- (p0->GetMother()<0) )
- isNaturalPart = 0;
- // ----------------------------------------
-
- if(p0->Charge()==0) continue;
- if(isNaturalPart == 0) continue;
- if( !p0->IsPhysicalPrimary() ) continue;
-
- if(TMath::Abs(p0->Eta())>fTrigEtaMax) continue;
-
- dPhiMC = dPHI(trigXiMC->Phi(),p0->Phi());
- dEtaMC = trigXiMC->Eta() - p0->Eta();
-
- for(Int_t k=0;k<kN1;k++) // Pt bin
- if( (p0->Pt()>=kPtBinV03[k]) && (p0->Pt()<kPtBinV03[k+1]) )
- fXiMinusdPhidEtaMC3[curCentBin*kN3+k]->Fill(dPhiMC,dEtaMC,zv);
-
- } // End loop over primary particles
-
- } // end loop over Xi
-
- } // End condition of Xi is LP
-
} // End MC condition
-
+
// *************************************************
// V0 loop - AOD
fAssocParticles = new TObjArray();
if(NtrigPerEvnt>0)
V0Loop(kReconstruction,kTRUE,-1,-1);
else
- V0Loop(kReconstruction,kFALSE,-1,-1);
-
+ V0Loop(kReconstruction,kFALSE,-1,-1);
+
//-------------------------------------------------------------
// Correlations
//-------------------------------------------------------------
+
+ // variables for correlations:
Float_t ptTrig=0., pxTrig=0., pyTrig=0.;
Float_t massK0s=0., mK0s=0., sK0s=0.;
Float_t massL=0., mL=0., sL=0.;
Float_t pt=-100., pxAssoc=-1000., pyAssoc=-1000.;
Float_t lPhi=0., lEta=0.;
Float_t lAlphaV0=0., lPtArmV0=0, dcaPos=0., dcaNeg=0.;
- Float_t dx=-100., dy=-100., dz=-100., lt=-100., res=-100.;
+ Float_t dx=-100., dy=-100., lt=-100., res=-100.;
Float_t dlK=-100., dlL=-100.;
Float_t dPhi=-100., dEta=-100., radio=-100.;
-
+ // variables for track splititing checks:
+ Float_t posdPhiS = -9999., posdEtaS = -9999., negdPhiS = -9999., negdEtaS = -9999.;
+ Float_t fracTrigTPCSharedMap=-1., fracPosDaugTPCSharedMap =-1., fracNegDaugTPCSharedMap =-1.;
+ //Bool_t trigTPCMapOk=kTRUE, posDaugTPCMapOk=kTRUE, negDaugTPCMapOk=kTRUE;
+ Float_t RdPhiStarMaxPosDaug=-1., RdPhiStarMaxNegDaug=-1., den=1.;
+ Double_t trigCov[21], posDaugCov[21], negDaugCov[21];
+ Double_t trigPos[6], posDaugPos[6], negDaugPos[6];
+ Double_t trigXYZ[3], posDaugXYZ[3], negDaugXYZ[3];
+ Double_t devPosDaugTrig[9], devNegDaugTrig[9], splitCont[9], splitCont2[12];
+ Int_t sameSignPosDaug = -1, sameSignNegDaug = -1;
+ Float_t sameLabelPosDaug = 0., sameLabelNegDaug = 0.;
+ Int_t tlab, nlab, plab;
+ Double_t resdEtsSdPhiS[6];
+
+ // --------------------------------
+ // h-V0 correlations
for (Int_t i=0; i<(fTriggerParticles->GetEntriesFast()); i++){
AliMiniParticle* trig = (AliMiniParticle*) fTriggerParticles->At(i);
if( trig->WhichCandidate() == 0 ) continue;
- AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
+ const AliAODTrack *tTrig = (AliAODTrack*)fAOD->GetTrack(trig->ID());
ptTrig = tTrig->Pt(); pxTrig = tTrig->Px(); pyTrig = tTrig->Py();
+ // ---------------- Fraction of TPC Shared Cluster:
+ fracTrigTPCSharedMap = GetFractionTPCSharedCls(tTrig);
+
for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
pt = trackAssocME->Pt(); pxAssoc = tAssoc->Px(); pyAssoc = tAssoc->Py();
// Decay vertex
Double_t xyz[3]; tAssoc->GetSecondaryVtx(xyz);
- dx=xyz[0]-xv; dy=xyz[1]-yv; dz=xyz[2]-zv;
+ dx=xyz[0]-xv; dy=xyz[1]-yv; //dz=xyz[2]-zv;
// Decay length: 2D
lt=TMath::Sqrt(dx*dx + dy*dy);
// Spatial resolution trigger-V0 point decay
Int_t lMCAssocNegDaug = trackAssocME->NegDaugMCLabel();
Int_t lMCAssocPosDaug = trackAssocME->PosDaugMCLabel();
- // *******************
- // Gamma conversion
- // *******************
- if( trackAssocME->WhichCandidate() == 2 )
- fGammaConversiondPhidEta[curCentBin]->Fill(dPhi,dEta,zv);
+ // ----------------------------------------------------------------------------
+
+ // -----------------------------------------------------------------
+ // ****************** Track splitting check ******************
+ // -----------------------------------------------------------------
+
+ sameLabelPosDaug = 0.; sameLabelNegDaug = 0.;
+ sameSignPosDaug = -1; sameSignNegDaug = -1;
+ RdPhiStarMaxPosDaug=-1.; RdPhiStarMaxNegDaug=-1.;
+ //trigTPCMapOk=kTRUE; posDaugTPCMapOk=kTRUE; negDaugTPCMapOk=kTRUE;
+ fracPosDaugTPCSharedMap=0; fracNegDaugTPCSharedMap=0;
+ // ---------------- Fraction of TPC Shared Cluster
+ fracPosDaugTPCSharedMap = GetFractionTPCSharedCls(ptrack);
+ fracNegDaugTPCSharedMap = GetFractionTPCSharedCls(ntrack);
+
+ // =========== Classical methods for track-splitting ============= //
+ if( TMath::Abs(dPhi)<0.1 && TMath::Abs(dEta)<0.1 ){
+
+ // --------- Check sign of the trigger and daughter track:
+ if(tTrig->Charge()==1) { sameSignPosDaug = 1; sameSignNegDaug = 0; }
+ else { sameSignPosDaug = 0; sameSignNegDaug = 1; }
+
+ // -------- Shifting charged tracks to the primary vertex.
+ // -------- See HBT anlayses:
+
+ // Trigger particle:
+ SetSftPosR125(tTrig,bSign,priVtx,"Trigger");
+
+ // Positive daughter: calculating delta(phi)* and delta(eta)*
+ SetSftPosR125(ptrack,bSign,priVtx,"Daughter");
+ posdPhiS = dPhiSAtR125();
+ posdEtaS = dEtaS();
+
+ // Negative daughter: calculating delta(phi)* and delta(eta)*
+ SetSftPosR125(ntrack,bSign,priVtx,"Daughter");
+ negdPhiS = dPhiSAtR125();
+ negdEtaS = dEtaS();
+
+ // ------ Get position:
+ tTrig->GetXYZ(trigXYZ);
+ ptrack->GetXYZ(posDaugXYZ);
+ ntrack->GetXYZ(negDaugXYZ);
+
+ // ------ Covaraince matrix for the tracks:
+ tTrig->GetCovarianceXYZPxPyPz(trigCov);
+ ptrack->GetCovarianceXYZPxPyPz(posDaugCov);
+ ntrack->GetCovarianceXYZPxPyPz(negDaugCov);
+
+ // ------- position and momentum:
+ // trigger particle
+ trigPos[0] = trigXYZ[0]; trigPos[1] = trigXYZ[1]; trigPos[2] = trigXYZ[2];
+ trigPos[3] = tTrig->Px(); trigPos[4] = tTrig->Py(); trigPos[5] = tTrig->Pz();
+
+ // positive daughter
+ posDaugPos[0] = posDaugXYZ[0]; posDaugPos[1] = posDaugXYZ[1]; posDaugPos[2] = posDaugXYZ[2];
+ posDaugPos[3] = ptrack->Px(); posDaugPos[4] = ptrack->Py(); posDaugPos[5] = ptrack->Pz();
+
+ // negative daughter
+ negDaugPos[0] = negDaugXYZ[0]; negDaugPos[1] = negDaugXYZ[1]; negDaugPos[2] = negDaugXYZ[2];
+ negDaugPos[3] = ntrack->Px(); negDaugPos[4] = ntrack->Py(); negDaugPos[5] = ntrack->Pz();
+
+ // ------- deviation between the two tracks:
+ // positive daughter
+ for(Int_t ll=0;ll<6;ll++){
+ den = trigCov[ll*(ll+1)/2+ll] + posDaugCov[ll*(ll+1)/2+ll] ;
+ devPosDaugTrig[ll] = 0.;
+
+ if(den>0) devPosDaugTrig[ll] = TMath::Power( trigPos[ll] - posDaugPos[ll] ,2) / den;
+
+ if(ll<3) devPosDaugTrig[6] += devPosDaugTrig[ll]; // sum in X,Y,Z
+ if(ll>2) devPosDaugTrig[7] += devPosDaugTrig[ll]; // sum in momemtum
+ devPosDaugTrig[8] += devPosDaugTrig[ll]; // sum in all variables
+ }
+
+ // negative daughter
+ for(Int_t ll=0;ll<6;ll++){
+ den = trigCov[ll*(ll+1)/2+ll] + negDaugCov[ll*(ll+1)/2+ll] ;
+ devNegDaugTrig[ll] = 0;
+
+ if(den>0) devNegDaugTrig[ll] = TMath::Power( trigPos[ll] - negDaugPos[ll] ,2) / den;
+
+ if(ll<3) devNegDaugTrig[6] += devNegDaugTrig[ll]; // sum in X,Y,Z
+ if(ll>2) devNegDaugTrig[7] += devNegDaugTrig[ll]; // sum in momemtum
+ devNegDaugTrig[8] += devNegDaugTrig[ll]; // sum in all variables
+
+ }
+
+
+ // ---------------- Monte Carlo check for track-splitting
+ if(fIsMC){
+
+ TList *lst = fAOD->GetList();
+ stack = (TClonesArray*)lst->FindObject(AliAODMCParticle::StdBranchName());
+ if (!stack) {
+ Printf("ERROR: stack not available");
+ return;
+ }
+
+ sameLabelPosDaug = 1.*SameLabel(tTrig,ptrack);
+ sameLabelNegDaug = 1.*SameLabel(tTrig,ntrack);
+
+ // Resolution of delta(phi)* and delta(eta)*
+ tlab = TMath::Abs(tTrig->GetLabel());
+ plab = TMath::Abs(ptrack->GetLabel());
+ nlab = TMath::Abs(ntrack->GetLabel());
+
+ AliAODMCParticle *tPart=(AliAODMCParticle*)stack->UncheckedAt(tlab);
+ AliAODMCParticle *pPart=(AliAODMCParticle*)stack->UncheckedAt(plab);
+ AliAODMCParticle *nPart=(AliAODMCParticle*)stack->UncheckedAt(nlab);
+
+ resdEtsSdPhiS[0] = pt;
+
+ //positive daughter
+ resdEtsSdPhiS[2] = ptrack->Pt();
+ resdEtsSdPhiS[3] = (tPart->Phi() - pPart->Phi()) - posdPhiS;
+ resdEtsSdPhiS[4] = (tPart->Eta() - pPart->Eta()) - posdEtaS;
+ resdEtsSdPhiS[5] = sameSignPosDaug;
+
+ if( trackAssocME->WhichCandidate() == 3 ){
+ resdEtsSdPhiS[1] = massK0s;
+ fK0sPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+ if( trackAssocME->WhichCandidate() == 4 ){
+ resdEtsSdPhiS[1] = massL;
+ fLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+ if( trackAssocME->WhichCandidate() == 5 ){
+ resdEtsSdPhiS[1] = massAL;
+ fAntiLambdaPosMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+
+ // negative daughter
+ resdEtsSdPhiS[2] = ntrack->Pt();
+ resdEtsSdPhiS[3] = (tPart->Phi() - nPart->Phi()) - negdPhiS;
+ resdEtsSdPhiS[4] = (tPart->Eta() - nPart->Eta()) - negdEtaS;
+ resdEtsSdPhiS[5] = sameSignNegDaug;
+
+ if( trackAssocME->WhichCandidate() == 3 ){
+ resdEtsSdPhiS[1] = massK0s;
+ fK0sNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+ if( trackAssocME->WhichCandidate() == 4 ){
+ resdEtsSdPhiS[1] = massL;
+ fLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+ if( trackAssocME->WhichCandidate() == 5 ){
+ resdEtsSdPhiS[1] = massAL;
+ fAntiLambdaNegMCResdEtaSdPhiS[curCentBin]->Fill(resdEtsSdPhiS);
+ }
+
+ }
+
+ // ================ Alternative methods for track-splitting ==================
+ if(TMath::Abs(dPhi)<0.02 && TMath::Abs(dEta)<0.02){
+
+ // --------- Calculate TPCRadius*Delta(phi)Star_Max distance:
+ RdPhiStarMaxPosDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ptrack->Phi(), ptrack->Eta(), ptrack->Pt(), 1, bSign);
+ RdPhiStarMaxNegDaug = TwoTrackEfficiencyCut( tTrig->Phi(), tTrig->Eta(), tTrig->Pt(), tTrig->Charge(), ntrack->Phi(), ntrack->Eta(), ntrack->Pt(), -1, bSign);
+
+ // -------- Comparison between trigger and daughter tracks:
+ // -------- Filling deviation of matrix elements
+ splitCont[0] = pt; splitCont[5] = fracTrigTPCSharedMap;
+
+ // ---------------------------
+ // -------- Positive daughter:
+ splitCont[2] = ptrack->Pt(); splitCont[3] = sameSignPosDaug;
+ splitCont[4] = RdPhiStarMaxPosDaug; splitCont[6] = fracPosDaugTPCSharedMap;
+
+ // ----K0s
+ if( trackAssocME->WhichCandidate() == 3 ){
+ splitCont[1] = massK0s;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
+ fK0sPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // ----Lambda
+ if( trackAssocME->WhichCandidate() == 4 ){
+ splitCont[1] = massL;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
+ fLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // ----AntiLambda
+ if( trackAssocME->WhichCandidate() == 5 ){
+ splitCont[1] = massAL;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devPosDaugTrig[ll]; splitCont[8] = ll;
+ fAntiLambdaPosDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // End: Positive daughter
+
+ // ---------------------------
+ // -------- Negative daughter:
+ splitCont[2] = ntrack->Pt(); splitCont[3] = sameSignNegDaug;
+ splitCont[4] = RdPhiStarMaxNegDaug; splitCont[6] = fracNegDaugTPCSharedMap;
+
+ // ----K0s
+ if( trackAssocME->WhichCandidate() == 3 ){
+ splitCont[1] = massK0s;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
+ fK0sNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // ----Lambda
+ if( trackAssocME->WhichCandidate() == 4 ){
+ splitCont[1] = massL;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
+ fLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // ----AntiLambda
+ if( trackAssocME->WhichCandidate() == 5 ){
+ splitCont[1] = massAL;
+ for(Int_t ll=0; ll<=8; ll++){
+ splitCont[7] = devNegDaugTrig[ll]; splitCont[8] = ll;
+ fAntiLambdaNegDaugSplCheckCovMat[curCentBin]->Fill(splitCont);
+ }
+
+ }
+ // End: Negative daughter
+
+ } // end selection in |delta(eta)| < 0.02, |delta(phi)| < 0.02
+
+
+ // ================ FILLING THnSparse: Classical track-splitting method: d(phi)* and d(eta)*
+ splitCont2[0] = pt; splitCont2[6] = fracTrigTPCSharedMap;
+
+ // --------------------------
+ // -------- Positive daughter:
+ splitCont2[2] = ptrack->Pt(); splitCont2[3] = sameSignPosDaug; splitCont2[4] = posdPhiS; splitCont2[5] = posdEtaS;
+ splitCont2[7] = fracPosDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracPosDaugTPCSharedMap;
+ splitCont2[9] = devPosDaugTrig[7]; splitCont2[10] = tAssoc->DcaPosToPrimVertex(); splitCont2[11] = sameLabelPosDaug;
+
+ // ---- K0s
+ if( trackAssocME->WhichCandidate() == 3 ){
+ splitCont2[1] = massK0s;
+ // Positive daughter
+ fK0sPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+ // ---- Lambda
+ if( trackAssocME->WhichCandidate() == 4 ){
+ splitCont2[1] = massL;
+ // Positive daughter
+ fLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+ // ---- AntiLambda
+ if( trackAssocME->WhichCandidate() == 5 ){
+ splitCont2[1] = massAL;
+ // Positive daughter
+ fAntiLambdaPosDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+
+ // --------------------------
+ // ------- Negative daughter:
+ splitCont2[2] = ntrack->Pt(); splitCont2[3] = sameSignNegDaug; splitCont2[4] = negdPhiS; splitCont2[5] = negdEtaS;
+ splitCont2[7] = fracNegDaugTPCSharedMap; splitCont2[8] = fracTrigTPCSharedMap - fracNegDaugTPCSharedMap;
+ splitCont2[9] = devNegDaugTrig[7]; splitCont2[10] = tAssoc->DcaNegToPrimVertex(); splitCont2[11] = sameLabelNegDaug;
+
+ // ---- K0s
+ if( trackAssocME->WhichCandidate() == 3 ){
+ splitCont2[1] = massK0s;
+ // Negative daughter
+ fK0sNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+ // ---- Lambda
+ if( trackAssocME->WhichCandidate() == 4 ){
+ splitCont2[1] = massL;
+ // Negative daughter
+ fLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+ // ---- AntiLambda
+ if( trackAssocME->WhichCandidate() == 5 ){
+ splitCont2[1] = massAL;
+ // Negative daughter
+ fAntiLambdaNegDaugdPhiSdEtaS[curCentBin]->Fill(splitCont2);
+ }
+
+ } // end selection in |delta(eta)| < 0.1, |delta(phi)| < 0.1
+
+ // ----------------------------------------------------------------
+ // Reject the 'fake' correlation due to the TPC shared clusters
+ // between trigger particle and one of the daughter tracks
+ // The rejection will affect more the correlations:
+ // - Trigger track - Positive track (from Lambda with pt above 3 GeV/c)
+ // - Trigger track - Negative track (from AntiLambda with pt above 3 GeV/c)
+ /* if( fracTrigTPCSharedMap>0.5 &&
+ ( ( sameSignPosDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracPosDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ||
+ ( sameSignNegDaug==1 && TMath::Abs(fracTrigTPCSharedMap - fracNegDaugTPCSharedMap) < fDiffTrigDaugFracTPCSharedCls ) ) )*/
+
+ if( (fracTrigTPCSharedMap > fFracTPCcls) || (fracPosDaugTPCSharedMap > fFracTPCcls) || (fracNegDaugTPCSharedMap > fFracTPCcls) )
+ continue;
+
+ // ----------------------------------------------------------------------------
+
// *******************
// K0s selection
// *******************
if( trackAssocME->WhichCandidate() == 3 ){
-
+
massK0s = tAssoc->MassK0Short();
mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
if( fCollision.Contains("PbPb2010") )
// ==== Correlations K0s invariant mass peak ==== //
if (TMath::Abs(mK0s-massK0s) < 3*sK0s) {
- if(radio<0.1)
+ if(radio<0.02){
fK0sSpatialRes->Fill(dPhi,res,lt);
+ }
if(radio < 0.4){
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
fK0sDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
RecCascade(tTrig,ntrack,ptrack,"K0s");
RecCascade(tTrig,ptrack,ntrack,"K0s");
}
-
-
+
}
// ==== Correlations K0s background ==== //
if( TMath::Abs(mK0s-massK0s + 6.5*sK0s) < 1.5*sK0s ||
//fK0sdPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
if(radio < 0.4){ // Under the correlation peak
- fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,0);
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
fK0sBckgDecLength->Fill(dlK,ptTrig);
fK0sBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
fK0sBckgEtaPhi->Fill(lPhi,lEta);
// ==== Correlations Lambda invariant mass peak ==== //
// +++++++++++ Pt bin & centrality
- fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
+ fLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massL);
// ==== Correlations Lambda invariant mass peak ==== //
- if (TMath::Abs(mL-massL) < 3*sL) {
-
- if(radio<0.1)
+ if (TMath::Abs(mL-massL) < 3*sL) {
+
+ if(radio<0.02)
fLambdaSpatialRes->Fill(dPhi,res,lt);
if(radio < 0.4){
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
fLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
RecCascade(tTrig,ntrack,ptrack,"Lambda");
RecCascade(tTrig,ptrack,ntrack,"Lambda");
// ==== Correlations Lambda background ==== //
if( TMath::Abs(mL-massL + 6.5*sL) < 1.5*sL ||
TMath::Abs(mL-massL - 6.5*sL) < 1.5*sL ) {
-
+
// Only fills the histograms when it is a triggered event
if(j==0){
fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,3);
//fLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
if(radio < 0.4){ // Under the peak
- fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,1);
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,3);
fLambdaBckgDecLength->Fill(dlL,ptTrig);
fLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
fLambdaBckgEtaPhi->Fill(lPhi,lEta);
}// End selection in the correlation peak
- } // End bacground selection
+ } // End background selection
}// End Lambda selection
// *******************
else if( fCollision.Contains("PbPb2011") )
sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
-
// ==== Correlations Lambda invariant mass peak ==== //
// +++++++++++ Pt bin & centrality
- fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
+ fAntiLambdadPhidEtaPtL[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(dPhi,dEta,massAL);
// ==== Correlations AntiLambda invariant mass peak ==== //
if (TMath::Abs(mL-massAL) < 3*sL) {
if(radio<0.1)
fAntiLambdaSpatialRes->Fill(dPhi,res,lt);
if(radio < 0.4){
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,4);
fAntiLambdaDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
RecCascade(tTrig,ntrack,ptrack,"AntiLambda");
RecCascade(tTrig,ptrack,ntrack,"AntiLambda");
// ==== Correlations AntiLambda background ==== //
if( (TMath::Abs(mL-massAL + 6.5*sL) < 1.5*sL) ||
(TMath::Abs(mL-massAL - 6.5*sL) < 1.5*sL) ){
-
+
+ // ----------------------------------------------
+
// Only fills the histograms when it is a triggered event
if(j==0){
fHistArmenterosPodolanski->Fill(lAlphaV0,lPtArmV0,5);
//fAntiLambdadPhidEtaPtLBckg[curCentBin*kN1+binPtv0]->Fill(dPhi,dEta,zv);
if(radio < 0.4){ // Under the peak
- fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,2);
+ fHistArmPodBckg->Fill(lAlphaV0,lPtArmV0,5);
fAntiLambdaBckgDecLength->Fill(dlL,ptTrig);
fAntiLambdaBckgDCADaugToPrimVtx->Fill(dcaPos,dcaNeg,ptTrig);
fAntiLambdaBckgEtaPhi->Fill(lPhi,lEta);
} // End AntiLambda selection
} // End loop over associated particles
-
+
+
+ // Filling information of the trigger particle
+ // after the rejection in the cut of shared TPC cls
+ fTriggerEtaPhi->Fill(trig->Phi(),trig->Eta());
+ fTriggerPtCent->Fill(trig->Pt(),centrality,zv);
+
} // End loop over trigger particles
-
+
+
//-------------------------------------------------------------
// Mixing
//-------------------------------------------------------------
-
- TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
- Int_t nMixed = evMixList->GetSize();
+ /*
+ Double_t phiTrigME=0, etaTrigME=0, phiAssocME=0, etaAssocME=0;
+ Double_t deltaPhi=0, deltaEta=0;
+
+ TList *evMixList = fMEList[curCentBin*kNVtxZ+curVtxBin];
+ Int_t nMixed = evMixList->GetSize();
- if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
+ if( nMixed>0 && fAssocParticles->GetEntriesFast() >= 0 ){
for(Int_t ii=0; ii<nMixed; ii++){
- AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
- Double_t phiTrigME = trackTriggerME->Phi();
- Double_t etaTrigME = trackTriggerME->Eta();
-
- for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
-
- AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
- if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
- if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
- if( trackAssocME->WhichCandidate() == 2 ) continue;
+ AliMiniParticle* trackTriggerME = (AliMiniParticle*) (evMixList->At(ii));
+ phiTrigME = trackTriggerME->Phi();
+ etaTrigME = trackTriggerME->Eta();
+
+ // --- V0 associated particles
+ for(Int_t j=0; j<fAssocParticles->GetEntriesFast(); j++){
+
+ AliMiniParticle* trackAssocME = (AliMiniParticle*) (fAssocParticles->At(j));
+ if( CentBin(trackTriggerME->Centrality()) != CentBin(trackAssocME->Centrality()) ) continue;
+ if( VtxBin(trackTriggerME->VtxZ()) != VtxBin(trackAssocME->VtxZ()) ) continue;
+ if( trackAssocME->WhichCandidate() == 2 ) continue;
- AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
- pt = tAssoc->Pt();
+ AliAODv0 *tAssoc=fAOD->GetV0(trackAssocME->ID());
+ pt = tAssoc->Pt();
- Bool_t IsSelected = kFALSE;
- // K0s
- if( trackAssocME->WhichCandidate() == 3 ){
- massK0s = tAssoc->MassK0Short();
- mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
- if( fCollision.Contains("PbPb2010") )
- sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
- else if( fCollision.Contains("PbPb2011") )
- sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
+ Bool_t IsSelected = kFALSE;
+ // K0s
+ if( trackAssocME->WhichCandidate() == 3 ){
+ massK0s = tAssoc->MassK0Short();
+ mK0s = TDatabasePDG::Instance()->GetParticle(kK0Short)->Mass();
+ if( fCollision.Contains("PbPb2010") )
+ sK0s = kCteK0s2010[curCentBin] + kLinearK0s2010[curCentBin]*pt;
+ else if( fCollision.Contains("PbPb2011") )
+ sK0s = kCteK0s2011[curCentBin] + kLinearK0s2011[curCentBin]*pt;
- if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
- }
- // Lambda
- if( trackAssocME->WhichCandidate() == 4 ){
- massL = tAssoc->MassLambda();
- mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
- if( fCollision.Contains("PbPb2010") )
- sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
- else if( fCollision.Contains("PbPb2011") )
- sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
-
- if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
- }
- // AntiLambda
- if( trackAssocME->WhichCandidate() == 5 ){
- massAL = tAssoc->MassAntiLambda();
- mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
- if( fCollision.Contains("PbPb2010") )
- sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
- else if( fCollision.Contains("PbPb2011") )
- sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
+ if (TMath::Abs(mK0s-massK0s) < 3*sK0s) IsSelected = kTRUE;
+ }
+ // Lambda
+ if( trackAssocME->WhichCandidate() == 4 ){
+ massL = tAssoc->MassLambda();
+ mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
+ if( fCollision.Contains("PbPb2010") )
+ sL = kCteLambda2010[curCentBin] + kLinearLambda2010[curCentBin]*pt;
+ else if( fCollision.Contains("PbPb2011") )
+ sL = kCteLambda2011[curCentBin] + kLinearLambda2011[curCentBin]*pt;
+
+ if (TMath::Abs(mL-massL) < 3*sL) IsSelected = kTRUE;
+ }
+ // AntiLambda
+ if( trackAssocME->WhichCandidate() == 5 ){
+ massAL = tAssoc->MassAntiLambda();
+ mL = TDatabasePDG::Instance()->GetParticle(kLambda0)->Mass();
+ if( fCollision.Contains("PbPb2010") )
+ sL = kCteAntiLambda2010[curCentBin] + kLinearAntiLambda2010[curCentBin]*pt;
+ else if( fCollision.Contains("PbPb2011") )
+ sL = kCteAntiLambda2011[curCentBin] + kLinearAntiLambda2011[curCentBin]*pt;
- if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
- }
+ if (TMath::Abs(mL-massAL) < 3*sL) IsSelected = kTRUE;
+ }
- if(!IsSelected) continue;
+ if(!IsSelected) continue;
- Double_t phiAssocME = trackAssocME->Phi();
- Double_t etaAssocME = trackAssocME->Eta();
+ phiAssocME = trackAssocME->Phi();
+ etaAssocME = trackAssocME->Eta();
- Double_t deltaPhi = dPHI(phiTrigME,phiAssocME);
- Double_t deltaEta = etaTrigME - etaAssocME;
+ deltaPhi = dPHI(phiTrigME,phiAssocME);
+ deltaEta = etaTrigME - etaAssocME;
- Int_t binPtv0 = PtBin( trackAssocME->Pt() );
- if(binPtv0==-1) continue;
+ Int_t binPtv0 = PtBin( trackAssocME->Pt() );
+ if(binPtv0==-1) continue;
- if( trackAssocME->WhichCandidate() == 3 ) {
- fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
- else if( trackAssocME->WhichCandidate() == 4 )
- fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
- else if( trackAssocME->WhichCandidate() == 5 )
- fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
+ if( trackAssocME->WhichCandidate() == 3 ) {
+ fK0sdPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);}
+ else if( trackAssocME->WhichCandidate() == 4 )
+ fLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
+ else if( trackAssocME->WhichCandidate() == 5 )
+ fAntiLambdadPhidEtaME[curCentBin*kN1*kNVtxZ + binPtv0*kNVtxZ + curVtxBin]->Fill(deltaPhi,deltaEta);
- }
-
+ } // End loop over V0's
+
}
- }
-
+ }
+ */
//--------------------------------------------------------
//Add the current event to the list of events for mixing
//--------------------------------------------------------
-
+ /*
//Add current event to buffer and Remove redundant events
if(fTriggerParticles->GetEntriesFast()>=0){
- for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
- AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
- //cout << trkTrig->Pt() << " " << ii << endl;
+ for(Int_t ii=0; ii<(fTriggerParticles->GetEntriesFast()); ii++){
+ AliMiniParticle* trkTrig = (AliMiniParticle*) fTriggerParticles->At(ii);
+ //cout << trkTrig->Pt() << " " << ii << endl;
- if(evMixList->GetSize() < nMaxEvMix)
- evMixList->AddFirst(trkTrig);
- /*
- if(evMixList->GetSize() >= nMaxEvMix) {
- AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
- evMixList->RemoveLast();
- delete tmp;
- }
- */
+ if(evMixList->GetSize() < nMaxEvMix)
+ evMixList->AddFirst(trkTrig);
+ / *
+ if(evMixList->GetSize() >= nMaxEvMix) {
+ AliMiniParticle *tmp = (AliMiniParticle*) (evMixList->Last()) ;
+ evMixList->RemoveLast();
+ delete tmp;
+ }
+ * /
- }// End loop over fTriggerParticles
+ }// End loop over fTriggerParticles
}// End adding trigger particles to buffers
-
- }
+ */
+}
//___________________________________________________________________________________________