Use the right function to get position of primary vertex (was always retrieveng MC...
[u/mrichter/AliRoot.git] / EVE / alice-macros / primary_vertex.C
1 // $Header$
2
3 TPolyMarker3D* make_vertex_marker(AliESDVertex* v, const Text_t* name)
4 {
5   Double_t x[3], e[3];
6   v->GetXYZ(x);
7   v->GetSigmaXYZ(e);
8
9   printf("%16s: %f %f %f   -   %f %f %f\n", name,
10          x[0], x[1], x[2], e[0], e[1], e[2]);
11
12   TPolyMarker3D* m = new TPolyMarker3D(1);
13   m->SetName(name);
14   m->SetPoint(0, x[0], x[1], x[2]);
15
16   return m;
17 }
18
19 Reve::BoxSet* make_vertex_boxes(AliESDVertex* v)
20 {
21   Double_t x[3], e[3];
22   v->GetTruePos(x);
23   v->GetSigmaXYZ(e);
24
25   Reve::BoxSet* bs;
26
27   bs = new BoxSet("+- 10 x 10 x 20mm");
28   bs->SetRenderMode(Reve::BoxSet::RM_Line);
29   bs->AddBox(Reve::Box(-1, x[0], x[1], x[2], 1, 1, 2));
30   bs->SetMainColor((Color_t) 2);
31   gReve->AddRenderElement(bs);
32
33   bs = new BoxSet("+- 30 sigma_r x 10 sigma_z");
34   bs->SetRenderMode(Reve::BoxSet::RM_Line);
35   bs->AddBox(Reve::Box(-1, x[0], x[1], x[2], 30*e[0], 30*e[1], 10*e[2]));
36   bs->SetMainColor((Color_t) 3);
37   gReve->AddRenderElement(bs);
38
39   gReve->Redraw3D();
40 }
41
42 void register_vertex_marker(TPolyMarker3D* m)
43 {
44   using namespace Reve;
45   Color_t* colp = FindColorVar(m, "fMarkerColor");
46   RenderElementObjPtr* rnrEl = new RenderElementObjPtr(m, *colp);
47   gReve->AddRenderElement(rnrEl);
48   gReve->Redraw3D();
49 }
50
51 void primary_vertex(Bool_t showSPD=kTRUE, Bool_t showBoxes=kFALSE)
52 {
53   AliESD* esd = Alieve::Event::AssertESD();
54
55   AliESDVertex*  pv  = esd->GetPrimaryVertex();
56   TPolyMarker3D* pvm = make_vertex_marker(pv, "Primary Vertex");
57   pvm->SetMarkerStyle(5);
58   pvm->SetMarkerColor(5);
59   register_vertex_marker(pvm);
60
61   if(showSPD) {
62     AliESDVertex*  spdv  = esd->GetVertex();
63     TPolyMarker3D* spdvm = make_vertex_marker(spdv, "SPD Vertex");
64     spdvm->SetMarkerStyle(2);
65     spdvm->SetMarkerColor(6);
66     register_vertex_marker(spdvm);
67   }
68
69   if(showBoxes)
70     make_vertex_boxes(pv);
71 }