3 TPolyMarker3D* make_vertex_marker(AliESDVertex* v, const Text_t* name )
9 printf("%16s: %f %f %f - %f %f %f\n", name,
10 x[0], x[1], x[2], e[0], e[1], e[2]);
12 TPolyMarker3D* m = new TPolyMarker3D(1);
14 m->SetPoint(0, x[0], x[1], x[2]);
19 Reve::BoxSet* make_vertex_boxes(AliESDVertex* v)
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);
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);
42 void register_vertex_marker(TPolyMarker3D* m)
45 Color_t* colp = FindColorVar(m, "fMarkerColor");
46 RenderElementObjPtr* rnrEl = new RenderElementObjPtr(m, *colp);
47 gReve->AddRenderElement(rnrEl);
51 void primary_vertex_primitive(Bool_t showSPD=kTRUE, Bool_t showBoxes=kFALSE)
53 AliESDEvent* esd = Alieve::Event::AssertESD();
55 AliESDVertex* pv = esd->GetPrimaryVertex();
56 TPolyMarker3D* pvm = make_vertex_marker(pv, "Primary Vertex");
57 pvm->SetMarkerStyle(5);
58 pvm->SetMarkerColor(5);
59 pvm->SetMarkerSize(1.4);
60 register_vertex_marker(pvm);
63 AliESDVertex* spdv = esd->GetVertex();
64 TPolyMarker3D* spdvm = make_vertex_marker(spdv, "SPD Vertex");
65 spdvm->SetMarkerStyle(2);
66 spdvm->SetMarkerColor(6);
67 register_vertex_marker(spdvm);
71 make_vertex_boxes(pv);
74 /**************************************************************************/
76 Reve::StraightLineSet* ESDvertex_lineset(AliESDVertex* v, const Text_t* name)
81 v->GetXYZ(x); v->GetSigmaXYZ(e);
82 printf("%16s: %f %f %f - %f %f %f\n", name,
83 x[0], x[1], x[2], e[0], e[1], e[2]);
86 Reve::StraightLineSet* ls = new Reve::StraightLineSet();
88 ls->AddLine(e[0], 0, 0, -e[0], 0, 0);
89 ls->AddLine(0, e[1], 0, 0, -e[1], 0);
90 ls->AddLine(0, 0, e[2], 0, 0, -e[2]);
91 for(Int_t i =0; i < 3; i++)
98 ls->AddMarker(0, 0.5);
99 ls->RefHMTrans().SetPos(x);
103 void make_vertex_ellipses(Reve::StraightLineSet* ls, AliESDVertex* v, Bool_t ellipseUseSigma)
105 using namespace Reve;
108 v->GetXYZ(x); v->GetSigmaXYZ(e);
112 e[0] *= 30; e[1] *= 30; e[2] *= 10;
113 ls->SetMarkerStyle(5);
114 ls->SetMarkerColor(5);
115 ls->SetMarkerSize(1.4);
117 ls->SetTitle("+- 30 sigma_r x 10 sigma_z");
121 e[0] = 1; e[1] = 1; e[2] = 2;
122 ls->SetMarkerStyle(2);
123 ls->SetMarkerColor(6);
125 ls->SetTitle("+- 10 x 10 x 20mm");
128 Float_t S = 2*TMath::Pi()/N;
132 for(Int_t i = 0; i<N; i++)
133 ls->AddLine(a*TMath::Cos(i*S) , b*TMath::Sin(i*S) , 0,
134 a*TMath::Cos(i*S+S), b*TMath::Sin(i*S+S), 0);
137 for(Int_t i = 0; i<N; i++)
138 ls->AddLine(a*TMath::Cos(i*S) , 0, b*TMath::Sin(i*S),
139 a*TMath::Cos(i*S+S), 0, b*TMath::Sin(i*S+S));
142 for(Int_t i = 0; i<N; i++)
143 ls->AddLine(0, a*TMath::Cos(i*S) , b*TMath::Sin(i*S),
144 0, a*TMath::Cos(i*S+S), b*TMath::Sin(i*S+S));
147 void primary_vertex(Bool_t showSPD=kTRUE, Bool_t rnrEllipse=kTRUE)
149 AliESDEvent* esd = Alieve::Event::AssertESD();
150 Reve::StraightLineSet* ls;
152 AliESDVertex* PV = esd->GetPrimaryVertex();
153 ls = ESDvertex_lineset(PV, "Primary Vertex");
154 if(rnrEllipse) make_vertex_ellipses(ls, PV, kTRUE);
155 gReve->AddRenderElement(ls);
159 AliESDVertex* SPDV = esd->GetVertex();
160 ls = ESDvertex_lineset(SPDV, "SPD Vertex");
161 if(rnrEllipse) make_vertex_ellipses(ls, SPDV, kFALSE);
162 gReve->AddRenderElement(ls);