]>
Commit | Line | Data |
---|---|---|
9cdd5474 | 1 | // |
2 | // Author: Francesca Bellini (fbellini@cern.ch) | |
3 | // | |
4 | // | |
5 | ||
6 | #include <Riostream.h> | |
7 | ||
8 | #include "AliPID.h" | |
9 | #include "AliPIDResponse.h" | |
10 | #include "AliRsnCutSetDaughterParticle.h" | |
11 | ||
12 | class AliRsnCutPIDNSigma; | |
13 | class AliRsnPIDRange; | |
14 | ||
15 | ClassImp(AliRsnCutSetDaughterParticle) | |
16 | ||
17 | //__________________________________________________________________________________________________ | |
18 | AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() : | |
19 | AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter), | |
20 | fPID(AliPID::kPion), | |
21 | fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts), | |
22 | fNsigmaTPC(1E20), | |
23 | fNsigmaTOF(1E20) | |
24 | { | |
25 | // | |
26 | // Default constructor | |
27 | } | |
28 | ||
29 | //__________________________________________________________________________________________________ | |
30 | AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) : | |
31 | AliRsnCutSet(name, AliRsnTarget::kDaughter), | |
32 | fPID(pid), | |
33 | fAppliedCutSetID(cutSetID), | |
34 | fNsigmaTPC(1E20), | |
35 | fNsigmaTOF(1E20) | |
36 | { | |
37 | // | |
38 | // Constructor | |
39 | // | |
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"); | |
43 | } else { | |
44 | if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma){ | |
45 | fNsigmaTPC = nSigmaFast; | |
46 | } | |
47 | if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) || | |
48 | (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) { | |
49 | fNsigmaTOF = nSigmaFast; | |
50 | } | |
51 | } | |
52 | ||
53 | Init(); | |
54 | } | |
55 | ||
56 | //__________________________________________________________________________________________________ | |
57 | AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) : | |
58 | AliRsnCutSet(copy), | |
59 | fPID(copy.fPID), | |
60 | fAppliedCutSetID(copy.fAppliedCutSetID), | |
61 | fNsigmaTPC(copy.fNsigmaTPC), | |
62 | fNsigmaTOF(copy.fNsigmaTOF) | |
63 | { | |
64 | // | |
65 | // copy constructor | |
66 | } | |
67 | ||
68 | //__________________________________________________________________________________________________ | |
69 | AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©) | |
70 | { | |
71 | // | |
72 | // operator = | |
73 | // | |
74 | AliRsnCutSet::operator=(copy); | |
75 | if (this == ©) | |
76 | return *this; | |
77 | fPID=copy.fPID; | |
78 | fAppliedCutSetID=copy.fAppliedCutSetID; | |
79 | fNsigmaTPC=copy.fNsigmaTPC; | |
80 | fNsigmaTOF=copy.fNsigmaTOF; | |
81 | return (*this); | |
82 | } | |
83 | ||
84 | //---------------------------------------------------------------------------- | |
85 | void AliRsnCutSetDaughterParticle::Init() | |
86 | { | |
87 | // | |
88 | // init cut sets by setting variable params | |
89 | // | |
90 | AliRsnCutTrackQuality * iCutQualityStd2010 = new AliRsnCutTrackQuality("CutQualityStd2010"); | |
91 | iCutQualityStd2010->SetDefaults2010(); | |
92 | /* | |
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); | |
105 | */ | |
106 | ||
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 ); | |
111 | ||
112 | switch (fAppliedCutSetID) | |
113 | { | |
114 | case AliRsnCutSetDaughterParticle::kNoCuts : | |
115 | AliInfo("No cuts applied to daughter particle"); | |
116 | break; | |
117 | ||
118 | case AliRsnCutSetDaughterParticle::kQualityStd2010 : | |
119 | AddCut(iCutQualityStd2010); | |
120 | SetCutScheme(iCutQualityStd2010->GetName()); | |
121 | break; | |
122 | ||
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()); | |
131 | break; | |
132 | ||
133 | case AliRsnCutSetDaughterParticle::kTOFMatch : | |
134 | AddCut(iCutQualityStd2010); | |
135 | AddCut(iCutTOFMatch); | |
136 | SetCutScheme( Form("%s&(%s)",iCutQualityStd2010->GetName(), iCutTOFMatch->GetName()) ); | |
137 | break; | |
138 | ||
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); | |
143 | } | |
144 | iCutTPCNSigma->SinglePIDRange(fNsigmaTPC); | |
145 | AddCut(iCutQualityStd2010); | |
146 | AddCut(iCutTPCNSigma); | |
147 | SetCutScheme( Form("%s&%s",iCutQualityStd2010->GetName(), iCutTPCNSigma->GetName()) ); | |
148 | break; | |
149 | ||
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); | |
154 | } | |
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()) ); | |
160 | break; | |
161 | ||
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); | |
175 | ||
176 | AddCut(iCutQualityStd2010); | |
177 | AddCut(iCutTOFMatch); | |
178 | AddCut(iCutTPCNSigma); | |
179 | ||
180 | /* set TPC+TOF PID*/ | |
181 | iCutTPCTOFNSigma->SinglePIDRange(5.0); | |
182 | iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5); | |
183 | iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20); | |
184 | ||
185 | AddCut(iCutTPCTOFNSigma); | |
186 | AddCut(iCutTOFNSigma); | |
187 | ||
188 | // scheme: | |
189 | // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ] | |
190 | SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",iCutQualityStd2010->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ; | |
191 | break; | |
192 | ||
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); | |
197 | } | |
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()) ); | |
218 | break; | |
219 | ||
220 | default : | |
221 | break; | |
222 | } | |
223 | ||
224 | } | |
225 | ||
226 | ||
227 |