]>
Commit | Line | Data |
---|---|---|
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 | // | |
11 | Bool_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 | |
449 | void 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 | ||
466 | void 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 | ||
483 | void 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 | ||
500 | void 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 | ||
517 | void 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 | ||
534 | void 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 | ||
551 | void 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 | ||
568 | void 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 | ||
585 | void 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 | ||
602 | void 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 | ||
619 | void 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 | ||
636 | void 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 | ||
653 | void 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 | ||
670 | void 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 |