2 // *** Configuration script for Sigma*->Lambda-Pi analysis with 2010 runs ***
4 // A configuration script for RSN package needs to define the followings:
6 // (1) decay tree of each resonance to be studied, which is needed to select
7 // true pairs and to assign the right mass to all candidate daughters
8 // (2) cuts at all levels: single daughters, tracks, events
9 // (3) output objects: histograms or trees
11 Bool_t ConfigSigmaStarPbPb
13 AliRsnMiniAnalysisTask *task,
22 Float_t lambdaCosPoinAn,
23 Float_t lambdaDaughDCA,
26 AliRsnCutSet *cutsPair
30 if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
33 // -- Define track cuts -------------------------------------------------------------------------
36 // integrated pion cut
37 AliRsnCutDaughterSigmaStar2010PP *cutPi = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStar", AliPID::kPion);
38 cutPi->SetPIDCut(piPIDCut);
39 cutPi->SetMinTPCcluster(NTPCcluster);
40 AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
41 cutQuality->SetAODTestFilterBit(aodFilterBit);
42 cutQuality->SetDCARmax(piDCAcut);
45 AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionForSigmaStar", AliRsnTarget::kDaughter);
46 cutSetPi->AddCut(cutPi);
47 cutSetPi->SetCutScheme(cutPi->GetName());
49 Int_t iCutPi = task->AddTrackCuts(cutSetPi);
52 AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("qualityDaughterLambda");
54 esdTrackCuts->SetAcceptKinkDaughters(0); // 0 = kFalse
55 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
56 esdTrackCuts->SetMaxChi2PerClusterTPC(4);
57 esdTrackCuts->SetMinNClustersTPC(NTPCcluster);
58 esdTrackCuts->SetRequireTPCRefit();
61 AliRsnCutV0 *cutLambda = new AliRsnCutV0("cutLambda", kLambda0, AliPID::kProton, AliPID::kPion);
62 cutLambda->SetESDtrackCuts(esdTrackCuts);
63 cutLambda->SetTolerance(massTol);
64 cutLambda->SetMaxDCAVertex(lambdaDCA);
65 cutLambda->SetMinCosPointingAngle(lambdaCosPoinAn);
66 cutLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
67 cutLambda->SetMinTPCcluster(NTPCcluster);
68 cutLambda->SetMaxRapidity(0.8);
69 cutLambda->SetAODTestFilterBit(aodFilterBit);
70 cutLambda->SetPIDCut1(pPIDCut);
71 cutLambda->SetPIDCut2(piPIDCut);
72 cutLambda->SetPIDCut3(piPIDCut);
75 AliRsnCutSet *cutSetLambda = new AliRsnCutSet("setLambda", AliRsnTarget::kDaughter);
76 cutSetLambda->AddCut(cutLambda);
77 cutSetLambda->SetCutScheme(cutLambda->GetName());
80 Int_t iCutLambda = task->AddTrackCuts(cutSetLambda);
82 // cut anti-AntiLambda
83 AliRsnCutV0 *cutAntiLambda = new AliRsnCutV0("cutAntiLambda", kLambda0Bar, AliPID::kProton, AliPID::kPion);
84 cutAntiLambda->SetESDtrackCuts(esdTrackCuts);
85 cutAntiLambda->SetTolerance(massTol);
86 cutAntiLambda->SetMaxDCAVertex(lambdaDCA);
87 cutAntiLambda->SetMinCosPointingAngle(lambdaCosPoinAn);
88 cutAntiLambda->SetMaxDaughtersDCA(lambdaDaughDCA);
89 cutAntiLambda->SetMinTPCcluster(NTPCcluster);
90 cutAntiLambda->SetMaxRapidity(0.8);
91 cutAntiLambda->SetAODTestFilterBit(aodFilterBit);
92 cutAntiLambda->SetPIDCut1(pPIDCut);
93 cutAntiLambda->SetPIDCut2(piPIDCut);
94 cutAntiLambda->SetPIDCut3(piPIDCut);
97 AliRsnCutSet *cutSetAntiLambda = new AliRsnCutSet("setAntiLambda", AliRsnTarget::kDaughter);
98 cutSetAntiLambda->AddCut(cutAntiLambda);
99 cutSetAntiLambda->SetCutScheme(cutAntiLambda->GetName());
101 Int_t iCutAntiLambda = task->AddTrackCuts(cutSetAntiLambda);
104 //######################################################################################################
107 // -- Values ------------------------------------------------------------------------------------
110 /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
111 /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
112 /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
113 /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
114 /* rapidity */ Int_t rapID = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
117 // -- Create all needed outputs -----------------------------------------------------------------
120 // use an array for more compact writing, which are different on mixing and charges
125 Bool_t use [18] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
126 Bool_t useIM [18] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
127 TString name [18] = {"SigmaP" , "SigmaM" , "ASigmaP" , "ASigmaM" , "SigmaPmix", "SigmaMmix", "ASigmaPmix" , "ASigmaMmix" , "SigmaPt" , "SigmaMt" , "ASigmaPt" , "ASigmaMt" , "XiM" , "XiP" , "Lambda1520P" , "Lambda1520M" , "Lambda1520PBar", "Lambda1520MBar"};
128 TString comp [18] = {"PAIR" , "PAIR" , "PAIR" , "PAIR" , "MIX" , "MIX" , "MIX" , "MIX" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" };
129 TString output [18] = {"HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" };
130 Char_t charge1 [18] = {'0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' };
131 Char_t charge2 [18] = {'+' , '-' , '-' , '+' , '+' , '-' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' };
132 Int_t cutID1 [18] = { iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda , iCutAntiLambda , iCutLambda , iCutLambda , iCutAntiLambda , iCutAntiLambda };
133 Int_t cutID2 [18] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
134 Int_t ipdg [18] = { 3224 , 3114 , -3224 , -3114 , 3224 , 3114 , -3224 , -3114 , 3224 , 3114 , -3224 , -3114 , 3312 , -3312 , 3124 , 3124 , -3124 , -3124 };
135 Double_t mass [18] = { 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.32171 , 1.32171 , 1.5195 , 1.5195 , 1.5195 , 1.5195 };
137 for (Int_t i = 0; i < 18; i++) {
138 if (!use[i]) continue;
139 if (!isPP) output[i] = "SPARSE";
141 AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastar_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
142 // selection settings
143 out->SetCutID(0, cutID1[i]);
144 out->SetCutID(1, cutID2[i]);
145 out->SetDaughter(0, AliRsnDaughter::kLambda);
146 out->SetDaughter(1, AliRsnDaughter::kPion);
147 out->SetCharge(0, charge1[i]);
148 out->SetCharge(1, charge2[i]);
149 out->SetMotherPDG(ipdg[i]);
150 out->SetMotherMass(mass[i]);
152 out->SetPairCuts(cutsPair);
155 out->AddAxis(imID, 800, 1.2, 2.0);
156 // axis Y: transverse momentum
157 out->AddAxis(ptID, 100, 0.0, 10.0);
159 //out->AddAxis(rapID, 160, -0.8, 0.8);
161 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
168 TString mode = "HIST";
169 if (!isPP) mode = "SPARSE";
172 AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarP_TrueMC%s", suffix), mode.Data(), "MOTHER");
173 // selection settings
174 out->SetDaughter(0, AliRsnDaughter::kLambda);
175 out->SetDaughter(1, AliRsnDaughter::kPion);
176 out->SetMotherPDG(3224);
177 out->SetMotherMass(1.3828);
179 out->SetPairCuts(cutsPair);
181 out->AddAxis(imID, 800, 1.2, 2.0);
182 out->AddAxis(ptID, 100, 0.0, 10.0);
183 //out->AddAxis(rapID, 160, -0.8, 0.8);
184 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
187 AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarM_TrueMC%s", suffix), mode.Data(), "MOTHER");
188 // selection settings
189 out->SetDaughter(0, AliRsnDaughter::kLambda);
190 out->SetDaughter(1, AliRsnDaughter::kPion);
191 out->SetMotherPDG(3114);
192 out->SetMotherMass(1.3872);
194 out->SetPairCuts(cutsPair);
196 out->AddAxis(imID, 800, 1.2, 2.0);
197 out->AddAxis(ptID, 100, 0.0, 10.0);
198 //out->AddAxis(rapID, 160, -0.8, 0.8);
199 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
202 AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarPBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
203 // selection settings
204 out->SetDaughter(0, AliRsnDaughter::kLambda);
205 out->SetDaughter(1, AliRsnDaughter::kPion);
206 out->SetMotherPDG(-3224);
207 out->SetMotherMass(1.3828);
209 out->SetPairCuts(cutsPair);
211 out->AddAxis(imID, 800, 1.2, 2.0);
212 out->AddAxis(ptID, 100, 0.0, 10.0);
213 //out->AddAxis(rapID, 160, -0.8, 0.8);
214 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
218 AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarMBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
219 // selection settings
220 out->SetDaughter(0, AliRsnDaughter::kLambda);
221 out->SetDaughter(1, AliRsnDaughter::kPion);
222 out->SetMotherPDG(-3114);
223 out->SetMotherMass(1.3872);
225 out->SetPairCuts(cutsPair);
227 out->AddAxis(imID, 800, 1.2, 2.0);
228 out->AddAxis(ptID, 100, 0.0, 10.0);
229 //out->AddAxis(rapID, 160, -0.8, 0.8);
230 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
233 AliRsnMiniOutput *out = task->CreateOutput(Form("XiP_TrueMC%s", suffix), mode.Data(), "MOTHER");
234 // selection settings
235 out->SetDaughter(0, AliRsnDaughter::kLambda);
236 out->SetDaughter(1, AliRsnDaughter::kPion);
237 out->SetMotherPDG(-3312);
238 out->SetMotherMass(1.32171);
240 out->SetPairCuts(cutsPair);
242 out->AddAxis(imID, 800, 1.2, 2.0);
243 out->AddAxis(ptID, 100, 0.0, 10.0);
244 //out->AddAxis(rapID, 160, -0.8, 0.8);
245 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
249 AliRsnMiniOutput *out = task->CreateOutput(Form("XiM_TrueMC%s", suffix), mode.Data(), "MOTHER");
250 // selection settings
251 out->SetDaughter(0, AliRsnDaughter::kLambda);
252 out->SetDaughter(1, AliRsnDaughter::kPion);
253 out->SetMotherPDG(3312);
254 out->SetMotherMass(1.32171);
256 out->SetPairCuts(cutsPair);
258 out->AddAxis(imID, 800, 1.2, 2.0);
259 out->AddAxis(ptID, 100, 0.0, 10.0);
260 //out->AddAxis(rapID, 160, -0.8, 0.8);
261 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
264 AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520P_TrueMC%s", suffix), mode.Data(), "MOTHER");
265 // selection settings
266 out->SetDaughter(0, AliRsnDaughter::kLambda);
267 out->SetDaughter(1, AliRsnDaughter::kPion);
268 out->SetCharge(0, 0);
269 out->SetCharge(1, 1);
270 out->SetMotherPDG(3124);
271 out->SetMotherMass(1.5195);
273 out->SetPairCuts(cutsPair);
275 out->AddAxis(imID, 800, 1.2, 2.0);
276 out->AddAxis(ptID, 100, 0.0, 10.0);
277 //out->AddAxis(rapID, 160, -0.8, 0.8);
278 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
280 AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520M_TrueMC%s", suffix), mode.Data(), "MOTHER");
281 // selection settings
282 out->SetDaughter(0, AliRsnDaughter::kLambda);
283 out->SetDaughter(1, AliRsnDaughter::kPion);
284 out->SetCharge(0, 0);
285 out->SetCharge(1, -1);
286 out->SetMotherPDG(3124);
287 out->SetMotherMass(1.5195);
289 out->SetPairCuts(cutsPair);
291 out->AddAxis(imID, 800, 1.2, 2.0);
292 out->AddAxis(ptID, 100, 0.0, 10.0);
293 //out->AddAxis(rapID, 160, -0.8, 0.8);
294 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
298 AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520PBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
299 // selection settings
300 out->SetDaughter(0, AliRsnDaughter::kLambda);
301 out->SetDaughter(1, AliRsnDaughter::kPion);
302 out->SetCharge(0, 0);
303 out->SetCharge(1, 1);
304 out->SetMotherPDG(-3124);
305 out->SetMotherMass(1.5195);
307 out->SetPairCuts(cutsPair);
309 out->AddAxis(imID, 800, 1.2, 2.0);
310 out->AddAxis(ptID, 100, 0.0, 10.0);
311 //out->AddAxis(rapID, 160, -0.8, 0.8);
312 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
314 AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520MBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
315 // selection settings
316 out->SetDaughter(0, AliRsnDaughter::kLambda);
317 out->SetDaughter(1, AliRsnDaughter::kPion);
318 out->SetCharge(0, 0);
319 out->SetCharge(1, -1);
320 out->SetMotherPDG(-3124);
321 out->SetMotherMass(1.5195);
323 out->SetPairCuts(cutsPair);
325 out->AddAxis(imID, 800, 1.2, 2.0);
326 out->AddAxis(ptID, 100, 0.0, 10.0);
327 //out->AddAxis(rapID, 160, -0.8, 0.8);
328 if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
339 void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
343 AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("m", AliRsnValueDaughter::kMass);
344 axisMass->SetBins(0.7,1.5,0.05);
346 // output: 2D histogram
347 AliRsnListOutput *outMonitorM = new AliRsnListOutput("M", AliRsnListOutput::kHistoDefault);
348 outMonitorM->AddValue(axisMass);
350 // add outputs to loop
351 if (mon) mon->Add(outMonitorM);
352 if (lm) lm->AddOutput(outMonitorM);