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