```// @(#)root/geom:\$Id\$
// Author: Mihaela Gheata   20/06/04

/*************************************************************************
*                                                                       *
* For the licensing terms see \$ROOTSYS/LICENSE.                         *
* For the list of contributors see \$ROOTSYS/README/CREDITS.             *
*************************************************************************/

//_____________________________________________________________________________
// TGeoParaboloid - Paraboloid  class. A paraboloid is the solid bounded by
//            the following surfaces:
//            - 2 planes parallel with XY cutting the Z axis at Z=-dz and Z=+dz
//            - the surface of revolution of a parabola described by:
//                 z = a*(x*x + y*y) + b
//       The parameters a and b are automatically computed from:
//            - rlo - the radius of the circle of intersection between the
//              parabolic surface and the plane z = -dz
//            - rhi - the radius of the circle of intersection between the
//              parabolic surface and the plane z = +dz
//         | -dz = a*rlo*rlo + b
//         |  dz = a*rhi*rhi + b      where: rlo != rhi, both >= 0
//_____________________________________________________________________________

#include "Riostream.h"
#include "TGeoManager.h"
#include "TGeoVolume.h"
#include "TVirtualGeoPainter.h"
#include "TGeoParaboloid.h"
#include "TBuffer3D.h"
#include "TBuffer3DTypes.h"
#include "TMath.h"

ClassImp(TGeoParaboloid)

//_____________________________________________________________________________
TGeoParaboloid::TGeoParaboloid()
{
// Dummy constructor
fRlo = 0;
fRhi = 0;
fDz  = 0;
fA   = 0;
fB   = 0;
SetShapeBit(TGeoShape::kGeoParaboloid);
}

//_____________________________________________________________________________
TGeoParaboloid::TGeoParaboloid(Double_t rlo, Double_t rhi, Double_t dz)
:TGeoBBox(0,0,0)
{
// Default constructor specifying X and Y semiaxis length
fRlo = 0;
fRhi = 0;
fDz  = 0;
fA   = 0;
fB   = 0;
SetShapeBit(TGeoShape::kGeoParaboloid);
SetParaboloidDimensions(rlo, rhi, dz);
ComputeBBox();
}

//_____________________________________________________________________________
TGeoParaboloid::TGeoParaboloid(const char *name, Double_t rlo, Double_t rhi, Double_t dz)
:TGeoBBox(name, 0, 0, 0)
{
// Default constructor specifying X and Y semiaxis length
fRlo = 0;
fRhi = 0;
fDz  = 0;
fA   = 0;
fB   = 0;
SetShapeBit(TGeoShape::kGeoParaboloid);
SetParaboloidDimensions(rlo, rhi, dz);
ComputeBBox();
}

//_____________________________________________________________________________
TGeoParaboloid::TGeoParaboloid(Double_t *param)
{
// Default constructor specifying minimum and maximum radius
// param[0] =  rlo
// param[1] =  rhi
// param[2] = dz
SetShapeBit(TGeoShape::kGeoParaboloid);
SetDimensions(param);
ComputeBBox();
}

//_____________________________________________________________________________
TGeoParaboloid::~TGeoParaboloid()
{
// destructor
}

//_____________________________________________________________________________
Double_t TGeoParaboloid::Capacity() const
{
// Computes capacity of the shape in [length^3]
Double_t capacity = TMath::Pi()*fDz*(fRlo*fRlo+fRhi*fRhi);
return capacity;
}

//_____________________________________________________________________________
void TGeoParaboloid::ComputeBBox()
{
// compute bounding box of the tube
fDX = TMath::Max(fRlo, fRhi);
fDY = fDX;
fDZ = fDz;
}

//_____________________________________________________________________________
void TGeoParaboloid::ComputeNormal(const Double_t *point, const Double_t *dir, Double_t *norm)
{
// Compute normal to closest surface from POINT.
norm[0] = norm[1] = 0.0;
if (TMath::Abs(point[2]) > fDz) {
norm[2] = TMath::Sign(1., dir[2]);
return;
}
Double_t safz = fDz-TMath::Abs(point[2]);
Double_t r = TMath::Sqrt(point[0]*point[0]+point[1]*point[1]);
Double_t safr = TMath::Abs(r-TMath::Sqrt((point[2]-fB)/fA));
if (safz<safr) {
norm[2] = TMath::Sign(1., dir[2]);
return;
}
Double_t talf = -2.*fA*r;
Double_t calf = 1./TMath::Sqrt(1.+talf*talf);
Double_t salf = talf * calf;
Double_t phi = TMath::ATan2(point[1], point[0]);

norm[0] = salf*TMath::Cos(phi);
norm[1] = salf*TMath::Sin(phi);
norm[2] = calf;
Double_t ndotd = norm[0]*dir[0]+norm[1]*dir[1]+norm[2]*dir[2];
if (ndotd < 0) {
norm[0] = -norm[0];
norm[1] = -norm[1];
norm[2] = -norm[2];
}
}

//_____________________________________________________________________________
Bool_t TGeoParaboloid::Contains(const Double_t *point) const
{
// test if point is inside the elliptical tube
if (TMath::Abs(point[2])>fDz) return kFALSE;
Double_t aa = fA*(point[2]-fB);
if (aa < 0) return kFALSE;
Double_t rsq = point[0]*point[0]+point[1]*point[1];
if (aa < fA*fA*rsq) return kFALSE;
return kTRUE;
}

//_____________________________________________________________________________
Int_t TGeoParaboloid::DistancetoPrimitive(Int_t px, Int_t py)
{
// compute closest distance from point px,py to each vertex
Int_t n = gGeoManager->GetNsegments();
const Int_t numPoints=n*(n+1)+2;
return ShapeDistancetoPrimitive(numPoints, px, py);
}

//_____________________________________________________________________________
Double_t TGeoParaboloid::DistToParaboloid(const Double_t *point, const Double_t *dir, Bool_t in) const
{
// Compute distance from a point to the parabola given by:
//  z = a*rsq + b;   rsq = x*x+y*y
Double_t rsq = point[0]*point[0]+point[1]*point[1];
Double_t a = fA * (dir[0]*dir[0] + dir[1]*dir[1]);
Double_t b = 2.*fA*(point[0]*dir[0]+point[1]*dir[1])-dir[2];
Double_t c = fA*rsq + fB - point[2];
Double_t dist = TGeoShape::Big();
if (TMath::Abs(a)<TGeoShape::Tolerance()) {
if (TMath::Abs(b)<TGeoShape::Tolerance()) return dist; // big
dist = -c/b;
if (dist < 0) return TGeoShape::Big();
return dist; // OK
}
Double_t ainv = 1./a;
Double_t sum = - b*ainv;
Double_t prod = c*ainv;
Double_t delta = sum*sum - 4.*prod;
if (delta<0) return dist; // big
delta = TMath::Sqrt(delta);
Double_t sone = TMath::Sign(1.,ainv);
Int_t i = -1;
while (i<2) {
dist = 0.5*(sum+i*sone*delta);
i += 2;
if (dist<0) continue;
if (dist<1.E-8) {
Double_t talf = -2.*fA*TMath::Sqrt(rsq);
Double_t phi = TMath::ATan2(point[1], point[0]);
Double_t ndotd = talf*(TMath::Cos(phi)*dir[0]+TMath::Sin(phi)*dir[1])+dir[2];
if (!in) ndotd *= -1;
if (ndotd<0) return dist;
} else return dist;
}
return TGeoShape::Big();
}

//_____________________________________________________________________________
Double_t TGeoParaboloid::DistFromInside(const Double_t *point, const Double_t *dir, Int_t iact, Double_t step, Double_t *safe) const
{
// compute distance from inside point to surface of the paraboloid
if (iact<3 && safe) {
// compute safe distance
*safe = Safety(point, kTRUE);
if (iact==0) return TGeoShape::Big();
if (iact==1 && step<*safe) return TGeoShape::Big();
}

Double_t dz = TGeoShape::Big();
if (dir[2]<0) {
dz = -(point[2]+fDz)/dir[2];
} else if (dir[2]>0) {
dz = (fDz-point[2])/dir[2];
}
Double_t dpara = DistToParaboloid(point, dir, kTRUE);
return TMath::Min(dz, dpara);
}

//_____________________________________________________________________________
Double_t TGeoParaboloid::DistFromOutside(const Double_t *point, const Double_t *dir, Int_t iact, Double_t step, Double_t *safe) const
{
// compute distance from outside point to surface of the paraboloid and safe distance
Double_t snxt = TGeoShape::Big();
if (iact<3 && safe) {
// compute safe distance
*safe = Safety(point, kFALSE);
if (iact==0) return TGeoShape::Big();
if (iact==1 && step<*safe) return TGeoShape::Big();
}
Double_t xnew, ynew, znew;
if (point[2]<=-fDz) {
if (dir[2]<=0) return TGeoShape::Big();
snxt = -(fDz+point[2])/dir[2];
// find extrapolated X and Y
xnew = point[0]+snxt*dir[0];
ynew = point[1]+snxt*dir[1];
if ((xnew*xnew+ynew*ynew) <= fRlo*fRlo) return snxt;
} else if (point[2]>=fDz) {
if (dir[2]>=0) return TGeoShape::Big();
snxt = (fDz-point[2])/dir[2];
// find extrapolated X and Y
xnew = point[0]+snxt*dir[0];
ynew = point[1]+snxt*dir[1];
if ((xnew*xnew+ynew*ynew) <= fRhi*fRhi) return snxt;
}
snxt = DistToParaboloid(point, dir, kFALSE);
if (snxt > 1E20) return snxt;
znew = point[2]+snxt*dir[2];
if (TMath::Abs(znew) <= fDz) return snxt;
return TGeoShape::Big();
}

//_____________________________________________________________________________
TGeoVolume *TGeoParaboloid::Divide(TGeoVolume * /*voldiv*/, const char * /*divname*/, Int_t /*iaxis*/, Int_t /*ndiv*/,
Double_t /*start*/, Double_t /*step*/)
{
// Divide the paraboloid along one axis.
Error("Divide", "Paraboloid divisions not implemented");
return 0;
}

//_____________________________________________________________________________
void TGeoParaboloid::GetBoundingCylinder(Double_t *param) const
{
//--- Fill vector param[4] with the bounding cylinder parameters. The order
// is the following : Rmin, Rmax, Phi1, Phi2
param[0] = 0.;                  // Rmin
param[1] = fDX;                 // Rmax
param[1] *= param[1];
param[2] = 0.;                  // Phi1
param[3] = 360.;                // Phi2
}

//_____________________________________________________________________________
TGeoShape *TGeoParaboloid::GetMakeRuntimeShape(TGeoShape *, TGeoMatrix *) const
{
// in case shape has some negative parameters, these has to be computed
// in order to fit the mother
return 0;
}

//_____________________________________________________________________________
void TGeoParaboloid::InspectShape() const
{
// print shape parameters
printf("*** Shape %s: TGeoParaboloid ***\n", GetName());
printf("    rlo    = %11.5f\n", fRlo);
printf("    rhi    = %11.5f\n", fRhi);
printf("    dz     = %11.5f\n", fDz);
printf(" Bounding box:\n");
TGeoBBox::InspectShape();
}

//_____________________________________________________________________________
TBuffer3D *TGeoParaboloid::MakeBuffer3D() const
{
// Creates a TBuffer3D describing *this* shape.
// Coordinates are in local reference frame.

Int_t n = gGeoManager->GetNsegments();
Int_t nbPnts = n*(n+1)+2;
Int_t nbSegs = n*(2*n+3);
Int_t nbPols = n*(n+2);

TBuffer3D* buff = new TBuffer3D(TBuffer3DTypes::kGeneric,
nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, nbPols, 2*n*5 + n*n*6);

if (buff)
{
SetPoints(buff->fPnts);
SetSegsAndPols(*buff);
}

return buff;
}

//_____________________________________________________________________________
void TGeoParaboloid::SetSegsAndPols(TBuffer3D &buff) const
{
// Fill TBuffer3D structure for segments and polygons.
Int_t indx, i, j;
Int_t n = gGeoManager->GetNsegments();

Int_t c = GetBasicColor();

Int_t nn1 = (n+1)*n+1;
indx = 0;
// Lower end-cap (n radial segments)
for (j=0; j<n; j++) {
buff.fSegs[indx++] = c+2;
buff.fSegs[indx++] = 0;
buff.fSegs[indx++] = j+1;
}
// Sectors (n)
for (i=0; i<n+1; i++) {
// lateral (circles) segments (n)
for (j=0; j<n; j++) {
buff.fSegs[indx++] = c;
buff.fSegs[indx++] = n*i+1+j;
buff.fSegs[indx++] = n*i+1+((j+1)%n);
}
if (i==n) break;  // skip i=n for generators
// generator segments (n)
for (j=0; j<n; j++) {
buff.fSegs[indx++] = c;
buff.fSegs[indx++] = n*i+1+j;
buff.fSegs[indx++] = n*(i+1)+1+j;
}
}
// Upper end-cap
for (j=0; j<n; j++) {
buff.fSegs[indx++] = c+1;
buff.fSegs[indx++] = n*n+1+j;
buff.fSegs[indx++] = nn1;
}

indx = 0;

// lower end-cap (n polygons)
for (j=0; j<n; j++) {
buff.fPols[indx++] = c+2;
buff.fPols[indx++] = 3;
buff.fPols[indx++] = n+j;
buff.fPols[indx++] = (j+1)%n;
buff.fPols[indx++] = j;
}
// Sectors (n)
for (i=0; i<n; i++) {
// lateral faces (n)
for (j=0; j<n; j++) {
buff.fPols[indx++] = c;
buff.fPols[indx++] = 4;
buff.fPols[indx++] = (2*i+1)*n+j;
buff.fPols[indx++] = 2*(i+1)*n+j;
buff.fPols[indx++] = (2*i+3)*n+j;
buff.fPols[indx++] = 2*(i+1)*n+((j+1)%n);
}
}
// upper end-cap (n polygons)
for (j=0; j<n; j++) {
buff.fPols[indx++] = c+1;
buff.fPols[indx++] = 3;
buff.fPols[indx++] = 2*n*(n+1)+j;
buff.fPols[indx++] = 2*n*(n+1)+((j+1)%n);
buff.fPols[indx++] = (2*n+1)*n+j;
}
}

//_____________________________________________________________________________
Double_t TGeoParaboloid::Safety(const Double_t *point, Bool_t in) const
{
// Computes the closest distance from given point to this shape.
Double_t safz = fDz-TMath::Abs(point[2]);
if (!in) safz = -safz;
Double_t safr = TGeoShape::Big();
Double_t rsq = point[0]*point[0]+point[1]*point[1];
Double_t z0 = fA*rsq+fB;
Double_t r0sq = (point[2]-fB)/fA;
if (r0sq<0) {
if (in) return 0.;
return safz;
}
Double_t dr = TMath::Sqrt(rsq)-TMath::Sqrt(r0sq);
if (in) {
if (dr>-1.E-8) return 0.;
Double_t dz = TMath::Abs(point[2]-z0);
safr = -dr*dz/TMath::Sqrt(dr*dr+dz*dz);
} else {
if (dr<1.E-8) return safz;
Double_t talf = -2.*fA*TMath::Sqrt(r0sq);
Double_t salf = talf/TMath::Sqrt(1.+talf*talf);
safr = TMath::Abs(dr*salf);
}
if (in) return TMath::Min(safr,safz);
return TMath::Max(safr,safz);
}

//_____________________________________________________________________________
void TGeoParaboloid::SetParaboloidDimensions(Double_t rlo, Double_t rhi, Double_t dz)
{
// Set paraboloid dimensions.
if ((rlo<0) || (rlo<0) || (dz<=0) || TMath::Abs(rlo-rhi)<TGeoShape::Tolerance()) {
SetShapeBit(kGeoRunTimeShape);
Error("SetParaboloidDimensions", "Dimensions of %s invalid: check (rlo>=0) (rhi>=0) (rlo!=rhi) dz>0",GetName());
return;
}
fRlo = rlo;
fRhi = rhi;
fDz  = dz;
Double_t dd = 1./(fRhi*fRhi - fRlo*fRlo);
fA = 2.*fDz*dd;
fB = - fDz * (fRlo*fRlo + fRhi*fRhi)*dd;
}

//_____________________________________________________________________________
void TGeoParaboloid::SetDimensions(Double_t *param)
{
// Set paraboloid dimensions starting from an array.
Double_t rlo    = param[0];
Double_t rhi    = param[1];
Double_t dz     = param[2];
SetParaboloidDimensions(rlo, rhi, dz);
}

//_____________________________________________________________________________
void TGeoParaboloid::SetPoints(Double_t *points) const
{
// Create paraboloid mesh points.
// Npoints = n*(n+1) + 2
//   ifirst = 0
//   ipoint(i,j) = 1+i*n+j;                              i=[0,n]  j=[0,n-1]
//   ilast = 1+n*(n+1)
// Nsegments = n*(2*n+3)
//   lower: (0, j+1);                                    j=[0,n-1]
//   circle(i): (n*i+1+j, n*i+1+(j+1)%n);                i=[0,n]  j=[0,n-1]
//   generator(i): (n*i+1+j, n*(i+1)+1+j);               i,j=[0,n-1]
//   upper: (n*n+1+j, (n+1)*n+1)                           j=[0,n-1]
// Npolygons = n*(n+2)
//   lower: (n+j, (j+1)%n, j)                              j=[0,n-1]
//   lateral(i): ((2*i+1)*n+j, 2*(i+1)*n+j, (2*i+3)*n+j, 2*(i+1)*n+(j+1)%n)
//                                                      i,j = [0,n-1]
//   upper: ((2n+1)*n+j, 2*n*(n+1)+(j+1)%n, 2*n*(n+1)+j)   j=[0,n-1]
if (!points) return;
Double_t ttmin, ttmax;
ttmin = TMath::ATan2(-fDz, fRlo);
ttmax = TMath::ATan2(fDz, fRhi);
Int_t n = gGeoManager->GetNsegments();
Double_t dtt = (ttmax-ttmin)/n;
Double_t dphi = 360./n;
Double_t tt;
Double_t r, z, delta;
Double_t phi, sph, cph;
Int_t indx = 0;
// center of the lower endcap:
points[indx++] = 0; // x
points[indx++] = 0; // y
points[indx++] = -fDz;
for (Int_t i=0; i<n+1; i++) {  // nz planes = n+1
if (i==0) {
r = fRlo;
z = -fDz;
} else if (i==n) {
r = fRhi;
z = fDz;
} else {
tt = TMath::Tan(ttmin + i*dtt);
delta = tt*tt - 4*fA*fB; // should be always positive (a*b<0)
r = 0.5*(tt+TMath::Sqrt(delta))/fA;
z = r*tt;
}
for (Int_t j=0; j<n; j++) {
sph=TMath::Sin(phi);
cph=TMath::Cos(phi);
points[indx++] = r*cph;
points[indx++] = r*sph;
points[indx++] = z;
}
}
// center of the upper endcap
points[indx++] = 0; // x
points[indx++] = 0; // y
points[indx++] = fDz;
}

//_____________________________________________________________________________
void TGeoParaboloid::GetMeshNumbers(Int_t &nvert, Int_t &nsegs, Int_t &npols) const
{
// Returns numbers of vertices, segments and polygons composing the shape mesh.
Int_t n = gGeoManager->GetNsegments();
nvert = n*(n+1)+2;
nsegs = n*(2*n+3);
npols = n*(n+2);
}

//_____________________________________________________________________________
Int_t TGeoParaboloid::GetNmeshVertices() const
{
// Returns number of vertices on the paraboloid mesh.
Int_t n = gGeoManager->GetNsegments();
return (n*(n+1)+2);
}

//_____________________________________________________________________________
void TGeoParaboloid::SavePrimitive(std::ostream &out, Option_t * /*option*/ /*= ""*/)
{
// Save a primitive as a C++ statement(s) on output stream "out".
if (TObject::TestBit(kGeoSavePrimitive)) return;
out << "   // Shape: " << GetName() << " type: " << ClassName() << std::endl;
out << "   rlo = " << fRlo << ";" << std::endl;
out << "   rhi = " << fRhi << ";" << std::endl;
out << "   dz  = " << fDZ << ";" << std::endl;
out << "   TGeoShape *" << GetPointerName() << " = new TGeoParaboloid(\"" << GetName() << "\", rlo,rhi,dz);" << std::endl;
TObject::SetBit(TGeoShape::kGeoSavePrimitive);
}

//_____________________________________________________________________________
void TGeoParaboloid::SetPoints(Float_t *points) const
{
// Create paraboloid mesh points.
if (!points) return;
Double_t ttmin, ttmax;
ttmin = TMath::ATan2(-fDz, fRlo);
ttmax = TMath::ATan2(fDz, fRhi);
Int_t n = gGeoManager->GetNsegments();
Double_t dtt = (ttmax-ttmin)/n;
Double_t dphi = 360./n;
Double_t tt;
Double_t r, z, delta;
Double_t phi, sph, cph;
Int_t indx = 0;
// center of the lower endcap:
points[indx++] = 0; // x
points[indx++] = 0; // y
points[indx++] = -fDz;
for (Int_t i=0; i<n+1; i++) {  // nz planes = n+1
if (i==0) {
r = fRlo;
z = -fDz;
} else if (i==n) {
r = fRhi;
z = fDz;
} else {
tt = TMath::Tan(ttmin + i*dtt);
delta = tt*tt - 4*fA*fB; // should be always positive (a*b<0)
r = 0.5*(tt+TMath::Sqrt(delta))/fA;
z = r*tt;
}
for (Int_t j=0; j<n; j++) {
sph=TMath::Sin(phi);
cph=TMath::Cos(phi);
points[indx++] = r*cph;
points[indx++] = r*sph;
points[indx++] = z;
}
}
// center of the upper endcap
points[indx++] = 0; // x
points[indx++] = 0; // y
points[indx++] = fDz;
}

//_____________________________________________________________________________
void TGeoParaboloid::Sizeof3D() const
{
///   Int_t n = gGeoManager->GetNsegments();
///   TVirtualGeoPainter *painter = gGeoManager->GetGeomPainter();
///   if (painter) painter->AddSize3D(n*(n+1)+2, n*(2*n+3), n*(n+2));
}

//_____________________________________________________________________________
const TBuffer3D & TGeoParaboloid::GetBuffer3D(Int_t reqSections, Bool_t localFrame) const
{
// Fills a static 3D buffer and returns a reference.
static TBuffer3D buffer(TBuffer3DTypes::kGeneric);
TGeoBBox::FillBuffer3D(buffer, reqSections, localFrame);

if (reqSections & TBuffer3D::kRawSizes) {
Int_t n = gGeoManager->GetNsegments();
Int_t nbPnts = n*(n+1)+2;
Int_t nbSegs = n*(2*n+3);
Int_t nbPols = n*(n+2);
if (buffer.SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, nbPols, 2*n*5 + n*n*6)) {
buffer.SetSectionsValid(TBuffer3D::kRawSizes);
}
}
if ((reqSections & TBuffer3D::kRaw) && buffer.SectionsValid(TBuffer3D::kRawSizes)) {
SetPoints(buffer.fPnts);
if (!buffer.fLocalFrame) {
TransformPoints(buffer.fPnts, buffer.NbPnts());
}
SetSegsAndPols(buffer);
buffer.SetSectionsValid(TBuffer3D::kRaw);
}

return buffer;
}

//_____________________________________________________________________________
void TGeoParaboloid::Contains_v(const Double_t *points, Bool_t *inside, Int_t vecsize) const
{
// Check the inside status for each of the points in the array.
// Input: Array of point coordinates + vector size
// Output: Array of Booleans for the inside of each point
for (Int_t i=0; i<vecsize; i++) inside[i] = Contains(&points[3*i]);
}

//_____________________________________________________________________________
void TGeoParaboloid::ComputeNormal_v(const Double_t *points, const Double_t *dirs, Double_t *norms, Int_t vecsize)
{
// Compute the normal for an array o points so that norm.dot.dir is positive
// Input: Arrays of point coordinates and directions + vector size
// Output: Array of normal directions
for (Int_t i=0; i<vecsize; i++) ComputeNormal(&points[3*i], &dirs[3*i], &norms[3*i]);
}

//_____________________________________________________________________________
void TGeoParaboloid::DistFromInside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t* step) const
{
// Compute distance from array of input points having directions specisied by dirs. Store output in dists
for (Int_t i=0; i<vecsize; i++) dists[i] = DistFromInside(&points[3*i], &dirs[3*i], 3, step[i]);
}

//_____________________________________________________________________________
void TGeoParaboloid::DistFromOutside_v(const Double_t *points, const Double_t *dirs, Double_t *dists, Int_t vecsize, Double_t* step) const
{
// Compute distance from array of input points having directions specisied by dirs. Store output in dists
for (Int_t i=0; i<vecsize; i++) dists[i] = DistFromOutside(&points[3*i], &dirs[3*i], 3, step[i]);
}

//_____________________________________________________________________________
void TGeoParaboloid::Safety_v(const Double_t *points, const Bool_t *inside, Double_t *safe, Int_t vecsize) const
{
// Compute safe distance from each of the points in the input array.
// Input: Array of point coordinates, array of statuses for these points, size of the arrays
// Output: Safety values
for (Int_t i=0; i<vecsize; i++) safe[i] = Safety(&points[3*i], inside[i]);
}
```
TGeoParaboloid.cxx:1
TGeoParaboloid.cxx:2
TGeoParaboloid.cxx:3
TGeoParaboloid.cxx:4
TGeoParaboloid.cxx:5
TGeoParaboloid.cxx:6
TGeoParaboloid.cxx:7
TGeoParaboloid.cxx:8
TGeoParaboloid.cxx:9
TGeoParaboloid.cxx:10
TGeoParaboloid.cxx:11
TGeoParaboloid.cxx:12
TGeoParaboloid.cxx:13
TGeoParaboloid.cxx:14
TGeoParaboloid.cxx:15
TGeoParaboloid.cxx:16
TGeoParaboloid.cxx:17
TGeoParaboloid.cxx:18
TGeoParaboloid.cxx:19
TGeoParaboloid.cxx:20
TGeoParaboloid.cxx:21
TGeoParaboloid.cxx:22
TGeoParaboloid.cxx:23
TGeoParaboloid.cxx:24
TGeoParaboloid.cxx:25
TGeoParaboloid.cxx:26
TGeoParaboloid.cxx:27
TGeoParaboloid.cxx:28
TGeoParaboloid.cxx:29
TGeoParaboloid.cxx:30
TGeoParaboloid.cxx:31
TGeoParaboloid.cxx:32
TGeoParaboloid.cxx:33
TGeoParaboloid.cxx:34
TGeoParaboloid.cxx:35
TGeoParaboloid.cxx:36
TGeoParaboloid.cxx:37
TGeoParaboloid.cxx:38
TGeoParaboloid.cxx:39
TGeoParaboloid.cxx:40
TGeoParaboloid.cxx:41
TGeoParaboloid.cxx:42
TGeoParaboloid.cxx:43
TGeoParaboloid.cxx:44
TGeoParaboloid.cxx:45
TGeoParaboloid.cxx:46
TGeoParaboloid.cxx:47
TGeoParaboloid.cxx:48
TGeoParaboloid.cxx:49
TGeoParaboloid.cxx:50
TGeoParaboloid.cxx:51
TGeoParaboloid.cxx:52
TGeoParaboloid.cxx:53
TGeoParaboloid.cxx:54
TGeoParaboloid.cxx:55
TGeoParaboloid.cxx:56
TGeoParaboloid.cxx:57
TGeoParaboloid.cxx:58
TGeoParaboloid.cxx:59
TGeoParaboloid.cxx:60
TGeoParaboloid.cxx:61
TGeoParaboloid.cxx:62
TGeoParaboloid.cxx:63
TGeoParaboloid.cxx:64
TGeoParaboloid.cxx:65
TGeoParaboloid.cxx:66
TGeoParaboloid.cxx:67
TGeoParaboloid.cxx:68
TGeoParaboloid.cxx:69
TGeoParaboloid.cxx:70
TGeoParaboloid.cxx:71
TGeoParaboloid.cxx:72
TGeoParaboloid.cxx:73
TGeoParaboloid.cxx:74
TGeoParaboloid.cxx:75
TGeoParaboloid.cxx:76
TGeoParaboloid.cxx:77
TGeoParaboloid.cxx:78
TGeoParaboloid.cxx:79
TGeoParaboloid.cxx:80
TGeoParaboloid.cxx:81
TGeoParaboloid.cxx:82
TGeoParaboloid.cxx:83
TGeoParaboloid.cxx:84
TGeoParaboloid.cxx:85
TGeoParaboloid.cxx:86
TGeoParaboloid.cxx:87
TGeoParaboloid.cxx:88
TGeoParaboloid.cxx:89
TGeoParaboloid.cxx:90
TGeoParaboloid.cxx:91
TGeoParaboloid.cxx:92
TGeoParaboloid.cxx:93
TGeoParaboloid.cxx:94
TGeoParaboloid.cxx:95
TGeoParaboloid.cxx:96
TGeoParaboloid.cxx:97
TGeoParaboloid.cxx:98
TGeoParaboloid.cxx:99
TGeoParaboloid.cxx:100
TGeoParaboloid.cxx:101
TGeoParaboloid.cxx:102
TGeoParaboloid.cxx:103
TGeoParaboloid.cxx:104
TGeoParaboloid.cxx:105
TGeoParaboloid.cxx:106
TGeoParaboloid.cxx:107
TGeoParaboloid.cxx:108
TGeoParaboloid.cxx:109
TGeoParaboloid.cxx:110
TGeoParaboloid.cxx:111
TGeoParaboloid.cxx:112
TGeoParaboloid.cxx:113
TGeoParaboloid.cxx:114
TGeoParaboloid.cxx:115
TGeoParaboloid.cxx:116
TGeoParaboloid.cxx:117
TGeoParaboloid.cxx:118
TGeoParaboloid.cxx:119
TGeoParaboloid.cxx:120
TGeoParaboloid.cxx:121
TGeoParaboloid.cxx:122
TGeoParaboloid.cxx:123
TGeoParaboloid.cxx:124
TGeoParaboloid.cxx:125
TGeoParaboloid.cxx:126
TGeoParaboloid.cxx:127
TGeoParaboloid.cxx:128
TGeoParaboloid.cxx:129
TGeoParaboloid.cxx:130
TGeoParaboloid.cxx:131
TGeoParaboloid.cxx:132
TGeoParaboloid.cxx:133
TGeoParaboloid.cxx:134
TGeoParaboloid.cxx:135
TGeoParaboloid.cxx:136
TGeoParaboloid.cxx:137
TGeoParaboloid.cxx:138
TGeoParaboloid.cxx:139
TGeoParaboloid.cxx:140
TGeoParaboloid.cxx:141
TGeoParaboloid.cxx:142
TGeoParaboloid.cxx:143
TGeoParaboloid.cxx:144
TGeoParaboloid.cxx:145
TGeoParaboloid.cxx:146
TGeoParaboloid.cxx:147
TGeoParaboloid.cxx:148
TGeoParaboloid.cxx:149
TGeoParaboloid.cxx:150
TGeoParaboloid.cxx:151
TGeoParaboloid.cxx:152
TGeoParaboloid.cxx:153
TGeoParaboloid.cxx:154
TGeoParaboloid.cxx:155
TGeoParaboloid.cxx:156
TGeoParaboloid.cxx:157
TGeoParaboloid.cxx:158
TGeoParaboloid.cxx:159
TGeoParaboloid.cxx:160
TGeoParaboloid.cxx:161
TGeoParaboloid.cxx:162
TGeoParaboloid.cxx:163
TGeoParaboloid.cxx:164
TGeoParaboloid.cxx:165
TGeoParaboloid.cxx:166
TGeoParaboloid.cxx:167
TGeoParaboloid.cxx:168
TGeoParaboloid.cxx:169
TGeoParaboloid.cxx:170
TGeoParaboloid.cxx:171
TGeoParaboloid.cxx:172
TGeoParaboloid.cxx:173
TGeoParaboloid.cxx:174
TGeoParaboloid.cxx:175
TGeoParaboloid.cxx:176
TGeoParaboloid.cxx:177
TGeoParaboloid.cxx:178
TGeoParaboloid.cxx:179
TGeoParaboloid.cxx:180
TGeoParaboloid.cxx:181
TGeoParaboloid.cxx:182
TGeoParaboloid.cxx:183
TGeoParaboloid.cxx:184
TGeoParaboloid.cxx:185
TGeoParaboloid.cxx:186
TGeoParaboloid.cxx:187
TGeoParaboloid.cxx:188
TGeoParaboloid.cxx:189
TGeoParaboloid.cxx:190
TGeoParaboloid.cxx:191
TGeoParaboloid.cxx:192
TGeoParaboloid.cxx:193
TGeoParaboloid.cxx:194
TGeoParaboloid.cxx:195
TGeoParaboloid.cxx:196
TGeoParaboloid.cxx:197
TGeoParaboloid.cxx:198
TGeoParaboloid.cxx:199
TGeoParaboloid.cxx:200
TGeoParaboloid.cxx:201
TGeoParaboloid.cxx:202
TGeoParaboloid.cxx:203
TGeoParaboloid.cxx:204
TGeoParaboloid.cxx:205
TGeoParaboloid.cxx:206
TGeoParaboloid.cxx:207
TGeoParaboloid.cxx:208
TGeoParaboloid.cxx:209
TGeoParaboloid.cxx:210
TGeoParaboloid.cxx:211
TGeoParaboloid.cxx:212
TGeoParaboloid.cxx:213
TGeoParaboloid.cxx:214
TGeoParaboloid.cxx:215
TGeoParaboloid.cxx:216
TGeoParaboloid.cxx:217
TGeoParaboloid.cxx:218
TGeoParaboloid.cxx:219
TGeoParaboloid.cxx:220
TGeoParaboloid.cxx:221
TGeoParaboloid.cxx:222
TGeoParaboloid.cxx:223
TGeoParaboloid.cxx:224
TGeoParaboloid.cxx:225
TGeoParaboloid.cxx:226
TGeoParaboloid.cxx:227
TGeoParaboloid.cxx:228
TGeoParaboloid.cxx:229
TGeoParaboloid.cxx:230
TGeoParaboloid.cxx:231
TGeoParaboloid.cxx:232
TGeoParaboloid.cxx:233
TGeoParaboloid.cxx:234
TGeoParaboloid.cxx:235
TGeoParaboloid.cxx:236
TGeoParaboloid.cxx:237
TGeoParaboloid.cxx:238
TGeoParaboloid.cxx:239
TGeoParaboloid.cxx:240
TGeoParaboloid.cxx:241
TGeoParaboloid.cxx:242
TGeoParaboloid.cxx:243
TGeoParaboloid.cxx:244
TGeoParaboloid.cxx:245
TGeoParaboloid.cxx:246
TGeoParaboloid.cxx:247
TGeoParaboloid.cxx:248
TGeoParaboloid.cxx:249
TGeoParaboloid.cxx:250
TGeoParaboloid.cxx:251
TGeoParaboloid.cxx:252
TGeoParaboloid.cxx:253
TGeoParaboloid.cxx:254
TGeoParaboloid.cxx:255
TGeoParaboloid.cxx:256
TGeoParaboloid.cxx:257
TGeoParaboloid.cxx:258
TGeoParaboloid.cxx:259
TGeoParaboloid.cxx:260
TGeoParaboloid.cxx:261
TGeoParaboloid.cxx:262
TGeoParaboloid.cxx:263
TGeoParaboloid.cxx:264
TGeoParaboloid.cxx:265
TGeoParaboloid.cxx:266
TGeoParaboloid.cxx:267
TGeoParaboloid.cxx:268
TGeoParaboloid.cxx:269
TGeoParaboloid.cxx:270
TGeoParaboloid.cxx:271
TGeoParaboloid.cxx:272
TGeoParaboloid.cxx:273
TGeoParaboloid.cxx:274
TGeoParaboloid.cxx:275
TGeoParaboloid.cxx:276
TGeoParaboloid.cxx:277
TGeoParaboloid.cxx:278
TGeoParaboloid.cxx:279
TGeoParaboloid.cxx:280
TGeoParaboloid.cxx:281
TGeoParaboloid.cxx:282
TGeoParaboloid.cxx:283
TGeoParaboloid.cxx:284
TGeoParaboloid.cxx:285
TGeoParaboloid.cxx:286
TGeoParaboloid.cxx:287
TGeoParaboloid.cxx:288
TGeoParaboloid.cxx:289
TGeoParaboloid.cxx:290
TGeoParaboloid.cxx:291
TGeoParaboloid.cxx:292
TGeoParaboloid.cxx:293
TGeoParaboloid.cxx:294
TGeoParaboloid.cxx:295
TGeoParaboloid.cxx:296
TGeoParaboloid.cxx:297
TGeoParaboloid.cxx:298
TGeoParaboloid.cxx:299
TGeoParaboloid.cxx:300
TGeoParaboloid.cxx:301
TGeoParaboloid.cxx:302
TGeoParaboloid.cxx:303
TGeoParaboloid.cxx:304
TGeoParaboloid.cxx:305
TGeoParaboloid.cxx:306
TGeoParaboloid.cxx:307
TGeoParaboloid.cxx:308
TGeoParaboloid.cxx:309
TGeoParaboloid.cxx:310
TGeoParaboloid.cxx:311
TGeoParaboloid.cxx:312
TGeoParaboloid.cxx:313
TGeoParaboloid.cxx:314
TGeoParaboloid.cxx:315
TGeoParaboloid.cxx:316
TGeoParaboloid.cxx:317
TGeoParaboloid.cxx:318
TGeoParaboloid.cxx:319
TGeoParaboloid.cxx:320
TGeoParaboloid.cxx:321
TGeoParaboloid.cxx:322
TGeoParaboloid.cxx:323
TGeoParaboloid.cxx:324
TGeoParaboloid.cxx:325
TGeoParaboloid.cxx:326
TGeoParaboloid.cxx:327
TGeoParaboloid.cxx:328
TGeoParaboloid.cxx:329
TGeoParaboloid.cxx:330
TGeoParaboloid.cxx:331
TGeoParaboloid.cxx:332
TGeoParaboloid.cxx:333
TGeoParaboloid.cxx:334
TGeoParaboloid.cxx:335
TGeoParaboloid.cxx:336
TGeoParaboloid.cxx:337
TGeoParaboloid.cxx:338
TGeoParaboloid.cxx:339
TGeoParaboloid.cxx:340
TGeoParaboloid.cxx:341
TGeoParaboloid.cxx:342
TGeoParaboloid.cxx:343
TGeoParaboloid.cxx:344
TGeoParaboloid.cxx:345
TGeoParaboloid.cxx:346
TGeoParaboloid.cxx:347
TGeoParaboloid.cxx:348
TGeoParaboloid.cxx:349
TGeoParaboloid.cxx:350
TGeoParaboloid.cxx:351
TGeoParaboloid.cxx:352
TGeoParaboloid.cxx:353
TGeoParaboloid.cxx:354
TGeoParaboloid.cxx:355
TGeoParaboloid.cxx:356
TGeoParaboloid.cxx:357
TGeoParaboloid.cxx:358
TGeoParaboloid.cxx:359
TGeoParaboloid.cxx:360
TGeoParaboloid.cxx:361
TGeoParaboloid.cxx:362
TGeoParaboloid.cxx:363
TGeoParaboloid.cxx:364
TGeoParaboloid.cxx:365
TGeoParaboloid.cxx:366
TGeoParaboloid.cxx:367
TGeoParaboloid.cxx:368
TGeoParaboloid.cxx:369
TGeoParaboloid.cxx:370
TGeoParaboloid.cxx:371
TGeoParaboloid.cxx:372
TGeoParaboloid.cxx:373
TGeoParaboloid.cxx:374
TGeoParaboloid.cxx:375
TGeoParaboloid.cxx:376
TGeoParaboloid.cxx:377
TGeoParaboloid.cxx:378
TGeoParaboloid.cxx:379
TGeoParaboloid.cxx:380
TGeoParaboloid.cxx:381
TGeoParaboloid.cxx:382
TGeoParaboloid.cxx:383
TGeoParaboloid.cxx:384
TGeoParaboloid.cxx:385
TGeoParaboloid.cxx:386
TGeoParaboloid.cxx:387
TGeoParaboloid.cxx:388
TGeoParaboloid.cxx:389
TGeoParaboloid.cxx:390
TGeoParaboloid.cxx:391
TGeoParaboloid.cxx:392
TGeoParaboloid.cxx:393
TGeoParaboloid.cxx:394
TGeoParaboloid.cxx:395
TGeoParaboloid.cxx:396
TGeoParaboloid.cxx:397
TGeoParaboloid.cxx:398
TGeoParaboloid.cxx:399
TGeoParaboloid.cxx:400
TGeoParaboloid.cxx:401
TGeoParaboloid.cxx:402
TGeoParaboloid.cxx:403
TGeoParaboloid.cxx:404
TGeoParaboloid.cxx:405
TGeoParaboloid.cxx:406
TGeoParaboloid.cxx:407
TGeoParaboloid.cxx:408
TGeoParaboloid.cxx:409
TGeoParaboloid.cxx:410
TGeoParaboloid.cxx:411
TGeoParaboloid.cxx:412
TGeoParaboloid.cxx:413
TGeoParaboloid.cxx:414
TGeoParaboloid.cxx:415
TGeoParaboloid.cxx:416
TGeoParaboloid.cxx:417
TGeoParaboloid.cxx:418
TGeoParaboloid.cxx:419
TGeoParaboloid.cxx:420
TGeoParaboloid.cxx:421
TGeoParaboloid.cxx:422
TGeoParaboloid.cxx:423
TGeoParaboloid.cxx:424
TGeoParaboloid.cxx:425
TGeoParaboloid.cxx:426
TGeoParaboloid.cxx:427
TGeoParaboloid.cxx:428
TGeoParaboloid.cxx:429
TGeoParaboloid.cxx:430
TGeoParaboloid.cxx:431
TGeoParaboloid.cxx:432
TGeoParaboloid.cxx:433
TGeoParaboloid.cxx:434
TGeoParaboloid.cxx:435
TGeoParaboloid.cxx:436
TGeoParaboloid.cxx:437
TGeoParaboloid.cxx:438
TGeoParaboloid.cxx:439
TGeoParaboloid.cxx:440
TGeoParaboloid.cxx:441
TGeoParaboloid.cxx:442
TGeoParaboloid.cxx:443
TGeoParaboloid.cxx:444
TGeoParaboloid.cxx:445
TGeoParaboloid.cxx:446
TGeoParaboloid.cxx:447
TGeoParaboloid.cxx:448
TGeoParaboloid.cxx:449
TGeoParaboloid.cxx:450
TGeoParaboloid.cxx:451
TGeoParaboloid.cxx:452
TGeoParaboloid.cxx:453
TGeoParaboloid.cxx:454
TGeoParaboloid.cxx:455
TGeoParaboloid.cxx:456
TGeoParaboloid.cxx:457
TGeoParaboloid.cxx:458
TGeoParaboloid.cxx:459
TGeoParaboloid.cxx:460
TGeoParaboloid.cxx:461
TGeoParaboloid.cxx:462
TGeoParaboloid.cxx:463
TGeoParaboloid.cxx:464
TGeoParaboloid.cxx:465
TGeoParaboloid.cxx:466
TGeoParaboloid.cxx:467
TGeoParaboloid.cxx:468
TGeoParaboloid.cxx:469
TGeoParaboloid.cxx:470
TGeoParaboloid.cxx:471
TGeoParaboloid.cxx:472
TGeoParaboloid.cxx:473
TGeoParaboloid.cxx:474
TGeoParaboloid.cxx:475
TGeoParaboloid.cxx:476
TGeoParaboloid.cxx:477
TGeoParaboloid.cxx:478
TGeoParaboloid.cxx:479
TGeoParaboloid.cxx:480
TGeoParaboloid.cxx:481
TGeoParaboloid.cxx:482
TGeoParaboloid.cxx:483
TGeoParaboloid.cxx:484
TGeoParaboloid.cxx:485
TGeoParaboloid.cxx:486
TGeoParaboloid.cxx:487
TGeoParaboloid.cxx:488
TGeoParaboloid.cxx:489
TGeoParaboloid.cxx:490
TGeoParaboloid.cxx:491
TGeoParaboloid.cxx:492
TGeoParaboloid.cxx:493
TGeoParaboloid.cxx:494
TGeoParaboloid.cxx:495
TGeoParaboloid.cxx:496
TGeoParaboloid.cxx:497
TGeoParaboloid.cxx:498
TGeoParaboloid.cxx:499
TGeoParaboloid.cxx:500
TGeoParaboloid.cxx:501
TGeoParaboloid.cxx:502
TGeoParaboloid.cxx:503
TGeoParaboloid.cxx:504
TGeoParaboloid.cxx:505
TGeoParaboloid.cxx:506
TGeoParaboloid.cxx:507
TGeoParaboloid.cxx:508
TGeoParaboloid.cxx:509
TGeoParaboloid.cxx:510
TGeoParaboloid.cxx:511
TGeoParaboloid.cxx:512
TGeoParaboloid.cxx:513
TGeoParaboloid.cxx:514
TGeoParaboloid.cxx:515
TGeoParaboloid.cxx:516
TGeoParaboloid.cxx:517
TGeoParaboloid.cxx:518
TGeoParaboloid.cxx:519
TGeoParaboloid.cxx:520
TGeoParaboloid.cxx:521
TGeoParaboloid.cxx:522
TGeoParaboloid.cxx:523
TGeoParaboloid.cxx:524
TGeoParaboloid.cxx:525
TGeoParaboloid.cxx:526
TGeoParaboloid.cxx:527
TGeoParaboloid.cxx:528
TGeoParaboloid.cxx:529
TGeoParaboloid.cxx:530
TGeoParaboloid.cxx:531
TGeoParaboloid.cxx:532
TGeoParaboloid.cxx:533
TGeoParaboloid.cxx:534
TGeoParaboloid.cxx:535
TGeoParaboloid.cxx:536
TGeoParaboloid.cxx:537
TGeoParaboloid.cxx:538
TGeoParaboloid.cxx:539
TGeoParaboloid.cxx:540
TGeoParaboloid.cxx:541
TGeoParaboloid.cxx:542
TGeoParaboloid.cxx:543
TGeoParaboloid.cxx:544
TGeoParaboloid.cxx:545
TGeoParaboloid.cxx:546
TGeoParaboloid.cxx:547
TGeoParaboloid.cxx:548
TGeoParaboloid.cxx:549
TGeoParaboloid.cxx:550
TGeoParaboloid.cxx:551
TGeoParaboloid.cxx:552
TGeoParaboloid.cxx:553
TGeoParaboloid.cxx:554
TGeoParaboloid.cxx:555
TGeoParaboloid.cxx:556
TGeoParaboloid.cxx:557
TGeoParaboloid.cxx:558
TGeoParaboloid.cxx:559
TGeoParaboloid.cxx:560
TGeoParaboloid.cxx:561
TGeoParaboloid.cxx:562
TGeoParaboloid.cxx:563
TGeoParaboloid.cxx:564
TGeoParaboloid.cxx:565
TGeoParaboloid.cxx:566
TGeoParaboloid.cxx:567
TGeoParaboloid.cxx:568
TGeoParaboloid.cxx:569
TGeoParaboloid.cxx:570
TGeoParaboloid.cxx:571
TGeoParaboloid.cxx:572
TGeoParaboloid.cxx:573
TGeoParaboloid.cxx:574
TGeoParaboloid.cxx:575
TGeoParaboloid.cxx:576
TGeoParaboloid.cxx:577
TGeoParaboloid.cxx:578
TGeoParaboloid.cxx:579
TGeoParaboloid.cxx:580
TGeoParaboloid.cxx:581
TGeoParaboloid.cxx:582
TGeoParaboloid.cxx:583
TGeoParaboloid.cxx:584
TGeoParaboloid.cxx:585
TGeoParaboloid.cxx:586
TGeoParaboloid.cxx:587
TGeoParaboloid.cxx:588
TGeoParaboloid.cxx:589
TGeoParaboloid.cxx:590
TGeoParaboloid.cxx:591
TGeoParaboloid.cxx:592
TGeoParaboloid.cxx:593
TGeoParaboloid.cxx:594
TGeoParaboloid.cxx:595
TGeoParaboloid.cxx:596
TGeoParaboloid.cxx:597
TGeoParaboloid.cxx:598
TGeoParaboloid.cxx:599
TGeoParaboloid.cxx:600
TGeoParaboloid.cxx:601
TGeoParaboloid.cxx:602
TGeoParaboloid.cxx:603
TGeoParaboloid.cxx:604
TGeoParaboloid.cxx:605
TGeoParaboloid.cxx:606
TGeoParaboloid.cxx:607
TGeoParaboloid.cxx:608
TGeoParaboloid.cxx:609
TGeoParaboloid.cxx:610
TGeoParaboloid.cxx:611
TGeoParaboloid.cxx:612
TGeoParaboloid.cxx:613
TGeoParaboloid.cxx:614
TGeoParaboloid.cxx:615
TGeoParaboloid.cxx:616
TGeoParaboloid.cxx:617
TGeoParaboloid.cxx:618
TGeoParaboloid.cxx:619
TGeoParaboloid.cxx:620
TGeoParaboloid.cxx:621
TGeoParaboloid.cxx:622
TGeoParaboloid.cxx:623
TGeoParaboloid.cxx:624
TGeoParaboloid.cxx:625
TGeoParaboloid.cxx:626
TGeoParaboloid.cxx:627
TGeoParaboloid.cxx:628
TGeoParaboloid.cxx:629
TGeoParaboloid.cxx:630
TGeoParaboloid.cxx:631
TGeoParaboloid.cxx:632
TGeoParaboloid.cxx:633
TGeoParaboloid.cxx:634
TGeoParaboloid.cxx:635
TGeoParaboloid.cxx:636
TGeoParaboloid.cxx:637
TGeoParaboloid.cxx:638
TGeoParaboloid.cxx:639
TGeoParaboloid.cxx:640
TGeoParaboloid.cxx:641
TGeoParaboloid.cxx:642
TGeoParaboloid.cxx:643
TGeoParaboloid.cxx:644
TGeoParaboloid.cxx:645
TGeoParaboloid.cxx:646
TGeoParaboloid.cxx:647
TGeoParaboloid.cxx:648
TGeoParaboloid.cxx:649
TGeoParaboloid.cxx:650
TGeoParaboloid.cxx:651
TGeoParaboloid.cxx:652
TGeoParaboloid.cxx:653
TGeoParaboloid.cxx:654
TGeoParaboloid.cxx:655
TGeoParaboloid.cxx:656
TGeoParaboloid.cxx:657
TGeoParaboloid.cxx:658
TGeoParaboloid.cxx:659
TGeoParaboloid.cxx:660
TGeoParaboloid.cxx:661
TGeoParaboloid.cxx:662
TGeoParaboloid.cxx:663
TGeoParaboloid.cxx:664
TGeoParaboloid.cxx:665
TGeoParaboloid.cxx:666
TGeoParaboloid.cxx:667
TGeoParaboloid.cxx:668
TGeoParaboloid.cxx:669