]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/mini/ConfigTPCanalysisKStarMC.C
Coverity fixes
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / ConfigTPCanalysisKStarMC.C
1 /***************************************************************************
2               fbellini@cern.ch - last modified on 06/08/2012
3
4 // *** Configuration script for K*, anti-K* analysis with 2010 PbPb runs ***
5 // 
6 // A configuration script for RSN package needs to define the followings:
7 //
8 // (1) decay tree of each resonance to be studied, which is needed to select
9 //     true pairs and to assign the right mass to all candidate daughters
10 // (2) cuts at all levels: single daughters, tracks, events
11 // (3) output objects: histograms or trees
12 ****************************************************************************/
13
14 Bool_t ConfigTPCanalysisKStarMC
15 (  
16     AliRsnMiniAnalysisTask *task, 
17     Bool_t                 isMC, 
18     Bool_t                 isPP,
19     const char             *suffix,
20     AliRsnCutSet           *cutsPair,
21     Int_t                  aodFilterBit = 5,
22     AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutPiCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
23     AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutKaCandidate = AliRsnCutSetDaughterParticle::kFastTPCpidNsigma,
24     Float_t                nsigmaPi = 2.0,
25     Float_t                nsigmaKa = 2.0,
26     Bool_t                 enableMonitor = kTRUE,
27     Bool_t                 IsMcTrueOnly = kFALSE,
28     Int_t                  Pdg = 313,
29     Int_t                  aodN = 0,
30     Int_t                  StdQualityCut_filterbit==10
31 )
32 {
33   // manage suffix
34   if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
35   
36   // set daughter cuts
37   AliRsnCutSetDaughterParticle * cutSetQ;
38   AliRsnCutSetDaughterParticle * cutSetPi;
39   AliRsnCutSetDaughterParticle * cutSetK;
40
41   //2010 cuts 
42   //cutSetQ  = new AliRsnCutSetDaughterParticle("cutQuality", AliRsnCutSetDaughterParticle::kQualityStd2010, AliPID::kPion, -1.0, aodFilterBit);
43   //cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPionTPCpp2011_%2.1fsigma",nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit);
44   //cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutKaonTPCpp2011_%2.1f2sigma",nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit);
45
46
47   //2011 High-pT cuts                      
48   //cutSetQ  = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
49   //cutSetQ->SetUse2011StdQualityCutsHighPt(kTRUE);
50   //cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
51   //cutSetPi->SetUse2011StdQualityCutsHighPt(kTRUE);
52   //cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
53   //cutSetK->SetUse2011StdQualityCutsHighPt(kTRUE);
54
55   //high-pT                                                                                                                                   
56   if(StdQualityCut_filterbit==10){
57     cutSetQ  = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011HighPt, AliPID::kPion, -1.0, aodFilterBit, kFALSE);
58     cutSetQ->SetUse2011StdQualityCutsHighPt(kTRUE);
59     
60     cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kFALSE);
61     cutSetPi->SetUse2011StdQualityCutsHighPt(kTRUE);
62
63     cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa,aodFilterBit,kFALSE);
64     cutSetK->SetUse2011StdQualityCutsHighPt(kTRUE);
65   }
66
67   //2011 Standard Cuts                                                                                                                          
68   if(StdQualityCut_filterbit==5){
69     cutSetQ  = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
70     cutSetQ->SetUse2011StdQualityCuts(kTRUE);
71
72     cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
73     cutSetPi->SetUse2011StdQualityCuts(kTRUE);
74
75     cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
76     cutSetK->SetUse2011StdQualityCuts(kTRUE);
77   }
78
79   //2010 Standard Cuts                                                                                                                
80   if(StdQualityCut_filterbit==00){
81     cutSetQ  = new AliRsnCutSetDaughterParticle(Form("cutQ_bit%i",aodFilterBit), AliRsnCutSetDaughterParticle::kQualityStd2011HighPt, AliPID::kPion, -1.0, aodFilterBit, kTRUE);
82     cutSetQ->SetUse2011StdQualityCutsHighPt(kFALSE);
83
84     cutSetPi = new AliRsnCutSetDaughterParticle(Form("cutPi%i_%2.1fsigma",cutPiCandidate, nsigmaPi), cutPiCandidate, AliPID::kPion, nsigmaPi, aodFilterBit,kTRUE);
85     cutSetPi->SetUse2011StdQualityCutsHighPt(kFALSE);
86
87     cutSetK  = new AliRsnCutSetDaughterParticle(Form("cutK%i_%2.1fsigma",cutPiCandidate, nsigmaKa), cutKaCandidate, AliPID::kKaon, nsigmaKa, aodFilterBit,kTRUE);
88     cutSetK->SetUse2011StdQualityCutsHighPt(kFALSE);
89   }
90
91   //================================
92
93   Int_t iCutQ = task->AddTrackCuts(cutSetQ);
94   Int_t iCutPi = task->AddTrackCuts(cutSetPi);
95   Int_t iCutK = task->AddTrackCuts(cutSetK);
96   
97   if(enableMonitor){
98     Printf("======== Monitoring cut AliRsnCutSetDaughterParticle enabled");
99     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C");
100     AddMonitorOutput(isMC, cutSetQ->GetMonitorOutput());
101     AddMonitorOutput(isMC, cutSetPi->GetMonitorOutput());
102     AddMonitorOutput(isMC, cutSetK->GetMonitorOutput());
103   }  
104   
105   // -- Values ------------------------------------------------------------------------------------
106   /* invariant mass   */ Int_t imID   = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
107   /* IM resolution    */ Int_t resID  = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
108   /* transv. momentum */ Int_t ptID   = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
109   /* centrality       */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
110   /* pseudorapidity   */ Int_t etaID  = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
111   /* rapidity         */ Int_t yID    = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
112
113   // -- Create all needed outputs -----------------------------------------------------------------
114   // use an array for more compact writing, which are different on mixing and charges
115   // [0] = unlike
116   // [1] = mixing
117   // [2] = like ++
118   // [3] = like --
119   Bool_t  use     [10] = { !IsMcTrueOnly,  !IsMcTrueOnly,  !IsMcTrueOnly,  !IsMcTrueOnly ,  !IsMcTrueOnly, !IsMcTrueOnly,  isMC   ,   isMC   ,  isMC   ,   isMC   };
120   Bool_t  useIM   [10] = { 1       ,  1       ,  1       ,  1       ,  1      ,  1      ,  1      ,   1      ,  0      ,   0      };
121   TString name    [10] = {"UnlikePM", "UnlikeMP", "MixingPM", "MixingMP", "LikePP", "LikeMM", "TruesPM",  "TruesMP", "ResPM"  ,  "ResMP"  };
122   TString comp    [10] = {"PAIR"   , "PAIR"   , "MIX"    , "MIX"    , "PAIR"  , "PAIR"  , "TRUE"  ,  "TRUE"  , "TRUE"  ,  "TRUE"  };
123   //TString output  [10] = {"HIST"   , "HIST"   , "HIST"   , "HIST"   , "HIST"  , "HIST"  , "HIST"  ,  "HIST"  , "HIST"  ,  "HIST"  };
124   TString output  [10] = {"SPARSE"   , "SPARSE"   , "SPARSE"   , "SPARSE"   , "SPARSE"  , "SPARSE"  , "SPARSE"  ,  "SPARSE"  , "SPARSE"  ,  "SPARSE"  };
125   Char_t  charge1 [10] = {'+'      , '-'      , '+'      , '-'      , '+'     , '-'     , '+'     ,  '-'     , '+'     ,  '-'     };
126   Char_t  charge2 [10] = {'-'      , '+'      , '-'      , '+'      , '+'     , '-'     , '-'     ,  '+'     , '-'     ,  '+'     };
127   Int_t   cutID1  [10] = { iCutK   ,  iCutK   ,  iCutK   ,  iCutK   ,  iCutK  ,  iCutK  ,  iCutK  ,   iCutK  ,  iCutK  ,   iCutK  };
128   Int_t   cutID2  [10] = { iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi  ,  iCutPi ,  iCutPi ,  iCutPi ,   iCutPi ,  iCutPi ,   iCutPi };
129   
130   for (Int_t i = 0; i < 10; i++) {
131     if (!use[i]) continue;
132     if(Pdg > 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar1_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
133     if(Pdg < 0) AliRsnMiniOutput *out = task->CreateOutput(Form("kstar2_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
134     out->SetCutID(0, cutID1[i]);
135     out->SetCutID(1, cutID2[i]);
136     out->SetDaughter(0, AliRsnDaughter::kKaon);
137     out->SetDaughter(1, AliRsnDaughter::kPion);
138     out->SetCharge(0, charge1[i]);
139     out->SetCharge(1, charge2[i]);
140     out->SetMotherPDG(Pdg);//313
141     out->SetMotherMass(0.89594);
142     out->SetPairCuts(cutsPair);
143
144     // axis X: invmass (or resolution)
145     if (useIM[i]) 
146       out->AddAxis(imID, 90, 0.6, 1.5);
147     //else
148     //out->AddAxis(resID, 200, -0.02, 0.02);
149     
150     // axis Y: transverse momentum
151     out->AddAxis(ptID, 300, 0.0, 30.0);
152     
153     // axis Z: centrality-multiplicity
154     if (!isPP)
155       out->AddAxis(centID, 100, 0.0, 100.0);
156     else 
157       out->AddAxis(centID, 400, 0.0, 400.0);
158     
159     // axis W: pseudorapidity
160     //    out->AddAxis(etaID, 20, -1.0, 1.0);
161     // axis J: rapidity
162     //out->AddAxis(yID, 32, -0.8, 0.8);
163     
164   }
165   
166   if (isMC){
167     // create output
168     
169     if(Pdg > 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother1%s", suffix), "SPARSE", "MOTHER");}
170     if(Pdg < 0) {AliRsnMiniOutput *outm = task->CreateOutput(Form("kstar_Mother2%s", suffix), "SPARSE", "MOTHER");}
171     outm->SetDaughter(0, AliRsnDaughter::kKaon);
172     outm->SetDaughter(1, AliRsnDaughter::kPion);
173     outm->SetMotherPDG(Pdg);//313
174     outm->SetMotherMass(0.89594);
175     // pair cuts
176     outm->SetPairCuts(cutsPair);
177     // binnings
178     outm->AddAxis(imID, 90, 0.6, 1.5);
179     outm->AddAxis(ptID, 300, 0.0, 30.0);
180     if (!isPP){
181     outm->AddAxis(centID, 100, 0.0, 100.0);
182     }   else { 
183      outm->AddAxis(centID, 400, 0.0, 400.0);
184     }
185     //outm->AddAxis(yID, 32, -0.8, 0.8);
186   }
187   return kTRUE;
188 }