1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoCutMonitorEventVertex - the cut monitor for events to study //
4 // the distribution and error of the primary vertex //
6 ////////////////////////////////////////////////////////////////////////////////
7 #include "AliFemtoCutMonitorEventVertex.h"
8 #include "AliFemtoModelHiddenInfo.h"
9 #include "AliFemtoEvent.h"
15 AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex():
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);
31 AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex(const char *aName):
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);
53 AliFemtoCutMonitorEventVertex::AliFemtoCutMonitorEventVertex(const AliFemtoCutMonitorEventVertex &aCut):
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);
74 AliFemtoCutMonitorEventVertex::~AliFemtoCutMonitorEventVertex()
84 AliFemtoCutMonitorEventVertex& AliFemtoCutMonitorEventVertex::operator=(const AliFemtoCutMonitorEventVertex& aCut)
86 // assignment operator
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);
104 AliFemtoString AliFemtoCutMonitorEventVertex::Report(){
105 // Prepare report from the execution
106 string stemp = "*** AliFemtoCutMonitorEventVertex report";
107 AliFemtoString returnThis = stemp;
111 void AliFemtoCutMonitorEventVertex::Fill(const AliFemtoEvent* aEvent)
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]));
121 void AliFemtoCutMonitorEventVertex::Write()
123 // Write out the relevant histograms
126 fEvVertSigXY->Write();
128 fEvVertSigZ->Write();
131 TList *AliFemtoCutMonitorEventVertex::GetOutputList()
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);