2 // Author: Francesca Bellini (fbellini@cern.ch)
9 #include "AliPIDResponse.h"
10 #include "AliRsnCutSetDaughterParticle.h"
12 class AliRsnCutPIDNSigma;
15 ClassImp(AliRsnCutSetDaughterParticle)
17 //__________________________________________________________________________________________________
18 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
19 AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter),
21 fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts),
26 // Default constructor
29 //__________________________________________________________________________________________________
30 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) :
31 AliRsnCutSet(name, AliRsnTarget::kDaughter),
33 fAppliedCutSetID(cutSetID),
40 if ( (nSigmaFast<=0) &&
41 ((cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma)) ) {
42 AliError("Requested fast n-sigma PID with invalid value for n. Setting n = 1E20");
44 if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma){
45 fNsigmaTPC = nSigmaFast;
47 if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) ||
48 (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) {
49 fNsigmaTOF = nSigmaFast;
56 //__________________________________________________________________________________________________
57 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) :
60 fAppliedCutSetID(copy.fAppliedCutSetID),
61 fNsigmaTPC(copy.fNsigmaTPC),
62 fNsigmaTOF(copy.fNsigmaTOF)
68 //__________________________________________________________________________________________________
69 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©)
74 AliRsnCutSet::operator=(copy);
78 fAppliedCutSetID=copy.fAppliedCutSetID;
79 fNsigmaTPC=copy.fNsigmaTPC;
80 fNsigmaTOF=copy.fNsigmaTOF;
84 //----------------------------------------------------------------------------
85 void AliRsnCutSetDaughterParticle::Init()
88 // init cut sets by setting variable params
90 AliRsnCutTrackQuality * iCutQualityStd2010 = new AliRsnCutTrackQuality("CutQualityStd2010");
91 iCutQualityStd2010->SetDefaults2010();
93 requires ITS refit ,TPC refit, TPC in
94 iCutQualityStd2010->SetPtRange(0.15, 1E+20);
95 iCutQualityStd2010->SetEtaRange(-0.8, 0.8);
96 iCutQualityStd2010->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
97 iCutQualityStd2010->SetDCAZmax(2.0);
98 iCutQualityStd2010->SetSPDminNClusters(1);
99 iCutQualityStd2010->SetITSminNClusters(0);
100 iCutQualityStd2010->SetITSmaxChi2(36);
101 iCutQualityStd2010->SetTPCminNClusters(70);
102 iCutQualityStd2010->SetTPCmaxChi2(4.0);
103 iCutQualityStd2010->SetRejectKinkDaughters();
104 iCutQualityStd2010->SetAODTestFilterBit(5);
107 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
108 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
109 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
110 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
112 switch (fAppliedCutSetID)
114 case AliRsnCutSetDaughterParticle::kNoCuts :
115 AliInfo("No cuts applied to daughter particle");
118 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
119 AddCut(iCutQualityStd2010);
120 SetCutScheme(iCutQualityStd2010->GetName());
123 case AliRsnCutSetDaughterParticle::kQualityStd2011:
124 //these are also golden cuts for PbPb 2010
125 //AliESDtrackCuts::GetStandardITSTPCTrackCuts2011()
126 // select golden cut for ESD -> to be implemented
127 //select golden cut for AOD
128 iCutQualityStd2010->SetAODTestFilterBit(10); //1024
129 AddCut(iCutQualityStd2010);
130 SetCutScheme(iCutQualityStd2010->GetName());
133 case AliRsnCutSetDaughterParticle::kTOFMatch :
134 AddCut(iCutQualityStd2010);
135 AddCut(iCutTOFMatch);
136 SetCutScheme( Form("%s&(%s)",iCutQualityStd2010->GetName(), iCutTOFMatch->GetName()) );
139 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
140 if (fNsigmaTPC <= 0.0) {
141 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
142 SetNsigmaForFastTPCpid(10.0);
144 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
145 AddCut(iCutQualityStd2010);
146 AddCut(iCutTPCNSigma);
147 SetCutScheme( Form("%s&%s",iCutQualityStd2010->GetName(), iCutTPCNSigma->GetName()) );
150 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
151 if (fNsigmaTOF <= 0.0) {
152 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
153 SetNsigmaForFastTOFpid(10.0);
155 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
156 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
157 AddCut(iCutQualityStd2010);
158 AddCut(iCutTOFNSigma);
159 SetCutScheme( Form("%s&%s",iCutQualityStd2010->GetName(), iCutTOFNSigma->GetName()) );
162 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
163 /* Set TPC PID (if no TOF)*/
164 // all below 350 MeV: 5sigma
165 // all between 350 and 500 MeV: 3sigma
166 // pios above 500 MeV: 2sigma
167 // kaons between 500 and 700 MeV: 2sigma
168 // kaons above 700 MeV: rejected
169 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
170 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
171 if (fPID==AliPID::kPion)
172 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
173 if (fPID==AliPID::kKaon)
174 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
176 AddCut(iCutQualityStd2010);
177 AddCut(iCutTOFMatch);
178 AddCut(iCutTPCNSigma);
181 iCutTPCTOFNSigma->SinglePIDRange(5.0);
182 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
183 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
185 AddCut(iCutTPCTOFNSigma);
186 AddCut(iCutTOFNSigma);
189 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
190 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",iCutQualityStd2010->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
193 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
194 if (fNsigmaTOF <= 0.0) {
195 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
196 SetNsigmaForFastTOFpid(10.0);
198 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
199 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
200 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
201 /* requires ITS refit ,TPC refit, TPC in*/
202 iCutQualityStd2010->SetPtRange(0.15, 1E+20);
203 iCutQualityStd2010->SetEtaRange(-0.8, 0.8);
204 iCutQualityStd2010->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
205 iCutQualityStd2010->SetDCAZmax(2.0);
206 iCutQualityStd2010->SetSPDminNClusters(1);
207 iCutQualityStd2010->SetITSminNClusters(0);
208 iCutQualityStd2010->SetITSmaxChi2(36);
209 iCutQualityStd2010->SetTPCminNClusters(70);
210 iCutQualityStd2010->SetTPCmaxChi2(4.0);
211 iCutQualityStd2010->SetRejectKinkDaughters();
212 //iCutQualityStd2010->SetAODTestFilterBit(10); //AOD086
213 iCutQualityStd2010->SetAODTestFilterBit(5); //AOD049 no golden cuts
214 AddCut(iCutQualityStd2010);
215 AddCut(iCutTOFNSigma);
216 AddCut(iCutTPCTOFNSigma);
217 SetCutScheme( Form("%s&%s&%s",iCutQualityStd2010->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );