2 // *** Configuration script for phi->KK analysis with 2010 runs ***
4 // A configuration script for RSN package needs to define the followings:
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
13 AliRsnMiniAnalysisTask *task,
17 AliRsnCutSet *cutsPair
21 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
24 // -- Define track cuts -------------------------------------------------------------------------
29 gROOT->LoadMacro("AliRsnCutPhiRAA.cxx++g");
31 AliRsnCutPhiRAA *cut = new AliRsnCutPhiRAA("cut1");
32 cut->SetMode(AliRsnCutPhiRAA::k2010);
34 AliRsnCutPIDNSigma *cutKTPC2 = new AliRsnCutPIDNSigma("cut2SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
35 cutKTPC2->SinglePIDRange(2.0);
37 AliRsnCutPIDNSigma *cutKTPC3 = new AliRsnCutPIDNSigma("cut3SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
38 cutKTPC3->SinglePIDRange(3.0);
40 AliRsnCutPIDNSigma *cutKTPC4 = new AliRsnCutPIDNSigma("cut4SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
41 cutKTPC4->SinglePIDRange(4.0);
43 AliRsnCutPIDNSigma *cutKTPC5 = new AliRsnCutPIDNSigma("cut5SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
44 cutKTPC5->SinglePIDRange(5.0);
46 AliRsnCutPIDNSigma *cutKTPC6 = new AliRsnCutPIDNSigma("cut6SigmaTPCK",AliPID::kKaon,AliRsnCutPIDNSigma::kTPC);
47 cutKTPC6->SinglePIDRange(6.0);
49 ////////////////////////// Cut Sets ///////////////////////////////////////////////
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);
58 ////////////////////////////////////////////////////////////////////////////////////
60 // no PID (only standard cuts)
62 cutSet->SetCutScheme(cut->GetName());
66 cutSet2->AddCut(cutKTPC2);
67 cutSet2->SetCutScheme("cut1&cut2SigmaTPCK");
71 cutSet3->AddCut(cutKTPC3);
72 cutSet3->SetCutScheme("cut1&cut3SigmaTPCK");
76 cutSet4->AddCut(cutKTPC4);
77 cutSet4->SetCutScheme("cut1&cut4SigmaTPCK");
81 cutSet5->AddCut(cutKTPC5);
82 cutSet5->SetCutScheme("cut1&cut5SigmaTPCK");
86 cutSet6->AddCut(cutKTPC6);
87 cutSet6->SetCutScheme("cut1&cut6SigmaTPCK");
89 //////////////////////////////////////////////////////////////////////////////
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);
98 Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
99 gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
100 AddMonitorOutput(isMC, cutSet->GetMonitorOutput());
103 // -- Values ------------------------------------------------------------------------------------
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);
113 // -- Create all needed outputs -----------------------------------------------------------------
117 // use an array for more compact writing, which are different on mixing and charges
123 /////////////////// NoPID ///////////////////////////////////////////////////////////////
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 };
134 for (Int_t i = 0; i < 4; i++) {
135 if (!use[i]) continue;
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);
148 out->SetPairCuts(cutsPair);
149 // axis X: invmass (or resolution)
151 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
160 ////////////////////// 2 sigma cut TPC////////////////////////////////////////////////////////
162 TString name2 [4] = {"Unlike2sigmTPC", "Mixing2sigmTPC", "LikePP2sigmTPC", "LikeMM2sigmTPC"};
163 Int_t cutID2 [4] = { icut2 , icut2 , icut2 , icut2 };
165 for (Int_t i = 0; i < 4; i++) {
166 if (!use[i]) continue;
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);
179 out->SetPairCuts(cutsPair);
180 // axis X: invmass (or resolution)
182 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
191 ////////////////////// 3 sigma cut TPC ////////////////////////////////////////////////////////
193 TString name3 [4] = {"Unlike3sigmTPC", "Mixing3sigmTPC", "LikePP3sigmTPC", "LikeMM3sigmTPC"};
194 Int_t cutID3 [4] = { icut3 , icut3 , icut3 , icut3 };
196 for (Int_t i = 0; i < 4; i++) {
197 if (!use[i]) continue;
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);
210 out->SetPairCuts(cutsPair);
211 // axis X: invmass (or resolution)
213 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
222 ////////////////////// 4 sigma cut TPC ////////////////////////////////////////////////////////
224 TString name4 [4] = {"Unlike4sigmTPC", "Mixing4sigmTPC", "LikePP4sigmTPC", "LikeMM4sigmTPC"};
225 Int_t cutID4 [4] = { icut4 , icut4 , icut4 , icut4 };
227 for (Int_t i = 0; i < 4; i++) {
228 if (!use[i]) continue;
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);
241 out->SetPairCuts(cutsPair);
242 // axis X: invmass (or resolution)
244 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
252 ////////////////////// 5s TPC /////////////////////////////////////////////////
253 TString name5 [4] = {"Unlike5sigmTPC", "Mixing5sigmTPC", "LikePP5sigmTPC", "LikeMM5sigmTPC"};
254 Int_t cutID5 [4] = { icut5 , icut5 , icut5 , icut5 };
256 for (Int_t i = 0; i < 4; i++) {
257 if (!use[i]) continue;
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);
270 out->SetPairCuts(cutsPair);
271 // axis X: invmass (or resolution)
273 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
282 ////////////////////// 6s TPC /////////////////////////////////////////////////
284 TString name6 [4] = {"Unlike6sigmTPC", "Mixing6sigmTPC", "LikePP6sigmTPC", "LikeMM6sigmTPC"};
285 Int_t cutID6 [4] = { icut6 , icut6 , icut6 , icut6 };
287 for (Int_t i = 0; i < 4; i++) {
288 if (!use[i]) continue;
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);
301 out->SetPairCuts(cutsPair);
302 // axis X: invmass (or resolution)
304 out->AddAxis(imID, 3000, 0.4, 7.0);
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);
313 ////////////////////// THE END! ////////////////////////////////////////////////////////