// // This cut implements all the checks done to accept a track as a Kaon // for the pp analysis using 2010 runs. // It is based on standard cuts on track quality and nsigma cuts // with respect to the TPC and TOF signals for the PID. // #include #include "AliPID.h" #include "AliPIDResponse.h" #include "AliESDpid.h" #include "AliAODpidUtil.h" #include "AliRsnCutKaonForPhi2010PP.h" ClassImp(AliRsnCutKaonForPhi2010PP) //__________________________________________________________________________________________________ AliRsnCutKaonForPhi2010PP::AliRsnCutKaonForPhi2010PP(const char *name) : AliRsnCut(name, AliRsnTarget::kDaughter, -3.0, 3.0), fNSigmaTPCLow(5.0), fNSigmaTPCHigh(3.0), fLimitTPC(0.350), fNSigmaTOF(3.0), fMyPID(0x0), fCutQuality(Form("%sQuality", name)) { // // Constructor // Initialize the contained cuts and sets defaults // // track quality //fCutQuality.AddStatusFlag(AliESDtrack::kTPCin , kTRUE); //fCutQuality.AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE); //fCutQuality.AddStatusFlag(AliESDtrack::kITSrefit, kTRUE); fCutQuality.SetPtRange(0.15, 1E+20); 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(1E+20); fCutQuality.SetTPCminNClusters(70); fCutQuality.SetTPCmaxChi2(4.0); fCutQuality.SetRejectKinkDaughters(); fCutQuality.SetAODTestFilterBit(5); } //__________________________________________________________________________________________________ AliRsnCutKaonForPhi2010PP::AliRsnCutKaonForPhi2010PP(const AliRsnCutKaonForPhi2010PP ©) : AliRsnCut(copy), fNSigmaTPCLow(copy.fNSigmaTPCLow), fNSigmaTPCHigh(copy.fNSigmaTPCHigh), fLimitTPC(copy.fLimitTPC), fNSigmaTOF(copy.fNSigmaTOF), fMyPID(copy.fMyPID), fCutQuality(copy.fCutQuality) { // // Copy constructor // } //__________________________________________________________________________________________________ AliRsnCutKaonForPhi2010PP &AliRsnCutKaonForPhi2010PP::operator=(const AliRsnCutKaonForPhi2010PP ©) { // // Assignment operator // AliRsnCut::operator=(copy); if (this == ©) return *this; fNSigmaTPCLow = copy.fNSigmaTPCLow; fNSigmaTPCHigh = copy.fNSigmaTPCHigh; fLimitTPC = copy.fLimitTPC; fNSigmaTOF = copy.fNSigmaTOF; fMyPID = copy.fMyPID; fCutQuality = copy.fCutQuality; return *this; } //__________________________________________________________________________________________________ void AliRsnCutKaonForPhi2010PP::InitMyPID(Bool_t isMC, Bool_t isESD) { // // Initialize manual PID object // if (isESD) fMyPID = new AliESDpid(isMC); else fMyPID = new AliAODpidUtil(isMC); } //__________________________________________________________________________________________________ Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj) { // // Global check // // coherence check if (!TargetOK(obj)) return kFALSE; // check track AliVTrack *track = dynamic_cast(fDaughter->GetRef()); if (!track) return kFALSE; // check flags if ((track->GetStatus() & AliESDtrack::kTPCin ) == 0) return kFALSE; if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) return kFALSE; if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) return kFALSE; // quality if (!fCutQuality.IsSelected(obj)) return kFALSE; // check initialization of PID object AliPIDResponse *pid = fEvent->GetPIDResponse(); if (!pid) { AliFatal("NULL PID response"); return kFALSE; } // PID TPC : // depends on momentum // and if local PID object is initialized, it is used instead of that got from manager Double_t mom = track->GetTPCmomentum(); mom = TMath::Abs(mom); if (mom < fLimitTPC) SetRangeD(0.0, fNSigmaTPCLow); else SetRangeD(0.0, fNSigmaTPCHigh); if (fMyPID) fCutValueD = TMath::Abs(fMyPID->NumberOfSigmasTPC(track, AliPID::kKaon)); else fCutValueD = TMath::Abs(pid->NumberOfSigmasTPC(track, AliPID::kKaon)); if (!OkRangeD()) return kFALSE; // if TOF is not matched, end here // otherwise check TOF if (!MatchTOF(track)) return kTRUE; else { SetRangeD(0.0, fNSigmaTOF); fCutValueD = TMath::Abs(pid->NumberOfSigmasTOF(track, AliPID::kKaon)); return OkRangeD(); } }