]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsKStarNsigma.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / lego_train / AddRsnDaughterCutsKStarNsigma.C
CommitLineData
221dc8d3 1#ifndef __CINT__
2#include <Rtypes.h>
3#endif
4Int_t AddRsnDaughterCutsKStarNsigma(AliPID::EParticleType type1,AliPID::EParticleType type2,TString opt,AliRsnInputHandler *rsnIH=0,AliAnalysisTaskSE *task=0)
5{
6
7 if (!rsnIH) return 0;
8
9 Bool_t valid;
10 Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
11 Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
12 Int_t useCommonQualityCut = AliRsnTrainManager::GetGlobalInt("RsnCommonQualityCut",valid);
13
14 // === USER HAS TO SET CORRECT NUMBER OF CUTS SETS =====
15 Int_t numberOfCuts = 2;
16
17 //---------------------------------------------
18 // Define single cutsP
19 //---------------------------------------------
20
21 Printf("AddRsnDaughterCutsKStarNsigma Option : %s",opt.Data());
22
23
24 // default values
25 Double_t nSigmaTPC_Pi=3.0;
26 Double_t nSigmaTPC_K=3.0;
27 Double_t nSigmaTOF_Pi=3.0;
28 Double_t nSigmaTOF_K=3.0;
29 Double_t etaRange=0.8;
30
680e4375 31 //defaults
32 Double_t trackPtMin=0.15;
33 Double_t trackPtMax=1.e20;
34 Int_t NclTPC=70;
35 Char_t DCAxyFormula[100]="0.0182+0.035/pt^1.01";
36 Bool_t useTrackPtCut=kFALSE;
37
221dc8d3 38 Bool_t useTPC_Pi=kFALSE;
39 Bool_t useTOF_Pi=kFALSE;
40 Bool_t useTPC_K=kFALSE;
41 Bool_t useTOF_K=kFALSE;
42
43 if (opt.Contains("qualityonly")) {
44 useTPC_Pi=kFALSE;
45 useTOF_Pi=kFALSE;
46 useTPC_K=kFALSE;
47 useTOF_K=kFALSE;
48 } else if (!opt.Contains("nsig")) {
49 useTPC_Pi=kTRUE;
50 useTOF_Pi=kTRUE;
51 useTPC_K=kTRUE;
52 useTOF_K=kTRUE;
53 }
54
55 if (opt.Contains("PiTPCnsig")) useTPC_Pi=kTRUE;
56 if (opt.Contains("PiTOFnsig")) useTOF_Pi=kTRUE;
57 if (opt.Contains("KTPCnsig")) useTPC_K=kTRUE;
58 if (opt.Contains("KTOFnsig")) useTOF_K=kTRUE;
59
60 if (opt.Contains("PiTPCnsig10")) nSigmaTPC_Pi = 1.0;
61 if (opt.Contains("PiTPCnsig15")) nSigmaTPC_Pi = 1.5;
62 if (opt.Contains("PiTPCnsig20")) nSigmaTPC_Pi = 2.0;
63 if (opt.Contains("PiTPCnsig25")) nSigmaTPC_Pi = 2.5;
64 if (opt.Contains("PiTPCnsig30")) nSigmaTPC_Pi = 3.0;
65
66 if (opt.Contains("KTPCnsig10")) nSigmaTPC_K = 1.0;
67 if (opt.Contains("KTPCnsig15")) nSigmaTPC_K = 1.5;
68 if (opt.Contains("KTPCnsig20")) nSigmaTPC_K = 2.0;
69 if (opt.Contains("KTPCnsig25")) nSigmaTPC_K = 2.5;
70 if (opt.Contains("KTPCnsig30")) nSigmaTPC_K = 3.0;
71
72 if (opt.Contains("PiTOFnsig10")) nSigmaTOF_Pi = 1.0;
73 if (opt.Contains("PiTOFnsig15")) nSigmaTOF_Pi = 1.5;
74 if (opt.Contains("PiTOFnsig20")) nSigmaTOF_Pi = 2.0;
75 if (opt.Contains("PiTOFnsig25")) nSigmaTOF_Pi = 2.5;
76 if (opt.Contains("PiTOFnsig30")) nSigmaTOF_Pi = 3.0;
77
78 if (opt.Contains("KTOFnsig10")) nSigmaTOF_K = 1.0;
79 if (opt.Contains("KTOFnsig15")) nSigmaTOF_K = 1.5;
80 if (opt.Contains("KTOFnsig20")) nSigmaTOF_K = 2.0;
81 if (opt.Contains("KTOFnsig25")) nSigmaTOF_K = 2.5;
82 if (opt.Contains("KTOFnsig30")) nSigmaTOF_K = 3.0;
83
84
85 Bool_t usePDG=kFALSE;
86 if (opt.Contains("pdg")) {
87 Printf("Using PDG");
88 usePDG = kTRUE;
89 }
90
91 Bool_t useEta = kFALSE;
92 if (opt.Contains("eta")) {
93 Printf("Using ETA range (%.2f,%.2f)",-etaRange,etaRange);
94 useEta = kTRUE;
95 }
96
680e4375 97 if (opt.Contains("trackPt")) {
98 useTrackPtCut = kTRUE;
99 if (opt.Contains("trackPtMin015")) trackPtMin = 0.15;
100 if (opt.Contains("trackPtMin02")) trackPtMin = 0.2;
101 if (opt.Contains("trackPtMin05")) trackPtMin = 0.5;
102 if (opt.Contains("trackPtMin06")) trackPtMin = 0.6;
103
104 if (opt.Contains("trackPtMax18")) trackPtMax = 1.8;
105 if (opt.Contains("trackPtMax20")) trackPtMax = 2.0;
106 if (opt.Contains("trackPtMax25")) trackPtMax = 2.5;
107 }
108
109 Bool_t useNclTPC = kFALSE;
110 if (opt.Contains("NclTPC")) {
111 if (opt.Contains("NclTPC70")) NclTPC=70;
112 if (opt.Contains("NclTPC75")) NclTPC=75;
113 if (opt.Contains("NclTPC80")) NclTPC=80;
114 if (opt.Contains("NclTPC85")) NclTPC=85;
115 if (opt.Contains("NclTPC90")) NclTPC=90;
116 if (opt.Contains("NclTPC100")) NclTPC=100;
117 useNclTPC = kTRUE;
118 }
119
120 Bool_t useDCAxy = kFALSE;
121 if (opt.Contains("DCAxy")) {
122 if (opt.Contains("DCAxyFormula7s")) sprintf(DCAxyFormula,"0.0182+0.035/pt^1.01");
123 if (opt.Contains("DCAxyFormula6s")) sprintf(DCAxyFormula,"0.0156+0.03/pt^1.01");
124 if (opt.Contains("DCAxyFormula5s")) sprintf(DCAxyFormula,"0.013+0.025/pt^1.01");
125 useDCAxy = kTRUE;
126 }
127
221dc8d3 128 // KAON SETTINGS =======================================
129 TString scheme="";
130 TString cutname = "K_Kstar";
131 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
132 AliRsnCutSet *cutsK = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
133
134 AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
135 if (useCommonQualityCut>=0) {
136 qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
680e4375 137 if(useDCAxy) {qualityCutK->SetCheckOnlyFilterBit(kFALSE); qualityCutK->SetDCARPtFormula(DCAxyFormula);}
221dc8d3 138 } else {
139 qualityCutK->SetDefaults2010();
680e4375 140 if(useDCAxy) qualityCutK->SetDCARPtFormula(DCAxyFormula);
221dc8d3 141 }
142 cutsK->AddCut(qualityCutK);
143 if (!scheme.IsNull()) scheme += "&";
144 scheme += qualityCutK->GetName();
145
146 if (useTPC_K) {
147 AliRsnCutPIDNSigma *cutKTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
148 cutKTPC->SinglePIDRange(nSigmaTPC_K);
149 cutsK->AddCut(cutKTPC);
150 if (!scheme.IsNull()) scheme += "&";
151 scheme += cutKTPC->GetName();
152 }
153
154 if (useTOF_K) {
155 AliRsnCutPIDNSigma *cutKTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFK",AliPID::kKaon,AliRsnCutPIDNSigma::kTOF);
156 cutKTOF->SinglePIDRange(nSigmaTOF_K);
157 cutsK->AddCut(cutKTOF);
158 if (!scheme.IsNull()) scheme += "&";
159 scheme += cutKTOF->GetName();
160 }
161 if (useEta) {
162 AliRsnValueDaughter *valEtaK = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kEta);
163 AliRsnCutValue *cutEtaK = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type2),opt.Data()),-etaRange,etaRange);
164 cutEtaK->SetTargetType(AliRsnTarget::kDaughter);
165 cutEtaK->SetValueObj(valEtaK);
166 cutsK->AddCut(cutEtaK);
167 if (!scheme.IsNull()) scheme += "&";
168 scheme += cutEtaK->GetName();
169 }
680e4375 170
171 if (useTrackPtCut) {
172 Printf("Adding K Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
173 AliRsnValueDaughter *valTrackPtK = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kPt);
174
175 AliRsnCutValue *cutTrackPtK = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),trackPtMin,trackPtMax);
176 cutTrackPtK->SetTargetType(AliRsnTarget::kDaughter);
177 cutTrackPtK->SetValueObj(valTrackPtK);
178 cutsK->AddCut(cutTrackPtK);
179 if (!scheme.IsNull()) scheme += "&";
180 scheme += cutTrackPtK->GetName();
181 }
182
183 if (useNclTPC) {
184 Printf("Adding NclTPC >= %i",NclTPC);
185 AliRsnValueDaughter *valNclTPCK = new AliRsnValueDaughter(Form("val%sNclTPC%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
186 AliRsnCutValue *cutNclTPCK = new AliRsnCutValue(Form("cut%sNclTPC%s",AliPID::ParticleName(type2),opt.Data()),NclTPC,1000.);
187 cutNclTPCK->SetTargetType(AliRsnTarget::kDaughter);
188 cutNclTPCK->SetValueObj(valNclTPCK);
189 cutsK->AddCut(cutNclTPCK);
190 if (!scheme.IsNull()) scheme += "&";
191 scheme += cutNclTPCK->GetName();
192 }
193
221dc8d3 194 if (usePDG) {
195 AliRsnCutPID *cutPDGK = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type2),opt.Data()),type2,0.0,kTRUE);
196 cutsK->AddCut(cutPDGK);
197 if (!scheme.IsNull()) scheme += "&";
198 scheme += cutPDGK->GetName();
199 }
200
201 Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
202 cutsK->SetCutScheme(scheme.Data());
203
204 // END KAON =======================================
205
206 // Pion SETTINGS ===========================================
207
208 scheme="";
209 cutname = "Pi_Kstar";
210 if (!opt.IsNull()) cutname += Form("_%s",opt.Data());
211 AliRsnCutSet *cutsP = new AliRsnCutSet(cutname.Data(), AliRsnTarget::kDaughter);
212
213 AliRsnCutTrackQuality *qualityCutPi = new AliRsnCutTrackQuality("cutQuatityPi");
214 if (useCommonQualityCut>=0) {
215 qualityCutPi->SetAODTestFilterBit(useCommonQualityCut);
680e4375 216 if(useDCAxy) {qualityCutPi->SetCheckOnlyFilterBit(kFALSE); qualityCutPi->SetDCARPtFormula(DCAxyFormula);}
221dc8d3 217 } else {
218 qualityCutPi->SetDefaults2010();
680e4375 219 if(useDCAxy) qualityCutPi->SetDCARPtFormula(DCAxyFormula);
221dc8d3 220 }
221 cutsP->AddCut(qualityCutPi);
222 if (!scheme.IsNull()) scheme += "&";
223 scheme += qualityCutPi->GetName();
224 if (useTPC_Pi) {
225 AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutNSigmaTPCPi",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);
226 cutPiTPC->SinglePIDRange(nSigmaTPC_Pi);
227 cutsP->AddCut(cutPiTPC);
228 if (!scheme.IsNull()) scheme += "&";
229 scheme += cutPiTPC->GetName();
230 }
231 if (useTOF_Pi) {
232 AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutNSigmaTOFPi",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);
233 cutPiTOF->SinglePIDRange(nSigmaTOF_Pi);
234 cutsP->AddCut(cutPiTOF);
235 if (!scheme.IsNull()) scheme += "&";
236 scheme += cutPiTOF->GetName();
237 }
238 if (useEta) {
239 AliRsnValueDaughter *valEtaP = new AliRsnValueDaughter(Form("val%sETA%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kEta);
240 AliRsnCutValue *cutEtaP = new AliRsnCutValue(Form("cut%sETA%s",AliPID::ParticleName(type1),opt.Data()),-etaRange,etaRange);
241 cutEtaP->SetTargetType(AliRsnTarget::kDaughter);
242 cutEtaP->SetValueObj(valEtaP);
243 cutsP->AddCut(cutEtaP);
244 if (!scheme.IsNull()) scheme += "&";
245 scheme += cutEtaP->GetName();
246 }
680e4375 247
248 if (useTrackPtCut) {
249 Printf("Adding Pi Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
250 AliRsnValueDaughter *valTrackPtP = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt);
251
252 AliRsnCutValue *cutTrackPtP = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax);
253 cutTrackPtP->SetTargetType(AliRsnTarget::kDaughter);
254 cutTrackPtP->SetValueObj(valTrackPtP);
255 cutsP->AddCut(cutTrackPtP);
256 if (!scheme.IsNull()) scheme += "&";
257 scheme += cutTrackPtP->GetName();
258 }
259
260 if (useNclTPC) {
261 Printf("Adding NclTPC Pi >= %i",NclTPC);
262 AliRsnValueDaughter *valNclTPCP = new AliRsnValueDaughter(Form("val%sNclTPC%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
263 AliRsnCutValue *cutNclTPCP = new AliRsnCutValue(Form("cut%sNclTPC%s",AliPID::ParticleName(type1),opt.Data()),NclTPC,1000.);
264 cutNclTPCP->SetTargetType(AliRsnTarget::kDaughter);
265 cutNclTPCP->SetValueObj(valNclTPCP);
266 cutsP->AddCut(cutNclTPCP);
267 if (!scheme.IsNull()) scheme += "&";
268 scheme += cutNclTPCP->GetName();
269 }
221dc8d3 270 if (usePDG) {
271 AliRsnCutPID *cutPDGP = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
272 cutsP->AddCut(cutPDGP);
273 if (!scheme.IsNull()) scheme += "&";
274 scheme += cutPDGP->GetName();
275 }
276
277 Printf ("CUT Scheme for PION is '%s'",scheme.Data());
278 cutsP->SetCutScheme(scheme.Data());
279
280 // END PROTON =======================================
281
282
283
284 if (opt.Contains("mon")) {
285 AddMonitorOutput(cutsP->GetMonitorOutput(),opt);
286 AddMonitorOutput(cutsK->GetMonitorOutput(),opt);
287 }
288 if (isRsnMini) {
289 AliRsnMiniAnalysisTask *taskRsnMini = dynamic_cast<AliRsnMiniAnalysisTask *>(task);
290 if (taskRsnMini) {
291 taskRsnMini->AddTrackCuts(cutsK);
292 taskRsnMini->AddTrackCuts(cutsP);
293
294 }
295 } else {
296 AliRsnDaughterSelector *sel = rsnIH->GetSelector();
680e4375 297 // sel->SetLabelCheck(kFALSE);
221dc8d3 298 sel->Add(cutsP, kTRUE);
299 sel->Add(cutsK, kTRUE);
300 }
301 return numberOfCuts;
302
303}