2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
4 /**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 TPolyMarker3D* make_vertex_marker(AliESDVertex* v, const Text_t* name )
16 printf("%16s: %f %f %f - %f %f %f\n", name,
17 x[0], x[1], x[2], e[0], e[1], e[2]);
19 TPolyMarker3D* m = new TPolyMarker3D(1);
21 m->SetPoint(0, x[0], x[1], x[2]);
26 TEveBoxSet* make_vertex_boxes(AliESDVertex* v)
34 bs = new TEveBoxSet("+- 10 x 10 x 20mm");
35 bs->SetRenderMode(TEveBoxSet::RM_TEveLine);
36 bs->AddBox(Box(-1, x[0], x[1], x[2], 1, 1, 2));
37 bs->SetMainColor((Color_t) 2);
40 bs = new TEveBoxSet("+- 30 sigma_r x 10 sigma_z");
41 bs->SetRenderMode(TEveBoxSet::RM_TEveLine);
42 bs->AddBox(Box(-1, x[0], x[1], x[2], 30*e[0], 30*e[1], 10*e[2]));
43 bs->SetMainColor((Color_t) 3);
49 void register_vertex_marker(TPolyMarker3D* m)
51 Color_t* colp = TEveUtil::FindColorVar(m, "fMarkerColor");
52 TEveElementObjectPtr* rnrEl = new TEveElementObjectPtr(m, *colp);
53 gEve->AddElement(rnrEl);
57 void primary_vertex_primitive(Bool_t showSPD=kTRUE, Bool_t showBoxes=kFALSE)
59 AliESDEvent* esd = AliEveEventManager::AssertESD();
61 AliESDVertex* pv = esd->GetPrimaryVertex();
62 TPolyMarker3D* pvm = make_vertex_marker(pv, "Primary Vertex");
63 pvm->SetMarkerStyle(5);
64 pvm->SetMarkerColor(5);
65 pvm->SetMarkerSize(1.4);
66 register_vertex_marker(pvm);
69 AliESDVertex* spdv = esd->GetVertex();
70 TPolyMarker3D* spdvm = make_vertex_marker(spdv, "SPD Vertex");
71 spdvm->SetMarkerStyle(2);
72 spdvm->SetMarkerColor(6);
73 register_vertex_marker(spdvm);
77 make_vertex_boxes(pv);
80 /******************************************************************************/
82 TEveStraightLineSet* ESDvertex_lineset(AliESDVertex* v, const Text_t* name)
85 v->GetXYZ(x); v->GetSigmaXYZ(e);
86 printf("%16s: %f %f %f - %f %f %f\n", name,
87 x[0], x[1], x[2], e[0], e[1], e[2]);
90 TEveStraightLineSet* ls = new TEveStraightLineSet();
92 ls->AddLine(e[0], 0, 0, -e[0], 0, 0);
93 ls->AddLine(0, e[1], 0, 0, -e[1], 0);
94 ls->AddLine(0, 0, e[2], 0, 0, -e[2]);
95 for(Int_t i =0; i < 3; i++)
102 ls->AddMarker(0, 0.5);
103 ls->RefHMTrans().SetPos(x);
107 void make_vertex_ellipses(TEveStraightLineSet* ls, AliESDVertex* v, Bool_t ellipseUseSigma)
110 v->GetXYZ(x); v->GetSigmaXYZ(e);
114 e[0] *= 30; e[1] *= 30; e[2] *= 10;
115 ls->SetMarkerStyle(5);
116 ls->SetMarkerColor(5);
117 ls->SetMarkerSize(1.4);
119 ls->SetTitle("+- 30 sigma_r x 10 sigma_z");
123 e[0] = 1; e[1] = 1; e[2] = 2;
124 ls->SetMarkerStyle(2);
125 ls->SetMarkerColor(6);
127 ls->SetTitle("+- 10 x 10 x 20mm");
130 Float_t S = 2*TMath::Pi()/N;
134 for (Int_t i = 0; i<N; i++)
135 ls->AddLine(a*TMath::Cos(i*S) , b*TMath::Sin(i*S) , 0,
136 a*TMath::Cos(i*S+S), b*TMath::Sin(i*S+S), 0);
139 for (Int_t i = 0; i<N; i++)
140 ls->AddLine(a*TMath::Cos(i*S) , 0, b*TMath::Sin(i*S),
141 a*TMath::Cos(i*S+S), 0, b*TMath::Sin(i*S+S));
144 for (Int_t i = 0; i<N; i++)
145 ls->AddLine(0, a*TMath::Cos(i*S) , b*TMath::Sin(i*S),
146 0, a*TMath::Cos(i*S+S), b*TMath::Sin(i*S+S));
149 void primary_vertex(Bool_t showSPD=kTRUE, Bool_t rnrEllipse=kTRUE)
151 AliESDEvent* esd = AliEveEventManager::AssertESD();
152 TEveStraightLineSet* ls;
154 AliESDVertex* PV = esd->GetPrimaryVertex();
155 ls = ESDvertex_lineset(PV, "Primary Vertex");
156 if (rnrEllipse) make_vertex_ellipses(ls, PV, kTRUE);
157 gEve->AddElement(ls);
161 AliESDVertex* SPDV = esd->GetVertex();
162 ls = ESDvertex_lineset(SPDV, "SPD Vertex");
163 if (rnrEllipse) make_vertex_ellipses(ls, SPDV, kFALSE);
164 gEve->AddElement(ls);