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