2 // This cut implements all the checks done to accept a track as a Kaon
3 // for the pp analysis using 2010 runs.
4 // It is based on standard cuts on track quality and nsigma cuts
5 // with respect to the TPC and TOF signals for the PID.
11 #include "AliPIDResponse.h"
12 #include "AliESDpid.h"
13 #include "AliAODpidUtil.h"
15 #include "AliRsnCutKaonForPhi2010PP.h"
17 ClassImp(AliRsnCutKaonForPhi2010PP)
19 //__________________________________________________________________________________________________
20 AliRsnCutKaonForPhi2010PP::AliRsnCutKaonForPhi2010PP(const char *name) :
21 AliRsnCut(name, AliRsnTarget::kDaughter, -3.0, 3.0),
27 fCutQuality(Form("%sQuality", name))
31 // Initialize the contained cuts and sets defaults
35 //fCutQuality.AddStatusFlag(AliESDtrack::kTPCin , kTRUE);
36 //fCutQuality.AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);
37 //fCutQuality.AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);
38 fCutQuality.SetPtRange(0.15, 1E+20);
39 fCutQuality.SetEtaRange(-0.8, 0.8);
40 fCutQuality.SetDCARPtFormula("0.0182+0.0350/pt^1.01");
41 fCutQuality.SetDCAZmax(2.0);
42 fCutQuality.SetSPDminNClusters(1);
43 fCutQuality.SetITSminNClusters(0);
44 fCutQuality.SetITSmaxChi2(1E+20);
45 fCutQuality.SetTPCminNClusters(70);
46 fCutQuality.SetTPCmaxChi2(4.0);
47 fCutQuality.SetRejectKinkDaughters();
48 fCutQuality.SetAODTestFilterBit(5);
51 //__________________________________________________________________________________________________
52 AliRsnCutKaonForPhi2010PP::AliRsnCutKaonForPhi2010PP(const AliRsnCutKaonForPhi2010PP ©) :
54 fNSigmaTPCLow(copy.fNSigmaTPCLow),
55 fNSigmaTPCHigh(copy.fNSigmaTPCHigh),
56 fLimitTPC(copy.fLimitTPC),
57 fNSigmaTOF(copy.fNSigmaTOF),
59 fCutQuality(copy.fCutQuality)
66 //__________________________________________________________________________________________________
67 AliRsnCutKaonForPhi2010PP &AliRsnCutKaonForPhi2010PP::operator=(const AliRsnCutKaonForPhi2010PP ©)
70 // Assignment operator
73 AliRsnCut::operator=(copy);
76 fNSigmaTPCLow = copy.fNSigmaTPCLow;
77 fNSigmaTPCHigh = copy.fNSigmaTPCHigh;
78 fLimitTPC = copy.fLimitTPC;
79 fNSigmaTOF = copy.fNSigmaTOF;
81 fCutQuality = copy.fCutQuality;
86 //__________________________________________________________________________________________________
87 void AliRsnCutKaonForPhi2010PP::InitMyPID(Bool_t isMC, Bool_t isESD)
90 // Initialize manual PID object
94 fMyPID = new AliESDpid(isMC);
96 fMyPID = new AliAODpidUtil(isMC);
99 //__________________________________________________________________________________________________
100 Bool_t AliRsnCutKaonForPhi2010PP::IsSelected(TObject *obj)
107 if (!TargetOK(obj)) return kFALSE;
110 AliVTrack *track = dynamic_cast<AliVTrack *>(fDaughter->GetRef());
111 if (!track) return kFALSE;
114 if ((track->GetStatus() & AliESDtrack::kTPCin ) == 0) return kFALSE;
115 if ((track->GetStatus() & AliESDtrack::kTPCrefit) == 0) return kFALSE;
116 if ((track->GetStatus() & AliESDtrack::kITSrefit) == 0) return kFALSE;
119 if (!fCutQuality.IsSelected(obj)) return kFALSE;
121 // check initialization of PID object
122 AliPIDResponse *pid = fEvent->GetPIDResponse();
124 AliFatal("NULL PID response");
129 // depends on momentum
130 // and if local PID object is initialized, it is used instead of that got from manager
131 Double_t mom = track->GetTPCmomentum();
132 mom = TMath::Abs(mom);
134 SetRangeD(0.0, fNSigmaTPCLow);
136 SetRangeD(0.0, fNSigmaTPCHigh);
138 fCutValueD = TMath::Abs(fMyPID->NumberOfSigmasTPC(track, AliPID::kKaon));
140 fCutValueD = TMath::Abs(pid->NumberOfSigmasTPC(track, AliPID::kKaon));
141 if (!OkRangeD()) return kFALSE;
143 // if TOF is not matched, end here
144 // otherwise check TOF
145 if (!MatchTOF(track))
148 SetRangeD(0.0, fNSigmaTOF);
149 fCutValueD = TMath::Abs(pid->NumberOfSigmasTOF(track, AliPID::kKaon));