From 60b29186fa71d961653a77658ea12f1de7828b85 Mon Sep 17 00:00:00 2001 From: zconesa Date: Wed, 30 Oct 2013 17:41:43 +0000 Subject: [PATCH] Several updates: 1) it is no longer possible to run wo V0-daughter cuts object, 2) updates on the config files as consequence of (1), 3) implemented new method to apply track cuts to bachelor and V0 tracks, 4) trying to homogenize V0-daughter cuts with those of K0s analysis. (A. De Caro) --- PWGHF/vertexingHF/AliRDHFCutsLctoV0.cxx | 262 ++++++++++++------ PWGHF/vertexingHF/AliRDHFCutsLctoV0.h | 9 +- PWGHF/vertexingHF/ConfigVertexingHF.C | 10 + .../ConfigVertexingHF_Pb_AllCent.C | 11 + .../ConfigVertexingHF_Pb_AllCent_NoLS.C | 12 +- .../ConfigVertexingHF_Pb_AllCent_NoLS_16var.C | 11 + ...onfigVertexingHF_Pb_AllCent_NoLS_NoDstar.C | 11 + ...ertexingHF_Pb_AllCent_NoLS_NoDstar_16var.C | 11 + .../ConfigVertexingHF_Pb_AllCent_NoLS_PIDLc.C | 11 + .../ConfigVertexingHF_Pb_Cent2080.C | 10 + .../vertexingHF/ConfigVertexingHF_highmult.C | 10 + .../ConfigVertexingHF_pp_LambdaC.C | 10 + .../macros/makeTFile4CutsLctoV0bachelor.C | 164 ++++++----- 13 files changed, 371 insertions(+), 171 deletions(-) diff --git a/PWGHF/vertexingHF/AliRDHFCutsLctoV0.cxx b/PWGHF/vertexingHF/AliRDHFCutsLctoV0.cxx index b508d10b2f4..3673cb01b0b 100644 --- a/PWGHF/vertexingHF/AliRDHFCutsLctoV0.cxx +++ b/PWGHF/vertexingHF/AliRDHFCutsLctoV0.cxx @@ -155,7 +155,7 @@ AliRDHFCutsLctoV0::AliRDHFCutsLctoV0(const AliRDHFCutsLctoV0 &source) : if (source.fPidHFV0neg) fPidHFV0neg = new AliAODPidHF(*(source.fPidHFV0neg)); else fPidHFV0neg = new AliAODPidHF(); - if (source.fV0daughtersCuts) fV0daughtersCuts = new AliESDtrackCuts(*(source.fV0daughtersCuts)); + if (source.fV0daughtersCuts) AddTrackCutsV0daughters(source.fV0daughtersCuts); else fV0daughtersCuts = new AliESDtrackCuts(); } @@ -354,12 +354,10 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { // if (!fCutsRD) { - cout<<"Cut matrice not inizialized. Exit..."<(d->GetDaughter(0)); - AliVTrack *cascTrk1 = dynamic_cast(d->GetDaughter(1)); - if (!cascTrk0 || !cascTrk1) { - AliDebug(2,"At least one of V0daughters doesn't exist"); - return 0; - } - AliAODv0 * v0 = dynamic_cast(d->Getv0()); AliAODTrack * bachelorTrack = dynamic_cast(d->GetBachelor()); if (!v0 || !bachelorTrack) { @@ -409,47 +400,33 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { // Get the V0 daughter tracks AliAODTrack *v0positiveTrack = dynamic_cast(d->Getv0PositiveTrack()); AliAODTrack *v0negativeTrack = dynamic_cast(d->Getv0NegativeTrack()); - //AliVTrack *trk0 = dynamic_cast(v0->GetDaughter(0)); - //AliVTrack *trk1 = dynamic_cast(v0->GetDaughter(1)); if (!v0positiveTrack || !v0negativeTrack ) { AliDebug(2,"No V0 daughters' objects"); return 0; } - if (v0positiveTrack->GetLabel()<0 || v0negativeTrack->GetLabel()<0) { - AliDebug(2,Form("At least one of V0daughters has label negative (%d %d)",v0positiveTrack->GetLabel(),v0negativeTrack->GetLabel())); - return 0; - } - if (v0positiveTrack->GetID()<0 || v0negativeTrack->GetID()<0) { AliDebug(2,Form("At least one of V0 daughters has negative ID %d %d",v0positiveTrack->GetID(),v0negativeTrack->GetID())); return 0; } //if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0; - if ( fUseTrackSelectionWithFilterBits && !(bachelorTrack->TestFilterMask(BIT(4))) ) return 0; + if ( fUseTrackSelectionWithFilterBits && !(bachelorTrack->TestFilterMask(BIT(4))) ) { + AliDebug(2,"Check on the bachelor FilterBit: no BIT(4). Candidate rejected."); + return 0; + } + + Int_t returnvalueTrack = 7; // selection on daughter tracks if (selectionLevel==AliRDHFCuts::kAll || selectionLevel==AliRDHFCuts::kTracks) { - if (fIsCandTrackSPDFirst && d->Pt()HasPointOnITSLayer(0)) return 0; - } - if (fTrackCuts && fV0daughtersCuts) { - AliAODVertex *vAOD = (AliAODVertex*)d->GetPrimaryVtx(); - Double_t pos[3]; vAOD->GetXYZ(pos); - Double_t cov[6]; vAOD->GetCovarianceMatrix(cov); - const AliESDVertex vESD(pos,cov,100.,100); - if ( !(IsDaughterSelected(bachelorTrack,&vESD,fTrackCuts)) || - !(IsDaughterSelected(v0negativeTrack,&vESD,fV0daughtersCuts)) || - !(IsDaughterSelected(v0positiveTrack,&vESD,fV0daughtersCuts)) ) return 0; - } + if (!AreLctoV0DaughtersSelected(d)) return 0; } Bool_t okLck0sp=kTRUE, okLcLpi=kTRUE, okLcLBarpi=kTRUE; - Bool_t okK0spipi=kTRUE, okLppi=kTRUE, okLBarpip=kTRUE; // selection on candidate if (selectionLevel==AliRDHFCuts::kAll || @@ -471,6 +448,9 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { Double_t malambda = v0->MassAntiLambda(); Double_t mLcLpi = d->InvMassLctoLambdaPi(); + Bool_t okK0spipi=kTRUE, okLppi=kTRUE, okLBarpip=kTRUE; + Bool_t isNotK0S = kTRUE, isNotLambda = kTRUE, isNotLambdaBar = kTRUE, isNotGamma = kTRUE; + // cut on Lc mass with K0S+p hypothesis if (TMath::Abs(mLck0sp-mLcPDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) { okLck0sp = kFALSE; @@ -503,9 +483,35 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { AliDebug(4,Form(" V0 mass is %2.2e and does not correspond to LambdaBar cut",malambda)); } - okLck0sp = okLck0sp && okK0spipi; - okLcLpi = okLcLpi && okLppi; - okLcLBarpi = okLcLBarpi && okLBarpip; + // cut on K0S invariant mass veto + if (TMath::Abs(v0->MassK0Short()-mk0sPDG) < fCutsRD[GetGlobalIndex(12,ptbin)]) { // K0S invariant mass veto + AliDebug(4,Form(" veto on K0S invariant mass doesn't pass the cut")); + //return 0; + isNotK0S=kFALSE; + } + + // cut on Lambda/LambdaBar invariant mass veto + if (TMath::Abs(v0->MassLambda()-mLPDG) < fCutsRD[GetGlobalIndex(13,ptbin)]) { // Lambda invariant mass veto + AliDebug(4,Form(" veto on Lambda invariant mass doesn't pass the cut")); + isNotLambda=kFALSE; + //return 0; + } + if (TMath::Abs(v0->MassAntiLambda()-mLPDG) < fCutsRD[GetGlobalIndex(13,ptbin)] ) { // LambdaBar invariant mass veto + AliDebug(4,Form(" veto on LambdaBar invariant mass doesn't pass the cut")); + isNotLambdaBar=kFALSE; + //return 0; + } + + // cut on gamma invariant mass veto + if (v0->InvMass2Prongs(0,1,11,11) < fCutsRD[GetGlobalIndex(14,ptbin)]) { // K0S invariant mass veto + AliDebug(4,Form(" veto on gamma invariant mass doesn't pass the cut")); + isNotGamma=kFALSE; + //return 0; + } + + okLck0sp = okLck0sp && okK0spipi && isNotLambda && isNotLambdaBar && isNotGamma; + okLcLpi = okLcLpi && okLppi && isNotK0S && isNotLambdaBar && isNotGamma; + okLcLBarpi = okLcLBarpi && okLBarpip && isNotK0S && isNotLambda && isNotGamma; if (!okLck0sp && !okLcLpi && !okLcLBarpi) return 0; @@ -553,25 +559,6 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { return 0; } - // cut on K0S invariant mass veto - if (TMath::Abs(v0->MassK0Short()-mk0sPDG) < fCutsRD[GetGlobalIndex(12,ptbin)]) { // K0S invariant mass veto - AliDebug(4,Form(" veto on K0S invariant mass doesn't pass the cut")); - return 0; - } - - // cut on Lambda/LambdaBar invariant mass veto - if (TMath::Abs(v0->MassLambda()-mLPDG) < fCutsRD[GetGlobalIndex(13,ptbin)] || - TMath::Abs(v0->MassAntiLambda()-mLPDG) < fCutsRD[GetGlobalIndex(13,ptbin)] ) { // Lambda/LambdaBar invariant mass veto - AliDebug(4,Form(" veto on K0S invariant mass doesn't pass the cut")); - return 0; - } - - // cut on gamma invariant mass veto - if (v0->InvMass2Prongs(0,1,11,11) < fCutsRD[GetGlobalIndex(14,ptbin)]) { // K0S invariant mass veto - AliDebug(4,Form(" veto on gamma invariant mass doesn't pass the cut")); - return 0; - } - // cut on V0 pT min if (v0->Pt() < fCutsRD[GetGlobalIndex(15,ptbin)]) { // V0 pT min AliDebug(4,Form(" V0 track Pt=%2.2e > %2.2e",v0->Pt(),fCutsRD[GetGlobalIndex(15,ptbin)])); @@ -604,9 +591,9 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) { Int_t returnvalueTot = 0; if ( fUsePID ) - returnvalueTot = CombinePIDCuts(returnvalue,returnvaluePID); + returnvalueTot = CombineCuts(returnvalueTrack,returnvalue,returnvaluePID); else - returnvalueTot = returnvalue; + returnvalueTot = CombineCuts(returnvalueTrack,returnvalue,7); return returnvalueTot; @@ -618,7 +605,10 @@ Int_t AliRDHFCutsLctoV0::IsSelectedPID(AliAODRecoDecayHF* obj) { // fPidHFV0pos -> PID object for positive V0 daughter // fPidHFV0neg -> PID object for negative V0 daughter - if (!fUsePID || !obj) return 7; // all hypothesis are valid + if (!fUsePID || !obj) { + AliDebug(2,"PID selection inactive. Candidate accepted."); + return 7; // all hypothesis are valid + } if (fPidHF->GetPidResponse()==0x0 || fPidHFV0pos->GetPidResponse()==0x0 || @@ -832,10 +822,13 @@ void AliRDHFCutsLctoV0::CheckPID(AliAODTrack *bachelor, AliAODTrack *v0Neg, AliA } //---------------- -Int_t AliRDHFCutsLctoV0::CombinePIDCuts(Int_t returnvalue, Int_t returnvaluePID) const { - // combine PID with topological cuts +Int_t AliRDHFCutsLctoV0::CombineCuts(Int_t returnvalueTrack, Int_t returnvalue, Int_t returnvaluePID) const { + // + // combine track selection, topological cuts and PID + // - Int_t returnvalueTot=returnvalue&returnvaluePID; + Int_t returnvalueTot=returnvalueTrack&returnvalue; + returnvalueTot=returnvalueTot&returnvaluePID; return returnvalueTot; } @@ -847,7 +840,7 @@ Int_t AliRDHFCutsLctoV0::IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, // if (!fCutsRD) { - cout<<"Cut matrice not inizialized. Exit..."<(d->GetDaughter(0)); - AliVTrack *cascTrk1 = dynamic_cast(d->GetDaughter(1)); - if (!cascTrk0 || !cascTrk1) { - AliDebug(2,"At least one of V0daughters doesn't exist"); - return 0; - } - AliAODv0 * v0 = dynamic_cast(d->Getv0()); AliAODTrack * bachelorTrack = dynamic_cast(d->GetBachelor()); if (!v0 || !bachelorTrack) { @@ -900,43 +886,29 @@ Int_t AliRDHFCutsLctoV0::IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, // Get the V0 daughter tracks AliAODTrack *v0positiveTrack = dynamic_cast(d->Getv0PositiveTrack()); AliAODTrack *v0negativeTrack = dynamic_cast(d->Getv0NegativeTrack()); - //AliVTrack *trk0 = dynamic_cast(v0->GetDaughter(0)); - //AliVTrack *trk1 = dynamic_cast(v0->GetDaughter(1)); if (!v0positiveTrack || !v0negativeTrack ) { AliDebug(2,"No V0 daughters' objects"); return 0; } - if (v0positiveTrack->GetLabel()<0 || v0negativeTrack->GetLabel()<0) { - AliDebug(2,Form("At least one of V0daughters has label negative (%d %d)",v0positiveTrack->GetLabel(),v0negativeTrack->GetLabel())); - return 0; - } - if (v0positiveTrack->GetID()<0 || v0negativeTrack->GetID()<0) { AliDebug(2,Form("At least one of V0 daughters has negative ID %d %d",v0positiveTrack->GetID(),v0negativeTrack->GetID())); return 0; } //if(fUseTrackSelectionWithFilterBits && d->HasBadDaughters()) return 0; - if ( fUseTrackSelectionWithFilterBits && !(bachelorTrack->TestFilterMask(BIT(4))) ) return 0; + if ( fUseTrackSelectionWithFilterBits && !(bachelorTrack->TestFilterMask(BIT(4))) ) { + AliDebug(2,"Check on the bachelor FilterBit: no BIT(4). Candidate rejected."); + return 0; + } + // selection on daughter tracks if (selectionLevel==AliRDHFCuts::kAll || selectionLevel==AliRDHFCuts::kTracks) { - if (fIsCandTrackSPDFirst && d->Pt()HasPointOnITSLayer(0)) return 0; - } - if (fTrackCuts && fV0daughtersCuts) { - AliAODVertex *vAOD = (AliAODVertex*)d->GetPrimaryVtx(); - Double_t pos[3]; vAOD->GetXYZ(pos); - Double_t cov[6]; vAOD->GetCovarianceMatrix(cov); - const AliESDVertex vESD(pos,cov,100.,100); - if ( !(IsDaughterSelected(bachelorTrack,&vESD,fTrackCuts)) || - !(IsDaughterSelected(v0negativeTrack,&vESD,fV0daughtersCuts)) || - !(IsDaughterSelected(v0positiveTrack,&vESD,fV0daughtersCuts)) ) return 0; - } - //if (!AreDaughtersSelected(d)) return 0; + if (!AreLctoV0DaughtersSelected(d)) return 0; + } Bool_t okLck0sp=kFALSE, okLcLpi=kFALSE, okLcLBarpi=kFALSE; @@ -1086,7 +1058,7 @@ Int_t AliRDHFCutsLctoV0::IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, Int_t returnvalueTot = 0; //if ( fUsePID ) - //returnvalueTot = CombinePIDCuts(returnvalue,returnvaluePID); + //returnvalueTot = CombineCuts(returnvalue,returnvaluePID); //else returnvalueTot = returnvalue; @@ -1283,6 +1255,7 @@ void AliRDHFCutsLctoV0::PrintAll() const { printf("Physics selection: %s\n",fUsePhysicsSelection ? "Yes" : "No"); printf("Pileup rejection: %s\n",(fOptPileup > 0) ? "Yes" : "No"); printf("UseTrackSelectionWithFilterBits: %s\n",fUseTrackSelectionWithFilterBits ? "Yes" : "No"); + printf("Reject kink: %s\n",fKinkReject ? "Yes" : "No"); if(fOptPileup==1) printf(" -- Reject pileup event"); if(fOptPileup==2) printf(" -- Reject tracks from pileup vtx"); if(fUseCentrality>0) { @@ -1294,7 +1267,7 @@ void AliRDHFCutsLctoV0::PrintAll() const { printf("Centrality class considered: %.1f-%.1f, estimated with %s",fMinCentrality,fMaxCentrality,estimator.Data()); } if(fIsCandTrackSPDFirst) printf("Check for candidates with pt < %2.2f, that daughters fullfill kFirst criteria\n",fMaxPtCandTrackSPDFirst); - /* + if(fVarNames){ cout<<"Array of variables"<GetEtaRange(eta1,eta2); + cout << " etaRange for Bachelor: [" << eta1 << "," << eta2 << "]\n"; + } + if (fV0daughtersCuts) { + Float_t eta3=0, eta4=0; fV0daughtersCuts->GetEtaRange(eta3,eta4); + cout << " etaRange for V0daughters: [" << eta3 << "," << eta4 << "]\n"; + } return; } @@ -1368,3 +1348,101 @@ Bool_t AliRDHFCutsLctoV0::IsInFiducialAcceptance(Double_t pt, Double_t y) const // return kTRUE; } +//--------------------------------------------------------------------------- +Bool_t AliRDHFCutsLctoV0::AreLctoV0DaughtersSelected(AliAODRecoDecayHF *dd) const{ + // + // Daughter tracks selection + // + + AliAODRecoCascadeHF* d = (AliAODRecoCascadeHF*)dd; + if (!d) { + AliDebug(2,"AliAODRecoCascadeHF null"); + return kFALSE; + } + + if (!fTrackCuts) { + AliFatal("Cut object is not defined for bachelor. Candidate accepted."); + return kFALSE; + } + + AliAODTrack * bachelorTrack = dynamic_cast(d->GetBachelor()); + if (!bachelorTrack) return kFALSE; + + if (fIsCandTrackSPDFirst && d->Pt()HasPointOnITSLayer(0)) return kFALSE; + } + + if (fKinkReject != (!(fTrackCuts->GetAcceptKinkDaughters())) ) { + AliError(Form("Not compatible setting: fKinkReject=%1d - fTrackCuts->GetAcceptKinkDaughters()=%1d",fKinkReject, fTrackCuts->GetAcceptKinkDaughters())); + return kFALSE; + } + + AliAODVertex *vAOD = d->GetPrimaryVtx(); + Double_t pos[3]; vAOD->GetXYZ(pos); + Double_t cov[6]; vAOD->GetCovarianceMatrix(cov); + const AliESDVertex vESD(pos,cov,100.,100); + + if (!IsDaughterSelected(bachelorTrack,&vESD,fTrackCuts)) return kFALSE; + + if (!fV0daughtersCuts) { + AliFatal("Cut object is not defined for V0daughters. Candidate accepted."); + return kFALSE; + } + + AliAODv0 * v0 = dynamic_cast(d->Getv0()); + if (!v0) return kFALSE; + AliAODTrack *v0positiveTrack = dynamic_cast(d->Getv0PositiveTrack()); + if (!v0positiveTrack) return kFALSE; + AliAODTrack *v0negativeTrack = dynamic_cast(d->Getv0NegativeTrack()); + if (!v0negativeTrack) return kFALSE; + + + Float_t etaMin=0, etaMax=0; fV0daughtersCuts->GetEtaRange(etaMin,etaMax); + if ( (v0positiveTrack->Eta()<=etaMin || v0positiveTrack->Eta()>=etaMax) || + (v0negativeTrack->Eta()<=etaMin || v0negativeTrack->Eta()>=etaMax) ) return kFALSE; + Float_t ptMin=0, ptMax=0; fV0daughtersCuts->GetPtRange(ptMin,ptMax); + if ( (v0positiveTrack->Pt()<=ptMin || v0positiveTrack->Pt()>=ptMax) || + (v0negativeTrack->Pt()<=ptMin || v0negativeTrack->Pt()>=ptMax) ) return kFALSE; + + // Condition on nTPCclusters + if (fV0daughtersCuts->GetMinNClusterTPC()>0) { + if ( ( ( v0positiveTrack->GetTPCClusterInfo(2,1) ) < fV0daughtersCuts->GetMinNClusterTPC() ) || + ( ( v0negativeTrack->GetTPCClusterInfo(2,1) ) < fV0daughtersCuts->GetMinNClusterTPC() ) ) return kFALSE; + } + + // kTPCrefit status + if (v0->GetOnFlyStatus()==kFALSE) { // only for offline V0s + if (fV0daughtersCuts->GetRequireTPCRefit()) { + if( !(v0positiveTrack->GetStatus() & AliESDtrack::kTPCrefit)) return kFALSE; + if( !(v0negativeTrack->GetStatus() & AliESDtrack::kTPCrefit)) return kFALSE; + } + } + // kink condition + if (!fV0daughtersCuts->GetAcceptKinkDaughters()) { + AliAODVertex *maybeKinkPos = (AliAODVertex*)v0positiveTrack->GetProdVertex(); + AliAODVertex *maybeKinkNeg = (AliAODVertex*)v0negativeTrack->GetProdVertex(); + if (maybeKinkPos->GetType()==AliAODVertex::kKink || + maybeKinkNeg->GetType()==AliAODVertex::kKink) return kFALSE; + } + // Findable clusters > 0 condition - from V0 analysis + //if( v0positiveTrack->GetTPCNclsF()<=0 || v0negativeTrack->GetTPCNclsF()<=0 ) return kFALSE; + /* + Float_t lPosTrackCrossedRows = v0positiveTrack->GetTPCClusterInfo(2,1); + Float_t lNegTrackCrossedRows = v0positiveTrack->GetTPCClusterInfo(2,1); + fTreeVariableLeastNbrCrossedRows = (Int_t) lPosTrackCrossedRows; + if( lNegTrackCrossedRows < fTreeVariableLeastNbrCrossedRows ) + fTreeVariableLeastNbrCrossedRows = (Int_t) lNegTrackCrossedRows; + //Compute ratio Crossed Rows / Findable clusters + //Note: above test avoids division by zero! + Float_t lPosTrackCrossedRowsOverFindable = lPosTrackCrossedRows / ((double)(pTrack->GetTPCNclsF())); + Float_t lNegTrackCrossedRowsOverFindable = lNegTrackCrossedRows / ((double)(nTrack->GetTPCNclsF())); + fTreeVariableLeastRatioCrossedRowsOverFindable = lPosTrackCrossedRowsOverFindable; + if( lNegTrackCrossedRowsOverFindable < fTreeVariableLeastRatioCrossedRowsOverFindable ) + fTreeVariableLeastRatioCrossedRowsOverFindable = lNegTrackCrossedRowsOverFindable; + //Lowest Cut Level for Ratio Crossed Rows / Findable = 0.8, set here + if ( fTreeVariableLeastRatioCrossedRowsOverFindable < 0.8 ) return kFALSE; + */ + + return kTRUE; + +} diff --git a/PWGHF/vertexingHF/AliRDHFCutsLctoV0.h b/PWGHF/vertexingHF/AliRDHFCutsLctoV0.h index 1a5cb870e65..939ec68d01a 100644 --- a/PWGHF/vertexingHF/AliRDHFCutsLctoV0.h +++ b/PWGHF/vertexingHF/AliRDHFCutsLctoV0.h @@ -48,7 +48,7 @@ class AliRDHFCutsLctoV0 : public AliRDHFCuts Int_t IsSelectedSingleCut(TObject* obj, Int_t selectionLevel, Int_t cutIndex); - Int_t CombinePIDCuts (Int_t returnvalue, Int_t returnvaluePID) const; + Int_t CombineCuts (Int_t returnvalueTrack, Int_t returnvalue, Int_t returnvaluePID) const; Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(7,iPtBin)] : 1.e6);} @@ -56,6 +56,8 @@ class AliRDHFCutsLctoV0 : public AliRDHFCuts void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;} Int_t GetPidSelectionFlag() {return fPidSelectionFlag;} + Bool_t AreLctoV0DaughtersSelected(AliAODRecoDecayHF *rd) const; + Int_t GetV0Type(); virtual void SetStandardCutsPP2010(); @@ -76,9 +78,8 @@ class AliRDHFCutsLctoV0 : public AliRDHFCuts AliAODPidHF * GetPidV0pos() { return fPidHFV0pos; } AliAODPidHF * GetPidV0neg() { return fPidHFV0neg; } - void AddTrackCutsV0daughters(AliESDtrackCuts* v0daug) { - fV0daughtersCuts = new AliESDtrackCuts(*v0daug); - } + void AddTrackCutsV0daughters(AliESDtrackCuts* v0daug) + { delete fV0daughtersCuts; fV0daughtersCuts = new AliESDtrackCuts(*v0daug); } virtual AliESDtrackCuts *GetTrackCutsV0daughters() const {return fV0daughtersCuts;} virtual void PrintAll() const; diff --git a/PWGHF/vertexingHF/ConfigVertexingHF.C b/PWGHF/vertexingHF/ConfigVertexingHF.C index 71f29081555..9a94ab521f0 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF.C @@ -84,6 +84,16 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent.C index ccc395f61b5..3070b78c4ee 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent.C @@ -208,6 +208,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS.C index d53d5b03d7a..eb32540bcb2 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS.C @@ -206,7 +206,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { AliRDHFCutsLctoV0 *cutsLctoV0 = new AliRDHFCutsLctoV0("CutsLctoV0"); Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); - cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_16var.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_16var.C index 41ca330cc7b..1165df043cc 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_16var.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_16var.C @@ -207,6 +207,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar.C index 889b67473b3..b031c956635 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar.C @@ -209,6 +209,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar_16var.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar_16var.C index 556d8af2b12..a54716d3ca4 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar_16var.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_NoDstar_16var.C @@ -208,6 +208,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_PIDLc.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_PIDLc.C index 97e8a3c0a92..3bddd822152 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_PIDLc.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_AllCent_NoLS_PIDLc.C @@ -223,6 +223,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_Cent2080.C b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_Cent2080.C index 419542031c1..b721444cf67 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_Pb_Cent2080.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_Pb_Cent2080.C @@ -171,6 +171,16 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C b/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C index d99ad183a9f..c4068fe2674 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C @@ -169,6 +169,16 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/ConfigVertexingHF_pp_LambdaC.C b/PWGHF/vertexingHF/ConfigVertexingHF_pp_LambdaC.C index 71e32567166..27f4bdc6a23 100644 --- a/PWGHF/vertexingHF/ConfigVertexingHF_pp_LambdaC.C +++ b/PWGHF/vertexingHF/ConfigVertexingHF_pp_LambdaC.C @@ -84,6 +84,16 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { Float_t cutsArrayLctoV0[17]={1.0,1.0,0.05,0.05,0.0,0.0,0.0,1000.,1000.,0.99,3.,1000.,0.,0.,0.,0.,0.0}; cutsLctoV0->SetCuts(17,cutsArrayLctoV0); cutsLctoV0->AddTrackCuts(esdTrackCuts); + AliESDtrackCuts *esdV0daughterTrackCuts = new AliESDtrackCuts("AliESDtrackCutsForV0D","default cuts for V0 daughters"); + esdV0daughterTrackCuts->SetRequireTPCRefit(kTRUE); + esdV0daughterTrackCuts->SetMinNClustersTPC(30); + esdV0daughterTrackCuts->SetRequireITSRefit(kFALSE); + esdV0daughterTrackCuts->SetMinDCAToVertexXY(0.); + esdV0daughterTrackCuts->SetPtRange(0.05,1.e10); + esdV0daughterTrackCuts->SetEtaRange(-1.1,+1.1); + esdV0daughterTrackCuts->SetAcceptKinkDaughters(kTRUE); + esdV0daughterTrackCuts->SetRequireSigmaToVertex(kFALSE); + cutsLctoV0->AddTrackCutsV0daughters(esdV0daughterTrackCuts); vHF->SetCutsLctoV0(cutsLctoV0); // //--- set this if you want to reconstruct primary vertex candidate by diff --git a/PWGHF/vertexingHF/macros/makeTFile4CutsLctoV0bachelor.C b/PWGHF/vertexingHF/macros/makeTFile4CutsLctoV0bachelor.C index 57e084f940e..b4998ac1d99 100644 --- a/PWGHF/vertexingHF/macros/makeTFile4CutsLctoV0bachelor.C +++ b/PWGHF/vertexingHF/macros/makeTFile4CutsLctoV0bachelor.C @@ -20,18 +20,6 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ - AliRDHFCutsLctoV0* RDHFLctoV0Prod=new AliRDHFCutsLctoV0(); - RDHFLctoV0Prod->SetName("LctoV0ProductionCuts"); - RDHFLctoV0Prod->SetTitle("Production cuts for Lc analysis"); - AliESDtrackCuts* esdTrackCutsProd=new AliESDtrackCuts(); - RDHFLctoV0Prod->AddTrackCuts(esdTrackCutsProd); - RDHFLctoV0Prod->AddTrackCutsV0daughters(esdTrackCutsProd); - RDHFLctoV0Prod->SetUseTrackSelectionWithFilterBits(kFALSE); - RDHFLctoV0Prod->SetPidSelectionFlag(2); // 0 -> TOF AND TPC - // 1 -> if (TOF) TOF else TPC w veto - // 2 -> if (p<1) TPC@3s else if (1<=p<2.5) {if (TOF) TOF@3s AND TPC@3s} else (p>=2.5) {if (TOF) -2s if (p<1) TPC@3s else if (1<=p<2.5) {if (TOF) TOF@3s AND TPC@3s} else if (2.5<=p<3) {if (TOF) -2s=3) {if (TOF) -2sSetRequireSigmaToVertex(kFALSE); //default @@ -43,13 +31,11 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ // AliESDtrackCuts::kAny); // default is kBoth, otherwise kAny esdTrackCuts->SetMinDCAToVertexXY(0.); - //esdTrackCuts->SetPtRange(0.3,1.e10); esdTrackCuts->SetPtRange(0.,1.e10); esdTrackCuts->SetEtaRange(-0.8,0.8); esdTrackCuts->SetAcceptKinkDaughters(kFALSE); - AliESDtrackCuts* esdTrackCutsV0daughters=new AliESDtrackCuts(); esdTrackCutsV0daughters->SetRequireSigmaToVertex(kFALSE); //default @@ -65,21 +51,19 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ esdTrackCutsV0daughters->SetEtaRange(-0.8,0.8); esdTrackCutsV0daughters->SetAcceptKinkDaughters(kFALSE); - - AliRDHFCutsLctoV0* RDHFLctoV0An=new AliRDHFCutsLctoV0(); RDHFLctoV0An->SetName("LctoV0AnalysisCuts"); RDHFLctoV0An->SetTitle("Analysis cuts for Lc analysis"); + RDHFLctoV0An->SetKinkRejection(!esdTrackCuts->GetAcceptKinkDaughters()); RDHFLctoV0An->AddTrackCuts(esdTrackCuts); RDHFLctoV0An->AddTrackCutsV0daughters(esdTrackCutsV0daughters); - RDHFLctoV0An->SetUseTrackSelectionWithFilterBits(kFALSE); + RDHFLctoV0An->SetUseTrackSelectionWithFilterBits(kTRUE); RDHFLctoV0An->SetPidSelectionFlag(2); // 0 -> TOF AND TPC // 1 -> if (TOF) TOF else TPC w veto // 2 -> if (p>1) TPC@3s else if (1<=p<2.5) {if (TOF) TOF@3s AND TPC@3s} else (p>=2.5) {if (TOF) -2s if (p>1) TPC@3s else if (1<=p<2.5) {if (TOF) TOF@3s AND TPC@3s} else if (2.5<=p<3) {if (TOF) -2s=3) {if (TOF) -2sSetNPtBins(nptbins); + const Int_t nptbins=14; RDHFLctoV0An->SetNPtBins(nptbins); Float_t* ptbins; @@ -91,72 +75,112 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ ptbins[4]= 4.; ptbins[5]= 5.; ptbins[6]= 6.; - ptbins[7]= 8.; - ptbins[8]=12.; - ptbins[9]=99999999.; - RDHFLctoV0Prod->SetPtBins(nptbins+1,ptbins); + ptbins[7]= 7.; + ptbins[8]= 8.; + ptbins[9]= 9.; + ptbins[10]=10.; + ptbins[11]=12.; + ptbins[12]=17.; + ptbins[13]=25.; + ptbins[14]=35.; RDHFLctoV0An->SetPtBins(nptbins+1,ptbins); const Int_t nvars=17; - Float_t** prodcutsval; - prodcutsval=new Float_t*[nvars]; - for(Int_t ic=0;icSetCuts(nvars,nptbins,prodcutsval); - Float_t** anacutsval; anacutsval=new Float_t*[nvars]; for(Int_t ic=0;ic WE ARE SEARCHING Lc -> p+K0S, so cut on m(Lambda) has to be leave as it was at filtering level!!! anacutsval[5][ipt2]=0.2; // pT min V0-positive track [GeV/c] anacutsval[6][ipt2]=0.2; // pT min V0-negative track [GeV/c] anacutsval[7][ipt2]=1000.; // dca cascade cut [cm] anacutsval[8][ipt2]=1.5; // dca V0 cut [nSigma] // it's 1.5 x offline V0s - anacutsval[9][ipt2]=0.99; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level - anacutsval[10][ipt2]=0.05; // d0 max bachelor wrt PV [cm] - anacutsval[11][ipt2]=0.1; // d0 max V0 wrt PV [cm] + anacutsval[11][ipt2]=0.09; // d0 max V0 wrt PV [cm] anacutsval[12][ipt2]=0.; // mass K0S veto [GeV/c2] anacutsval[13][ipt2]=0.005; // mass Lambda/LambdaBar veto [GeV/c2] - anacutsval[14][ipt2]=0.100; // mass Gamma veto [GeV/c2] + anacutsval[14][ipt2]=0.300; // mass Gamma veto [GeV/c2] anacutsval[16][ipt2]=0.; // V0 type cut } - anacutsval[15][0]=0.0; // pT min V0 track [GeV/c] + anacutsval[2][0]=0.00346*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][1]=0.00360*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][2]=0.00385*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][3]=0.00406*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][4]=0.00429*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][5]=0.00450*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][6]=0.00450*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][7]=0.00450*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][8]=0.00520*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][9]=0.00520*2.; // inv. mass V0 if K0S [GeV/c2] + anacutsval[2][10]=0.00520*2.;// inv. mass V0 if K0S [GeV/c2] + anacutsval[2][11]=0.00520*2.;// inv. mass V0 if K0S [GeV/c2] + anacutsval[2][12]=0.00520*2.;// inv. mass V0 if K0S [GeV/c2] + anacutsval[2][13]=0.00520*2.;// inv. mass V0 if K0S [GeV/c2] + + anacutsval[4][0]=0.6; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][1]=0.5; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][2]=0.6; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][3]=0.7; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][4]=0.8; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][5]=0.9; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][6]=1.0; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][7]=1.2; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][8]=1.4; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][9]=1.7; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][10]=2.0; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][11]=2.0; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][12]=2.0; // pT min bachelor track [GeV/c] // AOD by construction + anacutsval[4][13]=2.0; // pT min bachelor track [GeV/c] // AOD by construction + + anacutsval[9][0]=0.994; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][1]=0.994; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][2]=0.998; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][3]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][4]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][5]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][6]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][7]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][8]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][9]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][10]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][11]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][12]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + anacutsval[9][13]=0.999; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level + + anacutsval[10][0]=0.05; // d0 max bachelor wrt PV [cm] + anacutsval[10][1]=0.04; // d0 max bachelor wrt PV [cm] + anacutsval[10][2]=0.03; // d0 max bachelor wrt PV [cm] + anacutsval[10][3]=0.05; // d0 max bachelor wrt PV [cm] + anacutsval[10][4]=0.05; // d0 max bachelor wrt PV [cm] + anacutsval[10][5]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][6]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][7]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][8]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][9]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][10]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][11]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][12]=0.02; // d0 max bachelor wrt PV [cm] + anacutsval[10][13]=0.02; // d0 max bachelor wrt PV [cm] + + + anacutsval[15][0]=0.5; // pT min V0 track [GeV/c] anacutsval[15][1]=0.6; // pT min V0 track [GeV/c] - anacutsval[15][2]=0.8; // pT min V0 track [GeV/c] - anacutsval[15][3]=0.8; // pT min V0 track [GeV/c] + anacutsval[15][2]=0.7; // pT min V0 track [GeV/c] + anacutsval[15][3]=0.7; // pT min V0 track [GeV/c] anacutsval[15][4]=0.8; // pT min V0 track [GeV/c] - anacutsval[15][5]=1.0; // pT min V0 track [GeV/c] + anacutsval[15][5]=0.9; // pT min V0 track [GeV/c] anacutsval[15][6]=1.0; // pT min V0 track [GeV/c] anacutsval[15][7]=1.0; // pT min V0 track [GeV/c] - anacutsval[15][8]=0.0; // pT min V0 track [GeV/c] - anacutsval[15][9]=0.0; // pT min V0 track [GeV/c] + anacutsval[15][8]=1.2; // pT min V0 track [GeV/c] + anacutsval[15][9]=1.2; // pT min V0 track [GeV/c] + anacutsval[15][10]=1.2; // pT min V0 track [GeV/c] + anacutsval[15][11]=1.2; // pT min V0 track [GeV/c] + anacutsval[15][12]=1.2; // pT min V0 track [GeV/c] + anacutsval[15][13]=1.2; // pT min V0 track [GeV/c] + RDHFLctoV0An->SetCuts(nvars,nptbins,anacutsval); @@ -176,7 +200,6 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ pidObjBachelor->SetTOFdecide(kFALSE); RDHFLctoV0An->SetPidHF(pidObjBachelor); - RDHFLctoV0Prod->SetPidHF(pidObjBachelor); //2. V0pos AliAODPidHF* pidObjV0pos = new AliAODPidHF(); @@ -189,7 +212,6 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ pidObjV0pos->SetTOFdecide(kFALSE); RDHFLctoV0An->SetPidV0pos(pidObjV0pos); - RDHFLctoV0Prod->SetPidV0pos(pidObjV0pos); //2. V0neg AliAODPidHF* pidObjV0neg = new AliAODPidHF(); @@ -202,7 +224,6 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ pidObjV0neg->SetTOFdecide(kFALSE); RDHFLctoV0An->SetPidV0neg(pidObjV0neg); - RDHFLctoV0Prod->SetPidV0neg(pidObjV0neg); // uncomment these lines for Baysian PID: @@ -221,17 +242,13 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ Bool_t pidflag=kTRUE; RDHFLctoV0An->SetUsePID(pidflag); - RDHFLctoV0Prod->SetUsePID(kFALSE); if(pidflag) cout<<"PID is used"<PrintAll(); - cout<<"This is the object I'm going to save:"<PrintAll(); TFile* fout=new TFile("Lc2pK0SCuts.root","RECREATE"); fout->cd(); - RDHFLctoV0Prod->Write(); RDHFLctoV0An->Write(); fout->Close(); delete fout; @@ -239,8 +256,7 @@ void makeInputAliAnalysisTaskSELctoV0bachelor(){ delete pidObjBachelor; delete pidObjV0neg; delete pidObjV0pos; - delete RDHFLctoV0Prod; - delete RDHFLctoV0An; + //delete RDHFLctoV0An; } @@ -262,8 +278,8 @@ void makeInputAliAnalysisTaskSESignificanceMaximization(){ esdTrackCuts->SetMinNClustersITS(0); //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny); esdTrackCuts->SetMinDCAToVertexXY(0.); - //esdTrackCuts->SetEtaRange(-0.8,0.8); - esdTrackCuts->SetPtRange(0.3,1.e10); + esdTrackCuts->SetEtaRange(-0.8,0.8); + esdTrackCuts->SetPtRange(0.,1.e10); AliESDtrackCuts* esdTrackCutsV0daughters=new AliESDtrackCuts(); esdTrackCutsV0daughters->SetRequireSigmaToVertex(kFALSE); -- 2.43.0