]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/mini/ConfigSigmaStar.C
Modified cut classes for Sigma* analysis to include cut on the TPC Nclusters. Config...
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigSigmaStar.C
1 //
2 // *** Configuration script for Sigma*->Lambda-Pi analysis with 2010 runs ***
3 // 
4 // A configuration script for RSN package needs to define the followings:
5 //
6 // (1) decay tree of each resonance to be studied, which is needed to select
7 //     true pairs and to assign the right mass to all candidate daughters
8 // (2) cuts at all levels: single daughters, tracks, events
9 // (3) output objects: histograms or trees
10 //
11 Bool_t ConfigSigmaStar
12 (  
13    AliRsnMiniAnalysisTask *task,
14    Bool_t                  isPP, 
15    Bool_t                  isMC,
16    Float_t                 piPIDCut,
17    Float_t                 pPIDCut,
18    Int_t                   aodFilterBit,
19    Float_t                 piDCAcut,
20    Float_t                 massTol,
21    Float_t                 lambdaDCA,
22    Float_t                 lambdaCosPoinAn,
23    Float_t                 lambdaDaughDCA,
24    Int_t                   NTPCcluster,
25    const char             *suffix,
26    AliRsnCutSet           *cutsPair
27 )
28 {
29    // manage suffix
30    if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
31    
32    // 
33    // -- Define track cuts -------------------------------------------------------------------------
34    //
35
36    // integrated pion cut
37    AliRsnCutDaughterSigmaStar2010PP *cutPi = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStar", AliPID::kPion);
38    cutPi->SetPIDCut(piPIDCut);
39    AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
40    cutQuality->SetAODTestFilterBit(aodFilterBit);
41    cutQuality->SetDCARmax(piDCAcut);             
42     
43    // cut set
44    AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionForSigmaStar", AliRsnTarget::kDaughter);
45    cutSetPi->AddCut(cutPi);
46    cutSetPi->SetCutScheme(cutPi->GetName());
47    // add to task
48    Int_t iCutPi = task->AddTrackCuts(cutSetPi);
49    
50    // quality cuts
51    AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("qualityDaughterLambda");
52    
53    esdTrackCuts->SetAcceptKinkDaughters(0); // 0 = kFalse
54    esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
55    esdTrackCuts->SetMaxChi2PerClusterTPC(4);
56    esdTrackCuts->SetMinNClustersTPC(NTPCcluster);
57    esdTrackCuts->SetRequireTPCRefit();
58    
59    // cut lambda
60    //AliRsnCutV0 *cutLambda = new AliRsnCutV0("cutLambda", kLambda0);
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->SetMaxRapidity(0.8);
68    cutLambda->SetAODTestFilterBit(aodFilterBit);
69    cutLambda->SetPIDCut1(pPIDCut);
70    cutLambda->SetPIDCut2(piPIDCut);
71    cutLambda->SetPIDCut3(piPIDCut);
72    
73    // cut set
74    AliRsnCutSet *cutSetLambda = new AliRsnCutSet("setLambda", AliRsnTarget::kDaughter);
75    cutSetLambda->AddCut(cutLambda);
76    cutSetLambda->SetCutScheme(cutLambda->GetName());
77    
78    // add to task
79    Int_t iCutLambda = task->AddTrackCuts(cutSetLambda);
80    
81    // cut anti-AntiLambda
82    //AliRsnCutV0 *cutAntiLambda = new AliRsnCutV0("cutAntiLambda", kLambda0Bar);
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->SetMaxRapidity(0.8);
90    cutAntiLambda->SetAODTestFilterBit(aodFilterBit);
91    cutAntiLambda->SetPIDCut1(pPIDCut);
92    cutAntiLambda->SetPIDCut2(piPIDCut);
93    cutAntiLambda->SetPIDCut3(piPIDCut);
94    
95    // cut set
96    AliRsnCutSet *cutSetAntiLambda = new AliRsnCutSet("setAntiLambda", AliRsnTarget::kDaughter);
97    cutSetAntiLambda->AddCut(cutAntiLambda);
98    cutSetAntiLambda->SetCutScheme(cutAntiLambda->GetName());
99    // add to task
100    Int_t iCutAntiLambda = task->AddTrackCuts(cutSetAntiLambda);
101
102    
103    //######################################################################################################  
104     
105    //
106    // -- Values ------------------------------------------------------------------------------------
107    //
108    
109    /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
110    /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
111    /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
112    /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
113    /* rapidity         */ Int_t rapID  = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
114    
115    //
116    // -- Create all needed outputs -----------------------------------------------------------------
117    //
118    
119    // use an array for more compact writing, which are different on mixing and charges
120    // [0] = unlike
121    // [1] = mixing
122    // [2] = like ++
123    // [3] = like --
124    Bool_t   use     [18] = { 1         ,  1         ,  1             ,  1             ,  1         ,  1         ,  1             ,  1             ,  1         ,  1         ,  1             ,  1             ,  1          ,  1              ,  1              ,  1              ,  1              ,  1              };
125    Bool_t   useIM   [18] = { 1         ,  1         ,  1             ,  1             ,  1         ,  1         ,  1             ,  1             ,  1         ,  1         ,  1             ,  1             ,  1          ,  1              ,  1              ,  1              ,  1              ,  1              };
126    TString  name    [18] = {"SigmaP"   , "SigmaM"   , "ASigmaP"      , "ASigmaM"      , "SigmaPmix", "SigmaMmix", "ASigmaPmix"   , "ASigmaMmix"   , "SigmaPt"  , "SigmaMt"  , "ASigmaPt"     , "ASigmaMt"     , "XiM"       , "XiP"           , "Lambda1520P"   , "Lambda1520M"   , "Lambda1520PBar", "Lambda1520MBar"};
127    TString  comp    [18] = {"PAIR"     , "PAIR"     , "PAIR"         , "PAIR"         , "MIX"      , "MIX"      , "MIX"          , "MIX"          , "TRUE"     , "TRUE"     , "TRUE"         , "TRUE"         , "TRUE"      , "TRUE"          , "TRUE"          , "TRUE"          , "TRUE"          , "TRUE"          };
128    TString  output  [18] = {"HIST"     , "HIST"     , "HIST"         , "HIST"         , "HIST"     , "HIST"     , "HIST"         , "HIST"         , "HIST"     , "HIST"     , "HIST"         , "HIST"         , "HIST"      , "HIST"          , "HIST"          , "HIST"          , "HIST"          , "HIST"          };
129    Char_t   charge1 [18] = {'0'        , '0'        , '0'            , '0'            , '0'        , '0'        , '0'            , '0'            , '0'        , '0'        , '0'            , '0'            , '0'         , '0'             , '0'             , '0'             , '0'             , '0'             };
130    Char_t   charge2 [18] = {'+'        , '-'        , '-'            , '+'            , '+'        , '-'        , '-'            , '+'            , '+'        , '-'        , '-'            , '+'            , '-'         , '+'             , '+'             , '-'             , '-'             , '+'             };
131    Int_t    cutID1  [18] = { iCutLambda,  iCutLambda,  iCutAntiLambda,  iCutAntiLambda,  iCutLambda,  iCutLambda,  iCutAntiLambda,  iCutAntiLambda,  iCutLambda,  iCutLambda,  iCutAntiLambda,  iCutAntiLambda,  iCutLambda ,  iCutAntiLambda ,  iCutLambda     ,  iCutLambda     ,  iCutAntiLambda ,  iCutAntiLambda };
132    Int_t    cutID2  [18] = { iCutPi    ,  iCutPi    ,  iCutPi        ,  iCutPi        ,  iCutPi    ,  iCutPi    ,  iCutPi        ,  iCutPi        ,  iCutPi    ,  iCutPi    ,  iCutPi        ,  iCutPi        ,  iCutPi     ,  iCutPi         ,  iCutPi         ,  iCutPi         ,  iCutPi         ,  iCutPi         };
133    Int_t    ipdg    [18] = { 3224      ,  3114      , -3224          , -3114          ,  3224      ,  3114      , -3224          , -3114          ,  3224      ,  3114      , -3224          , -3114          ,  3312       , -3312           ,  3124           ,  3124           , -3124           , -3124           };
134    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         };
135    
136    for (Int_t i = 0; i < 18; i++) {
137       if (!use[i]) continue;
138       if (!isPP) output[i] = "SPARSE";
139       // create output
140       AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastar_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
141       // selection settings
142       out->SetCutID(0, cutID1[i]);
143       out->SetCutID(1, cutID2[i]);
144       out->SetDaughter(0, AliRsnDaughter::kLambda);
145       out->SetDaughter(1, AliRsnDaughter::kPion);
146       out->SetCharge(0, charge1[i]);
147       out->SetCharge(1, charge2[i]);
148       out->SetMotherPDG(ipdg[i]);
149       out->SetMotherMass(mass[i]);
150       // pair cuts
151       out->SetPairCuts(cutsPair);
152       // axis X: invmass
153       if (useIM[i]) 
154          out->AddAxis(imID, 800, 1.2, 2.0);
155       // axis Y: transverse momentum
156          out->AddAxis(ptID, 100, 0.0, 10.0);
157       // axis Z: rapidity
158          //out->AddAxis(rapID, 160, -0.8, 0.8);
159          
160       if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
161       
162     } 
163    
164    
165    if (isMC) {
166    
167    TString mode = "HIST";
168    if (!isPP) mode = "SPARSE";
169    
170    // create output
171    AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarP_TrueMC%s", suffix), mode.Data(), "MOTHER");
172    // selection settings
173    out->SetDaughter(0, AliRsnDaughter::kLambda);
174    out->SetDaughter(1, AliRsnDaughter::kPion);
175    out->SetMotherPDG(3224);
176    out->SetMotherMass(1.3828);
177    // pair cuts
178    out->SetPairCuts(cutsPair);
179    // binnings
180    out->AddAxis(imID, 800, 1.2, 2.0);
181    out->AddAxis(ptID, 100, 0.0, 10.0);
182    //out->AddAxis(rapID, 160, -0.8, 0.8);
183    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
184    
185    // create output
186    AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarM_TrueMC%s", suffix), mode.Data(), "MOTHER");
187    // selection settings
188    out->SetDaughter(0, AliRsnDaughter::kLambda);
189    out->SetDaughter(1, AliRsnDaughter::kPion);
190    out->SetMotherPDG(3114);
191    out->SetMotherMass(1.3872);
192    // pair cuts
193    out->SetPairCuts(cutsPair);
194    // binnings
195    out->AddAxis(imID, 800, 1.2, 2.0);
196    out->AddAxis(ptID, 100, 0.0, 10.0);
197    //out->AddAxis(rapID, 160, -0.8, 0.8);
198    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
199    
200    // create output
201    AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarPBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
202    // selection settings
203    out->SetDaughter(0, AliRsnDaughter::kLambda);
204    out->SetDaughter(1, AliRsnDaughter::kPion);
205    out->SetMotherPDG(-3224);
206    out->SetMotherMass(1.3828);
207    // pair cuts
208    out->SetPairCuts(cutsPair);
209    // binnings
210    out->AddAxis(imID, 800, 1.2, 2.0);
211    out->AddAxis(ptID, 100, 0.0, 10.0);
212    //out->AddAxis(rapID, 160, -0.8, 0.8);
213    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
214    
215    
216    // create output
217    AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarMBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
218    // selection settings
219    out->SetDaughter(0, AliRsnDaughter::kLambda);
220    out->SetDaughter(1, AliRsnDaughter::kPion);
221    out->SetMotherPDG(-3114);
222    out->SetMotherMass(1.3872);
223    // pair cuts
224    out->SetPairCuts(cutsPair);
225    // binnings
226    out->AddAxis(imID, 800, 1.2, 2.0);
227    out->AddAxis(ptID, 100, 0.0, 10.0);
228    //out->AddAxis(rapID, 160, -0.8, 0.8);
229    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
230    
231    // create output
232    AliRsnMiniOutput *out = task->CreateOutput(Form("XiP_TrueMC%s", suffix), mode.Data(), "MOTHER");
233    // selection settings
234    out->SetDaughter(0, AliRsnDaughter::kLambda);
235    out->SetDaughter(1, AliRsnDaughter::kPion);
236    out->SetMotherPDG(-3312);
237    out->SetMotherMass(1.32171);
238    // pair cuts
239    out->SetPairCuts(cutsPair);
240    // binnings
241    out->AddAxis(imID, 800, 1.2, 2.0);
242    out->AddAxis(ptID, 100, 0.0, 10.0);
243    //out->AddAxis(rapID, 160, -0.8, 0.8);
244    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
245    
246    
247    // create output
248    AliRsnMiniOutput *out = task->CreateOutput(Form("XiM_TrueMC%s", suffix), mode.Data(), "MOTHER");
249    // selection settings
250    out->SetDaughter(0, AliRsnDaughter::kLambda);
251    out->SetDaughter(1, AliRsnDaughter::kPion);
252    out->SetMotherPDG(3312);
253    out->SetMotherMass(1.32171);
254    // pair cuts
255    out->SetPairCuts(cutsPair);
256    // binnings
257    out->AddAxis(imID, 800, 1.2, 2.0);
258    out->AddAxis(ptID, 100, 0.0, 10.0);
259    //out->AddAxis(rapID, 160, -0.8, 0.8);
260    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
261    
262    
263    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520P_TrueMC%s", suffix), mode.Data(), "MOTHER");
264    // selection settings
265    out->SetDaughter(0, AliRsnDaughter::kLambda);
266    out->SetDaughter(1, AliRsnDaughter::kPion);
267    out->SetCharge(0, 0);
268    out->SetCharge(1, 1);
269    out->SetMotherPDG(3124);
270    out->SetMotherMass(1.5195);
271    // pair cuts
272    out->SetPairCuts(cutsPair);
273    // binnings
274    out->AddAxis(imID, 800, 1.2, 2.0);
275    out->AddAxis(ptID, 100, 0.0, 10.0);
276    //out->AddAxis(rapID, 160, -0.8, 0.8);
277    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
278    
279    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520M_TrueMC%s", suffix), mode.Data(), "MOTHER");
280    // selection settings
281    out->SetDaughter(0, AliRsnDaughter::kLambda);
282    out->SetDaughter(1, AliRsnDaughter::kPion);
283    out->SetCharge(0, 0);
284    out->SetCharge(1, -1);
285    out->SetMotherPDG(3124);
286    out->SetMotherMass(1.5195);
287    // pair cuts
288    out->SetPairCuts(cutsPair);
289    // binnings
290    out->AddAxis(imID, 800, 1.2, 2.0);
291    out->AddAxis(ptID, 100, 0.0, 10.0);
292    //out->AddAxis(rapID, 160, -0.8, 0.8);
293    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
294    
295    
296    // create output
297    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520PBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
298    // selection settings
299    out->SetDaughter(0, AliRsnDaughter::kLambda);
300    out->SetDaughter(1, AliRsnDaughter::kPion);
301    out->SetCharge(0, 0);
302    out->SetCharge(1, 1);
303    out->SetMotherPDG(-3124);
304    out->SetMotherMass(1.5195);
305    // pair cuts
306    out->SetPairCuts(cutsPair);
307    // binnings
308    out->AddAxis(imID, 800, 1.2, 2.0);
309    out->AddAxis(ptID, 100, 0.0, 10.0);
310    //out->AddAxis(rapID, 160, -0.8, 0.8);
311    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
312    
313    AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520MBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
314    // selection settings
315    out->SetDaughter(0, AliRsnDaughter::kLambda);
316    out->SetDaughter(1, AliRsnDaughter::kPion);
317    out->SetCharge(0, 0);
318    out->SetCharge(1, -1);
319    out->SetMotherPDG(-3124);
320    out->SetMotherMass(1.5195);
321    // pair cuts
322    out->SetPairCuts(cutsPair);
323    // binnings
324    out->AddAxis(imID, 800, 1.2, 2.0);
325    out->AddAxis(ptID, 100, 0.0, 10.0);
326    //out->AddAxis(rapID, 160, -0.8, 0.8);
327    if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
328    
329    
330    
331    }
332
333    return kTRUE;
334 }
335
336
337
338 void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
339 {
340
341    // Mass
342    AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("m", AliRsnValueDaughter::kMass);
343    axisMass->SetBins(0.7,1.5,0.05);
344
345    // output: 2D histogram
346    AliRsnListOutput *outMonitorM = new AliRsnListOutput("M", AliRsnListOutput::kHistoDefault);
347    outMonitorM->AddValue(axisMass);
348
349    // add outputs to loop
350    if (mon) mon->Add(outMonitorM);
351    if (lm) lm->AddOutput(outMonitorM);
352   
353 }