]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/mini/ConfigPhiRAApp.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigPhiRAApp.C
CommitLineData
4b2c784b 1//
2// *** Configuration script for phi->KK analysis with 2010 runs ***
3//
4// A configuration script for RSN package needs to define the followings:
5//
6// (1) decay tree of each resonance to be studied, which is needed to select
7// true pairs and to assign the right mass to all candidate daughters
8// (2) cuts at all levels: single daughters, tracks, events
9// (3) output objects: histograms or trees
10//
11Bool_t ConfigPhiRAApp
12(
13 AliRsnMiniAnalysisTask *task,
14 Bool_t isMC,
15 Bool_t isESD,
16 const char *suffix,
17 AliRsnCutSet *cutsPair
18)
19{
20 // manage suffix
21 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
22
23 //
24 // -- Define track cuts -------------------------------------------------------------------------
25 //
26
27
28
29 gROOT->LoadMacro("AliRsnCutPhiRAA.cxx++g");
30 // standard kaon cut
31 AliRsnCutPhiRAA *cut = new AliRsnCutPhiRAA("cut1");
32 cut->SetMode(AliRsnCutPhiRAA::k2010);
33 // TPC 2 sigma pid
34 AliRsnCutPIDNSigma *cutKTPC2 = new AliRsnCutPIDNSigma("cut2SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
35 cutKTPC2->SinglePIDRange(2.0);
36 // TPC 3 sigma pid
37 AliRsnCutPIDNSigma *cutKTPC3 = new AliRsnCutPIDNSigma("cut3SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
38 cutKTPC3->SinglePIDRange(3.0);
39 // TPC 4 sigma pid
40 AliRsnCutPIDNSigma *cutKTPC4 = new AliRsnCutPIDNSigma("cut4SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
41 cutKTPC4->SinglePIDRange(4.0);
42 // TPC 5 sigma pid
43 AliRsnCutPIDNSigma *cutKTPC5 = new AliRsnCutPIDNSigma("cut5SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
44 cutKTPC5->SinglePIDRange(5.0);
45 // TPC 6 sigma pid
46 AliRsnCutPIDNSigma *cutKTPC6 = new AliRsnCutPIDNSigma("cut6SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
47 cutKTPC6->SinglePIDRange(6.0);
48
49////////////////////////// Cut Sets ///////////////////////////////////////////////
50
51 AliRsnCutSet *cutSet = new AliRsnCutSet("set_NoPID", AliRsnTarget::kDaughter);
52 AliRsnCutSet *cutSet2 = new AliRsnCutSet("set_2sigmaTPC", AliRsnTarget::kDaughter);
53 AliRsnCutSet *cutSet3 = new AliRsnCutSet("set_3sigmaTPC", AliRsnTarget::kDaughter);
54 AliRsnCutSet *cutSet4 = new AliRsnCutSet("set_4sigmaTPC", AliRsnTarget::kDaughter);
55 AliRsnCutSet *cutSet5 = new AliRsnCutSet("set_5sigmaTPC", AliRsnTarget::kDaughter);
56 AliRsnCutSet *cutSet6 = new AliRsnCutSet("set_6sigmaTPC", AliRsnTarget::kDaughter);
57
58////////////////////////////////////////////////////////////////////////////////////
59
60 // no PID (only standard cuts)
61 cutSet->AddCut(cut);
62 cutSet->SetCutScheme(cut->GetName());
63
64 // TPC 2 sigma cut
65 cutSet2->AddCut(cut);
66 cutSet2->AddCut(cutKTPC2);
67 cutSet2->SetCutScheme("cut1&cut2SigmaTPCK");
68
69 // TPC 3 sigma cut
70 cutSet3->AddCut(cut);
71 cutSet3->AddCut(cutKTPC3);
72 cutSet3->SetCutScheme("cut1&cut3SigmaTPCK");
73
74 // TPC 4 sigma cut
75 cutSet4->AddCut(cut);
76 cutSet4->AddCut(cutKTPC4);
77 cutSet4->SetCutScheme("cut1&cut4SigmaTPCK");
78
79 // TPC 5 sigma cut
80 cutSet5->AddCut(cut);
81 cutSet5->AddCut(cutKTPC5);
82 cutSet5->SetCutScheme("cut1&cut5SigmaTPCK");
83
84 // TPC 6 sigma cut
85 cutSet6->AddCut(cut);
86 cutSet6->AddCut(cutKTPC6);
87 cutSet6->SetCutScheme("cut1&cut6SigmaTPCK");
88
89//////////////////////////////////////////////////////////////////////////////
90 // add to task
91 Int_t icut = task->AddTrackCuts(cutSet);
92 Int_t icut2 = task->AddTrackCuts(cutSet2);
93 Int_t icut3 = task->AddTrackCuts(cutSet3);
94 Int_t icut4 = task->AddTrackCuts(cutSet4);
95 Int_t icut5 = task->AddTrackCuts(cutSet5);
96 Int_t icut6 = task->AddTrackCuts(cutSet6);
97
98 Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
99 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
100 AddMonitorOutput(isMC, cutSet->GetMonitorOutput());
101
102 //
103 // -- Values ------------------------------------------------------------------------------------
104 //
105
106 /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
107// /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
108 /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kFALSE);
109 /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
110 /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
111
112 //
113 // -- Create all needed outputs -----------------------------------------------------------------
114 //
115
116
117 // use an array for more compact writing, which are different on mixing and charges
118 // [0] = unlike
119 // [1] = mixing
120 // [2] = like ++
121 // [3] = like --
122
123/////////////////// NoPID ///////////////////////////////////////////////////////////////
124
125 Bool_t use [4] = { 1 , 1 , 1 , 1 };
126 Bool_t useIM [4] = { 1 , 1 , 1 , 1 };
127 TString name [4] = {"UnlikeNoPID", "MixingNoPID", "LikePPNoPID", "LikeMMNoPID"};
128 TString comp [4] = {"PAIR" , "MIX" , "PAIR" , "PAIR" };
129 TString output [4] = {"HIST" , "HIST" , "HIST" , "HIST" };
130 Char_t charge1 [4] = {'+' , '+' , '+' , '-' };
131 Char_t charge2 [4] = {'-' , '-' , '+' , '-' };
132 Int_t cutID [4] = { icut , icut , icut , icut };
133
134 for (Int_t i = 0; i < 4; i++) {
135 if (!use[i]) continue;
136 // create output
137 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
138 // selection settings
139 out->SetCutID(0, cutID[i]);
140 out->SetCutID(1, cutID[i]);
141 out->SetDaughter(0, AliRsnDaughter::kKaon);
142 out->SetDaughter(1, AliRsnDaughter::kKaon);
143 out->SetCharge(0, charge1[i]);
144 out->SetCharge(1, charge2[i]);
145 out->SetMotherPDG(333);
146 out->SetMotherMass(1.019455);
147 // pair cuts
148 out->SetPairCuts(cutsPair);
149 // axis X: invmass (or resolution)
150 if (useIM)
151 out->AddAxis(imID, 3000, 0.4, 7.0);
152 else
153 out->AddAxis(resID, 200, -0.02, 0.02);
154 // axis Y: transverse momentum
155 out->AddAxis(ptID, 400, 0.0, 40.0);
156 // axis Z: centrality
157// out->AddAxis(centID, 100, 0.0, 100.0);
158 }
159
160////////////////////// 2 sigma cut TPC////////////////////////////////////////////////////////
161
162 TString name2 [4] = {"Unlike2sigmTPC", "Mixing2sigmTPC", "LikePP2sigmTPC", "LikeMM2sigmTPC"};
163 Int_t cutID2 [4] = { icut2 , icut2 , icut2 , icut2 };
164
165 for (Int_t i = 0; i < 4; i++) {
166 if (!use[i]) continue;
167 // create output
168 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name2[i].Data(), suffix), output[i].Data(), comp[i].Data());
169 // selection settings
170 out->SetCutID(0, cutID2[i]);
171 out->SetCutID(1, cutID2[i]);
172 out->SetDaughter(0, AliRsnDaughter::kKaon);
173 out->SetDaughter(1, AliRsnDaughter::kKaon);
174 out->SetCharge(0, charge1[i]);
175 out->SetCharge(1, charge2[i]);
176 out->SetMotherPDG(333);
177 out->SetMotherMass(1.019455);
178 // pair cuts
179 out->SetPairCuts(cutsPair);
180 // axis X: invmass (or resolution)
181 if (useIM)
182 out->AddAxis(imID, 3000, 0.4, 7.0);
183 else
184 out->AddAxis(resID, 200, -0.02, 0.02);
185 // axis Y: transverse momentum
186 out->AddAxis(ptID, 400, 0.0, 40.0);
187 // axis Z: centrality
188// out->AddAxis(centID, 100, 0.0, 100.0);
189 }
190
191////////////////////// 3 sigma cut TPC ////////////////////////////////////////////////////////
192
193 TString name3 [4] = {"Unlike3sigmTPC", "Mixing3sigmTPC", "LikePP3sigmTPC", "LikeMM3sigmTPC"};
194 Int_t cutID3 [4] = { icut3 , icut3 , icut3 , icut3 };
195
196 for (Int_t i = 0; i < 4; i++) {
197 if (!use[i]) continue;
198 // create output
199 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name3[i].Data(), suffix), output[i].Data(), comp[i].Data());
200 // selection settings
201 out->SetCutID(0, cutID3[i]);
202 out->SetCutID(1, cutID3[i]);
203 out->SetDaughter(0, AliRsnDaughter::kKaon);
204 out->SetDaughter(1, AliRsnDaughter::kKaon);
205 out->SetCharge(0, charge1[i]);
206 out->SetCharge(1, charge2[i]);
207 out->SetMotherPDG(333);
208 out->SetMotherMass(1.019455);
209 // pair cuts
210 out->SetPairCuts(cutsPair);
211 // axis X: invmass (or resolution)
212 if (useIM)
213 out->AddAxis(imID, 3000, 0.4, 7.0);
214 else
215 out->AddAxis(resID, 200, -0.02, 0.02);
216 // axis Y: transverse momentum
217 out->AddAxis(ptID, 400, 0.0, 40.0);
218 // axis Z: centrality
219// out->AddAxis(centID, 100, 0.0, 100.0);
220 }
221
222////////////////////// 4 sigma cut TPC ////////////////////////////////////////////////////////
223
224 TString name4 [4] = {"Unlike4sigmTPC", "Mixing4sigmTPC", "LikePP4sigmTPC", "LikeMM4sigmTPC"};
225 Int_t cutID4 [4] = { icut4 , icut4 , icut4 , icut4 };
226
227 for (Int_t i = 0; i < 4; i++) {
228 if (!use[i]) continue;
229 // create output
230 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name4[i].Data(), suffix), output[i].Data(), comp[i].Data());
231 // selection settings
232 out->SetCutID(0, cutID4[i]);
233 out->SetCutID(1, cutID4[i]);
234 out->SetDaughter(0, AliRsnDaughter::kKaon);
235 out->SetDaughter(1, AliRsnDaughter::kKaon);
236 out->SetCharge(0, charge1[i]);
237 out->SetCharge(1, charge2[i]);
238 out->SetMotherPDG(333);
239 out->SetMotherMass(1.019455);
240 // pair cuts
241 out->SetPairCuts(cutsPair);
242 // axis X: invmass (or resolution)
243 if (useIM)
244 out->AddAxis(imID, 3000, 0.4, 7.0);
245 else
246 out->AddAxis(resID, 200, -0.02, 0.02);
247 // axis Y: transverse momentum
248 out->AddAxis(ptID, 400, 0.0, 40.0);
249 // axis Z: centrality
250// out->AddAxis(centID, 100, 0.0, 100.0);
251 }
252////////////////////// 5s TPC /////////////////////////////////////////////////
253 TString name5 [4] = {"Unlike5sigmTPC", "Mixing5sigmTPC", "LikePP5sigmTPC", "LikeMM5sigmTPC"};
254 Int_t cutID5 [4] = { icut5 , icut5 , icut5 , icut5 };
255
256 for (Int_t i = 0; i < 4; i++) {
257 if (!use[i]) continue;
258 // create output
259 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name5[i].Data(), suffix), output[i].Data(), comp[i].Data());
260 // selection settings
261 out->SetCutID(0, cutID5[i]);
262 out->SetCutID(1, cutID5[i]);
263 out->SetDaughter(0, AliRsnDaughter::kKaon);
264 out->SetDaughter(1, AliRsnDaughter::kKaon);
265 out->SetCharge(0, charge1[i]);
266 out->SetCharge(1, charge2[i]);
267 out->SetMotherPDG(333);
268 out->SetMotherMass(1.019455);
269 // pair cuts
270 out->SetPairCuts(cutsPair);
271 // axis X: invmass (or resolution)
272 if (useIM)
273 out->AddAxis(imID, 3000, 0.4, 7.0);
274 else
275 out->AddAxis(resID, 200, -0.02, 0.02);
276 // axis Y: transverse momentum
277 out->AddAxis(ptID, 400, 0.0, 40.0);
278 // axis Z: centrality
279 // out->AddAxis(centID, 100, 0.0, 100.0);
280 }
281
282////////////////////// 6s TPC /////////////////////////////////////////////////
283
284 TString name6 [4] = {"Unlike6sigmTPC", "Mixing6sigmTPC", "LikePP6sigmTPC", "LikeMM6sigmTPC"};
285 Int_t cutID6 [4] = { icut6 , icut6 , icut6 , icut6 };
286
287 for (Int_t i = 0; i < 4; i++) {
288 if (!use[i]) continue;
289 // create output
290 AliRsnMiniOutput *out = task->CreateOutput(Form("phi_%s%s", name6[i].Data(), suffix), output[i].Data(), comp[i].Data());
291 // selection settings
292 out->SetCutID(0, cutID6[i]);
293 out->SetCutID(1, cutID6[i]);
294 out->SetDaughter(0, AliRsnDaughter::kKaon);
295 out->SetDaughter(1, AliRsnDaughter::kKaon);
296 out->SetCharge(0, charge1[i]);
297 out->SetCharge(1, charge2[i]);
298 out->SetMotherPDG(333);
299 out->SetMotherMass(1.019455);
300 // pair cuts
301 out->SetPairCuts(cutsPair);
302 // axis X: invmass (or resolution)
303 if (useIM)
304 out->AddAxis(imID, 3000, 0.4, 7.0);
305 else
306 out->AddAxis(resID, 200, -0.02, 0.02);
307 // axis Y: transverse momentum
308 out->AddAxis(ptID, 400, 0.0, 40.0);
309 // axis Z: centrality
310 // out->AddAxis(centID, 100, 0.0, 100.0);
311 }
312
313////////////////////// THE END! ////////////////////////////////////////////////////////
314
315
316 return kTRUE;
317}