]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/macros/mini/AddMonitorOutput.C
Added macro for K* task in pA + modified monitoring with new plot
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / macros / mini / AddMonitorOutput.C
1 /***************************************************************************
2               fbellini@cern.ch - last modified on 09/04/2013
3
4  Macro to add monitoring histograms for track and PID cuts to the rsn task 
5  Tuned for monitoring TOF KStar analysis of PbPb 2010 data
6
7 Options ("opt" argument):
8 - NoTOFSIGMA  --> disable the nsigma_TOF vs p histos
9 - NoTPCSIGMA  --> disable the nsigma_TPC vs p_TPC histos
10 - NoSIGN --> disable splitting for single track charge
11 - NoTrackQ  --> disable track quality monitoring (DCA, nCls) histos
12 /***************************************************************************/
13
14 void AddMonitorOutput(Bool_t useMCMon = 0, TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
15 {
16   // Multiplicity/centrality
17   AliRsnValueEvent *multi = new AliRsnValueEvent("multi",AliRsnValueEvent::kMult);
18   multi->SetBins(0.0, 400.0, 1);
19   // Momentum
20   AliRsnValueDaughter *axisMomTPC = new AliRsnValueDaughter("pTPC", AliRsnValueDaughter::kPtpc);
21   axisMomTPC->SetBins(0.0, 10.0, 0.01);
22   AliRsnValueDaughter *axisMomP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kP);
23   axisMomP->SetBins(0.0, 10.0, 0.01);
24   // Momentum Pt
25   AliRsnValueDaughter *axisMomPt = new AliRsnValueDaughter("pt", AliRsnValueDaughter::kPt);
26   axisMomPt->SetBins(0.0,10.0,0.01);
27   // Eta
28   AliRsnValueDaughter *axisMomEta = new AliRsnValueDaughter("eta", AliRsnValueDaughter::kEta);
29   axisMomEta->SetBins(-1.0, 1.0, 0.1);
30   //ITS clusters
31   AliRsnValueDaughter *axisITScls = new AliRsnValueDaughter("ITScls", AliRsnValueDaughter::kNITSclusters);
32   axisITScls->SetBins(0.0, 10.0, 1.0);
33   //TPC clusters
34   AliRsnValueDaughter *axisTPCcls = new AliRsnValueDaughter("TPCcls", AliRsnValueDaughter::kNTPCclusters);
35   axisTPCcls->SetBins(0.0, 300.0, 1.0);
36   //ITS chi2
37   AliRsnValueDaughter *axisITSchi2 = new AliRsnValueDaughter("ITSchi2", AliRsnValueDaughter::kITSchi2);
38   axisITSchi2->SetBins(0.0, 10.0, 0.1);
39   //TPC chi2
40   AliRsnValueDaughter *axisTPCchi2 = new AliRsnValueDaughter("TPCchi2", AliRsnValueDaughter::kTPCchi2);
41   axisTPCchi2->SetBins(0.0, 10.0, 0.1);
42   //DCA xy
43   AliRsnValueDaughter *axisDCAxy = new AliRsnValueDaughter("DCAxy", AliRsnValueDaughter::kDCAXY);
44   axisDCAxy->SetBins(-2.0, 2.0, 0.1);
45   //DCA z
46   AliRsnValueDaughter *axisDCAz = new AliRsnValueDaughter("DCAz", AliRsnValueDaughter::kDCAZ);
47   axisDCAz->SetBins(-10.0, 10.0, 0.1);
48   //Charge
49   AliRsnValueDaughter *axisCharge = new AliRsnValueDaughter("charge",AliRsnValueDaughter::kCharge);
50   axisCharge->SetBins(-1.5, 1.5, 1.0);
51   //Phi
52   AliRsnValueDaughter *axisPhi = new AliRsnValueDaughter("phi", AliRsnValueDaughter::kPhi);
53   axisPhi->SetBins(0.0, 360.0, 1.0);
54   AliRsnValueDaughter *axisPhiOuterTPC = new AliRsnValueDaughter("phiOuterTPC", AliRsnValueDaughter::kPhiOuterTPC);
55   axisPhiOuterTPC->SetBins(0.0, 360.0, 1.0);
56   
57   /* dEdx tpc */
58   AliRsnValueDaughter *axisSigTPC = new AliRsnValueDaughter("sTPC", AliRsnValueDaughter::kTPCsignal);
59   axisSigTPC->SetBins(0.0, 500.0, 2.0);
60   // kTPCnsigmaPi
61   AliRsnValueDaughter *axisTPCnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTPCnsigmaPi);
62   axisTPCnsigmaPi->SetBins(-10.,10., 0.1);
63   // kTPCnsigmaK
64   AliRsnValueDaughter *axisTPCnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTPCnsigmaK);
65   axisTPCnsigmaK->SetBins(-10.,10., 0.1);
66   // kTPCnsigmaP
67   AliRsnValueDaughter *axisTPCnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTPCnsigmaP);
68   axisTPCnsigmaP->SetBins(-10.,10., 0.1);
69
70   /* tof signal - time */
71   AliRsnValueDaughter *axisSigTOF = new AliRsnValueDaughter("sTOF", AliRsnValueDaughter::kTOFsignal);
72   axisSigTOF->SetBins(10000.0, 50000.0, 250);//in ps
73   // kTOFnsigmaPi
74   AliRsnValueDaughter *axisTOFnsigmaPi = new AliRsnValueDaughter("pi", AliRsnValueDaughter::kTOFnsigmaPi);
75   axisTOFnsigmaPi->SetBins(-10.,10., 0.1);
76   // kTOFnsigmaK
77   AliRsnValueDaughter *axisTOFnsigmaK = new AliRsnValueDaughter("K", AliRsnValueDaughter::kTOFnsigmaK);
78   axisTOFnsigmaK->SetBins(-10.,10., 0.1);
79   // kTOFnsigmaP
80   AliRsnValueDaughter *axisTOFnsigmaP = new AliRsnValueDaughter("p", AliRsnValueDaughter::kTOFnsigmaP);
81   axisTOFnsigmaP->SetBins(-10.,10., 0.1);
82    
83   /****************************************************************/
84   /***************       MONITOR AOB           ********************/
85   /****************************************************************/
86   AliRsnListOutput *outMonitorPTvsMult = new AliRsnListOutput("PtVsMult",AliRsnListOutput::kHistoDefault);
87   outMonitorPTvsMult->AddValue(axisMomPt);
88   outMonitorPTvsMult->AddValue(multi);
89   if (mon) mon->Add(outMonitorPTvsMult);
90   if (lm) lm->AddOutput(outMonitorPTvsMult);
91
92   //    if (lm) lm->SetTrueMC(kTRUE);
93   /****************************************************************/
94   /***************       MONITOR kinematics    ********************/
95   /****************************************************************/
96   // output: TH1D for momentum
97   AliRsnListOutput *outMonitorP = new AliRsnListOutput("P", AliRsnListOutput::kHistoDefault);
98   outMonitorP->AddValue(axisMomP);
99   if (!opt.Contains("NoSIGN")) {
100     outMonitorP->AddValue(axisCharge);
101   }
102   if (mon) mon->Add(outMonitorP);
103   if (lm) lm->AddOutput(outMonitorP);
104   
105   // output:  TH1D for pt
106   AliRsnListOutput *outMonitorPt = new AliRsnListOutput("Pt", AliRsnListOutput::kHistoDefault);
107   outMonitorPt->AddValue(axisMomPt);
108   if (!opt.Contains("NoSIGN")) {
109     outMonitorPt->AddValue(axisCharge);
110   }
111   if (mon) mon->Add(outMonitorPt);
112   if (lm) lm->AddOutput(outMonitorPt);
113   
114   // output: TH1D for pseudorapidity
115   AliRsnListOutput *outMonitorEta = new AliRsnListOutput("Eta", AliRsnListOutput::kHistoDefault);
116   outMonitorEta->AddValue(axisMomEta);
117   if (!opt.Contains("NoSIGN")) {
118     outMonitorEta->AddValue(axisCharge);
119   }
120   if (mon) mon->Add(outMonitorEta);
121   if (lm) lm->AddOutput(outMonitorEta);
122   
123   // output:  TH2D for phi at vertex
124   AliRsnListOutput *outMonitorPhi = new AliRsnListOutput("Phi", AliRsnListOutput::kHistoDefault);
125   //outMonitorPhi->AddValue(axisMomPt);
126   outMonitorPhi->AddValue(axisPhi);
127   if (!opt.Contains("NoSIGN")) {
128     outMonitorPhi->AddValue(axisCharge);
129   }
130   if (mon) mon->Add(outMonitorPhi);
131   if (lm) lm->AddOutput(outMonitorPhi);
132   
133   // output:  TH2D for phiOuterTPC at TPC outer radius
134   AliRsnListOutput *outMonitorPhiOuterTPC = new AliRsnListOutput("PhiOuterTPC", AliRsnListOutput::kHistoDefault);
135   //outMonitorPhiOuterTPC->AddValue(axisMomPt);
136   outMonitorPhiOuterTPC->AddValue(axisPhiOuterTPC);
137   if (!opt.Contains("NoSIGN")) {
138     outMonitorPhiOuterTPC->AddValue(axisCharge);
139   }
140   if (mon) mon->Add(outMonitorPhiOuterTPC);
141   if (lm) lm->AddOutput(outMonitorPhiOuterTPC);
142
143   // output:  TH2D for phi vs pt
144   AliRsnListOutput *outMonitorPhiVsPt = new AliRsnListOutput("PhiVsPt", AliRsnListOutput::kHistoDefault);
145   outMonitorPhiVsPt->AddValue(axisMomPt);
146   outMonitorPhiVsPt->AddValue(axisPhi);
147   if (!opt.Contains("NoSIGN")) {
148     outMonitorPhiVsPt->AddValue(axisCharge);
149   }
150   if (mon) mon->Add(outMonitorPhiVsPt);
151   if (lm) lm->AddOutput(outMonitorPhiVsPt);
152
153   /****************************************************************/
154   /***************      MONITOR TRACK QUALITY  ********************/
155   /****************************************************************/
156   if (!opt.Contains("NoTrackQ")) {
157     // output: 2D histogram of DCAxy vs pt
158     AliRsnListOutput *outMonitorDCAxy = new AliRsnListOutput("DCAxyVsPt", AliRsnListOutput::kHistoDefault);
159     outMonitorDCAxy->AddValue(axisMomPt);
160     outMonitorDCAxy->AddValue(axisDCAxy);
161     if (mon) mon->Add(outMonitorDCAxy);
162     if (lm) lm->AddOutput(outMonitorDCAxy);
163
164     // output: 2D histogram of DCAz vs P
165     AliRsnListOutput *outMonitorDCAz = new AliRsnListOutput("DCAzVsP", AliRsnListOutput::kHistoDefault);
166     outMonitorDCAz->AddValue(axisMomP);
167     outMonitorDCAz->AddValue(axisDCAz);
168     if (mon) mon->Add(outMonitorDCAz);
169     if (lm) lm->AddOutput(outMonitorDCAz);
170
171     // output: 2D histogram of ITS cls vs pt
172     AliRsnListOutput *outMonitorITScls = new AliRsnListOutput("ITSclsVsPt", AliRsnListOutput::kHistoDefault);
173     outMonitorITScls->AddValue(axisMomPt);
174     outMonitorITScls->AddValue(axisITScls);
175     if (mon) mon->Add(outMonitorITScls);
176     if (lm) lm->AddOutput(outMonitorITScls);
177
178     // output: 2D histogram of TPC cls vs. pt
179     AliRsnListOutput *outMonitorTPCcls = new AliRsnListOutput("TPCclsVsPt", AliRsnListOutput::kHistoDefault);
180     outMonitorTPCcls->AddValue(axisMomPt);
181     outMonitorTPCcls->AddValue(axisTPCcls);
182     if (mon) mon->Add(outMonitorTPCcls);
183     if (lm) lm->AddOutput(outMonitorTPCcls);
184
185     // output: 2D histogram of TPC cls vs. TPC momentum
186     AliRsnListOutput *outMonitorTPCclsVsPtpc = new AliRsnListOutput("TPCclsVsPtpc", AliRsnListOutput::kHistoDefault);
187     outMonitorTPCclsVsPtpc->AddValue(axisMomTPC);
188     outMonitorTPCclsVsPtpc->AddValue(axisTPCcls);
189     if (mon) mon->Add(outMonitorTPCclsVsPtpc);
190     if (lm) lm->AddOutput(outMonitorTPCclsVsPtpc);
191
192     // output: 2D histogram of ITS chi2 vs pt
193     AliRsnListOutput *outMonitorITSchi2 = new AliRsnListOutput("ITSchi2VsPt", AliRsnListOutput::kHistoDefault);
194     outMonitorITSchi2->AddValue(axisMomPt);
195     outMonitorITSchi2->AddValue(axisITSchi2);
196     if (mon) mon->Add(outMonitorITSchi2);
197     if (lm) lm->AddOutput(outMonitorITSchi2);
198
199     // output: 2D histogram of TPC chi2 vs. pt
200     AliRsnListOutput *outMonitorTPCchi2 = new AliRsnListOutput("TPCchi2VsPt", AliRsnListOutput::kHistoDefault);
201     outMonitorTPCchi2->AddValue(axisMomPt);
202     outMonitorTPCchi2->AddValue(axisTPCchi2);
203     if (mon) mon->Add(outMonitorTPCchi2);
204     if (lm) lm->AddOutput(outMonitorTPCchi2);
205
206     // output: 2D histogram of TPC chi2 vs. TPC momentum
207     AliRsnListOutput *outMonitorTPCchi2VsPtpc = new AliRsnListOutput("TPCchi2VsPtpc", AliRsnListOutput::kHistoDefault);
208     outMonitorTPCchi2VsPtpc->AddValue(axisMomTPC);
209     outMonitorTPCchi2VsPtpc->AddValue(axisTPCchi2);
210     if (mon) mon->Add(outMonitorTPCchi2VsPtpc);
211     if (lm) lm->AddOutput(outMonitorTPCchi2VsPtpc);
212   }
213   /****************************************************************/
214   /***************       MONITOR TPC           ********************/
215   /****************************************************************/
216   if (!opt.Contains("NoTPCSIGMA")) {
217     // output: 2D histogram of TPC signal vs. TPC momentum
218     AliRsnListOutput *outMonitordEdxTPC = new AliRsnListOutput("dEdx_VsPtpc", AliRsnListOutput::kHistoDefault);
219     outMonitordEdxTPC->AddValue(axisMomTPC);
220     outMonitordEdxTPC->AddValue(axisSigTPC);
221     if (mon) mon->Add(outMonitordEdxTPC);
222     if (lm) lm->AddOutput(outMonitordEdxTPC);
223
224     // output: 2D histogram of TPC nsigma pi vs. TPC momentum
225     AliRsnListOutput *outMonitorTPCnsigmaPi = new AliRsnListOutput("TPC_nsigmaPi_VsPtpc", AliRsnListOutput::kHistoDefault);
226     outMonitorTPCnsigmaPi->AddValue(axisMomTPC);
227     outMonitorTPCnsigmaPi->AddValue(axisTPCnsigmaPi);
228     if (mon) mon->Add(outMonitorTPCnsigmaPi);
229     if (lm) lm->AddOutput(outMonitorTPCnsigmaPi);
230
231     // output: 2D histogram of TPC nsigma K vs. TPC momentum
232     AliRsnListOutput *outMonitorTPCnsigmaK = new AliRsnListOutput("TPC_nsigmaK_VsPtpc", AliRsnListOutput::kHistoDefault);
233     outMonitorTPCnsigmaK->AddValue(axisMomTPC);
234     outMonitorTPCnsigmaK->AddValue(axisTPCnsigmaK);
235     if (mon) mon->Add(outMonitorTPCnsigmaK);
236     if (lm) lm->AddOutput(outMonitorTPCnsigmaK);
237
238     // output: 2D histogram of TPC nsigma pro vs. TPC momentum
239     AliRsnListOutput *outMonitorTPCnsigmaP = new AliRsnListOutput("TPC_nsigmaPro_VsPtpc", AliRsnListOutput::kHistoDefault);
240     outMonitorTPCnsigmaP->AddValue(axisMomTPC);
241     outMonitorTPCnsigmaP->AddValue(axisTPCnsigmaP);
242     if (mon) mon->Add(outMonitorTPCnsigmaP);
243     if (lm) lm->AddOutput(outMonitorTPCnsigmaP);
244   }
245   /****************************************************************/
246   /***************       MONITOR TOF           ********************/
247   /****************************************************************/
248   // // output: 2D histogram of TOF signal vs. momentum
249   // AliRsnListOutput *outMonitorTimeTOF = new AliRsnListOutput("time_VsP", AliRsnListOutput::kHistoDefault);
250   // outMonitorTimeTOF->AddValue(axisMomP);
251   // outMonitorTimeTOF->AddValue(axisSigTOF);
252   // if (mon) mon->Add(outMonitorTimeTOF);
253   // if (lm) lm->AddOutput(outMonitorTimeTOF);
254
255   // // output: 2D histogram of TOF signal vs. pt
256   // AliRsnListOutput *outMonitorTimeTOFPt = new AliRsnListOutput("time_VsPt", AliRsnListOutput::kHistoDefault);
257   // outMonitorTimeTOFPt->AddValue(axisMomPt);
258   // outMonitorTimeTOFPt->AddValue(axisSigTOF);
259   // if (mon) mon->Add(outMonitorTimeTOFPt);
260   // if (lm) lm->AddOutput(outMonitorTimeTOFPt);
261
262   if (!opt.Contains("NoTOFSIGMA")) {
263     // output: 2D histogram of TOF Nsigma pi vs. TPC momentum
264     AliRsnListOutput *outMonitorTOFnsigmaPi = new AliRsnListOutput("TOF_nsigmaPi_vsP", AliRsnListOutput::kHistoDefault);
265     outMonitorTOFnsigmaPi->AddValue(axisMomP);
266     outMonitorTOFnsigmaPi->AddValue(axisTOFnsigmaPi);
267     if (mon) mon->Add(outMonitorTOFnsigmaPi);
268     if (lm) lm->AddOutput(outMonitorTOFnsigmaPi);
269      
270     // output: 2D histogram of TOF signal vs. TOF momentum
271     AliRsnListOutput *outMonitorTOFnsigmaK = new AliRsnListOutput("TOF_nsigmaK_vsP", AliRsnListOutput::kHistoDefault);
272     outMonitorTOFnsigmaK->AddValue(axisMomP);
273     outMonitorTOFnsigmaK->AddValue(axisTOFnsigmaK);
274     if (mon) mon->Add(outMonitorTOFnsigmaK);
275     if (lm) lm->AddOutput(outMonitorTOFnsigmaK);
276       
277     // output: 2D histogram of TOF signal vs. TOF momentum
278     AliRsnListOutput *outMonitorTOFnsigmaP = new AliRsnListOutput("TOF_nsigmaPro_vsP", AliRsnListOutput::kHistoDefault);
279     outMonitorTOFnsigmaP->AddValue(axisMomP);
280     outMonitorTOFnsigmaP->AddValue(axisTOFnsigmaP);
281     if (mon) mon->Add(outMonitorTOFnsigmaP);
282     if (lm) lm->AddOutput(outMonitorTOFnsigmaP);
283   }
284
285   /****************************************************************/
286   /***************       MONITOR MC            ********************/
287   /****************************************************************/
288   if (useMCMon) {
289     //Momentum 
290     AliRsnValueDaughter *axisMomPMC = new AliRsnValueDaughter("pMC", AliRsnValueDaughter::kP);
291     axisMomPMC->SetUseMCInfo(kTRUE);
292     axisMomPMC->SetBins(0.0,10.0,0.01);
293     // Momentum Pt
294     AliRsnValueDaughter *axisMomPtMC = new AliRsnValueDaughter("ptMC", AliRsnValueDaughter::kPt);
295     axisMomPtMC->SetUseMCInfo(kTRUE);
296     axisMomPtMC->SetBins(0.0,10.0,0.01);
297     // Eta
298     AliRsnValueDaughter *axisEtaMC = new AliRsnValueDaughter("etaMC", AliRsnValueDaughter::kEta);
299     axisEtaMC->SetUseMCInfo(kTRUE);
300     axisEtaMC->SetBins(-1.0,1.0,0.1);
301
302     // output: 2D histo for kine acceptance
303     AliRsnListOutput *outMonitorPtVsEtaMC = new AliRsnListOutput("Pt_VsEtaMC", AliRsnListOutput::kHistoDefault);
304     outMonitorPtVsEtaMC->AddValue(axisMomPtMC);
305     outMonitorPtVsEtaMC->AddValue(axisEtaMC);
306     if (mon) mon->Add(outMonitorPtVsEtaMC);
307     if (lm) lm->AddOutput(outMonitorPtVsEtaMC);
308
309     // output: 1D histo pt from MC
310     AliRsnListOutput *outMonitorPtMC = new AliRsnListOutput("PtMC", AliRsnListOutput::kHistoDefault);
311     outMonitorPtMC->AddValue(axisMomPtMC);
312     if (mon) mon->Add(outMonitorPtMC);
313     if (lm) lm->AddOutput(outMonitorPtMC);
314  
315     // output: 1D histo eta from MC
316     AliRsnListOutput *outMonitorEtaMC = new AliRsnListOutput("EtaMC", AliRsnListOutput::kHistoDefault);
317     outMonitorEtaMC->AddValue(axisEtaMC);
318     if (mon) mon->Add(outMonitorEtaMC);
319     if (lm) lm->AddOutput(outMonitorEtaMC);
320
321     // output: 1D histo pt from MC
322     AliRsnListOutput *outMonitorPtMC = new AliRsnListOutput("PtMC", AliRsnListOutput::kHistoDefault);
323     outMonitorPtMC->AddValue(axisMomPtMC);
324     if (mon) mon->Add(outMonitorPtMC);
325     if (lm) lm->AddOutput(outMonitorPtMC);
326   }
327  
328 }