]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/mini/ConfigPhiRAApp.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigPhiRAApp.C
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 //
11 Bool_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 }