Added analysis config macros for L* analysis in p-Pb (Sarita)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigLStarPPb.C
1 //
2 // *** Configuration script for Lambda*->P+K- 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 ConfigLStarPPb
12 (  
13    AliRsnMiniAnalysisTask *task, 
14    Bool_t                  isMC, 
15    Bool_t                  isPP, 
16    const char             *suffix,
17    AliRsnCutSet           *cutsPair
18 )
19 {
20    // manage suffix
21    if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
22    //if (strlen(suffix) > 0) suffix = "suffix_";
23    
24    ////////////////
25
26    Int_t aodFilterBit = 10;
27
28    
29    ///////////////
30
31    // 
32    // -- Define track cuts -------------------------------------------------------------------------
33    //
34    Float_t nSigmaTPC=2.0;  
35    gROOT->LoadMacro("AddMonitorOutput.C");
36
37
38    AliRsnCutSetDaughterParticle * cutP;
39    cutP  = new AliRsnCutSetDaughterParticle("P_LStar",AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011 , AliPID::kProton, nSigmaTPC, aodFilterBit);
40
41    AliRsnCutSetDaughterParticle * cutK;
42    cutK  = new AliRsnCutSetDaughterParticle("K_LStar",AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011 , AliPID::kKaon, nSigmaTPC, aodFilterBit);
43    
44  
45    //Int_t iCutQ = task->AddTrackCuts(cutQ);
46    Int_t iCutP = task->AddTrackCuts(cutP);
47    Int_t iCutK = task->AddTrackCuts(cutK);
48
49    //AddMonitorOutput(isMC, cutQ->GetMonitorOutput(),"NoSIGN");
50    AddMonitorOutput(isMC, cutP->GetMonitorOutput(),"NoSIGN");
51    AddMonitorOutput(isMC, cutK->GetMonitorOutput(),"NoSIGN");
52    
53
54    //
55    // -- Values ------------------------------------------------------------------------------------
56    //
57    
58    /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
59    /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
60    /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
61    /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
62    
63    //
64    // -- Create all needed outputs -----------------------------------------------------------------
65    //
66    
67    // use an array for more compact writing, which are different on mixing and charges
68    // [0] = unlike
69    // [1] = mixing
70    // [2] = like ++
71    // [3] = like --
72    Bool_t  use     [12] = { 1       ,  1       ,  1       ,  1       ,  1      ,  1      ,  isMC   ,   isMC   ,  isMC   ,   isMC   , isMC , isMC };
73    Bool_t  useIM   [12] = { 1       ,  1       ,  1       ,  1       ,  1      ,  1      ,  1      ,   1      ,  0      ,   0      ,  1   ,   1};
74    TString name    [12] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "LikePP", "LikeMM", "Trues1",  "Trues2", "Res1"  ,  "Res2"  ,"Mother1", "Mother2"};
75    TString comp    [12] = {"PAIR"   , "PAIR"   , "MIX"    , "MIX"    , "PAIR"  , "PAIR"  , "TRUE"  ,  "TRUE"  , "TRUE"  ,  "TRUE"  , "MOTHER",  "MOTHER"};
76    TString output  [12] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE", "SPARSE", "SPARSE",  "SPARSE", "SPARSE",  "SPARSE", "SPARSE",  "SPARSE"  };
77    Char_t  charge1 [12] = {'+'      , '-'      , '+'      , '-'      , '+'     , '-'     , '+'     ,  '-'     , '+'     ,  '-'     , '+'     ,  '-'};
78    Char_t  charge2 [12] = {'-'      , '+'      , '-'      , '+'      , '+'     , '-'     , '-'     ,  '+'     , '-'     ,  '+'     , '-'     ,  '+'};
79    Int_t   cutID1  [12] = { iCutP   ,  iCutP   ,  iCutP   ,  iCutP   ,  iCutP  ,  iCutP  ,  iCutP  ,   iCutP  ,  iCutP  ,   iCutP  ,  iCutP  ,   iCutP  };
80    Int_t   cutID2  [12] = { iCutK   ,  iCutK   ,  iCutK   ,  iCutK   ,  iCutK  ,  iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK };
81    ///////
82
83
84    ////////   
85    for (Int_t i = 0; i < 12; i++) {
86       if (!use[i]) continue;
87       // create output
88       AliRsnMiniOutput *out = task->CreateOutput(Form("Lstar_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
89       // selection settings
90       out->SetCutID(0, cutID1[i]);
91       out->SetCutID(1, cutID2[i]);
92       out->SetDaughter(0, AliRsnDaughter::kProton);
93       out->SetDaughter(1, AliRsnDaughter::kKaon);
94       out->SetCharge(0, charge1[i]);
95       out->SetCharge(1, charge2[i]);
96       out->SetMotherPDG(3124);
97       out->SetMotherMass(1.5195);
98       // pair cuts
99       out->SetPairCuts(cutsPair);
100       // axis X: invmass (or resolution)
101       if (useIM[i]) 
102          out->AddAxis(imID, 900, 1.3, 2.2);
103       else
104          out->AddAxis(resID, 200, -0.02, 0.02);
105       // axis Y: transverse momentum
106       out->AddAxis(ptID, 1000, 0.0, 100.0);
107     // axis Z: centrality-multiplicity
108     //if (!isPP)
109     //  out->AddAxis(centID, 100, 0.0, 100.0);
110     //else 
111     //  out->AddAxis(centID, 400, 0.0, 400.0);
112       
113     // axis W: pseudorapidity
114     //    out->AddAxis(etaID, 20, -1.0, 1.0);
115     // axis J: rapidity
116     // out->AddAxis(yID, 10, -0.5, 0.5);
117  
118    }
119    
120    return kTRUE;
121 }