]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FEMTOSCOPY/AliFemto/AliFemtoCutMonitorEventVertex.cxx
AliCentrality for ESD and AOD analysis
[u/mrichter/AliRoot.git] / PWG2 / FEMTOSCOPY / AliFemto / AliFemtoCutMonitorEventVertex.cxx
CommitLineData
dc37df7f 1////////////////////////////////////////////////////////////////////////////////
2// //
3// AliFemtoCutMonitorEventVertex - the cut monitor for events to study //
4// the distribution and error of the primary vertex //
5// //
6////////////////////////////////////////////////////////////////////////////////
7#include "AliFemtoCutMonitorEventVertex.h"
8#include "AliFemtoModelHiddenInfo.h"
9#include "AliFemtoEvent.h"
10#include <TH1D.h>
11#include <TH2D.h>
12#include <TList.h>
13#include <TMath.h>
14
15AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex():
16 AliFemtoCutMonitor(),
17 fEvVertRad(0),
18 fEvVertXY(0),
19 fEvVertSigXY(0),
20 fEvVertZ(0),
21 fEvVertSigZ(0)
22{
23 // Default constructor
24 fEvVertRad = new TH1D("EvVertRad", "Vertex position radial", 200, 0.0, 0.2);
25 fEvVertXY = new TH2D("EvVertXY", "Vertex position xy plane", 200, -0.2, 0.2, 200, -0.2, 0.2);
26 fEvVertSigXY = new TH1D("EvVertSigXY", "Vertex error in xy plane", 200, 0.0, 0.2);
27 fEvVertZ = new TH1D("EvVertZ", "Vertex position in z", 500, -50.0, 50.0);
28 fEvVertSigZ = new TH1D("EvVertSigZ", "Vertex error in z", 100, 0.0, 0.2);
29}
30
31AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex(const char *aName):
32 AliFemtoCutMonitor(),
33 fEvVertRad(0),
34 fEvVertXY(0),
35 fEvVertSigXY(0),
36 fEvVertZ(0),
37 fEvVertSigZ(0)
38{
39 // Normal constructor
40 char name[200];
41 snprintf(name, 200, "EvVertRad%s", aName);
42 fEvVertRad = new TH1D(name, "Vertex position radial", 200, 0.0, 0.2);
43 snprintf(name, 200, "EvVertXY%s", aName);
44 fEvVertXY = new TH2D(name, "Vertex position xy plane", 200, -0.2, 0.2, 200, -0.2, 0.2);
45 snprintf(name, 200, "EvVertSigXY%s", aName);
46 fEvVertSigXY = new TH1D(name, "Vertex error in xy plane", 200, 0.0, 0.2);
47 snprintf(name, 200, "EvVertZ%s", aName);
48 fEvVertZ = new TH1D(name, "Vertex position in z", 500, -50.0, 50.0);
49 snprintf(name, 200, "EvVertSigZ%s", aName);
50 fEvVertSigZ = new TH1D(name, "Vertex error in z", 100, 0.0, 0.2);
51}
52
53AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex(const AliFemtoCutMonitorEventVertex &aCut):
54 AliFemtoCutMonitor(),
55 fEvVertRad(0),
56 fEvVertXY(0),
57 fEvVertSigXY(0),
58 fEvVertZ(0),
59 fEvVertSigZ(0)
60{
61 // copy constructor
62 if (fEvVertRad) delete fEvVertRad;
63 fEvVertRad = new TH1D(*aCut.fEvVertRad);
64 if (fEvVertXY) delete fEvVertXY;
65 fEvVertXY = new TH2D(*aCut.fEvVertXY);
66 if (fEvVertSigXY) delete fEvVertSigXY;
67 fEvVertSigXY = new TH1D(*aCut.fEvVertSigXY);
68 if (fEvVertZ) delete fEvVertZ;
69 fEvVertZ = new TH1D(*aCut.fEvVertZ);
70 if (fEvVertSigZ) delete fEvVertSigZ;
71 fEvVertSigZ = new TH1D(*aCut.fEvVertSigZ);
72}
73
74AliFemtoCutMonitorEventVertex::~AliFemtoCutMonitorEventVertex()
75{
76 // Destructor
77 delete fEvVertRad;
78 delete fEvVertXY;
79 delete fEvVertSigXY;
80 delete fEvVertZ;
81 delete fEvVertSigZ;
82}
83
84AliFemtoCutMonitorEventVertex& AliFemtoCutMonitorEventVertex::operator=(const AliFemtoCutMonitorEventVertex& aCut)
85{
86 // assignment operator
87 if (this == &aCut)
88 return *this;
89
90 if (fEvVertRad) delete fEvVertRad;
91 fEvVertRad = new TH1D(*aCut.fEvVertRad);
92 if (fEvVertXY) delete fEvVertXY;
93 fEvVertXY = new TH2D(*aCut.fEvVertXY);
94 if (fEvVertSigXY) delete fEvVertSigXY;
95 fEvVertSigXY = new TH1D(*aCut.fEvVertSigXY);
96 if (fEvVertZ) delete fEvVertZ;
97 fEvVertZ = new TH1D(*aCut.fEvVertZ);
98 if (fEvVertSigZ) delete fEvVertSigZ;
99 fEvVertSigZ = new TH1D(*aCut.fEvVertSigZ);
100
101 return *this;
102}
103
104AliFemtoString AliFemtoCutMonitorEventVertex::Report(){
105 // Prepare report from the execution
106 string stemp = "*** AliFemtoCutMonitorEventVertex report";
107 AliFemtoString returnThis = stemp;
108 return returnThis;
109}
110
111void AliFemtoCutMonitorEventVertex::Fill(const AliFemtoEvent* aEvent)
112{
113 // Fill in the monitor histograms with the values from the current track
114 fEvVertRad->Fill(TMath::Hypot(aEvent->PrimVertPos().x(), aEvent->PrimVertPos().y()));
115 fEvVertXY->Fill(aEvent->PrimVertPos().x(), aEvent->PrimVertPos().y());
116 fEvVertSigXY->Fill(TMath::Sqrt(aEvent->PrimVertCov()[0]+aEvent->PrimVertCov()[2]));
117 fEvVertZ->Fill(aEvent->PrimVertPos().z());
118 fEvVertSigZ->Fill(TMath::Sqrt(aEvent->PrimVertCov()[5]));
119}
120
121void AliFemtoCutMonitorEventVertex::Write()
122{
123 // Write out the relevant histograms
124 fEvVertRad->Write();
125 fEvVertXY->Write();
126 fEvVertSigXY->Write();
127 fEvVertZ->Write();
128 fEvVertSigZ->Write();
129}
130
131TList *AliFemtoCutMonitorEventVertex::GetOutputList()
132{
133 TList *tOutputList = new TList();
134 tOutputList->Add(fEvVertRad);
135 tOutputList->Add(fEvVertXY);
136 tOutputList->Add(fEvVertSigXY);
137 tOutputList->Add(fEvVertZ);
138 tOutputList->Add(fEvVertSigZ);
139
140 return tOutputList;
141}