]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorV0.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemto / AliFemtoCutMonitorV0.cxx
1 ////////////////////////////////////////////////////////////////////////////////
2 //                                                                            //
3 // AliFemtoCutMonitorV0                                                       //
4 //                                                                            //
5 ////////////////////////////////////////////////////////////////////////////////
6 #include "AliFemtoCutMonitorV0.h"
7 #include <TH1D.h>
8 #include <TH2D.h>
9 #include <TH3D.h>
10 #include <TList.h>
11 #include "AliFemtoModelHiddenInfo.h"
12
13 AliFemtoCutMonitorV0::AliFemtoCutMonitorV0():
14   fLambdaMass(0),
15   fAntiLambdaMass(0),
16   fK0ShortMass(0),
17   fDcaDaughters(0),
18   fDcaV0ToPrimVertex(0),
19   fDcaPosToPrimVertex(0),
20   fDcaNegToPrimVertex(0),
21   fCosPointingAngle(0),
22   fDecayLength(0),
23   fEtaV0(0),
24   fPtV0(0),
25   fPtPosDaughter(0),
26   fPtNegDaughter(0),
27   fdEdxPosDaughter(0),
28   fdEdxNegDaughter(0),
29   fTOFtimePosDaughter(0),
30   fTOFtimeNegDaughter(0),
31   fnsigmaPosL(0),
32   fnsigmaNegL(0),
33   fnsigmaPosAL(0),
34   fnsigmaNegAL(0)
35 {
36   // Default constructor
37   fLambdaMass = new TH1F("LambdaMass", "Mass Assuming Lambda Hypothesis", 10000, 0, 5);
38   fAntiLambdaMass = new TH1F("AntiLambdaMass", "Mass Assuming AntiLambda Hypothesis", 10000, 0, 5);
39   fK0ShortMass= new TH1F("K0ShortMass", "Mass Assuming K0 short Hypothesis", 500, 0, 5);
40   fDcaDaughters = new TH1F("DcaDaughters", "DCA Daughters", 500, 0, 2);
41   fDcaV0ToPrimVertex = new TH1F("DcaV0ToPrimVertex", "DCA V0 to primary vertex", 500, 0, 3);
42   fDcaPosToPrimVertex = new TH1F("DcaPosToPrimVertex", "DCA V0 to primary vertex", 500, 0, 3);
43   fDcaNegToPrimVertex = new TH1F("DcaNegToPrimVertex", "DCA V0 to primary vertex", 500, 0, 3);
44   fCosPointingAngle = new TH1F("CosPointingAngle","Cosinus Pointing Angle",500,0,1);
45   fDecayLength = new TH1F("DecayLength","V0 Decay Length",100,0,100);
46   fEtaV0 = new TH1F("EtaV0", "|Eta| distribution of V0s", 500, 0.0, 8.);
47   fPtV0 = new TH1F("PtV0", "Pt distribution of V0s", 500, 0.0, 8.);
48   fPtPosDaughter = new TH1F("PtPosDaughter", "Pt distribution of positive daughters", 500, 0.0, 5.);
49   fPtNegDaughter = new TH1F("PtNegDaughter", "Pt distribution of negative daughters", 500, 0.0, 5.);
50
51   fdEdxPosDaughter = new TH2D("dEdxPosDaughter","dEdx of positive daughters",200, 0.1, 4.0, 250, 0.0, 500.0);
52   fdEdxNegDaughter = new TH2D("dEdxNegDaughter","dEdx of negative daughters",200, 0.1, 4.0, 250, 0.0, 500.0);
53   fTOFtimePosDaughter = new TH2D("TOFtimePosDaughter","TOF time of positive daughters",100,0.,1.1,100,0.,3.0);
54   fTOFtimeNegDaughter = new TH2D("TOFtimeNegDaughter","TOF time of negative daughters",100,0.,1.1,100,0.,3.0);
55
56   fnsigmaPosL = new TH1D("fnsigmaPosL","Number of sigmas of positive Lambda daughters",200,-8,8);
57   fnsigmaNegL = new TH1D("fnsigmaNegL","Number of sigmas of negative Lambda daughters",200,-8,8);
58   fnsigmaPosAL = new TH1D("fnsigmaPosAL","Number of sigmas of positive AntiLambda daughters",200,-8,8);
59   fnsigmaNegAL = new TH1D("fnsigmaNegAL","Number of sigmas of negative AntiLambda daughters",200,-8,8);
60
61   fLambdaMass->Sumw2();
62   fAntiLambdaMass->Sumw2();
63   fK0ShortMass->Sumw2();
64   fDcaDaughters->Sumw2();
65   fDcaV0ToPrimVertex->Sumw2();
66   fDcaPosToPrimVertex->Sumw2();
67   fDcaNegToPrimVertex->Sumw2();
68   fCosPointingAngle->Sumw2();
69   fDecayLength->Sumw2();
70   fEtaV0->Sumw2();
71   fPtPosDaughter->Sumw2();
72   fPtNegDaughter->Sumw2();
73   fdEdxPosDaughter->Sumw2();
74   fdEdxNegDaughter->Sumw2();
75   fTOFtimePosDaughter->Sumw2();
76   fTOFtimeNegDaughter->Sumw2();
77   fnsigmaPosL->Sumw2();
78   fnsigmaNegL->Sumw2();
79   fnsigmaPosAL->Sumw2();
80   fnsigmaNegAL->Sumw2();
81 }
82
83 AliFemtoCutMonitorV0::AliFemtoCutMonitorV0(const char *aName):
84   AliFemtoCutMonitor(),
85   fLambdaMass(0),
86   fAntiLambdaMass(0),
87   fK0ShortMass(0),
88   fDcaDaughters(0),
89   fDcaV0ToPrimVertex(0),
90   fDcaPosToPrimVertex(0),
91   fDcaNegToPrimVertex(0),
92   fCosPointingAngle(0),
93   fDecayLength(0),
94   fEtaV0(0),
95   fPtV0(0),
96   fPtPosDaughter(0),
97   fPtNegDaughter(0),
98   fdEdxPosDaughter(0),
99   fdEdxNegDaughter(0),
100   fTOFtimePosDaughter(0),
101   fTOFtimeNegDaughter(0),
102   fnsigmaPosL(0),
103   fnsigmaNegL(0),
104   fnsigmaPosAL(0),
105   fnsigmaNegAL(0)
106 {
107   // Normal constructor
108   char name[200];
109   snprintf(name, 200, "LambdaMass%s", aName);
110   fLambdaMass = new TH1F(name, "Mass Assuming Lambda Hypothesis", 10000, 0, 5);
111   snprintf(name, 200, "AntiLambdaMass%s", aName);
112   fAntiLambdaMass = new TH1F(name, "Mass Assuming AntiLambda Hypothesis", 10000, 0, 5);
113   snprintf(name, 200, "K0ShortMass%s", aName);
114   fK0ShortMass = new TH1F(name, "Mass Assuming K0 short Hypothesis", 500, 0, 5);
115   snprintf(name, 200, "DcaDaughters%s", aName);
116   fDcaDaughters = new TH1F(name, "DCA Daughters", 500, 0, 2);
117   snprintf(name, 200, "DcaV0ToPrimVertex%s", aName);
118   fDcaV0ToPrimVertex = new TH1F(name, "DCA V0 to primary vertex", 500, 0, 3);
119   snprintf(name, 200, "DcaPosToPrimVertex%s", aName);
120   fDcaPosToPrimVertex = new TH1F(name, "DCA pos. daughter V0 to primary vertex", 500, 0, 3);
121   snprintf(name, 200, "DcaNegToPrimVertex%s", aName);
122   fDcaNegToPrimVertex = new TH1F(name, "DCA neg. daughter V0 to primary vertex", 500, 0, 3);
123   snprintf(name, 200, "CosPointingAngle%s", aName);
124   fCosPointingAngle = new TH1F(name,"Cosinus Pointing Angle",500,0,1);
125   snprintf(name, 200, "DecayLength%s", aName);
126   fDecayLength = new TH1F(name,"Decay Length",100,0,100);
127   snprintf(name, 200, "EtaV0%s", aName);
128   fEtaV0 = new TH1F(name, "|Eta| distribution of V0s", 500, 0.0, 1.);
129   snprintf(name, 200, "PtV0%s", aName);
130   fPtV0 = new TH1F(name, "Pt distribution of V0s", 500, 0.0, 8.);
131   snprintf(name, 200, "fPtPosDaughter%s", aName);
132   fPtPosDaughter = new TH1F(name, "Pt distribution of positive daughters", 500, 0.0, 5.);
133   snprintf(name, 200, "fPtNegDaughter%s", aName);
134   fPtNegDaughter = new TH1F(name, "Pt distribution of negative daughters", 500, 0.0, 5.);
135   snprintf(name, 200, "fdEdxPosDaughter%s", aName);
136   fdEdxPosDaughter = new TH2D(name,"dEdx of positive daughters",200, 0.1, 4.0, 250, 0.0, 500.0);
137   snprintf(name, 200, "fdEdxNegDaughter%s", aName);
138   fdEdxNegDaughter = new TH2D(name,"dEdx of negative daughters",200, 0.1, 4.0, 250, 0.0, 500.0);
139   snprintf(name, 200, "fTOFtimePosDaughter%s", aName);
140   fTOFtimePosDaughter = new TH2D(name,"TOF time of positive daughters",190, 0.1, 2.0, 400, -4000.0, 4000.0);
141   snprintf(name, 200, " fTOFtimeNegDaughter%s", aName);
142   fTOFtimeNegDaughter = new TH2D(name,"TOF time of negative daughters",190, 0.1, 2.0, 400, -4000.0, 4000.0);
143   snprintf(name, 200, " fnsigmaPosL%s", aName);
144   fnsigmaPosL = new TH1D(name,"Number of sigmas of positive Lambda daughters",200,-10,10);
145   snprintf(name, 200, " fnsigmaNegL%s", aName);
146   fnsigmaNegL = new TH1D(name,"Number of sigmas of negative Lambda daughters",200,-10,10);
147   snprintf(name, 200, " fnsigmaPosAL%s", aName);
148   fnsigmaPosAL = new TH1D(name,"Number of sigmas of positive AntiLambda daughters",200,-10,10);
149   snprintf(name, 200, " fnsigmaNegAL%s", aName);
150   fnsigmaNegAL = new TH1D(name,"Number of sigmas of negative AntiLambda daughters",200,-10,10);
151
152   fLambdaMass->Sumw2();
153   fAntiLambdaMass->Sumw2();
154   fK0ShortMass->Sumw2();
155   fDcaDaughters->Sumw2();
156   fDcaV0ToPrimVertex->Sumw2();
157   fDcaPosToPrimVertex->Sumw2();
158   fDcaNegToPrimVertex->Sumw2();
159   fCosPointingAngle->Sumw2();
160   fDecayLength->Sumw2();
161   fEtaV0->Sumw2();
162   fPtPosDaughter->Sumw2();
163   fPtNegDaughter->Sumw2();
164   fdEdxPosDaughter->Sumw2();
165   fdEdxNegDaughter->Sumw2();
166   fTOFtimePosDaughter->Sumw2();
167   fTOFtimeNegDaughter->Sumw2();
168   fnsigmaPosL->Sumw2();
169   fnsigmaNegL->Sumw2();
170   fnsigmaPosAL->Sumw2();
171   fnsigmaNegAL->Sumw2();
172 }
173
174 AliFemtoCutMonitorV0::AliFemtoCutMonitorV0(const AliFemtoCutMonitorV0 &aCut):
175   AliFemtoCutMonitor(),
176   fLambdaMass(0),
177   fAntiLambdaMass(0),
178   fK0ShortMass(0),
179   fDcaDaughters(0),
180   fDcaV0ToPrimVertex(0),
181   fDcaPosToPrimVertex(0),
182   fDcaNegToPrimVertex(0),
183   fCosPointingAngle(0),
184   fDecayLength(0),
185   fEtaV0(0),
186   fPtV0(0),
187   fPtPosDaughter(0),
188   fPtNegDaughter(0),
189   fdEdxPosDaughter(0),
190   fdEdxNegDaughter(0),
191   fTOFtimePosDaughter(0),
192   fTOFtimeNegDaughter(0),
193   fnsigmaPosL(0),
194   fnsigmaNegL(0),
195   fnsigmaPosAL(0),
196   fnsigmaNegAL(0)
197 {
198   // copy constructor
199   if (fLambdaMass) delete fLambdaMass;
200   fLambdaMass = new TH1F(*aCut.fLambdaMass);
201   if (fAntiLambdaMass) delete fAntiLambdaMass;
202   fAntiLambdaMass = new TH1F(*aCut.fAntiLambdaMass);
203   if (fK0ShortMass) delete fK0ShortMass;
204   fK0ShortMass = new TH1F(*aCut.fK0ShortMass);
205   if (fDcaDaughters) delete fDcaDaughters;
206   fDcaDaughters = new TH1F(*aCut.fDcaDaughters);
207   if (fDcaV0ToPrimVertex) delete fDcaV0ToPrimVertex;
208   fDcaV0ToPrimVertex = new TH1F(*aCut.fDcaV0ToPrimVertex);
209   if (fDcaPosToPrimVertex) delete fDcaPosToPrimVertex;
210   fDcaPosToPrimVertex = new TH1F(*aCut.fDcaPosToPrimVertex);
211   if (fDcaNegToPrimVertex) delete fDcaNegToPrimVertex;
212   fDcaNegToPrimVertex = new TH1F(*aCut.fDcaNegToPrimVertex);
213   if(fCosPointingAngle) delete fCosPointingAngle;
214   fCosPointingAngle = new TH1F(*aCut.fCosPointingAngle);
215   if(fDecayLength) delete fDecayLength;
216   fDecayLength = new TH1F(*aCut.fDecayLength);
217   if(fEtaV0) delete fEtaV0;
218   fEtaV0 = new TH1F(*aCut.fEtaV0);
219   if(fPtV0) delete fPtV0;
220   fPtV0 = new TH1F(*aCut.fPtV0);
221   if(fPtPosDaughter) delete fPtPosDaughter;
222   fPtPosDaughter = new TH1F(*aCut.fPtPosDaughter);
223   if(fPtNegDaughter) delete fPtNegDaughter;
224   fPtNegDaughter = new TH1F(*aCut.fPtNegDaughter);
225   if(fdEdxPosDaughter) delete fdEdxPosDaughter;
226   fdEdxNegDaughter = new TH2D(*aCut.fdEdxNegDaughter);
227   if(fdEdxNegDaughter) delete fdEdxNegDaughter;
228   fdEdxNegDaughter = new TH2D(*aCut.fdEdxNegDaughter);
229   if(fTOFtimePosDaughter) delete fTOFtimePosDaughter;
230   fTOFtimePosDaughter = new TH2D(*aCut.fTOFtimePosDaughter);
231   if(fTOFtimeNegDaughter) delete fTOFtimeNegDaughter;
232   fTOFtimeNegDaughter = new TH2D(*aCut.fTOFtimeNegDaughter);
233   if(fnsigmaPosL) delete fnsigmaPosL;
234   fnsigmaPosL = new TH1D(*aCut.fnsigmaPosL);
235   if(fnsigmaNegL) delete fnsigmaNegL;
236   fnsigmaNegL = new TH1D(*aCut.fnsigmaNegL);
237   if(fnsigmaPosAL) delete fnsigmaPosAL;
238   fnsigmaPosAL = new TH1D(*aCut.fnsigmaPosAL);
239   if(fnsigmaNegAL) delete fnsigmaNegAL;
240   fnsigmaNegAL = new TH1D(*aCut.fnsigmaNegAL);
241
242   fLambdaMass->Sumw2();
243   fAntiLambdaMass->Sumw2();
244   fK0ShortMass->Sumw2();
245   fDcaDaughters->Sumw2();
246   fDcaV0ToPrimVertex->Sumw2();
247   fDcaPosToPrimVertex->Sumw2();
248   fDcaNegToPrimVertex->Sumw2();
249   fCosPointingAngle->Sumw2();
250   fDecayLength->Sumw2();
251   fEtaV0->Sumw2();
252   fPtPosDaughter->Sumw2();
253   fPtNegDaughter->Sumw2();
254   fdEdxPosDaughter->Sumw2();
255   fdEdxNegDaughter->Sumw2();
256   fTOFtimePosDaughter->Sumw2();
257   fTOFtimeNegDaughter->Sumw2();
258   fnsigmaPosL->Sumw2();
259   fnsigmaNegL->Sumw2();
260   fnsigmaPosAL->Sumw2();
261   fnsigmaNegAL->Sumw2();
262 }
263
264 AliFemtoCutMonitorV0::~AliFemtoCutMonitorV0()
265 {
266   // Destructor
267   delete fLambdaMass;
268   delete fAntiLambdaMass;
269   delete fK0ShortMass;
270   delete fDcaDaughters;
271   delete fDcaV0ToPrimVertex;
272   delete fDcaPosToPrimVertex;
273   delete fDcaNegToPrimVertex;
274   delete fCosPointingAngle;
275   delete fDecayLength;
276   delete fEtaV0;
277   delete fPtV0;
278   delete fPtPosDaughter;
279   delete fPtNegDaughter;
280   delete fdEdxPosDaughter;
281   delete fdEdxNegDaughter;
282   delete fTOFtimePosDaughter;
283   delete fTOFtimeNegDaughter;
284   delete fnsigmaPosL;
285   delete fnsigmaNegL;
286   delete fnsigmaPosAL;
287   delete fnsigmaNegAL;
288 }
289
290 AliFemtoCutMonitorV0& AliFemtoCutMonitorV0::operator=(const AliFemtoCutMonitorV0& aCut)
291 {
292   // assignment operator
293   if (this == &aCut)
294     return *this;
295
296   if (fLambdaMass) delete fLambdaMass;
297   fLambdaMass = new TH1F(*aCut.fLambdaMass);
298   if (fAntiLambdaMass) delete fAntiLambdaMass;
299   fAntiLambdaMass = new TH1F(*aCut.fAntiLambdaMass);
300   if (fK0ShortMass) delete fK0ShortMass;
301   fK0ShortMass = new TH1F(*aCut.fK0ShortMass);
302   if (fDcaDaughters) delete fDcaDaughters;
303   fDcaDaughters = new TH1F(*aCut.fDcaDaughters);
304   if (fDcaV0ToPrimVertex) delete fDcaV0ToPrimVertex;
305   fDcaV0ToPrimVertex = new TH1F(*aCut.fDcaV0ToPrimVertex);
306   if (fDcaPosToPrimVertex) delete fDcaPosToPrimVertex;
307   fDcaPosToPrimVertex = new TH1F(*aCut.fDcaPosToPrimVertex);
308   if (fDcaNegToPrimVertex) delete fDcaNegToPrimVertex;
309   fDcaNegToPrimVertex = new TH1F(*aCut.fDcaNegToPrimVertex);
310   if(fCosPointingAngle) delete fCosPointingAngle;
311   fCosPointingAngle = new TH1F(*aCut.fCosPointingAngle);
312   if(fDecayLength) delete fDecayLength;
313   fDecayLength = new TH1F(*aCut.fDecayLength);
314   if(fEtaV0) delete fEtaV0;
315   fEtaV0 = new TH1F(*aCut.fEtaV0);
316   if(fPtV0) delete fPtV0;
317   fPtV0 = new TH1F(*aCut.fPtV0);
318   if(fPtPosDaughter) delete fPtPosDaughter;
319   fPtPosDaughter = new TH1F(*aCut.fPtPosDaughter);
320   if(fPtNegDaughter) delete fPtNegDaughter;
321   fPtNegDaughter = new TH1F(*aCut.fPtNegDaughter);
322   if(fdEdxPosDaughter) delete fdEdxPosDaughter;
323   fdEdxNegDaughter = new TH2D(*aCut.fdEdxNegDaughter);
324   if(fdEdxNegDaughter) delete fdEdxNegDaughter;
325   fdEdxNegDaughter = new TH2D(*aCut.fdEdxNegDaughter);
326   if(fTOFtimePosDaughter) delete fTOFtimePosDaughter;
327   fTOFtimePosDaughter = new TH2D(*aCut.fTOFtimePosDaughter);
328   if(fTOFtimeNegDaughter) delete fTOFtimeNegDaughter;
329   fTOFtimeNegDaughter = new TH2D(*aCut.fTOFtimeNegDaughter);
330   if(fnsigmaPosL) delete fnsigmaPosL;
331   fnsigmaPosL = new TH1D(*aCut.fnsigmaPosL);
332   if(fnsigmaNegL) delete fnsigmaNegL;
333   fnsigmaNegL = new TH1D(*aCut.fnsigmaNegL);
334   if(fnsigmaPosAL) delete fnsigmaPosAL;
335   fnsigmaPosAL = new TH1D(*aCut.fnsigmaPosAL);
336   if(fnsigmaNegAL) delete fnsigmaNegAL;
337   fnsigmaNegAL = new TH1D(*aCut.fnsigmaNegAL);
338
339   fLambdaMass->Sumw2();
340   fAntiLambdaMass->Sumw2();
341   fK0ShortMass->Sumw2();
342   fDcaDaughters->Sumw2();
343   fDcaV0ToPrimVertex->Sumw2();
344   fDcaPosToPrimVertex->Sumw2();
345   fDcaNegToPrimVertex->Sumw2();
346   fCosPointingAngle->Sumw2();
347   fDecayLength->Sumw2();
348   fEtaV0->Sumw2();
349   fPtPosDaughter->Sumw2();
350   fPtNegDaughter->Sumw2();
351   fdEdxPosDaughter->Sumw2();
352   fdEdxNegDaughter->Sumw2();
353   fTOFtimePosDaughter->Sumw2();
354   fTOFtimeNegDaughter->Sumw2();
355   fnsigmaPosL->Sumw2();
356   fnsigmaNegL->Sumw2();
357   fnsigmaPosAL->Sumw2();
358   fnsigmaNegAL->Sumw2();
359
360   return *this;
361 }
362
363 AliFemtoString AliFemtoCutMonitorV0::Report(){
364   // Prepare report from the execution
365   string stemp = "*** AliFemtoCutMonitorV0 report";
366   AliFemtoString returnThis = stemp;
367   return returnThis;
368 }
369
370 void AliFemtoCutMonitorV0::Fill(const AliFemtoV0* aV0)
371 {
372   // Fill momentum resolution histograms for the particle
373   fLambdaMass->Fill(aV0->MassLambda());
374   fAntiLambdaMass->Fill(aV0->MassAntiLambda());
375   fK0ShortMass->Fill(aV0->MassK0Short());
376   fDcaDaughters->Fill(aV0->DcaV0Daughters());
377   fDcaV0ToPrimVertex->Fill(aV0->DcaV0ToPrimVertex());
378   fDcaPosToPrimVertex->Fill(aV0->DcaPosToPrimVertex());
379   fDcaNegToPrimVertex->Fill(aV0->DcaNegToPrimVertex());
380   fCosPointingAngle->Fill(aV0->CosPointingAngle());
381   fDecayLength->Fill(aV0->DecayLengthV0());
382   fEtaV0->Fill(aV0->EtaV0());
383   fPtV0->Fill(aV0->PtV0());
384   fPtPosDaughter->Fill(aV0->PtPos());
385   fPtNegDaughter->Fill(aV0->PtNeg());
386   fdEdxPosDaughter->Fill(aV0->GetTPCMomentumPos(),aV0->DedxPos());
387   fdEdxNegDaughter->Fill(aV0->GetTPCMomentumNeg(),aV0->DedxNeg());
388
389   fTOFtimePosDaughter->Fill(aV0->PtPos(),aV0->TOFProtonTimePos()); //true only for lambdas
390   fTOFtimeNegDaughter->Fill(aV0->PtNeg(),aV0->TOFPionTimeNeg());
391
392   fnsigmaPosL->Fill(aV0->PosNSigmaTPCP());
393   fnsigmaNegL->Fill(aV0->NegNSigmaTPCPi());
394   fnsigmaNegAL->Fill(aV0->NegNSigmaTPCP());
395   fnsigmaPosAL->Fill(aV0->PosNSigmaTPCPi());
396 }
397
398 void AliFemtoCutMonitorV0::Write()
399 {
400   // Write out the relevant histograms
401   fLambdaMass->Write();
402   fAntiLambdaMass->Write();
403   fK0ShortMass->Write();
404   fDcaDaughters->Write();
405   fDcaV0ToPrimVertex->Write();
406   fDcaPosToPrimVertex->Write();
407   fDcaNegToPrimVertex->Write();
408   fCosPointingAngle->Write();
409   fDecayLength->Write();
410   fEtaV0->Write();
411   fPtV0->Write();
412   fPtPosDaughter->Write();
413   fPtNegDaughter->Write();
414   fdEdxPosDaughter->Write();
415   fdEdxNegDaughter->Write();
416   fTOFtimePosDaughter->Write();
417   fTOFtimeNegDaughter->Write();
418   fnsigmaPosL->Write();
419   fnsigmaNegL->Write();
420   fnsigmaPosAL->Write();
421   fnsigmaNegAL->Write();
422 }
423
424 TList *AliFemtoCutMonitorV0::GetOutputList()
425 {
426   // Get the list of histograms to write
427   TList *tOutputList = new TList();
428   tOutputList->Add(fLambdaMass);
429   tOutputList->Add(fAntiLambdaMass);
430   tOutputList->Add(fK0ShortMass);
431   tOutputList->Add(fDcaDaughters);
432   tOutputList->Add(fDcaV0ToPrimVertex);
433   tOutputList->Add(fDcaPosToPrimVertex);
434   tOutputList->Add(fDcaNegToPrimVertex);
435   tOutputList->Add(fCosPointingAngle);
436   tOutputList->Add(fDecayLength);
437   tOutputList->Add(fEtaV0);
438   tOutputList->Add(fPtV0);
439   tOutputList->Add(fPtPosDaughter);
440   tOutputList->Add(fPtNegDaughter);
441   tOutputList->Add(fdEdxPosDaughter);
442   tOutputList->Add(fdEdxNegDaughter);
443   tOutputList->Add(fTOFtimePosDaughter);
444   tOutputList->Add(fTOFtimeNegDaughter);
445   tOutputList->Add(fnsigmaPosL);
446   tOutputList->Add(fnsigmaNegL);
447   tOutputList->Add(fnsigmaPosAL);
448   tOutputList->Add(fnsigmaNegAL);
449
450   return tOutputList;
451 }