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();
}
//
if (!fCutsRD) {
- cout<<"Cut matrice not inizialized. Exit..."<<endl;
+ AliFatal("Cut matrice not inizialized. Exit...");
return 0;
}
- //PrintAll();
-
AliAODRecoCascadeHF* d = (AliAODRecoCascadeHF*)obj;
if (!d) {
AliDebug(2,"AliAODRecoCascadeHF null");
return 0;
}
- AliVTrack *cascTrk0 = dynamic_cast<AliVTrack*>(d->GetDaughter(0));
- AliVTrack *cascTrk1 = dynamic_cast<AliVTrack*>(d->GetDaughter(1));
- if (!cascTrk0 || !cascTrk1) {
- AliDebug(2,"At least one of V0daughters doesn't exist");
- return 0;
- }
-
AliAODv0 * v0 = dynamic_cast<AliAODv0*>(d->Getv0());
AliAODTrack * bachelorTrack = dynamic_cast<AliAODTrack*>(d->GetBachelor());
if (!v0 || !bachelorTrack) {
// Get the V0 daughter tracks
AliAODTrack *v0positiveTrack = dynamic_cast<AliAODTrack*>(d->Getv0PositiveTrack());
AliAODTrack *v0negativeTrack = dynamic_cast<AliAODTrack*>(d->Getv0NegativeTrack());
- //AliVTrack *trk0 = dynamic_cast<AliVTrack*>(v0->GetDaughter(0));
- //AliVTrack *trk1 = dynamic_cast<AliVTrack*>(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()<fMaxPtCandTrackSPDFirst) {
- if (!bachelorTrack->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 ||
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;
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;
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)]));
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;
// 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 ||
}
//----------------
-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;
}
//
if (!fCutsRD) {
- cout<<"Cut matrice not inizialized. Exit..."<<endl;
+ AliDebug(2,"Cut matrice not inizialized. Exit...");
return 0;
}
return 0;
}
- AliVTrack *cascTrk0 = dynamic_cast<AliVTrack*>(d->GetDaughter(0));
- AliVTrack *cascTrk1 = dynamic_cast<AliVTrack*>(d->GetDaughter(1));
- if (!cascTrk0 || !cascTrk1) {
- AliDebug(2,"At least one of V0daughters doesn't exist");
- return 0;
- }
-
AliAODv0 * v0 = dynamic_cast<AliAODv0*>(d->Getv0());
AliAODTrack * bachelorTrack = dynamic_cast<AliAODTrack*>(d->GetBachelor());
if (!v0 || !bachelorTrack) {
// Get the V0 daughter tracks
AliAODTrack *v0positiveTrack = dynamic_cast<AliAODTrack*>(d->Getv0PositiveTrack());
AliAODTrack *v0negativeTrack = dynamic_cast<AliAODTrack*>(d->Getv0NegativeTrack());
- //AliVTrack *trk0 = dynamic_cast<AliVTrack*>(v0->GetDaughter(0));
- //AliVTrack *trk1 = dynamic_cast<AliVTrack*>(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()<fMaxPtCandTrackSPDFirst) {
- if (!bachelorTrack->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;
Int_t returnvalueTot = 0;
//if ( fUsePID )
- //returnvalueTot = CombinePIDCuts(returnvalue,returnvaluePID);
+ //returnvalueTot = CombineCuts(returnvalue,returnvaluePID);
//else
returnvalueTot = returnvalue;
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) {
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"<<endl;
for(Int_t iv=0;iv<fnVars;iv++){
}
cout<<endl;
}
- */
+ if (fTrackCuts) {
+ Float_t eta1=0, eta2=0; fTrackCuts->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;
}
//
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<AliAODTrack*>(d->GetBachelor());
+ if (!bachelorTrack) return kFALSE;
+
+ if (fIsCandTrackSPDFirst && d->Pt()<fMaxPtCandTrackSPDFirst) {
+ if(!bachelorTrack->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<AliAODv0*>(d->Getv0());
+ if (!v0) return kFALSE;
+ AliAODTrack *v0positiveTrack = dynamic_cast<AliAODTrack*>(d->Getv0PositiveTrack());
+ if (!v0positiveTrack) return kFALSE;
+ AliAODTrack *v0negativeTrack = dynamic_cast<AliAODTrack*>(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;
+
+}
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);}
void SetPidSelectionFlag(Int_t a) {fPidSelectionFlag=a;}
Int_t GetPidSelectionFlag() {return fPidSelectionFlag;}
+ Bool_t AreLctoV0DaughtersSelected(AliAODRecoDecayHF *rd) const;
+
Int_t GetV0Type();
virtual void SetStandardCutsPP2010();
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;
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
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
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
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
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
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
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
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
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
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
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<TOF<3s AND TPC@3s}
- // 3 -> 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<TOF<3s AND TPC@3s} else (p>=3) {if (TOF) -2s<TOF<3s AND -3s<TPC<2s}
-
AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
//default
// 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
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<TOF<3s AND TPC@3s}
// 3 -> 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<TOF<3s AND TPC@3s} else (p>=3) {if (TOF) -2s<TOF<3s AND -3s<TPC<2s}
- const Int_t nptbins=9;
- RDHFLctoV0Prod->SetNPtBins(nptbins);
+ const Int_t nptbins=14;
RDHFLctoV0An->SetNPtBins(nptbins);
Float_t* ptbins;
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;ic<nvars;ic++){prodcutsval[ic]=new Float_t[nptbins];}
- for(Int_t ipt2=0;ipt2<nptbins;ipt2++){
- prodcutsval[0][ipt2]=1.; // inv. mass if K0S [GeV/c2]
- prodcutsval[1][ipt2]=1.; // inv. mass if Lambda [GeV/c2]
- prodcutsval[2][ipt2]=0.05; // inv. mass V0 if K0S [GeV/c2]
- prodcutsval[3][ipt2]=0.05; // inv. mass V0 if Lambda [GeV/c2]
- prodcutsval[4][ipt2]=0.3; // pT min bachelor track [GeV/c] // AOD by construction
- prodcutsval[5][ipt2]=0.; // pT min V0-positive track [GeV/c]
- prodcutsval[6][ipt2]=0.; // pT min V0-negative track [GeV/c]
- prodcutsval[7][ipt2]=1000.; // dca cascade cut [cm]
- prodcutsval[8][ipt2]=1000.; // dca V0 cut [nSigma] // it's 1.5 x offline V0s
- prodcutsval[9][ipt2]=-1.; // cosPA V0 cut // it's 0.90 x offline V0s at reconstruction level, 0.99 at filtering level
- prodcutsval[10][ipt2]=3.; // d0 max bachelor wrt PV [cm]
- prodcutsval[11][ipt2]=1000.;// d0 max V0 wrt PV [cm]
- prodcutsval[12][ipt2]=0.; // mass K0S veto [GeV/c2]
- prodcutsval[13][ipt2]=0.; // mass Lambda/LambdaBar veto [GeV/c2]
- prodcutsval[14][ipt2]=0.; // mass Gamma veto [GeV/c2]
- prodcutsval[15][ipt2]=0.; // pT min V0 track [GeV/c]
- prodcutsval[16][ipt2]=0.; // V0 type cut
- }
-
-
- RDHFLctoV0Prod->SetCuts(nvars,nptbins,prodcutsval);
-
Float_t** anacutsval;
anacutsval=new Float_t*[nvars];
for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
for(Int_t ipt2=0;ipt2<nptbins;ipt2++){
anacutsval[0][ipt2]=0.25; // inv. mass if K0S [GeV/c2]
anacutsval[1][ipt2]=0.25; // inv. mass if Lambda [GeV/c2]
- anacutsval[2][ipt2]=0.0075; // inv. mass V0 if K0S [GeV/c2]
- anacutsval[3][ipt2]=0.0030; // inv. mass V0 if Lambda [GeV/c2]
- anacutsval[4][ipt2]=0.4; // pT min bachelor track [GeV/c] // AOD by construction
+ anacutsval[3][ipt2]=0.05; // inv. mass V0 if Lambda [GeV/c2] ---> 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);
pidObjBachelor->SetTOFdecide(kFALSE);
RDHFLctoV0An->SetPidHF(pidObjBachelor);
- RDHFLctoV0Prod->SetPidHF(pidObjBachelor);
//2. V0pos
AliAODPidHF* pidObjV0pos = new AliAODPidHF();
pidObjV0pos->SetTOFdecide(kFALSE);
RDHFLctoV0An->SetPidV0pos(pidObjV0pos);
- RDHFLctoV0Prod->SetPidV0pos(pidObjV0pos);
//2. V0neg
AliAODPidHF* pidObjV0neg = new AliAODPidHF();
pidObjV0neg->SetTOFdecide(kFALSE);
RDHFLctoV0An->SetPidV0neg(pidObjV0neg);
- RDHFLctoV0Prod->SetPidV0neg(pidObjV0neg);
// uncomment these lines for Baysian PID:
Bool_t pidflag=kTRUE;
RDHFLctoV0An->SetUsePID(pidflag);
- RDHFLctoV0Prod->SetUsePID(kFALSE);
if(pidflag) cout<<"PID is used"<<endl;
else cout<<"PID is not used"<<endl;
- cout<<"This is the object I'm going to save:"<<endl;
- RDHFLctoV0Prod->PrintAll();
- cout<<"This is the object I'm going to save:"<<endl;
+ cout<<"This is the (anal) object I'm going to save:"<<endl;
RDHFLctoV0An->PrintAll();
TFile* fout=new TFile("Lc2pK0SCuts.root","RECREATE");
fout->cd();
- RDHFLctoV0Prod->Write();
RDHFLctoV0An->Write();
fout->Close();
delete fout;
delete pidObjBachelor;
delete pidObjV0neg;
delete pidObjV0pos;
- delete RDHFLctoV0Prod;
- delete RDHFLctoV0An;
+ //delete RDHFLctoV0An;
}
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);