]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/macros/mini/ConfigD0.C
Modified histogram with event counters + updated macros for D0 analysis (Massimo)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigD0.C
CommitLineData
57b34356 1//
2// *** Configuration script for D0 analysis ***
474a07ae 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 ConfigD0
12(
13 AliRsnMiniAnalysisTask *task,
14 Bool_t isPP,
da997f6c 15 Bool_t isMC,
43eeca31 16 Bool_t monitor = kTRUE,
17 Bool_t centortracklets = kTRUE,
18 Bool_t sanityhistos = kTRUE,
474a07ae 19 Float_t nsigmaTPCPi = 3.0,
20 Float_t nsigmaTPCKa = 3.0,
21 Float_t nsigmaTOFPi = 2.0,
22 Float_t nsigmaTOFKa = 2.0,
23 Int_t aodFilterBit = 5,
24 Float_t trackDCAcutMax = 7.0,
25 Float_t trackDCAcutMin = 0.0,
2b9ea980 26 Float_t trackDCAZcutMax = 2.0,
474a07ae 27 Int_t NTPCcluster = 70,
57b34356 28 Double_t NTPCcrratio = 0.8,
78512b8e 29 Int_t minSPDclt = 0,
1cf860e3 30 Double_t minpt = 0.15,
31 Short_t maxSisters = 2,
32 Bool_t checkP = kTRUE,
2625616a 33 Bool_t useNTPCclt = kTRUE,
1cf860e3 34 Bool_t minDCAcutFixed = kFALSE,
35 Bool_t maxDCAcutFixed = kFALSE,
670857a6 36 Bool_t ptdepPIDcut = kFALSE,
e14e18cc 37 Bool_t checkFeedDown = kTRUE,
38 Bool_t checkQuark = kTRUE,
da997f6c 39 Bool_t doCalculationInMC = kTRUE,
e14e18cc 40 UShort_t originDselection = 0,
828a817b 41 Float_t mineta = -0.8,
42 Float_t maxeta = 0.8,
43 Float_t min_inv_mass = 0.6,
44 Float_t max_inv_mass = 2.2,
45 Int_t bins = 320,
474a07ae 46 const char *suffix,
1cf860e3 47 AliRsnCutSet *cutsPairY,
48 AliRsnCutSet *cutsPair
474a07ae 49)
50{
51 // manage suffix
52 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
53
54 TString s = ""; s+=trackDCAcutMax; s+="*(0.0015+0.0050/pt^1.01)";
55
56 const char *formula = s;
57
58 TString s2 = ""; s2+=trackDCAcutMin; s2+="*(0.0015+0.0050/pt^1.01)";
59
1cf860e3 60 const char *formulaMin = s2;
474a07ae 61
62
63 //
64 // -- Define track cuts -------------------------------------------------------------------------
65 //
66
67 // integrated pion cut
68 AliRsnCutDaughterD0 *cutPi = new AliRsnCutDaughterD0("cutPionForD0", AliPID::kPion);
57b34356 69 //cutPi->SetNoPID(kTRUE);
474a07ae 70 cutPi->SetTPCPionPIDCut(nsigmaTPCPi);
71 cutPi->SetTOFPionPIDCut(nsigmaTOFPi);
670857a6 72 cutPi->SetPtDependentPIDCut(ptdepPIDcut);
474a07ae 73 AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
74 cutQuality->SetCheckOnlyFilterBit(kFALSE);
1cf860e3 75 cutQuality->SetAODTestFilterBit(aodFilterBit);
76 if(maxDCAcutFixed)cutQuality->SetDCARmax(trackDCAcutMax);
77 else cutQuality->SetDCARPtFormula(formula);
78 if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
57b34356 79 else cutQuality->SetDCARPtFormulaMin(formulaMin);
2625616a 80 if(useNTPCclt)cutQuality->SetTPCminNClusters(NTPCcluster);
81 if(!useNTPCclt)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
82 if(!useNTPCclt)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
474a07ae 83 cutQuality->SetPtRange(minpt,1E20);
828a817b 84 cutQuality->SetEtaRange(mineta, maxeta);
2b9ea980 85 cutQuality->SetDCAZmax(trackDCAZcutMax);
78512b8e 86 cutQuality->SetSPDminNClusters(minSPDclt);
474a07ae 87 cutQuality->SetITSminNClusters(0);
57b34356 88 cutQuality->SetITSmaxChi2(1E20);
89 cutQuality->SetTPCmaxChi2(1E20);
474a07ae 90 cutQuality->SetRejectKinkDaughters();
91 cutQuality->Print();
92
93
94
95 // cut set
96 AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionD0", AliRsnTarget::kDaughter);
97 cutSetPi->AddCut(cutPi);
98 cutSetPi->SetCutScheme(cutPi->GetName());
99 // add to task
100 Int_t iCutPi = task->AddTrackCuts(cutSetPi);
101
102
103
104 // integrated kaon cut
105 AliRsnCutDaughterD0 *cutK = new AliRsnCutDaughterD0("cutKaonForD0", AliPID::kKaon);
57b34356 106 //cutK->SetNoPID(kTRUE);
474a07ae 107 cutK->SetTPCKaonPIDCut(nsigmaTPCKa);
670857a6 108 cutK->SetTOFKaonPIDCut(nsigmaTOFKa);
109 cutK->SetPtDependentPIDCut(ptdepPIDcut);
474a07ae 110 AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutK->CutQuality();
111 cutQuality->SetCheckOnlyFilterBit(kFALSE);
1cf860e3 112 cutQuality->SetAODTestFilterBit(aodFilterBit);
113 if(maxDCAcutFixed)cutQuality->SetDCARmax(trackDCAcutMax);
114 else cutQuality->SetDCARPtFormula(formula);
115 if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
116 else cutQuality->SetDCARPtFormulaMin(formulaMin);
2625616a 117 if(useNTPCclt)cutQuality->SetTPCminNClusters(NTPCcluster);
118 if(!useNTPCclt)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
119 if(!useNTPCclt)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
474a07ae 120 cutQuality->SetPtRange(minpt,1E20);
828a817b 121 cutQuality->SetEtaRange(mineta, maxeta);
2b9ea980 122 cutQuality->SetDCAZmax(trackDCAZcutMax);
78512b8e 123 cutQuality->SetSPDminNClusters(minSPDclt);
474a07ae 124 cutQuality->SetITSminNClusters(0);
57b34356 125 cutQuality->SetITSmaxChi2(1E20);
126 cutQuality->SetTPCmaxChi2(1E20);
474a07ae 127 cutQuality->SetRejectKinkDaughters();
128 cutQuality->Print();
129
130
131
132 // cut set
133 AliRsnCutSet *cutSetK = new AliRsnCutSet("setKaonD0", AliRsnTarget::kDaughter);
134 cutSetK->AddCut(cutK);
135 cutSetK->SetCutScheme(cutK->GetName());
136 // add to task
137 Int_t iCutK = task->AddTrackCuts(cutSetK);
138
57b34356 139
140
57b34356 141 ////////////////////////////////////////////////////////////////////////////////////////////////
474a07ae 142
143 // -- Values ------------------------------------------------------------------------------------
144 /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
145 /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
146 /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
147 /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
148 /* pseudorapidity */ Int_t etaID = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
149 /* rapidity */ Int_t yID = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
150 /* dca product */ Int_t dcapID = task->CreateValue(AliRsnMiniValue::kDCAproduct, kFALSE);
151 /* first daughter pt */ Int_t daug1ptID = task->CreateValue(AliRsnMiniValue::kFirstDaughterPt, kFALSE);
152 /* second daughter pt */ Int_t daug2ptID = task->CreateValue(AliRsnMiniValue::kSecondDaughterPt, kFALSE);
153 /* first daughter dca */ Int_t daug1dcaID = task->CreateValue(AliRsnMiniValue::kFirstDaughterDCA, kFALSE);
154 /* second daughter dca*/ Int_t daug2dcaID = task->CreateValue(AliRsnMiniValue::kSecondDaughterDCA, kFALSE);
1cf860e3 155 /* number of Sisters */ Int_t nsistID = task->CreateValue(AliRsnMiniValue::kNSisters, kFALSE);
43eeca31 156 /* number of trackl. */ Int_t trackletsID = task->CreateValue(AliRsnMiniValue::kTracklets, kFALSE);
474a07ae 157
158 //
159 // -- Create all needed outputs -----------------------------------------------------------------
160 //
161
162 // use an array for more compact writing, which are different on mixing and charges
163 // [0] = unlike
164 // [1] = mixing
165 // [2] = like ++
166 // [3] = like --
da997f6c 167
168
169 if(!isMC || doCalculationInMC == kTRUE){
170
43eeca31 171 Bool_t use [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
172 Bool_t useIM [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
da997f6c 173 TString name [8] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "RotateK1", "RotateK2", "LikePP" , "LikeMM"};
174 TString comp [8] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "ROTATE1" , "ROTATE1" , "PAIR" , "PAIR" };
175 TString output [8] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE"};
43eeca31 176 Char_t charge1 [8] = {'-' , '+' , '-' , '+' , '-' , '+' , '+' , '-' };
177 Char_t charge2 [8] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' };
178 Int_t cutID1 [8] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK };
179 Int_t cutID2 [8] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
180 Int_t ipdg [8] = { 421 , -421 , 421 , -421 , 421 , -421 , 421 , -421 };
da997f6c 181 Double_t mass [8] = { 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486};
35b36c39 182
183 for (Int_t i = 0; i < 8; i++) {
474a07ae 184 if (!use[i]) continue;
185
186 // create output
187 AliRsnMiniOutput *out = task->CreateOutput(Form("D0_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
188 // selection settings
189 out->SetCutID(0, cutID1[i]);
190 out->SetCutID(1, cutID2[i]);
191 out->SetDaughter(0, AliRsnDaughter::kKaon);
192 out->SetDaughter(1, AliRsnDaughter::kPion);
193 out->SetCharge(0, charge1[i]);
194 out->SetCharge(1, charge2[i]);
195 out->SetMotherPDG(ipdg[i]);
196 out->SetMotherMass(mass[i]);
197 // pair cuts
1cf860e3 198 out->SetPairCuts(cutsPair);
474a07ae 199
200 // axis X: invmass (or resolution)
1cf860e3 201 //if (useIM[i])
828a817b 202 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
1cf860e3 203 //else
204 // out->AddAxis(resID, 200, -0.02, 0.02);
474a07ae 205 // axis Y: transverse momentum
4ccdba46 206 out->AddAxis(ptID, 200, 0.0, 20.0);
474a07ae 207
43eeca31 208 // axiz Z: pseudorapidity
fdff7505 209 //if(sanityhistos==kTRUE) out->AddAxis(etaID, 100, -1, 1);
43eeca31 210
474a07ae 211
43eeca31 212 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 213 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
4ccdba46 214 else out->AddAxis(centID, 400, 0.0, 400.0);
474a07ae 215 }
43eeca31 216
217 if(sanityhistos==kTRUE){
218
219 // SANITY CHECK HISTOS
220
221 TString mode = "SPARSE";
222
223 // create output
224 AliRsnMiniOutput *out = task->CreateOutput("D0_MixingPP", mode.Data(), "MIX");
225 // selection settings
226 out->SetCutID(0, iCutK);
227 out->SetCutID(1, iCutPi);
228 out->SetDaughter(0, AliRsnDaughter::kKaon);
229 out->SetDaughter(1, AliRsnDaughter::kPion);
230 out->SetCharge(0, '+');
231 out->SetCharge(1, '+');
232 out->SetMotherPDG(421);
233 out->SetMotherMass(1.86486);
234 // pair cuts
235 out->SetPairCuts(cutsPair);
236
237 // binnings
238 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
239 out->AddAxis(ptID, 200, 0.0, 20.0);
fdff7505 240 //out->AddAxis(etaID, 100, -1, 1);
43eeca31 241
242
243 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 244 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
43eeca31 245 else out->AddAxis(centID, 400, 0.0, 400.0);
246
247 // create output
248 AliRsnMiniOutput *out = task->CreateOutput("D0_MixingMM", mode.Data(), "MIX");
249 // selection settings
250 out->SetCutID(0, iCutK);
251 out->SetCutID(1, iCutPi);
252 out->SetDaughter(0, AliRsnDaughter::kKaon);
253 out->SetDaughter(1, AliRsnDaughter::kPion);
254 out->SetCharge(0, '-');
255 out->SetCharge(1, '-');
256 out->SetMotherPDG(-421);
257 out->SetMotherMass(1.86486);
258 // pair cuts
259 out->SetPairCuts(cutsPair);
260
261 // binnings
262 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
263 out->AddAxis(ptID, 200, 0.0, 20.0);
fdff7505 264 //out->AddAxis(etaID, 100, -1, 1);
43eeca31 265
266 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 267 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
43eeca31 268 else out->AddAxis(centID, 400, 0.0, 400.0);
269
270
271 }
272
474a07ae 273
da997f6c 274 }
474a07ae 275
da997f6c 276 if(monitor == kTRUE){
474a07ae 277 AddMonitorOutput_PionEta(cutSetPi->GetMonitorOutput());
278 AddMonitorOutput_PionY(cutSetPi->GetMonitorOutput());
279 AddMonitorOutput_PionMinPt(cutSetPi->GetMonitorOutput());
280 AddMonitorOutput_PionDCA(cutSetPi->GetMonitorOutput());
281 AddMonitorOutput_PionTPC_PIDCut(cutSetPi->GetMonitorOutput());
282 AddMonitorOutput_PionTOF_PIDCut(cutSetPi->GetMonitorOutput());
283 AddMonitorOutput_PionNTPC(cutSetPi->GetMonitorOutput());
284
285 AddMonitorOutput_KaonEta(cutSetK->GetMonitorOutput());
286 AddMonitorOutput_KaonY(cutSetK->GetMonitorOutput());
287 AddMonitorOutput_KaonMinPt(cutSetK->GetMonitorOutput());
288 AddMonitorOutput_KaonDCA(cutSetK->GetMonitorOutput());
289 AddMonitorOutput_KaonTPC_PIDCut(cutSetK->GetMonitorOutput());
290 AddMonitorOutput_KaonTOF_PIDCut(cutSetK->GetMonitorOutput());
291 AddMonitorOutput_KaonNTPC(cutSetK->GetMonitorOutput());
da997f6c 292 }
293
474a07ae 294
1cf860e3 295 if (isMC) {
296
297 // TRUE RECONSTRUCTED PAIRS
298
299 TString mode = "SPARSE";
300
301 // create output
302 AliRsnMiniOutput *out = task->CreateOutput("D0_True1", mode.Data(), "TRUE");
303 // selection settings
304 out->SetCutID(0, iCutK);
305 out->SetCutID(1, iCutPi);
306 out->SetDaughter(0, AliRsnDaughter::kKaon);
307 out->SetDaughter(1, AliRsnDaughter::kPion);
308 out->SetCharge(0, '-');
309 out->SetCharge(1, '+');
310 out->SetMotherPDG(421);
311 out->SetMotherMass(1.86486);
312 // pair cuts
313 out->SetPairCuts(cutsPair);
314 out->SetMaxNSisters(maxSisters);
315 out->SetCheckMomentumConservation(checkP);
e14e18cc 316 out->SetCheckFeedDown(checkFeedDown);
317 out->SetRejectCandidateIfNotFromQuark(checkQuark);
318 out->SetDselection(originDselection);
1cf860e3 319 // binnings
828a817b 320 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
4ccdba46 321 out->AddAxis(ptID, 200, 0.0, 20.0);
1cf860e3 322 //out->AddAxis(yID, 100, -1, 1);
323 //out->AddAxis(dcapID, 100, -0.001, 0.001);
324 //out->AddAxis(nsistID, 10, 0, 5);
474a07ae 325
43eeca31 326 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 327 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
4ccdba46 328 else out->AddAxis(centID, 400, 0.0, 400.0);
1cf860e3 329
330 // create output
331 AliRsnMiniOutput *out = task->CreateOutput("D0_True2", mode.Data(), "TRUE");
332 // selection settings
57b34356 333 out->SetCutID(0, iCutK);
334 out->SetCutID(1, iCutPi);
1cf860e3 335 out->SetDaughter(0, AliRsnDaughter::kKaon);
336 out->SetDaughter(1, AliRsnDaughter::kPion);
57b34356 337 out->SetCharge(0, '+');
338 out->SetCharge(1, '-');
1cf860e3 339 out->SetMotherPDG(-421);
340 out->SetMotherMass(1.86486);
341 // pair cuts
342 out->SetPairCuts(cutsPair);
343 out->SetMaxNSisters(maxSisters);
344 out->SetCheckMomentumConservation(checkP);
e14e18cc 345 out->SetCheckFeedDown(checkFeedDown);
346 out->SetRejectCandidateIfNotFromQuark(checkQuark);
347 out->SetDselection(originDselection);
1cf860e3 348 // binnings
828a817b 349 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
4ccdba46 350 out->AddAxis(ptID, 200, 0.0, 20.0);
1cf860e3 351 //out->AddAxis(yID, 100, -1, 1);
352 //out->AddAxis(dcapID, 100, -0.001, 0.001);
353 //out->AddAxis(nsistID, 10, 0, 5);
354
43eeca31 355 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 356 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
4ccdba46 357 else out->AddAxis(centID, 400, 0.0, 400.0);
474a07ae 358
1cf860e3 359
1cf860e3 360 // GENERATED MOTHERS
361
362 TString mode = "SPARSE";
363
364 // create output
365 AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC1", mode.Data(), "MOTHER");
474a07ae 366 // selection settings
367 out->SetDaughter(0, AliRsnDaughter::kKaon);
368 out->SetDaughter(1, AliRsnDaughter::kPion);
369 out->SetMotherPDG(421);
370 out->SetMotherMass(1.86486);
371 // pair cuts
372 out->SetPairCuts(cutsPairY);
373 // binnings
828a817b 374 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
4ccdba46 375 out->AddAxis(ptID, 200, 0.0, 20.0);
8b48b94e 376 //out->AddAxis(yID, 100, -1, 1);
474a07ae 377
43eeca31 378 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 379 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
4ccdba46 380 else out->AddAxis(centID, 400, 0.0, 400.0);
474a07ae 381
382 // create output
1cf860e3 383 AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC2", mode.Data(), "MOTHER");
474a07ae 384 // selection settings
385 out->SetDaughter(0, AliRsnDaughter::kKaon);
386 out->SetDaughter(1, AliRsnDaughter::kPion);
387 out->SetMotherPDG(-421);
388 out->SetMotherMass(1.86486);
389 // pair cuts
390 out->SetPairCuts(cutsPairY);
391 // binnings
828a817b 392 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
4ccdba46 393 out->AddAxis(ptID, 200, 0.0, 20.0);
8b48b94e 394 //out->AddAxis(yID, 100, -1, 1);
474a07ae 395
43eeca31 396 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 397 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
4ccdba46 398 else out->AddAxis(centID, 400, 0.0, 400.0);
474a07ae 399
400
57b34356 401 // GENERATED MOTHERS IN THE ACCEPTANCE
4e6aff21 402
57b34356 403 TString mode = "SPARSE";
404
405 // create output
4e6aff21 406 AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC_InAcc1", mode.Data(), "MOTHER_IN_ACC");
57b34356 407 // selection settings
57b34356 408 out->SetDaughter(0, AliRsnDaughter::kKaon);
409 out->SetDaughter(1, AliRsnDaughter::kPion);
57b34356 410 out->SetMotherPDG(421);
411 out->SetMotherMass(1.86486);
412 // pair cuts
413 out->SetPairCuts(cutsPairY);
57b34356 414 // binnings
415 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
416 out->AddAxis(ptID, 200, 0.0, 20.0);
417 //out->AddAxis(yID, 100, -1, 1);
474a07ae 418
43eeca31 419 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 420 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
57b34356 421 else out->AddAxis(centID, 400, 0.0, 400.0);
422
423 // create output
4e6aff21 424 AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC_InAcc2", mode.Data(), "MOTHER_IN_ACC");
57b34356 425 // selection settings
57b34356 426 out->SetDaughter(0, AliRsnDaughter::kKaon);
427 out->SetDaughter(1, AliRsnDaughter::kPion);
57b34356 428 out->SetMotherPDG(-421);
429 out->SetMotherMass(1.86486);
430 // pair cuts
431 out->SetPairCuts(cutsPairY);
57b34356 432 // binnings
433 out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
434 out->AddAxis(ptID, 200, 0.0, 20.0);
435 //out->AddAxis(yID, 100, -1, 1);
436
43eeca31 437 if (!isPP) {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
69990cbe 438 else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
57b34356 439 else out->AddAxis(centID, 400, 0.0, 400.0);
440
441
442 }
4e6aff21 443
474a07ae 444
1cf860e3 445 return kTRUE;
474a07ae 446}
447
474a07ae 448
449void AddMonitorOutput_PionEta(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *peta=0)
450{
451
452 // PionEta
453 AliRsnValueDaughter *axisPionEta = new AliRsnValueDaughter("pion_eta", AliRsnValueDaughter::kEta);
78512b8e 454 axisPionEta->SetBins(-1.0,1.0,0.05);
474a07ae 455
456 // output: 2D histogram
457 AliRsnListOutput *outMonitorPionEta = new AliRsnListOutput("Pion_Eta", AliRsnListOutput::kHistoDefault);
458 outMonitorPionEta->AddValue(axisPionEta);
459
460 // add outputs to loop
461 if (mon) mon->Add(outMonitorPionEta);
462 if (peta) peta->AddOutput(outMonitorPionEta);
463
464}
465
466void AddMonitorOutput_PionY(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *py=0)
467{
468
469 // PionY
470 AliRsnValueDaughter *axisPionY = new AliRsnValueDaughter("pion_y", AliRsnValueDaughter::kY);
78512b8e 471 axisPionY->SetBins(-1.0,1.0,0.05);
474a07ae 472
473 // output: 2D histogram
474 AliRsnListOutput *outMonitorPionY = new AliRsnListOutput("Pion_Y", AliRsnListOutput::kHistoDefault);
475 outMonitorPionY->AddValue(axisPionY);
476
477 // add outputs to loop
478 if (mon) mon->Add(outMonitorPionY);
479 if (py) py->AddOutput(outMonitorPionY);
480
481}
482
483void AddMonitorOutput_PionMinPt(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pmpt=0)
484{
485
486 // PionMinPt
487 AliRsnValueDaughter *axisPionMinPt = new AliRsnValueDaughter("pion_minpt", AliRsnValueDaughter::kPt);
78512b8e 488 axisPionMinPt->SetBins(0.0,1,0.05);
474a07ae 489
490 // output: 2D histogram
491 AliRsnListOutput *outMonitorPionMinPt = new AliRsnListOutput("Pion_MinPt", AliRsnListOutput::kHistoDefault);
492 outMonitorPionMinPt->AddValue(axisPionMinPt);
493
494 // add outputs to loop
495 if (mon) mon->Add(outMonitorPionMinPt);
496 if (pmpt) pmpt->AddOutput(outMonitorPionMinPt);
497
498}
499
500void AddMonitorOutput_PionDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pdca=0)
501{
502
503 // PionDCA
504 AliRsnValueDaughter *axisPionDCA = new AliRsnValueDaughter("pion_dca", AliRsnValueDaughter::kDCAXY);
78512b8e 505 axisPionDCA->SetBins(-1.0,1,0.05);
474a07ae 506
507 // output: 2D histogram
508 AliRsnListOutput *outMonitorPionDCA = new AliRsnListOutput("Pion_DCA", AliRsnListOutput::kHistoDefault);
509 outMonitorPionDCA->AddValue(axisPionDCA);
510
511 // add outputs to loop
512 if (mon) mon->Add(outMonitorPionDCA);
513 if (pdca) pdca->AddOutput(outMonitorPionDCA);
514
515}
516
517void AddMonitorOutput_PionTPC_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piTPCPID=0)
518{
519
520 // Pion PID Cut
521 AliRsnValueDaughter *axisPionTPCPIDCut = new AliRsnValueDaughter("pionTPCPID", AliRsnValueDaughter::kTPCnsigmaPi);
a44cd39e 522 axisPionTPCPIDCut->SetBins(0.0,5,0.1);
474a07ae 523
524 // output: 2D histogram
525 AliRsnListOutput *outMonitorPionTPCPIDCut = new AliRsnListOutput("Pion_TPC_PID_Cut", AliRsnListOutput::kHistoDefault);
526 outMonitorPionTPCPIDCut->AddValue(axisPionTPCPIDCut);
527
528 // add outputs to loop
529 if (mon) mon->Add(outMonitorPionTPCPIDCut);
530 if (piTPCPID) piTPCPID->AddOutput(outMonitorPionPIDCut);
531
532}
533
534void AddMonitorOutput_PionTOF_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piTOFPID=0)
535{
536
537 // Pion PID Cut
538 AliRsnValueDaughter *axisPionTOFPIDCut = new AliRsnValueDaughter("pionTOFPID", AliRsnValueDaughter::kTOFnsigmaPi);
a44cd39e 539 axisPionTOFPIDCut->SetBins(0.0,5,0.1);
474a07ae 540
541 // output: 2D histogram
542 AliRsnListOutput *outMonitorPionTOFPIDCut = new AliRsnListOutput("Pion_TOF_PID_Cut", AliRsnListOutput::kHistoDefault);
543 outMonitorPionTOFPIDCut->AddValue(axisPionTOFPIDCut);
544
545 // add outputs to loop
546 if (mon) mon->Add(outMonitorPionTOFPIDCut);
547 if (piTOFPID) piTOFPID->AddOutput(outMonitorPionTOFPIDCut);
548
549}
550
551void AddMonitorOutput_PionNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piNTPC=0)
552{
553
554 // Pion PID Cut
555 AliRsnValueDaughter *axisPionNTPC = new AliRsnValueDaughter("pionNTPC", AliRsnValueDaughter::kNTPCclusters);
556 axisPionNTPC->SetBins(0.0,200,1);
557
558 // output: 2D histogram
559 AliRsnListOutput *outMonitorPionNTPC = new AliRsnListOutput("Pion_NTPC", AliRsnListOutput::kHistoDefault);
560 outMonitorPionNTPC->AddValue(axisPionNTPC);
561
562 // add outputs to loop
563 if (mon) mon->Add(outMonitorPionNTPC);
670857a6 564 if (piNTPC) piNTPC->AddOutput(outMonitorPionNTPC);
474a07ae 565
566}
567
568void AddMonitorOutput_KaonEta(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *keta=0)
569{
570
571 // KaonEta
572 AliRsnValueDaughter *axisKaonEta = new AliRsnValueDaughter("kaon_eta", AliRsnValueDaughter::kEta);
78512b8e 573 axisKaonEta->SetBins(-1.0,1.0,0.05);
474a07ae 574
575 // output: 2D histogram
576 AliRsnListOutput *outMonitorKaonEta = new AliRsnListOutput("Kaon_Eta", AliRsnListOutput::kHistoDefault);
577 outMonitorKaonEta->AddValue(axisKaonEta);
578
579 // add outputs to loop
580 if (mon) mon->Add(outMonitorKaonEta);
581 if (keta) keta->AddOutput(outMonitorKaonEta);
582
583}
584
585void AddMonitorOutput_KaonY(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ky=0)
586{
587
588 // KaonY
589 AliRsnValueDaughter *axisKaonY = new AliRsnValueDaughter("kaon_y", AliRsnValueDaughter::kY);
78512b8e 590 axisKaonY->SetBins(-1.0,1.0,0.05);
474a07ae 591
592 // output: 2D histogram
593 AliRsnListOutput *outMonitorKaonY = new AliRsnListOutput("Kaon_Y", AliRsnListOutput::kHistoDefault);
594 outMonitorKaonY->AddValue(axisKaonY);
595
596 // add outputs to loop
597 if (mon) mon->Add(outMonitorKaonY);
598 if (ky) ky->AddOutput(outMonitorKaonY);
599
600}
601
602void AddMonitorOutput_KaonMinPt(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kmpt=0)
603{
604
605 // KaonMinPt
606 AliRsnValueDaughter *axisKaonMinPt = new AliRsnValueDaughter("kaon_minpt", AliRsnValueDaughter::kPt);
78512b8e 607 axisKaonMinPt->SetBins(0.0,1,0.05);
474a07ae 608
609 // output: 2D histogram
610 AliRsnListOutput *outMonitorKaonMinPt = new AliRsnListOutput("Kaon_MinPt", AliRsnListOutput::kHistoDefault);
611 outMonitorKaonMinPt->AddValue(axisKaonMinPt);
612
613 // add outputs to loop
614 if (mon) mon->Add(outMonitorKaonMinPt);
615 if (kmpt) kmpt->AddOutput(outMonitorKaonMinPt);
616
617}
618
619void AddMonitorOutput_KaonDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kdca=0)
620{
621
622 // KaonDCA
623 AliRsnValueDaughter *axisKaonDCA = new AliRsnValueDaughter("kaon_dca", AliRsnValueDaughter::kDCAXY);
78512b8e 624 axisKaonDCA->SetBins(-1.0,1,0.05);
474a07ae 625
626 // output: 2D histogram
627 AliRsnListOutput *outMonitorKaonDCA = new AliRsnListOutput("Kaon_DCA", AliRsnListOutput::kHistoDefault);
628 outMonitorKaonDCA->AddValue(axisKaonDCA);
629
630 // add outputs to loop
631 if (mon) mon->Add(outMonitorKaonDCA);
632 if (kdca) kdca->AddOutput(outMonitorKaonDCA);
633
634}
635
636void AddMonitorOutput_KaonTPC_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kTPCPID=0)
637{
638
639 // Kaon TPC PID Cut
640 AliRsnValueDaughter *axisKaonTPCPIDCut = new AliRsnValueDaughter("kaonTPCPID", AliRsnValueDaughter::kTPCnsigmaK);
a44cd39e 641 axisKaonTPCPIDCut->SetBins(0.0,5,0.1);
474a07ae 642
643 // output: 2D histogram
644 AliRsnListOutput *outMonitorKaonTPCPIDCut = new AliRsnListOutput("Kaon_TPC_PID_Cut", AliRsnListOutput::kHistoDefault);
645 outMonitorKaonTPCPIDCut->AddValue(axisKaonTPCPIDCut);
646
647 // add outputs to loop
648 if (mon) mon->Add(outMonitorKaonTPCPIDCut);
649 if (kTPCPID) kTPCPID->AddOutput(outMonitorKaonTPCPIDCut);
650
651}
652
653void AddMonitorOutput_KaonTOF_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kTOFPID=0)
654{
655
656 // Kaon TOF PID Cut
657 AliRsnValueDaughter *axisKaonTOFPIDCut = new AliRsnValueDaughter("kaonTOFPID", AliRsnValueDaughter::kTOFnsigmaK);
a44cd39e 658 axisKaonTOFPIDCut->SetBins(0.0,5,0.1);
474a07ae 659
660 // output: 2D histogram
661 AliRsnListOutput *outMonitorKaonTOFPIDCut = new AliRsnListOutput("Kaon_TOF_PID_Cut", AliRsnListOutput::kHistoDefault);
662 outMonitorKaonTOFPIDCut->AddValue(axisKaonTOFPIDCut);
663
664 // add outputs to loop
665 if (mon) mon->Add(outMonitorKaonTOFPIDCut);
666 if (kTOFPID) kTOFPID->AddOutput(outMonitorKaonTOFPIDCut);
667
668}
669
670void AddMonitorOutput_KaonNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kNTPC=0)
671{
672
673 // Kaon PID Cut
674 AliRsnValueDaughter *axisKaonNTPC = new AliRsnValueDaughter("kaonNTPC", AliRsnValueDaughter::kNTPCclusters);
675 axisKaonNTPC->SetBins(0.0,200,1);
676
677 // output: 2D histogram
678 AliRsnListOutput *outMonitorKaonNTPC = new AliRsnListOutput("Kaon_NTPC", AliRsnListOutput::kHistoDefault);
679 outMonitorKaonNTPC->AddValue(axisKaonNTPC);
680
681 // add outputs to loop
682 if (mon) mon->Add(outMonitorKaonNTPC);
683 if (kNTPC) kNTPC->AddOutput(outMonitorKaonNTPC);
684
685}
686