264 TMatrixDEigen eig(xxx);
265 TVectorD xxxEig ( eig.GetEigenValuesRe());
268 TEveVector v1(0, eig.GetEigenVectors()(1, 2), eig.GetEigenVectors()(2, 2));
271 TEveVector v2(0, eig.GetEigenVectors()(1, 1), eig.GetEigenVectors()(2, 1));
273 if (v1[1]*v2[2] > v1[2]*v2[1])
277 TEveProjection *proj =
fM->GetManager()->GetProjection();
280 bool splitted =
false;
286 if (proj->GetDisplaceOrigin())
287 bs = proj->fCenter[1];
289 float da = v2[1]*v2[1] + v1[1]*v1[1];
290 float db = 2 * v1[1] * (v0[1]-bs);
291 float dc = (v0[1]-bs)*(v0[1]-bs) - v2[1]*v2[1];
292 float disc = (
db*
db -4*
da*dc);
296 float cosS1 = ( -
db + disc)/(2 *
da);
297 float cosS2 = ( -
db - disc)/(2 *
da);
298 if (TMath::Abs(cosS1) < 1) {
302 double phi1 = acos(cosS1);
303 double phi2 = acos(cosS2);
304 TEveVector ps1 = v0 + v1*((float)
cos(phi1)) + v2*((
float)
sin(phi1));
305 TEveVector ps2 = v0 + v1*((
float)
cos(phi2)) + v2*((
float)
sin(phi2));
310 if (TMath::Abs(ps1[1] - bs) > 1
e-5)
311 phi1 = TMath::
TwoPi() -phi1;
313 if (TMath::Abs(ps2[1] - bs) > 1
e-5)
314 phi2 = TMath::
TwoPi() -phi2;
317 double phiStep = TMath::
TwoPi()/N;
318 double phiOffset = phiStep*0.1;
319 double phiMin = TMath::
Min(phi1, phi2);
320 double phiMax = TMath::
Max(phi1, phi2);
326 drawArch(phiMin + phiOffset, phiMax - phiOffset, phiStep, v0, v1, v2);
330 drawArch(phiMax + phiOffset, phiMax + TMath::
TwoPi() - (phiMax -phiMin) - phiOffset, phiStep, v0, v1, v2);
334 TGLUtil::LineWidth(
fE->fLineWidth);
335 TGLUtil::Color(
fE->fLineColor);
337 glBegin(GL_LINE_LOOP);
338 drawArch(phiMin + phiOffset, phiMax - phiOffset, phiStep, v0, v1, v2);
341 glBegin(GL_LINE_LOOP);
342 drawArch(phiMax + phiOffset, phiMax + TMath::
TwoPi() - (phiMax -phiMin) - phiOffset, phiStep, v0, v1, v2);
353 TGLUtil::LineWidth(
fE->fLineWidth);
354 TGLUtil::Color(
fE->fLineColor);
355 glBegin(GL_LINE_LOOP);
void drawArch(float pStart, float pEnd, float phiStep, TEveVector &v0, TEveVector &v1, TEveVector &v2) const
Sin< T >::type sin(const T &t)
void drawRhoZAxis(TEveVector &v, TEveVector &) const
Cos< T >::type cos(const T &t)
TEveEllipsoidProjected * fM