X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWGLF%2FRESONANCES%2FAliRsnCutSetDaughterParticle.cxx;h=db7b2ed0292636b4535a3e3a69e898c6d1929b86;hb=46e377fbcf450ba9bd869f0db80312374702c919;hp=26763682e0986c93b52e87d2175994dabfe7ebc7;hpb=6b5662ca53ee665cbaff7104431d5780ab9d560d;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx b/PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx index 26763682e09..db7b2ed0292 100644 --- a/PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx +++ b/PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx @@ -23,56 +23,116 @@ AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() : fNsigmaTPC(1E20), fNsigmaTOF(1E20), fCutQuality(0x0), - fAODTrkCutFilterBit(0) + fAODTrkCutFilterBit(0), + fCheckOnlyFilterBit(kTRUE), + fUseCustomQualityCuts(kFALSE), + fIsUse2011stdQualityCuts(kFALSE), + fIsUse2011stdQualityCutsHighPt(kFALSE) { // // Default constructor + SetPtRange(0.0, 1E20); + SetEtaRange(1E20, 1E20); } //__________________________________________________________________________________________________ -AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) : +AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0, Bool_t useTPCCrossedRows=kTRUE) : AliRsnCutSet(name, AliRsnTarget::kDaughter), fPID(pid), fAppliedCutSetID(cutSetID), - fNsigmaTPC(1E20), - fNsigmaTOF(1E20), + fNsigmaTPC(nSigmaFast), + fNsigmaTOF(nSigmaFast), fCutQuality(new AliRsnCutTrackQuality("CutQuality")), - fAODTrkCutFilterBit(AODfilterBit) + fAODTrkCutFilterBit(AODfilterBit), + fCheckOnlyFilterBit(kTRUE), + fUseCustomQualityCuts(kFALSE), + fIsUse2011stdQualityCuts(kFALSE), + fIsUse2011stdQualityCutsHighPt(kFALSE) { - // - // Constructor - // - if ( (nSigmaFast<=0) && - ((cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma)) ) { - AliError("Requested fast n-sigma PID with invalid value for n. Setting n = 1E20"); - } else { - if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) { - fNsigmaTPC = nSigmaFast; - } - if (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma) { - fNsigmaTPC = nSigmaFast; - } - if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) || - (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) { - fNsigmaTOF = nSigmaFast; - } - } + // + // Constructor + // + //set here pt and eta range + SetPtRange(0.15, 20.0); + SetEtaRange(-0.8, 0.8); + + //if nsigma not specified, sets "no-PID" cuts + if (nSigmaFast<=0){ + fNsigmaTPC=1e20; + fNsigmaTOF=1e20; + AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20"); + } + + //initialize quality std and PID cuts + InitStdQualityCuts(useTPCCrossedRows); + Init(); +} - Init(); +//__________________________________________________________________________________________________ +AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutTrackQuality *rsnTrackQualityCut, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) : + AliRsnCutSet(name, AliRsnTarget::kDaughter), + fPID(pid), + fAppliedCutSetID(cutSetID), + fNsigmaTPC(nSigmaFast), + fNsigmaTOF(nSigmaFast), + fCutQuality(rsnTrackQualityCut), + fAODTrkCutFilterBit(0), + fCheckOnlyFilterBit(kFALSE), + fUseCustomQualityCuts(kFALSE), + fIsUse2011stdQualityCuts(kFALSE), + fIsUse2011stdQualityCutsHighPt(kFALSE) +{ + // + // Constructor: uses externally-defined track-quality cut object + // + if (!rsnTrackQualityCut) { + //if external track quality cut object not defined, + //sets default track quality to be initialised (with cut on TPC crossed rows) + + //sets here pt and eta cuts + InitStdQualityCuts(kTRUE); + SetPtRange(0.15, 20.0); + SetEtaRange(-0.8, 0.8); + } else { + //checks validity of passed quality-cut object + //if Ok, inherits all cuts including Pt and Eta cut + fCheckOnlyFilterBit=kFALSE; + fUseCustomQualityCuts = kTRUE; + SetPtRange(rsnTrackQualityCut->GetPtRange(0), rsnTrackQualityCut->GetPtRange(1)); + SetEtaRange(rsnTrackQualityCut->GetEtaRange(0),rsnTrackQualityCut->GetEtaRange(1)); + AliInfo("Custom quality cuts applied"); + rsnTrackQualityCut->Print(); + } + + //if nsigma not specified, sets "no-PID" cuts + if (nSigmaFast<=0){ + fNsigmaTPC=1e20; + fNsigmaTOF=1e20; + AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20"); + } + + //initialize PID cuts + Init(); } + //__________________________________________________________________________________________________ AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) : - AliRsnCutSet(copy), - fPID(copy.fPID), - fAppliedCutSetID(copy.fAppliedCutSetID), - fNsigmaTPC(copy.fNsigmaTPC), - fNsigmaTOF(copy.fNsigmaTOF), - fCutQuality(copy.fCutQuality), - fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit) + AliRsnCutSet(copy), + fPID(copy.fPID), + fAppliedCutSetID(copy.fAppliedCutSetID), + fNsigmaTPC(copy.fNsigmaTPC), + fNsigmaTOF(copy.fNsigmaTOF), + fCutQuality(copy.fCutQuality), + fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit), + fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit), + fUseCustomQualityCuts(copy.fUseCustomQualityCuts), + fIsUse2011stdQualityCuts(copy.fIsUse2011stdQualityCuts), + fIsUse2011stdQualityCutsHighPt(copy.fIsUse2011stdQualityCutsHighPt) { - // - // copy constructor + // + // copy constructor + SetPtRange(copy.fPtRange[0], copy.fPtRange[1]); + SetEtaRange(copy.fEtaRange[0], copy.fEtaRange[1]); } //__________________________________________________________________________________________________ @@ -89,6 +149,10 @@ AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliR fNsigmaTPC=copy.fNsigmaTPC; fNsigmaTOF=copy.fNsigmaTOF; fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit; + fCheckOnlyFilterBit=copy.fCheckOnlyFilterBit; + fUseCustomQualityCuts=copy.fUseCustomQualityCuts; + fIsUse2011stdQualityCuts=copy.fIsUse2011stdQualityCuts; + fIsUse2011stdQualityCutsHighPt=copy.fIsUse2011stdQualityCutsHighPt; fCutQuality=copy.fCutQuality; return (*this); } @@ -102,36 +166,26 @@ AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle() if (fCutQuality) delete fCutQuality; } + //---------------------------------------------------------------------------- void AliRsnCutSetDaughterParticle::Init() { - // - // init cut sets by setting variable params - // - fCutQuality->SetDefaults2010(); - fCutQuality->SetPtRange(0.15, 20.0); - fCutQuality->SetEtaRange(-0.8, 0.8); - fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01"); - fCutQuality->SetDCAZmax(2.0); - fCutQuality->SetSPDminNClusters(1); - fCutQuality->SetITSminNClusters(0); - fCutQuality->SetITSmaxChi2(36); - fCutQuality->SetTPCminNClusters(70); - fCutQuality->SetTPCmaxChi2(4.0); - fCutQuality->SetRejectKinkDaughters(); - fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit); - //fCutQuality->SetITSmaxChi2(36); - //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36); - - AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch"); - AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP ); - AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP ); - AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP ); - AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD"); - AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD"); - - switch (fAppliedCutSetID) - { + + //define TOF match cut + AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch"); + //define PID cuts + AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP ); + AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP ); + AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP ); + //define phi (azimuthal angle) cuts for TRD presence + AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF"); + AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF"); + + // + //defines cut schemes by combining quality cuts and PID cuts + // + switch (fAppliedCutSetID) + { case AliRsnCutSetDaughterParticle::kNoCuts : AliInfo("No cuts applied to daughter particle"); break; @@ -142,7 +196,11 @@ void AliRsnCutSetDaughterParticle::Init() break; case AliRsnCutSetDaughterParticle::kQualityStd2011: - //fCutQuality->SetAODTestFilterBit(10); //1024 + AddCut(fCutQuality); + SetCutScheme(fCutQuality->GetName()); + break; + + case AliRsnCutSetDaughterParticle::kQualityStd2011HighPt: AddCut(fCutQuality); SetCutScheme(fCutQuality->GetName()); break; @@ -229,69 +287,404 @@ void AliRsnCutSetDaughterParticle::Init() AddCut(iCutTPCTOFNSigma); SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) ); break; - + case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 : - AddCut(fCutQuality); - AddCut(iCutTOFMatch); - AddCut(iCutPhiTRD2010); - SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) ); - break; + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + AddCut(iCutPhiTRD2010); + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) ); + break; case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 : - AddCut(fCutQuality); - AddCut(iCutTOFMatch); - AddCut(iCutPhiNoTRD2010); - SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) ); - break; - - case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010: - if (fNsigmaTOF <= 0.0) { - AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); - SetNsigmaForFastTOFpid(10.0); - } - iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); - //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20); - iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal - - AddCut(fCutQuality); - AddCut(iCutTOFNSigma); - AddCut(iCutTPCTOFNSigma); - AddCut(iCutPhiTRD2010); - SetCutScheme( Form("%s&%s&%s%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) ); - break; - - case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010: - if (fNsigmaTOF <= 0.0) { - AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); - SetNsigmaForFastTOFpid(10.0); - } - iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); - //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20); - iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal - - AddCut(fCutQuality); - AddCut(iCutTOFNSigma); - AddCut(iCutTPCTOFNSigma); - AddCut(iCutPhiNoTRD2010); - SetCutScheme( Form("%s&%s&%s%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) ); - break; + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + AddCut(iCutPhiNoTRD2010); + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010: + if (fNsigmaTOF <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); + SetNsigmaForFastTOFpid(10.0); + } + iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); + //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20); + iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal + + AddCut(fCutQuality); + AddCut(iCutTOFNSigma); + AddCut(iCutTPCTOFNSigma); + AddCut(iCutPhiTRD2010); + SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010: + if (fNsigmaTOF <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); + SetNsigmaForFastTOFpid(10.0); + } + iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); + //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20); + iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal + + AddCut(fCutQuality); + AddCut(iCutTOFNSigma); + AddCut(iCutTPCTOFNSigma); + AddCut(iCutPhiNoTRD2010); + SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) ); + break; case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma : - if (fNsigmaTPC <= 0.0) { - AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName())); - SetNsigmaForFastTPCpid(10.0); - } - iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); - AddCut(fCutQuality); - AddCut(iCutTPCNSigma); - AddCut(iCutTOFMatch); - SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) ); - break; + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(10.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + AddCut(iCutTOFMatch); + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kQualityStd2010TRD: + AddCut(fCutQuality); + AddCut(iCutPhiTRD2010); + SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD: + AddCut(fCutQuality); + AddCut(iCutPhiNoTRD2010); + SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011: + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(10.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011: + if (fNsigmaTOF <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); + SetNsigmaForFastTOFpid(10.0); + } + iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); + //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20); + iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal + + AddCut(fCutQuality); + AddCut(iCutTOFNSigma); + AddCut(iCutTPCTOFNSigma); + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011: + /* Set TPC PID (if no TOF)*/ + // all below 350 MeV: 5sigma + // all between 350 and 500 MeV: 3sigma + // pios above 500 MeV: 2sigma + // kaons between 500 and 700 MeV: 2sigma + // kaons above 700 MeV: rejected + iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35); + iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5); + if (fPID==AliPID::kPion) + iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20); + if (fPID==AliPID::kKaon) + iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7); + + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + AddCut(iCutTPCNSigma); + + /* set TPC+TOF PID*/ + iCutTPCTOFNSigma->SinglePIDRange(5.0); + iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5); + iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20); + + AddCut(iCutTPCTOFNSigma); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ] + SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + + case AliRsnCutSetDaughterParticle::kTPCTOFtightPidKStarPPB2011: + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(5.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + + if(fNsigmaTPC==3.0) + iCutTOFNSigma->SinglePIDRange(5.0); + if(fNsigmaTPC==2.0) + iCutTOFNSigma->SinglePIDRange(3.0); + + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TPCsigma & TOFsigma-2) ] + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(),iCutTPCNSigma->GetName(),iCutTOFNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011: + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(5.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + AddCut(iCutTOFMatch); + SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(),iCutTOFMatch->GetName()) ); + break; + + case AliRsnCutSetDaughterParticle::kTPCpidTOFveto4s: + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(5.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + AddCut(fCutQuality); + iCutTOFNSigma->SinglePIDRange(4.0); + + AddCut(iCutTPCNSigma); + AddCut(iCutTOFMatch); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ] + SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCpidTOFveto3s: + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(5.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + AddCut(fCutQuality); + iCutTOFNSigma->SinglePIDRange(3.0); + + AddCut(iCutTPCNSigma); + AddCut(iCutTOFMatch); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ] + SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kCombinedPidBestPtDep: + /* Set TPC PID (if no TOF)*/ + // all below 500 MeV: 3sigma + // all above 500 MeV: 2sigma + iCutTPCNSigma->AddPIDRange(3.0, 0.0, 0.5); + iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20); + + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + AddCut(iCutTPCNSigma); + + /* set TPC+TOF PID*/ + // pions if TOF match: TPC 5 sigma & TOF 3 sigma + // kaons if TOF match: + // below 1.5GeV/c: TPC 5 sigma & TOF 3 sigma + // above 1.5GeV/c: TPC 3 sigma & TOF 3 sigma + + if (fPID==AliPID::kPion){ + iCutTPCTOFNSigma->SinglePIDRange(5.0); + } + + if (fPID==AliPID::kKaon){ + iCutTPCTOFNSigma->AddPIDRange(5.0, 0.0, 1.5); + iCutTPCTOFNSigma->AddPIDRange(3.0, 1.5, 1E20); + } + iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1E20); + AddCut(iCutTPCTOFNSigma); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ] + SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCPidPtDep: + /* Set TPC PID (if no TOF)*/ + // all below 500 MeV: 3sigma + // all above 500 MeV: 2sigma + iCutTPCNSigma->AddPIDRange(3.0, 0.0, 0.5); + iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20); + + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + // scheme: + // quality & TPConly + SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTOFPidPtDep: + /* Set TOF PID */ + // all below 1500 MeV: 3sigma + // all above 1500 MeV: 2sigma + //TPC 5 sigma always to remove mismatch + iCutTPCTOFNSigma->SinglePIDRange(5.0); + iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5); + iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20); + + AddCut(fCutQuality); + AddCut(iCutTPCTOFNSigma); + AddCut(iCutTOFNSigma); + // scheme: + // quality & TPConly + SetCutScheme( Form("%s&%s&%s", fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCRejPtDepTOFNsigma: + /* Set TOF PID */ + // TPC mismatch rejection: + // below 1.500 GeV: 5sigma + // above 1.500 GeV: 3sigma + // TOF nsigma PID in full pT + iCutTPCTOFNSigma->AddPIDRange(5.0, 0.0, 1.5); + iCutTPCTOFNSigma->AddPIDRange(3.0, 1.5, 1E20); + + if (fNsigmaTOF <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName())); + SetNsigmaForFastTOFpid(10.0); + } + iCutTOFNSigma->SinglePIDRange(fNsigmaTOF); + + AddCut(fCutQuality); + AddCut(iCutTPCTOFNSigma); + AddCut(iCutTOFNSigma); + // scheme: + // quality & TPConly + SetCutScheme( Form("%s&%s&%s", fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCNsigmaTOFVetoPtDep: + /* Set TPC PID */ + // TOF veto: + // below 1.500 GeV: 5sigma + // above 1.500 GeV: 3sigma + // TPC nsigma PID in full pT + if (fNsigmaTPC <= 0.0) { + AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName())); + SetNsigmaForFastTPCpid(10.0); + } + iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); + + iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5); + iCutTOFNSigma->AddPIDRange(4.0, 1.5, 1E20); + + AddCut(fCutQuality); + AddCut(iCutTPCNSigma); + AddCut(iCutTOFMatch); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ] + SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + + case AliRsnCutSetDaughterParticle::kTPCTOFpidLstar : + if (fPID==AliPID::kProton) { + iCutTPCNSigma->AddPIDRange(fNsigmaTPC, 0.0, 1.1); + } + if (fPID==AliPID::kKaon) { + iCutTPCNSigma->AddPIDRange(fNsigmaTPC, 0.0, 0.6); + } + + AddCut(fCutQuality); + AddCut(iCutTOFMatch); + AddCut(iCutTPCNSigma); + + /* set TPC+TOF PID*/ + iCutTPCTOFNSigma->SinglePIDRange(5.0); + iCutTOFNSigma->AddPIDRange(fNsigmaTOF, 0.0, 10); + + AddCut(iCutTPCTOFNSigma); + AddCut(iCutTOFNSigma); + + // scheme: + // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ] + SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ; + break; + default : - break; - } - + break; + } + } +//----------------------------------------------- +void AliRsnCutSetDaughterParticle::PrintTrackQualityCuts() +{ + //Prints track quality cuts + fCutQuality->Print(); + return; +} +//----------------------------------------------- +void AliRsnCutSetDaughterParticle::InitStdQualityCuts(Bool_t useTPCCrossedRows) +{ + // initialize quality std (if not externally defined) and PID cuts + // init cut sets by setting variable params + // + // Bool_t isUse2011stdQualityCutsHighPt = ((fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011HighPt) || + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) || + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) || + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) || + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) || + // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011)); + + // Bool_t isUse2011stdQualityCuts = (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011); + + if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) { + fIsUse2011stdQualityCuts = kTRUE; + fIsUse2011stdQualityCutsHighPt = kFALSE; + } + if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011HighPt) { + fIsUse2011stdQualityCuts = kFALSE; + fIsUse2011stdQualityCutsHighPt = kTRUE; + } + + if (fIsUse2011stdQualityCuts) { + AliInfo(Form("Using 2011 std quality cuts with cut on TPC %s",(useTPCCrossedRows?"crossed rows":"N clusters"))); + fCutQuality->SetDefaults2011(useTPCCrossedRows, kFALSE);//uses filter bit 5 as default + } else { + if (fIsUse2011stdQualityCutsHighPt) { + AliInfo(Form("Using 2011 std quality cuts with cut on TPC %s for high-pT", (useTPCCrossedRows?"crossed rows":"N clusters"))); + fCutQuality->SetDefaultsHighPt2011(useTPCCrossedRows, kFALSE);//uses filter bit 10 as default + } else { + AliInfo(Form("Using 2010 std quality cuts with cut on TPC %s", (useTPCCrossedRows?"crossed rows":"N clusters"))); + fCutQuality->SetDefaults2010(useTPCCrossedRows, kFALSE); + } + } + fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit); //changes default filter bit to the chosen filter bit + AliInfo(Form("Applying cut on AOD filter bit %i", fAODTrkCutFilterBit)); + //apply pt and eta cuts + fCutQuality->SetPtRange(fPtRange[0], fPtRange[1]); + fCutQuality->SetEtaRange(fEtaRange[0], fEtaRange[1]); + AliInfo(Form("Pt range [%3.2f,%3.2f], Eta range [%3.2f, %3.2f]", fPtRange[0], fPtRange[1], fEtaRange[0], fEtaRange[1])); + return; +}