ROBAST logo
/******************************************************************************
 * Copyright (C) 2006-, Akira Okumura                                         *
 * All rights reserved.                                                       *
 *****************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//
// AGeoAsphericDisk
//
// Geometry class for tubes which have two aspheric surface
//
///////////////////////////////////////////////////////////////////////////////

#include "AGeoAsphericDisk.h"

#include "Riostream.h"
#include "TBuffer3D.h"
#include "TBuffer3DTypes.h"
#include "TGeoCone.h"
#include "TGeoManager.h"
#include "TGeoTube.h"
#include "TGeoVolume.h"
#include "TMath.h"
#include "TVector3.h"
#include "TVirtualGeoPainter.h"
#include "TVirtualPad.h"

ClassImp(AGeoAsphericDisk);

//_____________________________________________________________________________
AGeoAsphericDisk::AGeoAsphericDisk()
    : fConic1(0),
      fConic2(0),
      fKappa1(1),
      fKappa2(1),
      fNPol1(0),
      fNPol2(0),
      fK1(0),
      fK2(0),
      fSteps(100),
      fRepeat(4) {
  // Default constructor
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(0, 0, 0, 0, 0, 0);
  ComputeBBox();
}

//_____________________________________________________________________________
AGeoAsphericDisk::AGeoAsphericDisk(Double_t z1, Double_t curve1, Double_t z2,
                                   Double_t curve2, Double_t rmax,
                                   Double_t rmin)
    : TGeoBBox(0, 0, 0),
      fConic1(0),
      fConic2(0),
      fKappa1(1),
      fKappa2(1),
      fNPol1(0),
      fNPol2(0),
      fK1(0),
      fK2(0),
      fSteps(100),
      fRepeat(4) {
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(z1, curve1, z2, curve2, rmax, rmin);
  ComputeBBox();
}

//_____________________________________________________________________________
AGeoAsphericDisk::AGeoAsphericDisk(const char* name, Double_t z1,
                                   Double_t curve1, Double_t z2,
                                   Double_t curve2, Double_t rmax,
                                   Double_t rmin)
    : TGeoBBox(name, 0, 0, 0),
      fConic1(0),
      fConic2(0),
      fKappa1(1),
      fKappa2(1),
      fNPol1(0),
      fNPol2(0),
      fK1(0),
      fK2(0),
      fSteps(100),
      fRepeat(4) {
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(z1, curve1, z2, curve2, rmax, rmin);
  ComputeBBox();
}

//_____________________________________________________________________________
AGeoAsphericDisk::~AGeoAsphericDisk() {
  // Destructor
  DeleteArrays();
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcdF1dr(Double_t r) const noexcept(false) {
  // Calculate dF1/dr
  Double_t p = r * r * fCurve1 * fCurve1 * fKappa1;
  if (1 - p <= 0) throw std::exception();

  Double_t ret = r * fCurve1 / sqrt(1 - p);

  for (Int_t i = 0; i < fNPol1; i++) {
    ret += 2 * (i + 1) * fK1[i] * TMath::Power(r, 2 * (i + 1) - 1);
  }

  return ret;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcdF2dr(Double_t r) const noexcept(false) {
  // Calculate dF2/dr
  Double_t p = r * r * fCurve2 * fCurve2 * fKappa2;
  if (1 - p <= 0) throw std::exception();

  Double_t ret = r * fCurve2 / sqrt(1 - p);

  for (Int_t i = 0; i < fNPol2; i++) {
    ret += 2 * (i + 1) * fK2[i] * pow(r, 2 * (i + 1) - 1);
  }

  return ret;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcF1(Double_t r) const noexcept(false) {
  // Calculate z value of surface 1 at given r
  Double_t p = r * r * fCurve1 * fCurve1 * fKappa1;
  if (1 - p < 0) throw std::exception();

  Double_t ret = fZ1 + r * r * fCurve1 / (1 + sqrt(1 - p));

  for (Int_t i = 0; i < fNPol1; i++) {
    ret += fK1[i] * pow(r, 2 * (i + 1));
  }

  return ret;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcF2(Double_t r) const noexcept(false) {
  // Calculate z value of surface 1 at given r
  Double_t p = r * r * fCurve2 * fCurve2 * fKappa2;
  if (1 - p < 0) throw std::exception();

  Double_t ret = fZ2 + r * r * fCurve2 / (1 + sqrt(1 - p));

  for (Int_t i = 0; i < fNPol2; i++) {
    ret += fK2[i] * pow(r, 2 * (i + 1));
  }

  return ret;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::Capacity() const {
  // Compute capacity of the shape in [length^3]
  // Not implemeted yet

  return 0;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::ComputeBBox() {
  // Compute bounding box of the shape
  Double_t zmax = -TGeoShape::Big();
  if (fNPol2 == 0) {
    Double_t f1, f2;
    try {
      f1 = CalcF2(fRmin);
      f2 = CalcF2(fRmax);
    } catch (...) {
      f1 = TGeoShape::Big();
      f2 = TGeoShape::Big();
    }
    zmax = f1 > f2 ? f1 : f2;
  } else {
    Double_t r1 = fRmin;
    Double_t r2 = fRmax;
    for (Int_t i = 0; i < fRepeat; i++) {
      Double_t step = (r2 - r1) / fSteps;
      Double_t r_ = r1;
      for (Int_t j = 0; j <= fSteps + 1; j++) {
        Double_t r = r1 + j * step;
        Double_t f;
        try {
          f = CalcF2(r);
        } catch (...) {
          f = -TGeoShape::Big();
        }
        if (f > zmax) {
          zmax = f;
          r_ = r;
        }
      }
      r1 = r_ == fRmin ? fRmin : r_ - step;
      r2 = r_ == fRmax ? fRmax : r_ + step;
    }
  }

  Double_t zmin = TGeoShape::Big();
  if (fNPol1 == 0) {
    Double_t f1, f2;
    try {
      f1 = CalcF1(fRmin);
      f2 = CalcF1(fRmax);
    } catch (...) {
      f1 = -TGeoShape::Big();
      f2 = -TGeoShape::Big();
    }
    zmin = f1 < f2 ? f1 : f2;
  } else {
    Double_t r1 = fRmin;
    Double_t r2 = fRmax;
    for (Int_t i = 0; i < fRepeat; i++) {
      Double_t step = (r2 - r1) / fSteps;
      Double_t r_ = r1;
      for (Int_t j = 0; j <= fSteps + 1; j++) {
        Double_t r = r1 + j * step;
        Double_t f;
        try {
          f = CalcF1(r);
        } catch (...) {
          f = TGeoShape::Big();
        }
        if (f < zmin) {
          zmin = f;
          r_ = r;
        }
      }
      r1 = r_ == fRmin ? fRmin : r_ - step;
      r2 = r_ == fRmax ? fRmax : r_ + step;
    }
  }

  fOrigin[0] = 0;
  fOrigin[1] = 0;
  fOrigin[2] = (zmax + zmin) / 2;

  fDX = fRmax;
  fDY = fRmax;
  fDZ = (zmax - zmin) / 2;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::ComputeNormal(CONST53410 Double_t* point,
                                     CONST53410 Double_t* dir, Double_t* norm) {
  // Compute normal to closest surface from POINT.

  // Following calculation assumes that the point is very close to surfaces.

  Double_t r = sqrt(point[0] * point[0] + point[1] * point[1]);
  Double_t phi = atan2(point[1], point[0]);

  Double_t saf[4];
  saf[0] = TestShapeBit(kGeoRSeg) ? TMath::Abs(r - fRmin) : TGeoShape::Big();
  saf[1] = TMath::Abs(r - fRmax);

  Double_t f1, f2;
  // any numbers is OK, just to remove warning
  Double_t df1(TGeoShape::Big()), df2(TGeoShape::Big());
  try {
    f1 = CalcF1(r);
  } catch (...) {
    f1 = -TGeoShape::Big();
  }
  if (f1 == -TGeoShape::Big()) {
    saf[2] = TGeoShape::Big();
  } else {
    try {
      df1 = CalcdF1dr(r);
      saf[2] = TMath::Abs(f1 - point[2]) / sqrt(1 + df1 * df1);
    } catch (...) {
      saf[2] = TGeoShape::Big();
    }
  }

  try {
    f2 = CalcF2(r);
  } catch (...) {
    f2 = TGeoShape::Big();
  }
  if (f2 == TGeoShape::Big()) {
    saf[3] = TGeoShape::Big();
  } else {
    try {
      df2 = CalcdF2dr(r);
      saf[3] = TMath::Abs(f2 - point[2]) / sqrt(1 + df2 * df2);
    } catch (...) {
      saf[3] = TGeoShape::Big();
    }
  }

  Int_t i = TMath::LocMin(4, saf);  // find minimum

  memset(norm, 0, 3 * sizeof(Double_t));
  if (i == 0 or i == 1) {
    norm[0] = 1;
  } else if (i == 2) {
    if (df1 == 0) {
      norm[2] = 1;
    } else {
      norm[0] = df1 / sqrt(1 + df1 * df1);
      norm[2] = -1 / sqrt(1 + df1 * df1);
    }
  } else {
    if (df2 == 0) {
      norm[2] = 1;
    } else {
      norm[0] = df2 / sqrt(1 + df2 * df2);
      norm[2] = -1 / sqrt(1 + df2 * df2);
    }
  }

  TVector3 vec(norm);
  vec.RotateZ(phi);

  norm[0] = vec.X();
  norm[1] = vec.Y();
  norm[2] = vec.Z();

  if (norm[0] * dir[0] + norm[1] * dir[1] + norm[2] * dir[2] < 0) {
    norm[0] = -norm[0];
    norm[1] = -norm[1];
    norm[2] = -norm[2];
  }
}

//_____________________________________________________________________________
Bool_t AGeoAsphericDisk::Contains(CONST53410 Double_t* point) const {
  // Test if point is in this shape

  Double_t r = sqrt(point[0] * point[0] + point[1] * point[1]);
  if (r > fRmax or r < fRmin) return kFALSE;

  Double_t f1, f2;
  try {
    f1 = CalcF1(r);
    f2 = CalcF2(r);
  } catch (...) {
    return kFALSE;
  }

  if (point[2] < f1 or f2 < point[2]) return kFALSE;

  return kTRUE;
}

//_____________________________________________________________________________
Int_t AGeoAsphericDisk::DistancetoPrimitive(Int_t px, Int_t py) {
  // compute closest distance from point px,py to each corner
  Int_t n = gGeoManager->GetNsegments();

  Int_t numPoints = 2 * n * (n + 1);
  if (!TestShapeBit(kGeoRSeg)) {
    numPoints = 2 * (n * n + 1);
  }

  return ShapeDistancetoPrimitive(numPoints, px, py);
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistFromInside(CONST53410 Double_t* point,
                                          CONST53410 Double_t* dir, Int_t iact,
                                          Double_t step, Double_t* safe) const {
  // compute distance from inside point to surface of the sphere

  // compute safe distance
  if (iact < 3 and safe) {
    *safe = Safety(point, kFALSE);
    if (iact == 0) return TGeoShape::Big();
    if (iact == 1 && step < *safe) return TGeoShape::Big();
  }

  // calculate distance
  Double_t d[4];
  d[0] = DistToAsphere(1, point, dir);
  d[1] = DistToAsphere(2, point, dir);
  d[2] = DistToInner(point, dir);
  d[3] = DistToOuter(point, dir);

  return d[TMath::LocMin(4, d)];
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistFromOutside(CONST53410 Double_t* point,
                                           CONST53410 Double_t* dir, Int_t iact,
                                           Double_t step,
                                           Double_t* safe) const {
  // compute distance from outside point to surface of the sphere

  // Check if the bounding box is crossed within the requested distance
  Double_t point_[3] = {point[0], point[1], point[2] - fOrigin[2]};
  Double_t sdist = TGeoTube::DistFromOutsideS(point_, dir, fRmin, fRmax, fDZ);
  if (sdist >= step) return TGeoShape::Big();

  // compute safe distance
  if (iact < 3 and safe) {
    *safe = Safety(point, kFALSE);
    if (iact == 0) return TGeoShape::Big();
    if (iact == 1 && step < *safe) return TGeoShape::Big();
  }

  // calculate distance
  Double_t d[4];
  d[0] = DistToAsphere(1, point, dir);
  d[1] = DistToAsphere(2, point, dir);
  d[2] = DistToInner(point, dir);
  d[3] = DistToOuter(point, dir);

  return d[TMath::LocMin(4, d)];
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistToAsphere(Int_t n, CONST53410 Double_t* point,
                                         CONST53410 Double_t* dir) const {
  if (n != 1 and n != 2) return TGeoShape::Big();

  // following calculations are based on Y.Matsui's text book pp 42-45
  // Matsui (x, y, z) -> in this function (z, x, y)
  // !WARNING! this method cannot handle with large incident angles nor
  // complicated surfaces which have many extremums. I strongly recommend you
  // to check 3D view of rays. In most cases using Ashra optics, this will not
  // limit your application.
  Double_t H2 = point[0] * point[0] + point[1] * point[1];
  Double_t d = n == 1 ? fZ1 : fZ2;
  Double_t p =
      -((point[2] - d) * dir[2] + point[0] * dir[0] + point[1] * dir[1]);
  Double_t M = p * dir[2] + point[2] - d;
  Double_t M2 = (point[2] - d) * (point[2] - d) + H2 - p * p;

  Double_t check = n == 1
                       ? 1 - (M2 * fCurve1 - 2 * M) * fCurve1 / dir[2] / dir[2]
                       : 1 - (M2 * fCurve2 - 2 * M) * fCurve2 / dir[2] / dir[2];

  if (check < 0) {
    // Actually, the ray still has a chance to cross the surface. But this is
    // the limitation of this function.
    return TGeoShape::Big();
  }

  Double_t q =
      n == 1 ? p + (M2 * fCurve1 - 2 * M) / (dir[2] * (1 + TMath::Sqrt(check)))
             : p + (M2 * fCurve2 - 2 * M) / (dir[2] * (1 + TMath::Sqrt(check)));

  Double_t npoint[3] = {point[0] + q * dir[0], point[1] + q * dir[1],
                        point[2] + q * dir[2] - d};

  for (Int_t i = 0;; i++) {
    if (i > 100) {
      return TGeoShape::Big();
    }
    H2 = npoint[0] * npoint[0] + npoint[1] * npoint[1];
    check = n == 1 ? (1 - fKappa1 * H2 * fCurve1 * fCurve1)
                   : (1 - fKappa2 * H2 * fCurve2 * fCurve2);
    if (check < 0) {
      // This is a limitation too
      return TGeoShape::Big();
    }

    Double_t l = sqrt(check);

    Double_t x = 0;
    if (n == 1) {
      if (fCurve1 != 0) x += (1 - l) / fCurve1 / fKappa1;
      for (Int_t j = 0; j < fNPol1; j++) {
        x += fK1[j] * TMath::Power(H2, j + 1);
      }
    } else {
      if (fCurve2 != 0) x += (1 - l) / fCurve2 / fKappa2;
      for (int j = 0; j < fNPol2; j++) {
        x += fK2[j] * TMath::Power(H2, j + 1);
      }
    }

    Double_t v = 0;
    if (n == 1) {
      for (int j = 0; j < fNPol1; j++) {
        v += 2 * (j + 1) * fK1[j] * TMath::Power(H2, j);
      }
      v = fCurve1 * fKappa1 + l * v;
    } else {
      for (Int_t j = 0; j < fNPol2; j++) {
        v += 2 * (j + 1) * fK2[j] * TMath::Power(H2, j);
      }
      v = fCurve2 * fKappa2 + l * v;
    }

    Double_t m = -npoint[0] * v;
    Double_t n = -npoint[1] * v;
    Double_t norm = TMath::Sqrt(l * l + m * m + n * n);
    l /= norm;
    m /= norm;
    n /= norm;

    check = dir[2] * l + dir[0] * m + dir[1] * n;
    if (check == 0) {
      return TGeoShape::Big();
    }

    Double_t e = l * (x - npoint[2]) / check;

    for (Int_t j = 0; j < 3; j++) {
      npoint[j] += e * dir[j];
    }

    if (TMath::Abs(e) < 1e-10) break;
  }

  npoint[2] += d;
  check = dir[0] * (npoint[0] - point[0]) + dir[1] * (npoint[1] - point[1]) +
          dir[2] * (npoint[2] - point[2]);
  if (check < 0) {
    return TGeoShape::Big();
  }

  Double_t dist_to_zaxis =
      TMath::Power(npoint[0] * npoint[0] + npoint[1] * npoint[1], 0.5);
  if (dist_to_zaxis < fRmin or dist_to_zaxis > fRmax) {
    return TGeoShape::Big();
  }

  return TMath::Sqrt(TMath::Power(npoint[0] - point[0], 2) +
                     TMath::Power(npoint[1] - point[1], 2) +
                     TMath::Power(npoint[2] - point[2], 2));
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistToInner(CONST53410 Double_t* point,
                                       CONST53410 Double_t* dir) const {
  if (!TestShapeBit(kGeoRSeg)) {
    return TGeoShape::Big();
  }

  Double_t rsq = point[0] * point[0] + point[1] * point[1];
  Double_t nsq = dir[0] * dir[0] + dir[1] * dir[1];
  if (TMath::Sqrt(nsq) < TGeoShape::Tolerance()) {
    return TGeoShape::Big();
  }
  Double_t rdotn = point[0] * dir[0] + point[1] * dir[1];
  Double_t b, delta;
  TGeoTube::DistToTube(rsq, nsq, rdotn, fRmin, b, delta);

  if (delta < 0) {
    return TGeoShape::Big();
  }

  // new points are x[] = (-b +/- delta)*dir[] + point[]
  Double_t t1 = -b + delta;
  Double_t t2 = -b - delta;

  if (t1 < 0 and t2 < 0) {
    return TGeoShape::Big();
  }

  Double_t zmin = CalcF1(fRmin);
  Double_t zmax = CalcF2(fRmin);

  if (t2 > 0) {
    if (t1 > 0) {
      Double_t z1 = t1 * dir[2] + point[2];
      Double_t z2 = t2 * dir[2] + point[2];
      if (z1 < zmin or zmax < z1) {
        t1 = TGeoShape::Big();
      }
      if (z2 < zmin or zmax < z2) {
        t2 = TGeoShape::Big();
      }

      return t1 < t2 ? t1 : t2;
    } else {
      // never happens, because t1 > t2 > 0
    }
  } else if (t2 == 0) {
    if (t1 > 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      } else {
        Double_t z1 = t1 * dir[2] + point[2];
        if (zmin <= z1 and z1 <= zmax) {
          return t1;
        }
      }
    } else if (t1 == 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      }
    } else {
      // never happens, because t1 > t2 = 0
    }
  } else {  // t2 < 0
    if (t1 > 0) {
      Double_t z1 = t1 * dir[2] + point[2];
      if (zmin <= z1 and z1 <= zmax) {
        return t1;
      }
    } else if (t1 == 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      }
    } else {  // t1 < 0
      // do nothing here, because this condition has already returned Big
    }
  }

  return TGeoShape::Big();
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistToOuter(CONST53410 Double_t* point,
                                       CONST53410 Double_t* dir) const {
  Double_t rsq = point[0] * point[0] + point[1] * point[1];
  Double_t nsq = dir[0] * dir[0] + dir[1] * dir[1];
  if (TMath::Sqrt(nsq) < TGeoShape::Tolerance()) {
    return TGeoShape::Big();
  }
  Double_t rdotn = point[0] * dir[0] + point[1] * dir[1];
  Double_t b, delta;
  TGeoTube::DistToTube(rsq, nsq, rdotn, fRmax, b, delta);

  if (delta < 0) {
    return TGeoShape::Big();
  }

  // new points are x[] = (-b +/- delta)*dir[] + point[]
  Double_t t1 = -b + delta;
  Double_t t2 = -b - delta;

  if (t1 < 0 and t2 < 0) {
    return TGeoShape::Big();
  }

  Double_t zmin = CalcF1(fRmax);
  Double_t zmax = CalcF2(fRmax);

  if (t2 > 0) {
    if (t1 > 0) {
      Double_t z1 = t1 * dir[2] + point[2];
      Double_t z2 = t2 * dir[2] + point[2];
      if (z1 < zmin or zmax < z1) {
        t1 = TGeoShape::Big();
      }
      if (z2 < zmin or zmax < z2) {
        t2 = TGeoShape::Big();
      }

      return t1 < t2 ? t1 : t2;
    } else {
      // never happens, because t1 > t2 > 0
    }
  } else if (t2 == 0) {
    if (t1 > 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      } else {
        Double_t z1 = t1 * dir[2] + point[2];
        if (zmin <= z1 and z1 <= zmax) {
          return t1;
        }
      }
    } else if (t1 == 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      }
    } else {
      // never happens, because t1 > t2 = 0
    }
  } else {  // t2 < 0
    if (t1 > 0) {
      Double_t z1 = t1 * dir[2] + point[2];
      if (zmin <= z1 and z1 <= zmax) {
        return t1;
      }
    } else if (t1 == 0) {
      if (zmin <= point[2] and point[2] <= zmax) {
        return 0;
      }
    } else {  // t1 < 0
      // do nothing here, because this condition has already returned Big
    }
  }

  return TGeoShape::Big();
}

//_____________________________________________________________________________
TGeoVolume* AGeoAsphericDisk::Divide(TGeoVolume*, const char*, Int_t, Int_t,
                                     Double_t, Double_t) {
  Error("Divide", "Division of a aspheric disk not implemented");
  return 0;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::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] = fRmin;
  param[1] = fRmax;
  param[2] = 0;
  param[3] = 360;
}

//_____________________________________________________________________________
const TBuffer3D& AGeoAsphericDisk::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 = 2 * n * (n + 1);  // Number of points
    Int_t nbSegs = 4 * n * (n + 1);  // Number of segments
    Int_t nbPols = 2 * n * (n + 1);  // Number of polygons

    if (!TestShapeBit(kGeoRSeg)) {
      nbPnts = 2 * (n * n + 1);
      nbSegs = n * (4 * n + 1);
      nbPols = n * (2 * n + 1);
    }

    if (buffer.SetRawSizes(nbPnts, 3 * nbPnts, nbSegs, 3 * nbSegs, nbPols,
                           6 * nbPols)) {
      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 AGeoAsphericDisk::GetMeshNumbers(Int_t& nvert, Int_t& nsegs,
                                      Int_t& npols) const {
  Int_t n = gGeoManager->GetNsegments();

  if (TestShapeBit(kGeoRSeg)) {
    nvert = 2 * n * (n + 1);
    nsegs = 4 * n * (n + 1);
    npols = 2 * n * (n + 1);
  } else {
    nvert = 2 * (n * n + 1);
    nsegs = n * (4 * n + 1);
    npols = n * (2 * n + 1);
  }
}

//_____________________________________________________________________________
Int_t AGeoAsphericDisk::GetNmeshVertices() const {
  // Return number of vertices of the mesh representation
  Int_t n = gGeoManager->GetNsegments();
  Int_t nbPnts = 2 * n * (n + 1);
  if (!TestShapeBit(kGeoRSeg)) {
    nbPnts = 2 * (n * n + 1);
  }

  return nbPnts;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::InspectShape() const {
  // print shape parameters
  printf("*** Shape %s: AGeoAsphericDisk ***\n", GetName());
  printf("    Z1     = %11.5f\n", fZ1);
  printf("    Z2     = %11.5f\n", fZ2);
  printf("    Curve1 = %11.5f\n", fCurve1);
  printf("    Curve2 = %11.5f\n", fCurve2);
  printf("    Rmin   = %11.5f\n", fRmin);
  printf("    Rmax   = %11.5f\n", fRmax);
  printf("    NPol1  = %d\n", fNPol1);
  printf("    NPol2  = %d\n", fNPol2);
  printf("    K1:");
  for (Int_t i = 0; i < fNPol1; i++) {
    printf("    %d: %11.5f\n", (i + 1) * 2, fK1[i]);
  }
  printf("    K2:");
  for (Int_t i = 0; i < fNPol2; i++) {
    printf("    %d: %11.5f\n", (i + 1) * 2, fK2[i]);
  }
  printf(" Bounding box:\n");
  TGeoBBox::InspectShape();
}

//_____________________________________________________________________________
TBuffer3D* AGeoAsphericDisk::MakeBuffer3D() const {
  Int_t n = gGeoManager->GetNsegments();
  Int_t nbPnts = 2 * n * (n + 1);  // Number of points
  Int_t nbSegs = 4 * n * (n + 1);  // Number of segments
  Int_t nbPols = 2 * n * (n + 1);  // Number of polygons

  if (!TestShapeBit(kGeoRSeg)) {
    nbPnts = 2 * (n * n + 1);
    nbSegs = n * (4 * n + 1);
    nbPols = n * (2 * n + 1);
  }

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

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

  return buff;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::Safety(CONST53410 Double_t* point, Bool_t in) const {
  Double_t safe;

  Double_t rad2 = point[0] * point[0] + point[1] * point[1];
  Double_t rad = sqrt(rad2);

  Double_t dist[4];

  if (!in) {
    Double_t f1rmax, f1rmin, f2rmax, f2rmin;
    try {
      f1rmax = CalcF1(fRmax);
    } catch (...) {
      f1rmax = -TGeoShape::Big();
    }
    try {
      f1rmin = CalcF1(fRmin);
    } catch (...) {
      f1rmin = -TGeoShape::Big();
    }
    try {
      f2rmax = CalcF2(fRmax);
    } catch (...) {
      f2rmax = TGeoShape::Big();
    }
    try {
      f2rmin = CalcF2(fRmin);
    } catch (...) {
      f2rmin = TGeoShape::Big();
    }

    if (rad < fRmin and (f1rmin < point[2] or point[2] < f2rmin)) {
      return fRmin - rad;
    } else if (rad > fRmax and (f1rmax < point[2] or point[2] < f2rmax)) {
      return rad - fRmax;
    }
  }

  // calc distance between point and lower surface
  Double_t r1 = fRmin;
  Double_t r2 = fRmax;
  dist[0] = TGeoShape::Big();
  for (Int_t i = 0; i < fRepeat; i++) {
    Double_t step = (r2 - r1) / fSteps;
    Double_t r_ = r1;
    for (Int_t j = 0; j <= fSteps + 1; j++) {
      Double_t r = r1 + j * step;
      Double_t f;
      try {
        f = CalcF1(r);
      } catch (...) {
        f = -TGeoShape::Big();
      }
      Double_t d2 = (f - point[2]) * (f - point[2]) + (r - rad) * (r - rad);
      if (d2 < dist[0]) {
        dist[0] = d2;
        r_ = r;
      }
    }
    r1 = r_ == fRmin ? fRmin : r_ - step;
    r2 = r_ == fRmax ? fRmax : r_ + step;
  }
  dist[0] = TMath::Sqrt(dist[0]);

  // calc distance between point and upper surface
  r1 = fRmin;
  r2 = fRmax;
  dist[1] = TGeoShape::Big();
  for (Int_t i = 0; i < fRepeat; i++) {
    Double_t step = (r2 - r1) / fSteps;
    Double_t r_ = r1;
    for (Int_t j = 0; j <= fSteps + 1; j++) {
      Double_t r = r1 + j * step;
      Double_t f;
      try {
        f = CalcF2(r);
      } catch (...) {
        f = TGeoShape::Big();
      }
      Double_t d2 = (f - point[2]) * (f - point[2]) + (r - rad) * (r - rad);
      if (d2 < dist[1]) {
        dist[1] = d2;
        r_ = r;
      }
    }
    r1 = r_ == fRmin ? fRmin : r_ - step;
    r2 = r_ == fRmax ? fRmax : r_ + step;
  }
  dist[1] = sqrt(dist[1]);

  if (in) {
    dist[2] = rad - fRmin;  // distance to rmin
    dist[3] = fRmax - rad;  // distance to rmax

    safe = dist[0];
    for (Int_t i = 1; i < 4; i++) {
      safe = dist[i] < safe ? dist[i] : safe;
    }
  } else {
    safe = dist[0] < dist[1] ? dist[0] : dist[1];
  }

  return safe;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SavePrimitive(std::ostream& out, Option_t*) {
  // 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 << "   rmin   = " << fRmin << ";" << std::endl;
  out << "   rmax   = " << fRmax << ";" << std::endl;
  out << "   curve1 = " << fCurve1 << ";" << std::endl;
  out << "   curve2 = " << fCurve2 << ";" << std::endl;
  out << "   conic1 = " << fConic1 << ";" << std::endl;
  out << "   conic2 = " << fConic2 << ";" << std::endl;
  out << "   z1     = " << fZ1 << ";" << std::endl;
  out << "   z2     = " << fZ2 << ";" << std::endl;
  out << "   AGeoAsphericDisk* asph = new AGeoAsphericDisk(\"" << GetName()
      << "\",z1, curve1, z2, curve2, rmax, rmin);" << std::endl;

  if (fNPol1 > 0) {
    out << "double k1[" << fNPol1 << "] = {";
    for (Int_t i = 0; i < fNPol1; i++) {
      out << fK1[i];
      out << (i != fNPol1 - 1 ? "," : "};") << std::endl;
    }
  }
  if (fNPol2 > 0) {
    out << "double k2[" << fNPol2 << "] = {";
    for (Int_t i = 0; i < fNPol2; i++) {
      out << fK2[i];
      out << (i != fNPol2 - 1 ? "," : "};") << std::endl;
    }
  }
  if (fNPol1 > 0 and fNPol2 > 0) {
    out << "asph->SetPolynomials(" << fNPol1 << ", k1, " << fNPol2 << ", k2);"
        << std::endl;
  } else if (fNPol1 == 0 and fNPol2 > 0) {
    out << "asph->SetPolynomials(" << fNPol1 << ", 0, " << fNPol2 << ", k2);"
        << std::endl;
  } else if (fNPol1 > 0 and fNPol2 == 0) {
    out << "asph->SetPolynomials(" << fNPol1 << ", k1, " << fNPol2 << ", 0);"
        << std::endl;
  }
  out << "asph->SetConicConstants(conic1, conic2);" << std::endl;
  out << "   TGeoShape* " << GetPointerName() << " = asph;" << std::endl;
  TObject::SetBit(TGeoShape::kGeoSavePrimitive);
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetAsphDimensions(Double_t z1, Double_t curve1,
                                         Double_t z2, Double_t curve2,
                                         Double_t rmax, Double_t rmin) {
  if (z1 < z2) {
    fZ1 = z1;
    fZ2 = z2;
    fCurve1 = curve1;
    fCurve2 = curve2;
  } else {
    fZ1 = z2;
    fZ2 = z1;
    fCurve1 = curve2;
    fCurve2 = curve1;
  }

  if (rmax < 0) rmax *= -1;
  if (rmin < 0) rmin *= -1;

  if (rmax > rmin) {
    fRmax = rmax;
    fRmin = rmin;
  } else {
    fRmax = rmin;
    fRmin = rmax;
  }

  if (fRmin > 0) {
    SetShapeBit(kGeoRSeg);
  }
  fNPol1 = 0;
  fNPol2 = 0;
  fK1 = 0;
  fK2 = 0;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetConicConstants(Double_t conic1, Double_t conic2) {
  fConic1 = conic1;
  fConic2 = conic2;
  fKappa1 = fConic1 + 1;
  fKappa2 = fConic2 + 1;
  ComputeBBox();
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetDimensions(Double_t* param) {
  SetAsphDimensions(param[0], param[1], param[2], param[3], param[4], param[5]);
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetFineness(Int_t steps, Int_t repeat) {
  if (steps > 0) fSteps = steps;
  if (repeat > 0) fRepeat = repeat;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetPoints(Double_t* points) const {
  // create mesh points
  Int_t n = gGeoManager->GetNsegments();

  if (points) {
    if (TestShapeBit(kGeoRSeg)) {
      // 2*n*(n + 1) points
      // lower (0, n*(n+1)-1)
      // upper (n*(n+1), 2*n*(n+1)-1)
      // (r0, phi0), (r0, phi1) .... (r1, phi0), (r1, phi1) ...
      for (int i = 0; i < n + 1; i++) {
        Double_t r = fRmin + i * (fRmax - fRmin) / n;
        for (int j = 0; j < n; j++) {
          Double_t phi = j * TMath::Pi() * 2 / n;
          Int_t index = 3 * (i * n + j);  // lower
          points[index] = r * cos(phi);
          points[index + 1] = r * sin(phi);
          try {
            points[index + 2] = CalcF1(r);
          } catch (...) {
            points[index + 2] = -TGeoShape::Big();
          }
          Int_t index2 = index + 3 * n * (n + 1);  // upper
          points[index2] = points[index];
          points[index2 + 1] = points[index + 1];
          try {
            points[index2 + 2] = CalcF2(r);
          } catch (...) {
            points[index2 + 2] = TGeoShape::Big();
          }
        }
      }
    } else {
      // 2*(n*n + 1) points
      // lower (0, n*n-1)
      // upper (n*n, 2*n*n-1)
      for (int i = 0; i < n; i++) {
        Double_t r = (i + 1) * fRmax / n;
        for (int j = 0; j < n; j++) {
          Double_t phi = j * TMath::Pi() * 2 / n;
          Int_t index = 3 * (i * n + j);  // lower
          points[index] = r * cos(phi);
          points[index + 1] = r * sin(phi);
          try {
            points[index + 2] = CalcF1(r);
          } catch (...) {
            points[index + 2] = -TGeoShape::Big();
          }
          Int_t index2 = index + 3 * n * n;  // upper
          points[index2] = points[index];
          points[index2 + 1] = points[index + 1];
          try {
            points[index2 + 2] = CalcF2(r);
          } catch (...) {
            points[index2 + 2] = TGeoShape::Big();
          }
        }
      }
      // lower center 2*n*n
      // upper center 2*n*n+1
      Int_t index = 3 * 2 * n * n;
      points[index] = 0;
      points[index + 1] = 0;
      try {
        points[index + 2] = CalcF1(0);
      } catch (...) {
        points[index + 2] = -TGeoShape::Big();
      }
      points[index + 3] = 0;
      points[index + 4] = 0;
      try {
        points[index + 5] = CalcF2(0);
      } catch (...) {
        points[index + 5] = -TGeoShape::Big();
      }
    }
  }
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetPoints(Float_t* points) const {
  // create mesh points
  Int_t n = gGeoManager->GetNsegments();

  if (points) {
    if (TestShapeBit(kGeoRSeg)) {
      // 2*n*(n + 1) points
      // lower (0, n*(n+1)-1)
      // upper (n*(n+1), 2*n*(n+1)-1)
      // (r0, phi0), (r0, phi1) .... (r1, phi0), (r1, phi1) ...
      for (int i = 0; i < n + 1; i++) {
        Double_t r = fRmin + i * (fRmax - fRmin) / n;
        for (int j = 0; j < n; j++) {
          Double_t phi = j * TMath::Pi() * 2 / n;
          Int_t index = 3 * (i * n + j);  // lower
          points[index] = r * cos(phi);
          points[index + 1] = r * sin(phi);
          try {
            points[index + 2] = CalcF1(r);
          } catch (...) {
            points[index + 2] = -TGeoShape::Big();
          }
          Int_t index2 = index + 3 * n * (n + 1);  // upper
          points[index2] = points[index];
          points[index2 + 1] = points[index + 1];
          try {
            points[index2 + 2] = CalcF2(r);
          } catch (...) {
            points[index2 + 2] = TGeoShape::Big();
          }
        }
      }
    } else {
      // 2*(n*n + 1) points
      // lower (0, n*n-1)
      // upper (n*n, 2*n*n-1)
      for (int i = 0; i < n; i++) {
        Double_t r = (i + 1) * fRmax / n;
        for (int j = 0; j < n; j++) {
          Double_t phi = j * TMath::Pi() * 2 / n;
          Int_t index = 3 * (i * n + j);  // lower
          points[index] = r * cos(phi);
          points[index + 1] = r * sin(phi);
          try {
            points[index + 2] = CalcF1(r);
          } catch (...) {
            points[index + 2] = -TGeoShape::Big();
          }
          Int_t index2 = index + 3 * n * n;  // upper
          points[index2] = points[index];
          points[index2 + 1] = points[index + 1];
          try {
            points[index2 + 2] = CalcF2(r);
          } catch (...) {
            points[index2 + 2] = TGeoShape::Big();
          }
        }
      }
      // lower center 2*n*n
      // upper center 2*n*n+1
      Int_t index = 3 * 2 * n * n;
      points[index] = 0;
      points[index + 1] = 0;
      try {
        points[index + 2] = CalcF1(0);
      } catch (...) {
        points[index + 2] = -TGeoShape::Big();
      }
      points[index + 3] = 0;
      points[index + 4] = 0;
      try {
        points[index + 5] = CalcF2(0);
      } catch (...) {
        points[index + 5] = -TGeoShape::Big();
      }
    }
  }
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetPolynomials(Int_t n1, const Double_t* k1, Int_t n2,
                                      const Double_t* k2) {
  DeleteArrays();
  fNPol1 = n1;
  fNPol2 = n2;

  if (fNPol1 > 0) {
    fK1 = new Double_t[fNPol1];
    for (Int_t i = 0; i < fNPol1; i++) fK1[i] = k1[i];
  }

  if (fNPol2 > 0) {
    fK2 = new Double_t[fNPol2];
    for (Int_t i = 0; i < fNPol2; i++) fK2[i] = k2[i];
  }

  ComputeBBox();
}

//_____________________________________________________________________________
void AGeoAsphericDisk::SetSegsAndPols(TBuffer3D& buff) const {
  // Fill TBuffer3D structure for segments and polygons.
  Int_t n = gGeoManager->GetNsegments();
  Int_t c = GetBasicColor();

  if (TestShapeBit(kGeoRSeg)) {
    // segments
    for (Int_t i = 0; i < n; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower radial (0, n*n-1)
        Int_t index = 3 * (i * n + j);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = i * n + j;
        buff.fSegs[index + 2] = (i + 1) * n + j;
        // upper radial (n*n, 2*n*n-1)
        index += 3 * (n * n);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = n * (n + 1) + i * n + j;
        buff.fSegs[index + 2] = n * (n + 1) + (i + 1) * n + j;
      }
    }
    for (Int_t i = 0; i < n + 1; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower circle (2*n*n, 3*n*n+n-1)
        Int_t index = 3 * 2 * n * n + 3 * (i * n + j);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = i * n + j;
        buff.fSegs[index + 2] = j == n - 1 ? i * n : i * n + j + 1;
        // upper circle (3*n*n+n, 4*n*n+2*n-1)
        index += 3 * (n * n + n);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = n * (n + 1) + i * n + j;
        buff.fSegs[index + 2] =
            n * (n + 1) + (j == n - 1 ? i * n : i * n + j + 1);
      }
    }
    for (Int_t j = 0; j < n; j++) {
      // inner (4*n*n+2*n, 4*n*n+3*n-1)
      Int_t index = 3 * (4 * n * n + 2 * n + j);
      buff.fSegs[index] = c + 1;
      buff.fSegs[index + 1] = j;
      buff.fSegs[index + 2] = j + n * (n + 1);
      // outer (4*n*n+3*n, 4*n*n+4*n-1)
      index += 3 * n;
      buff.fSegs[index] = c + 1;
      buff.fSegs[index + 1] = n * n + j;
      buff.fSegs[index + 2] = n * n + j + n * (n + 1);
    }

    // polygons
    for (Int_t i = 0; i < n; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower (0, n*n-1)
        Int_t index = 6 * (i * n + j);
        buff.fPols[index] = c;
        buff.fPols[index + 1] = 4;
        buff.fPols[index + 2] = i * n + j;
        buff.fPols[index + 3] = 2 * n * n + (i + 1) * n + j;
        buff.fPols[index + 4] = j != n - 1 ? i * n + (j + 1) : i * n;
        buff.fPols[index + 5] = 2 * n * n + i * n + j;
        // upper (n*n, 2*n*n-1)
        index += 6 * n * n;
        buff.fPols[index] = c;
        buff.fPols[index + 1] = 4;
        buff.fPols[index + 2] = n * n + i * n + j;
        buff.fPols[index + 3] = 3 * n * n + (i + 1) * n + j;
        buff.fPols[index + 4] =
            j != n - 1 ? n * n + i * n + (j + 1) : n * n + i * n;
        buff.fPols[index + 5] = 3 * n * n + (i + 2) * n + j;
      }
    }
    for (Int_t j = 0; j < n; j++) {
      // inner (2*n*n, 2*n*n+n-1)
      Int_t index = 6 * (2 * n * n + j);
      buff.fPols[index] = c;
      buff.fPols[index + 1] = 4;
      buff.fPols[index + 2] = 2 * n * n + j;
      buff.fPols[index + 3] =
          j != n - 1 ? 4 * n * n + 2 * n + j + 1 : 4 * n * n + 2 * n;
      buff.fPols[index + 4] = 3 * n * n + n + j;
      buff.fPols[index + 5] = 4 * n * n + 2 * n + j;
      // outer (2*n*n+n, 2*n*n+2*n-1)
      index += 6 * n;
      buff.fPols[index] = c + 1;
      buff.fPols[index + 1] = 4;
      buff.fPols[index + 2] = 3 * n * n + j;
      buff.fPols[index + 3] = 4 * n * n + 3 * n + j;
      buff.fPols[index + 4] = 4 * n * n + n + j;
      buff.fPols[index + 5] =
          j != n - 1 ? 4 * n * n + 3 * n + j + 1 : 4 * n * n + 3 * n;
    }
  } else {
    // segments
    for (Int_t i = 0; i < n; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower radial (0, n*n-1)
        Int_t index = 3 * (i * n + j);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = i == 0 ? 2 * n * n : (i - 1) * n + j;
        buff.fSegs[index + 2] = i * n + j;

        // upper radial (n*n, 2*n*n-1)
        index += 3 * (n * n);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] =
            i == 0 ? 2 * n * n + 1 : n * n + (i - 1) * n + j;
        buff.fSegs[index + 2] = n * n + i * n + j;
      }
    }
    for (Int_t i = 0; i < n; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower circle (2*n*n, 3*n*n-1)
        Int_t index = 3 * (2 * n * n + i * n + j);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = i * n + j;
        buff.fSegs[index + 2] = j != n - 1 ? i * n + (j + 1) : i * n;
        // upper circle (3*n*n, 4*n*n-1)
        index += 3 * (n * n);
        buff.fSegs[index] = c;
        buff.fSegs[index + 1] = n * n + i * n + j;
        buff.fSegs[index + 2] =
            j != n - 1 ? n * n + i * n + (j + 1) : n * n + i * n;
      }
    }
    for (Int_t j = 0; j < n; j++) {
      // outer (4*n*n, 4*n*n+n-1)
      Int_t index = 3 * (4 * n * n + j);
      buff.fSegs[index] = c + 1;
      buff.fSegs[index + 1] = n * (n - 1) + j;
      buff.fSegs[index + 2] = n * (n - 1) + n * n + j;
    }

    // polygons
    for (Int_t j = 0; j < n; j++) {
      // lower center (0, n-1)
      Int_t index = 5 * j;
      buff.fPols[index] = c;
      buff.fPols[index + 1] = 3;
      buff.fPols[index + 2] = j;
      buff.fPols[index + 3] = 2 * n * n + j;
      buff.fPols[index + 4] = j != n - 1 ? j + 1 : 0;

      // upper center (n*n, 2*n*n-1)
      index += 6 * n * n - n;
      buff.fPols[index] = c;
      buff.fPols[index + 1] = 3;
      buff.fPols[index + 2] = n * n + j;
      buff.fPols[index + 3] = j != n - 1 ? n * n + j + 1 : n * n;
      buff.fPols[index + 4] = 3 * n * n + j;
    }

    for (Int_t i = 1; i < n; i++) {
      for (Int_t j = 0; j < n; j++) {
        // lower (n, n*n-1)
        Int_t index = 6 * (i * n + j) - n;
        buff.fPols[index] = c;
        buff.fPols[index + 1] = 4;
        buff.fPols[index + 2] = i * n + j;
        buff.fPols[index + 3] = 2 * n * n + i * n + j;
        buff.fPols[index + 4] = j != n - 1 ? i * n + (j + 1) : i * n;
        buff.fPols[index + 5] = 2 * n * n + (i - 1) * n + j;

        // upper (n*n+n, 2*n*n-1)
        index += 6 * n * n - n;
        buff.fPols[index] = c;
        buff.fPols[index + 1] = 4;
        buff.fPols[index + 2] = n * n + i * n + j;
        buff.fPols[index + 3] = 3 * n * n + (i - 1) * n + j;
        buff.fPols[index + 4] =
            j != n - 1 ? n * n + i * n + (j + 1) : n * n + i * n;
        buff.fPols[index + 5] = 3 * n * n + i * n + j;
      }
    }

    for (Int_t j = 0; j < n; j++) {
      // outer (2*n*n, 2*n*n+n-1)
      Int_t index = 6 * (2 * n * (n - 1) + j) + 5 * 2 * n;
      buff.fPols[index] = c + 1;
      buff.fPols[index + 1] = 4;
      buff.fPols[index + 2] = 2 * n * n + n * (n - 1) + j;
      buff.fPols[index + 3] = 4 * n * n + j;
      buff.fPols[index + 4] = 3 * n * n + n * (n - 1) + j;
      buff.fPols[index + 5] = j != n - 1 ? 4 * n * n + j + 1 : 4 * n * n;
    }
  }
}

//_____________________________________________________________________________
void AGeoAsphericDisk::Sizeof3D() const {
  ///// obsolete - to be removed
}
 AGeoAsphericDisk.cxx:1
 AGeoAsphericDisk.cxx:2
 AGeoAsphericDisk.cxx:3
 AGeoAsphericDisk.cxx:4
 AGeoAsphericDisk.cxx:5
 AGeoAsphericDisk.cxx:6
 AGeoAsphericDisk.cxx:7
 AGeoAsphericDisk.cxx:8
 AGeoAsphericDisk.cxx:9
 AGeoAsphericDisk.cxx:10
 AGeoAsphericDisk.cxx:11
 AGeoAsphericDisk.cxx:12
 AGeoAsphericDisk.cxx:13
 AGeoAsphericDisk.cxx:14
 AGeoAsphericDisk.cxx:15
 AGeoAsphericDisk.cxx:16
 AGeoAsphericDisk.cxx:17
 AGeoAsphericDisk.cxx:18
 AGeoAsphericDisk.cxx:19
 AGeoAsphericDisk.cxx:20
 AGeoAsphericDisk.cxx:21
 AGeoAsphericDisk.cxx:22
 AGeoAsphericDisk.cxx:23
 AGeoAsphericDisk.cxx:24
 AGeoAsphericDisk.cxx:25
 AGeoAsphericDisk.cxx:26
 AGeoAsphericDisk.cxx:27
 AGeoAsphericDisk.cxx:28
 AGeoAsphericDisk.cxx:29
 AGeoAsphericDisk.cxx:30
 AGeoAsphericDisk.cxx:31
 AGeoAsphericDisk.cxx:32
 AGeoAsphericDisk.cxx:33
 AGeoAsphericDisk.cxx:34
 AGeoAsphericDisk.cxx:35
 AGeoAsphericDisk.cxx:36
 AGeoAsphericDisk.cxx:37
 AGeoAsphericDisk.cxx:38
 AGeoAsphericDisk.cxx:39
 AGeoAsphericDisk.cxx:40
 AGeoAsphericDisk.cxx:41
 AGeoAsphericDisk.cxx:42
 AGeoAsphericDisk.cxx:43
 AGeoAsphericDisk.cxx:44
 AGeoAsphericDisk.cxx:45
 AGeoAsphericDisk.cxx:46
 AGeoAsphericDisk.cxx:47
 AGeoAsphericDisk.cxx:48
 AGeoAsphericDisk.cxx:49
 AGeoAsphericDisk.cxx:50
 AGeoAsphericDisk.cxx:51
 AGeoAsphericDisk.cxx:52
 AGeoAsphericDisk.cxx:53
 AGeoAsphericDisk.cxx:54
 AGeoAsphericDisk.cxx:55
 AGeoAsphericDisk.cxx:56
 AGeoAsphericDisk.cxx:57
 AGeoAsphericDisk.cxx:58
 AGeoAsphericDisk.cxx:59
 AGeoAsphericDisk.cxx:60
 AGeoAsphericDisk.cxx:61
 AGeoAsphericDisk.cxx:62
 AGeoAsphericDisk.cxx:63
 AGeoAsphericDisk.cxx:64
 AGeoAsphericDisk.cxx:65
 AGeoAsphericDisk.cxx:66
 AGeoAsphericDisk.cxx:67
 AGeoAsphericDisk.cxx:68
 AGeoAsphericDisk.cxx:69
 AGeoAsphericDisk.cxx:70
 AGeoAsphericDisk.cxx:71
 AGeoAsphericDisk.cxx:72
 AGeoAsphericDisk.cxx:73
 AGeoAsphericDisk.cxx:74
 AGeoAsphericDisk.cxx:75
 AGeoAsphericDisk.cxx:76
 AGeoAsphericDisk.cxx:77
 AGeoAsphericDisk.cxx:78
 AGeoAsphericDisk.cxx:79
 AGeoAsphericDisk.cxx:80
 AGeoAsphericDisk.cxx:81
 AGeoAsphericDisk.cxx:82
 AGeoAsphericDisk.cxx:83
 AGeoAsphericDisk.cxx:84
 AGeoAsphericDisk.cxx:85
 AGeoAsphericDisk.cxx:86
 AGeoAsphericDisk.cxx:87
 AGeoAsphericDisk.cxx:88
 AGeoAsphericDisk.cxx:89
 AGeoAsphericDisk.cxx:90
 AGeoAsphericDisk.cxx:91
 AGeoAsphericDisk.cxx:92
 AGeoAsphericDisk.cxx:93
 AGeoAsphericDisk.cxx:94
 AGeoAsphericDisk.cxx:95
 AGeoAsphericDisk.cxx:96
 AGeoAsphericDisk.cxx:97
 AGeoAsphericDisk.cxx:98
 AGeoAsphericDisk.cxx:99
 AGeoAsphericDisk.cxx:100
 AGeoAsphericDisk.cxx:101
 AGeoAsphericDisk.cxx:102
 AGeoAsphericDisk.cxx:103
 AGeoAsphericDisk.cxx:104
 AGeoAsphericDisk.cxx:105
 AGeoAsphericDisk.cxx:106
 AGeoAsphericDisk.cxx:107
 AGeoAsphericDisk.cxx:108
 AGeoAsphericDisk.cxx:109
 AGeoAsphericDisk.cxx:110
 AGeoAsphericDisk.cxx:111
 AGeoAsphericDisk.cxx:112
 AGeoAsphericDisk.cxx:113
 AGeoAsphericDisk.cxx:114
 AGeoAsphericDisk.cxx:115
 AGeoAsphericDisk.cxx:116
 AGeoAsphericDisk.cxx:117
 AGeoAsphericDisk.cxx:118
 AGeoAsphericDisk.cxx:119
 AGeoAsphericDisk.cxx:120
 AGeoAsphericDisk.cxx:121
 AGeoAsphericDisk.cxx:122
 AGeoAsphericDisk.cxx:123
 AGeoAsphericDisk.cxx:124
 AGeoAsphericDisk.cxx:125
 AGeoAsphericDisk.cxx:126
 AGeoAsphericDisk.cxx:127
 AGeoAsphericDisk.cxx:128
 AGeoAsphericDisk.cxx:129
 AGeoAsphericDisk.cxx:130
 AGeoAsphericDisk.cxx:131
 AGeoAsphericDisk.cxx:132
 AGeoAsphericDisk.cxx:133
 AGeoAsphericDisk.cxx:134
 AGeoAsphericDisk.cxx:135
 AGeoAsphericDisk.cxx:136
 AGeoAsphericDisk.cxx:137
 AGeoAsphericDisk.cxx:138
 AGeoAsphericDisk.cxx:139
 AGeoAsphericDisk.cxx:140
 AGeoAsphericDisk.cxx:141
 AGeoAsphericDisk.cxx:142
 AGeoAsphericDisk.cxx:143
 AGeoAsphericDisk.cxx:144
 AGeoAsphericDisk.cxx:145
 AGeoAsphericDisk.cxx:146
 AGeoAsphericDisk.cxx:147
 AGeoAsphericDisk.cxx:148
 AGeoAsphericDisk.cxx:149
 AGeoAsphericDisk.cxx:150
 AGeoAsphericDisk.cxx:151
 AGeoAsphericDisk.cxx:152
 AGeoAsphericDisk.cxx:153
 AGeoAsphericDisk.cxx:154
 AGeoAsphericDisk.cxx:155
 AGeoAsphericDisk.cxx:156
 AGeoAsphericDisk.cxx:157
 AGeoAsphericDisk.cxx:158
 AGeoAsphericDisk.cxx:159
 AGeoAsphericDisk.cxx:160
 AGeoAsphericDisk.cxx:161
 AGeoAsphericDisk.cxx:162
 AGeoAsphericDisk.cxx:163
 AGeoAsphericDisk.cxx:164
 AGeoAsphericDisk.cxx:165
 AGeoAsphericDisk.cxx:166
 AGeoAsphericDisk.cxx:167
 AGeoAsphericDisk.cxx:168
 AGeoAsphericDisk.cxx:169
 AGeoAsphericDisk.cxx:170
 AGeoAsphericDisk.cxx:171
 AGeoAsphericDisk.cxx:172
 AGeoAsphericDisk.cxx:173
 AGeoAsphericDisk.cxx:174
 AGeoAsphericDisk.cxx:175
 AGeoAsphericDisk.cxx:176
 AGeoAsphericDisk.cxx:177
 AGeoAsphericDisk.cxx:178
 AGeoAsphericDisk.cxx:179
 AGeoAsphericDisk.cxx:180
 AGeoAsphericDisk.cxx:181
 AGeoAsphericDisk.cxx:182
 AGeoAsphericDisk.cxx:183
 AGeoAsphericDisk.cxx:184
 AGeoAsphericDisk.cxx:185
 AGeoAsphericDisk.cxx:186
 AGeoAsphericDisk.cxx:187
 AGeoAsphericDisk.cxx:188
 AGeoAsphericDisk.cxx:189
 AGeoAsphericDisk.cxx:190
 AGeoAsphericDisk.cxx:191
 AGeoAsphericDisk.cxx:192
 AGeoAsphericDisk.cxx:193
 AGeoAsphericDisk.cxx:194
 AGeoAsphericDisk.cxx:195
 AGeoAsphericDisk.cxx:196
 AGeoAsphericDisk.cxx:197
 AGeoAsphericDisk.cxx:198
 AGeoAsphericDisk.cxx:199
 AGeoAsphericDisk.cxx:200
 AGeoAsphericDisk.cxx:201
 AGeoAsphericDisk.cxx:202
 AGeoAsphericDisk.cxx:203
 AGeoAsphericDisk.cxx:204
 AGeoAsphericDisk.cxx:205
 AGeoAsphericDisk.cxx:206
 AGeoAsphericDisk.cxx:207
 AGeoAsphericDisk.cxx:208
 AGeoAsphericDisk.cxx:209
 AGeoAsphericDisk.cxx:210
 AGeoAsphericDisk.cxx:211
 AGeoAsphericDisk.cxx:212
 AGeoAsphericDisk.cxx:213
 AGeoAsphericDisk.cxx:214
 AGeoAsphericDisk.cxx:215
 AGeoAsphericDisk.cxx:216
 AGeoAsphericDisk.cxx:217
 AGeoAsphericDisk.cxx:218
 AGeoAsphericDisk.cxx:219
 AGeoAsphericDisk.cxx:220
 AGeoAsphericDisk.cxx:221
 AGeoAsphericDisk.cxx:222
 AGeoAsphericDisk.cxx:223
 AGeoAsphericDisk.cxx:224
 AGeoAsphericDisk.cxx:225
 AGeoAsphericDisk.cxx:226
 AGeoAsphericDisk.cxx:227
 AGeoAsphericDisk.cxx:228
 AGeoAsphericDisk.cxx:229
 AGeoAsphericDisk.cxx:230
 AGeoAsphericDisk.cxx:231
 AGeoAsphericDisk.cxx:232
 AGeoAsphericDisk.cxx:233
 AGeoAsphericDisk.cxx:234
 AGeoAsphericDisk.cxx:235
 AGeoAsphericDisk.cxx:236
 AGeoAsphericDisk.cxx:237
 AGeoAsphericDisk.cxx:238
 AGeoAsphericDisk.cxx:239
 AGeoAsphericDisk.cxx:240
 AGeoAsphericDisk.cxx:241
 AGeoAsphericDisk.cxx:242
 AGeoAsphericDisk.cxx:243
 AGeoAsphericDisk.cxx:244
 AGeoAsphericDisk.cxx:245
 AGeoAsphericDisk.cxx:246
 AGeoAsphericDisk.cxx:247
 AGeoAsphericDisk.cxx:248
 AGeoAsphericDisk.cxx:249
 AGeoAsphericDisk.cxx:250
 AGeoAsphericDisk.cxx:251
 AGeoAsphericDisk.cxx:252
 AGeoAsphericDisk.cxx:253
 AGeoAsphericDisk.cxx:254
 AGeoAsphericDisk.cxx:255
 AGeoAsphericDisk.cxx:256
 AGeoAsphericDisk.cxx:257
 AGeoAsphericDisk.cxx:258
 AGeoAsphericDisk.cxx:259
 AGeoAsphericDisk.cxx:260
 AGeoAsphericDisk.cxx:261
 AGeoAsphericDisk.cxx:262
 AGeoAsphericDisk.cxx:263
 AGeoAsphericDisk.cxx:264
 AGeoAsphericDisk.cxx:265
 AGeoAsphericDisk.cxx:266
 AGeoAsphericDisk.cxx:267
 AGeoAsphericDisk.cxx:268
 AGeoAsphericDisk.cxx:269
 AGeoAsphericDisk.cxx:270
 AGeoAsphericDisk.cxx:271
 AGeoAsphericDisk.cxx:272
 AGeoAsphericDisk.cxx:273
 AGeoAsphericDisk.cxx:274
 AGeoAsphericDisk.cxx:275
 AGeoAsphericDisk.cxx:276
 AGeoAsphericDisk.cxx:277
 AGeoAsphericDisk.cxx:278
 AGeoAsphericDisk.cxx:279
 AGeoAsphericDisk.cxx:280
 AGeoAsphericDisk.cxx:281
 AGeoAsphericDisk.cxx:282
 AGeoAsphericDisk.cxx:283
 AGeoAsphericDisk.cxx:284
 AGeoAsphericDisk.cxx:285
 AGeoAsphericDisk.cxx:286
 AGeoAsphericDisk.cxx:287
 AGeoAsphericDisk.cxx:288
 AGeoAsphericDisk.cxx:289
 AGeoAsphericDisk.cxx:290
 AGeoAsphericDisk.cxx:291
 AGeoAsphericDisk.cxx:292
 AGeoAsphericDisk.cxx:293
 AGeoAsphericDisk.cxx:294
 AGeoAsphericDisk.cxx:295
 AGeoAsphericDisk.cxx:296
 AGeoAsphericDisk.cxx:297
 AGeoAsphericDisk.cxx:298
 AGeoAsphericDisk.cxx:299
 AGeoAsphericDisk.cxx:300
 AGeoAsphericDisk.cxx:301
 AGeoAsphericDisk.cxx:302
 AGeoAsphericDisk.cxx:303
 AGeoAsphericDisk.cxx:304
 AGeoAsphericDisk.cxx:305
 AGeoAsphericDisk.cxx:306
 AGeoAsphericDisk.cxx:307
 AGeoAsphericDisk.cxx:308
 AGeoAsphericDisk.cxx:309
 AGeoAsphericDisk.cxx:310
 AGeoAsphericDisk.cxx:311
 AGeoAsphericDisk.cxx:312
 AGeoAsphericDisk.cxx:313
 AGeoAsphericDisk.cxx:314
 AGeoAsphericDisk.cxx:315
 AGeoAsphericDisk.cxx:316
 AGeoAsphericDisk.cxx:317
 AGeoAsphericDisk.cxx:318
 AGeoAsphericDisk.cxx:319
 AGeoAsphericDisk.cxx:320
 AGeoAsphericDisk.cxx:321
 AGeoAsphericDisk.cxx:322
 AGeoAsphericDisk.cxx:323
 AGeoAsphericDisk.cxx:324
 AGeoAsphericDisk.cxx:325
 AGeoAsphericDisk.cxx:326
 AGeoAsphericDisk.cxx:327
 AGeoAsphericDisk.cxx:328
 AGeoAsphericDisk.cxx:329
 AGeoAsphericDisk.cxx:330
 AGeoAsphericDisk.cxx:331
 AGeoAsphericDisk.cxx:332
 AGeoAsphericDisk.cxx:333
 AGeoAsphericDisk.cxx:334
 AGeoAsphericDisk.cxx:335
 AGeoAsphericDisk.cxx:336
 AGeoAsphericDisk.cxx:337
 AGeoAsphericDisk.cxx:338
 AGeoAsphericDisk.cxx:339
 AGeoAsphericDisk.cxx:340
 AGeoAsphericDisk.cxx:341
 AGeoAsphericDisk.cxx:342
 AGeoAsphericDisk.cxx:343
 AGeoAsphericDisk.cxx:344
 AGeoAsphericDisk.cxx:345
 AGeoAsphericDisk.cxx:346
 AGeoAsphericDisk.cxx:347
 AGeoAsphericDisk.cxx:348
 AGeoAsphericDisk.cxx:349
 AGeoAsphericDisk.cxx:350
 AGeoAsphericDisk.cxx:351
 AGeoAsphericDisk.cxx:352
 AGeoAsphericDisk.cxx:353
 AGeoAsphericDisk.cxx:354
 AGeoAsphericDisk.cxx:355
 AGeoAsphericDisk.cxx:356
 AGeoAsphericDisk.cxx:357
 AGeoAsphericDisk.cxx:358
 AGeoAsphericDisk.cxx:359
 AGeoAsphericDisk.cxx:360
 AGeoAsphericDisk.cxx:361
 AGeoAsphericDisk.cxx:362
 AGeoAsphericDisk.cxx:363
 AGeoAsphericDisk.cxx:364
 AGeoAsphericDisk.cxx:365
 AGeoAsphericDisk.cxx:366
 AGeoAsphericDisk.cxx:367
 AGeoAsphericDisk.cxx:368
 AGeoAsphericDisk.cxx:369
 AGeoAsphericDisk.cxx:370
 AGeoAsphericDisk.cxx:371
 AGeoAsphericDisk.cxx:372
 AGeoAsphericDisk.cxx:373
 AGeoAsphericDisk.cxx:374
 AGeoAsphericDisk.cxx:375
 AGeoAsphericDisk.cxx:376
 AGeoAsphericDisk.cxx:377
 AGeoAsphericDisk.cxx:378
 AGeoAsphericDisk.cxx:379
 AGeoAsphericDisk.cxx:380
 AGeoAsphericDisk.cxx:381
 AGeoAsphericDisk.cxx:382
 AGeoAsphericDisk.cxx:383
 AGeoAsphericDisk.cxx:384
 AGeoAsphericDisk.cxx:385
 AGeoAsphericDisk.cxx:386
 AGeoAsphericDisk.cxx:387
 AGeoAsphericDisk.cxx:388
 AGeoAsphericDisk.cxx:389
 AGeoAsphericDisk.cxx:390
 AGeoAsphericDisk.cxx:391
 AGeoAsphericDisk.cxx:392
 AGeoAsphericDisk.cxx:393
 AGeoAsphericDisk.cxx:394
 AGeoAsphericDisk.cxx:395
 AGeoAsphericDisk.cxx:396
 AGeoAsphericDisk.cxx:397
 AGeoAsphericDisk.cxx:398
 AGeoAsphericDisk.cxx:399
 AGeoAsphericDisk.cxx:400
 AGeoAsphericDisk.cxx:401
 AGeoAsphericDisk.cxx:402
 AGeoAsphericDisk.cxx:403
 AGeoAsphericDisk.cxx:404
 AGeoAsphericDisk.cxx:405
 AGeoAsphericDisk.cxx:406
 AGeoAsphericDisk.cxx:407
 AGeoAsphericDisk.cxx:408
 AGeoAsphericDisk.cxx:409
 AGeoAsphericDisk.cxx:410
 AGeoAsphericDisk.cxx:411
 AGeoAsphericDisk.cxx:412
 AGeoAsphericDisk.cxx:413
 AGeoAsphericDisk.cxx:414
 AGeoAsphericDisk.cxx:415
 AGeoAsphericDisk.cxx:416
 AGeoAsphericDisk.cxx:417
 AGeoAsphericDisk.cxx:418
 AGeoAsphericDisk.cxx:419
 AGeoAsphericDisk.cxx:420
 AGeoAsphericDisk.cxx:421
 AGeoAsphericDisk.cxx:422
 AGeoAsphericDisk.cxx:423
 AGeoAsphericDisk.cxx:424
 AGeoAsphericDisk.cxx:425
 AGeoAsphericDisk.cxx:426
 AGeoAsphericDisk.cxx:427
 AGeoAsphericDisk.cxx:428
 AGeoAsphericDisk.cxx:429
 AGeoAsphericDisk.cxx:430
 AGeoAsphericDisk.cxx:431
 AGeoAsphericDisk.cxx:432
 AGeoAsphericDisk.cxx:433
 AGeoAsphericDisk.cxx:434
 AGeoAsphericDisk.cxx:435
 AGeoAsphericDisk.cxx:436
 AGeoAsphericDisk.cxx:437
 AGeoAsphericDisk.cxx:438
 AGeoAsphericDisk.cxx:439
 AGeoAsphericDisk.cxx:440
 AGeoAsphericDisk.cxx:441
 AGeoAsphericDisk.cxx:442
 AGeoAsphericDisk.cxx:443
 AGeoAsphericDisk.cxx:444
 AGeoAsphericDisk.cxx:445
 AGeoAsphericDisk.cxx:446
 AGeoAsphericDisk.cxx:447
 AGeoAsphericDisk.cxx:448
 AGeoAsphericDisk.cxx:449
 AGeoAsphericDisk.cxx:450
 AGeoAsphericDisk.cxx:451
 AGeoAsphericDisk.cxx:452
 AGeoAsphericDisk.cxx:453
 AGeoAsphericDisk.cxx:454
 AGeoAsphericDisk.cxx:455
 AGeoAsphericDisk.cxx:456
 AGeoAsphericDisk.cxx:457
 AGeoAsphericDisk.cxx:458
 AGeoAsphericDisk.cxx:459
 AGeoAsphericDisk.cxx:460
 AGeoAsphericDisk.cxx:461
 AGeoAsphericDisk.cxx:462
 AGeoAsphericDisk.cxx:463
 AGeoAsphericDisk.cxx:464
 AGeoAsphericDisk.cxx:465
 AGeoAsphericDisk.cxx:466
 AGeoAsphericDisk.cxx:467
 AGeoAsphericDisk.cxx:468
 AGeoAsphericDisk.cxx:469
 AGeoAsphericDisk.cxx:470
 AGeoAsphericDisk.cxx:471
 AGeoAsphericDisk.cxx:472
 AGeoAsphericDisk.cxx:473
 AGeoAsphericDisk.cxx:474
 AGeoAsphericDisk.cxx:475
 AGeoAsphericDisk.cxx:476
 AGeoAsphericDisk.cxx:477
 AGeoAsphericDisk.cxx:478
 AGeoAsphericDisk.cxx:479
 AGeoAsphericDisk.cxx:480
 AGeoAsphericDisk.cxx:481
 AGeoAsphericDisk.cxx:482
 AGeoAsphericDisk.cxx:483
 AGeoAsphericDisk.cxx:484
 AGeoAsphericDisk.cxx:485
 AGeoAsphericDisk.cxx:486
 AGeoAsphericDisk.cxx:487
 AGeoAsphericDisk.cxx:488
 AGeoAsphericDisk.cxx:489
 AGeoAsphericDisk.cxx:490
 AGeoAsphericDisk.cxx:491
 AGeoAsphericDisk.cxx:492
 AGeoAsphericDisk.cxx:493
 AGeoAsphericDisk.cxx:494
 AGeoAsphericDisk.cxx:495
 AGeoAsphericDisk.cxx:496
 AGeoAsphericDisk.cxx:497
 AGeoAsphericDisk.cxx:498
 AGeoAsphericDisk.cxx:499
 AGeoAsphericDisk.cxx:500
 AGeoAsphericDisk.cxx:501
 AGeoAsphericDisk.cxx:502
 AGeoAsphericDisk.cxx:503
 AGeoAsphericDisk.cxx:504
 AGeoAsphericDisk.cxx:505
 AGeoAsphericDisk.cxx:506
 AGeoAsphericDisk.cxx:507
 AGeoAsphericDisk.cxx:508
 AGeoAsphericDisk.cxx:509
 AGeoAsphericDisk.cxx:510
 AGeoAsphericDisk.cxx:511
 AGeoAsphericDisk.cxx:512
 AGeoAsphericDisk.cxx:513
 AGeoAsphericDisk.cxx:514
 AGeoAsphericDisk.cxx:515
 AGeoAsphericDisk.cxx:516
 AGeoAsphericDisk.cxx:517
 AGeoAsphericDisk.cxx:518
 AGeoAsphericDisk.cxx:519
 AGeoAsphericDisk.cxx:520
 AGeoAsphericDisk.cxx:521
 AGeoAsphericDisk.cxx:522
 AGeoAsphericDisk.cxx:523
 AGeoAsphericDisk.cxx:524
 AGeoAsphericDisk.cxx:525
 AGeoAsphericDisk.cxx:526
 AGeoAsphericDisk.cxx:527
 AGeoAsphericDisk.cxx:528
 AGeoAsphericDisk.cxx:529
 AGeoAsphericDisk.cxx:530
 AGeoAsphericDisk.cxx:531
 AGeoAsphericDisk.cxx:532
 AGeoAsphericDisk.cxx:533
 AGeoAsphericDisk.cxx:534
 AGeoAsphericDisk.cxx:535
 AGeoAsphericDisk.cxx:536
 AGeoAsphericDisk.cxx:537
 AGeoAsphericDisk.cxx:538
 AGeoAsphericDisk.cxx:539
 AGeoAsphericDisk.cxx:540
 AGeoAsphericDisk.cxx:541
 AGeoAsphericDisk.cxx:542
 AGeoAsphericDisk.cxx:543
 AGeoAsphericDisk.cxx:544
 AGeoAsphericDisk.cxx:545
 AGeoAsphericDisk.cxx:546
 AGeoAsphericDisk.cxx:547
 AGeoAsphericDisk.cxx:548
 AGeoAsphericDisk.cxx:549
 AGeoAsphericDisk.cxx:550
 AGeoAsphericDisk.cxx:551
 AGeoAsphericDisk.cxx:552
 AGeoAsphericDisk.cxx:553
 AGeoAsphericDisk.cxx:554
 AGeoAsphericDisk.cxx:555
 AGeoAsphericDisk.cxx:556
 AGeoAsphericDisk.cxx:557
 AGeoAsphericDisk.cxx:558
 AGeoAsphericDisk.cxx:559
 AGeoAsphericDisk.cxx:560
 AGeoAsphericDisk.cxx:561
 AGeoAsphericDisk.cxx:562
 AGeoAsphericDisk.cxx:563
 AGeoAsphericDisk.cxx:564
 AGeoAsphericDisk.cxx:565
 AGeoAsphericDisk.cxx:566
 AGeoAsphericDisk.cxx:567
 AGeoAsphericDisk.cxx:568
 AGeoAsphericDisk.cxx:569
 AGeoAsphericDisk.cxx:570
 AGeoAsphericDisk.cxx:571
 AGeoAsphericDisk.cxx:572
 AGeoAsphericDisk.cxx:573
 AGeoAsphericDisk.cxx:574
 AGeoAsphericDisk.cxx:575
 AGeoAsphericDisk.cxx:576
 AGeoAsphericDisk.cxx:577
 AGeoAsphericDisk.cxx:578
 AGeoAsphericDisk.cxx:579
 AGeoAsphericDisk.cxx:580
 AGeoAsphericDisk.cxx:581
 AGeoAsphericDisk.cxx:582
 AGeoAsphericDisk.cxx:583
 AGeoAsphericDisk.cxx:584
 AGeoAsphericDisk.cxx:585
 AGeoAsphericDisk.cxx:586
 AGeoAsphericDisk.cxx:587
 AGeoAsphericDisk.cxx:588
 AGeoAsphericDisk.cxx:589
 AGeoAsphericDisk.cxx:590
 AGeoAsphericDisk.cxx:591
 AGeoAsphericDisk.cxx:592
 AGeoAsphericDisk.cxx:593
 AGeoAsphericDisk.cxx:594
 AGeoAsphericDisk.cxx:595
 AGeoAsphericDisk.cxx:596
 AGeoAsphericDisk.cxx:597
 AGeoAsphericDisk.cxx:598
 AGeoAsphericDisk.cxx:599
 AGeoAsphericDisk.cxx:600
 AGeoAsphericDisk.cxx:601
 AGeoAsphericDisk.cxx:602
 AGeoAsphericDisk.cxx:603
 AGeoAsphericDisk.cxx:604
 AGeoAsphericDisk.cxx:605
 AGeoAsphericDisk.cxx:606
 AGeoAsphericDisk.cxx:607
 AGeoAsphericDisk.cxx:608
 AGeoAsphericDisk.cxx:609
 AGeoAsphericDisk.cxx:610
 AGeoAsphericDisk.cxx:611
 AGeoAsphericDisk.cxx:612
 AGeoAsphericDisk.cxx:613
 AGeoAsphericDisk.cxx:614
 AGeoAsphericDisk.cxx:615
 AGeoAsphericDisk.cxx:616
 AGeoAsphericDisk.cxx:617
 AGeoAsphericDisk.cxx:618
 AGeoAsphericDisk.cxx:619
 AGeoAsphericDisk.cxx:620
 AGeoAsphericDisk.cxx:621
 AGeoAsphericDisk.cxx:622
 AGeoAsphericDisk.cxx:623
 AGeoAsphericDisk.cxx:624
 AGeoAsphericDisk.cxx:625
 AGeoAsphericDisk.cxx:626
 AGeoAsphericDisk.cxx:627
 AGeoAsphericDisk.cxx:628
 AGeoAsphericDisk.cxx:629
 AGeoAsphericDisk.cxx:630
 AGeoAsphericDisk.cxx:631
 AGeoAsphericDisk.cxx:632
 AGeoAsphericDisk.cxx:633
 AGeoAsphericDisk.cxx:634
 AGeoAsphericDisk.cxx:635
 AGeoAsphericDisk.cxx:636
 AGeoAsphericDisk.cxx:637
 AGeoAsphericDisk.cxx:638
 AGeoAsphericDisk.cxx:639
 AGeoAsphericDisk.cxx:640
 AGeoAsphericDisk.cxx:641
 AGeoAsphericDisk.cxx:642
 AGeoAsphericDisk.cxx:643
 AGeoAsphericDisk.cxx:644
 AGeoAsphericDisk.cxx:645
 AGeoAsphericDisk.cxx:646
 AGeoAsphericDisk.cxx:647
 AGeoAsphericDisk.cxx:648
 AGeoAsphericDisk.cxx:649
 AGeoAsphericDisk.cxx:650
 AGeoAsphericDisk.cxx:651
 AGeoAsphericDisk.cxx:652
 AGeoAsphericDisk.cxx:653
 AGeoAsphericDisk.cxx:654
 AGeoAsphericDisk.cxx:655
 AGeoAsphericDisk.cxx:656
 AGeoAsphericDisk.cxx:657
 AGeoAsphericDisk.cxx:658
 AGeoAsphericDisk.cxx:659
 AGeoAsphericDisk.cxx:660
 AGeoAsphericDisk.cxx:661
 AGeoAsphericDisk.cxx:662
 AGeoAsphericDisk.cxx:663
 AGeoAsphericDisk.cxx:664
 AGeoAsphericDisk.cxx:665
 AGeoAsphericDisk.cxx:666
 AGeoAsphericDisk.cxx:667
 AGeoAsphericDisk.cxx:668
 AGeoAsphericDisk.cxx:669
 AGeoAsphericDisk.cxx:670
 AGeoAsphericDisk.cxx:671
 AGeoAsphericDisk.cxx:672
 AGeoAsphericDisk.cxx:673
 AGeoAsphericDisk.cxx:674
 AGeoAsphericDisk.cxx:675
 AGeoAsphericDisk.cxx:676
 AGeoAsphericDisk.cxx:677
 AGeoAsphericDisk.cxx:678
 AGeoAsphericDisk.cxx:679
 AGeoAsphericDisk.cxx:680
 AGeoAsphericDisk.cxx:681
 AGeoAsphericDisk.cxx:682
 AGeoAsphericDisk.cxx:683
 AGeoAsphericDisk.cxx:684
 AGeoAsphericDisk.cxx:685
 AGeoAsphericDisk.cxx:686
 AGeoAsphericDisk.cxx:687
 AGeoAsphericDisk.cxx:688
 AGeoAsphericDisk.cxx:689
 AGeoAsphericDisk.cxx:690
 AGeoAsphericDisk.cxx:691
 AGeoAsphericDisk.cxx:692
 AGeoAsphericDisk.cxx:693
 AGeoAsphericDisk.cxx:694
 AGeoAsphericDisk.cxx:695
 AGeoAsphericDisk.cxx:696
 AGeoAsphericDisk.cxx:697
 AGeoAsphericDisk.cxx:698
 AGeoAsphericDisk.cxx:699
 AGeoAsphericDisk.cxx:700
 AGeoAsphericDisk.cxx:701
 AGeoAsphericDisk.cxx:702
 AGeoAsphericDisk.cxx:703
 AGeoAsphericDisk.cxx:704
 AGeoAsphericDisk.cxx:705
 AGeoAsphericDisk.cxx:706
 AGeoAsphericDisk.cxx:707
 AGeoAsphericDisk.cxx:708
 AGeoAsphericDisk.cxx:709
 AGeoAsphericDisk.cxx:710
 AGeoAsphericDisk.cxx:711
 AGeoAsphericDisk.cxx:712
 AGeoAsphericDisk.cxx:713
 AGeoAsphericDisk.cxx:714
 AGeoAsphericDisk.cxx:715
 AGeoAsphericDisk.cxx:716
 AGeoAsphericDisk.cxx:717
 AGeoAsphericDisk.cxx:718
 AGeoAsphericDisk.cxx:719
 AGeoAsphericDisk.cxx:720
 AGeoAsphericDisk.cxx:721
 AGeoAsphericDisk.cxx:722
 AGeoAsphericDisk.cxx:723
 AGeoAsphericDisk.cxx:724
 AGeoAsphericDisk.cxx:725
 AGeoAsphericDisk.cxx:726
 AGeoAsphericDisk.cxx:727
 AGeoAsphericDisk.cxx:728
 AGeoAsphericDisk.cxx:729
 AGeoAsphericDisk.cxx:730
 AGeoAsphericDisk.cxx:731
 AGeoAsphericDisk.cxx:732
 AGeoAsphericDisk.cxx:733
 AGeoAsphericDisk.cxx:734
 AGeoAsphericDisk.cxx:735
 AGeoAsphericDisk.cxx:736
 AGeoAsphericDisk.cxx:737
 AGeoAsphericDisk.cxx:738
 AGeoAsphericDisk.cxx:739
 AGeoAsphericDisk.cxx:740
 AGeoAsphericDisk.cxx:741
 AGeoAsphericDisk.cxx:742
 AGeoAsphericDisk.cxx:743
 AGeoAsphericDisk.cxx:744
 AGeoAsphericDisk.cxx:745
 AGeoAsphericDisk.cxx:746
 AGeoAsphericDisk.cxx:747
 AGeoAsphericDisk.cxx:748
 AGeoAsphericDisk.cxx:749
 AGeoAsphericDisk.cxx:750
 AGeoAsphericDisk.cxx:751
 AGeoAsphericDisk.cxx:752
 AGeoAsphericDisk.cxx:753
 AGeoAsphericDisk.cxx:754
 AGeoAsphericDisk.cxx:755
 AGeoAsphericDisk.cxx:756
 AGeoAsphericDisk.cxx:757
 AGeoAsphericDisk.cxx:758
 AGeoAsphericDisk.cxx:759
 AGeoAsphericDisk.cxx:760
 AGeoAsphericDisk.cxx:761
 AGeoAsphericDisk.cxx:762
 AGeoAsphericDisk.cxx:763
 AGeoAsphericDisk.cxx:764
 AGeoAsphericDisk.cxx:765
 AGeoAsphericDisk.cxx:766
 AGeoAsphericDisk.cxx:767
 AGeoAsphericDisk.cxx:768
 AGeoAsphericDisk.cxx:769
 AGeoAsphericDisk.cxx:770
 AGeoAsphericDisk.cxx:771
 AGeoAsphericDisk.cxx:772
 AGeoAsphericDisk.cxx:773
 AGeoAsphericDisk.cxx:774
 AGeoAsphericDisk.cxx:775
 AGeoAsphericDisk.cxx:776
 AGeoAsphericDisk.cxx:777
 AGeoAsphericDisk.cxx:778
 AGeoAsphericDisk.cxx:779
 AGeoAsphericDisk.cxx:780
 AGeoAsphericDisk.cxx:781
 AGeoAsphericDisk.cxx:782
 AGeoAsphericDisk.cxx:783
 AGeoAsphericDisk.cxx:784
 AGeoAsphericDisk.cxx:785
 AGeoAsphericDisk.cxx:786
 AGeoAsphericDisk.cxx:787
 AGeoAsphericDisk.cxx:788
 AGeoAsphericDisk.cxx:789
 AGeoAsphericDisk.cxx:790
 AGeoAsphericDisk.cxx:791
 AGeoAsphericDisk.cxx:792
 AGeoAsphericDisk.cxx:793
 AGeoAsphericDisk.cxx:794
 AGeoAsphericDisk.cxx:795
 AGeoAsphericDisk.cxx:796
 AGeoAsphericDisk.cxx:797
 AGeoAsphericDisk.cxx:798
 AGeoAsphericDisk.cxx:799
 AGeoAsphericDisk.cxx:800
 AGeoAsphericDisk.cxx:801
 AGeoAsphericDisk.cxx:802
 AGeoAsphericDisk.cxx:803
 AGeoAsphericDisk.cxx:804
 AGeoAsphericDisk.cxx:805
 AGeoAsphericDisk.cxx:806
 AGeoAsphericDisk.cxx:807
 AGeoAsphericDisk.cxx:808
 AGeoAsphericDisk.cxx:809
 AGeoAsphericDisk.cxx:810
 AGeoAsphericDisk.cxx:811
 AGeoAsphericDisk.cxx:812
 AGeoAsphericDisk.cxx:813
 AGeoAsphericDisk.cxx:814
 AGeoAsphericDisk.cxx:815
 AGeoAsphericDisk.cxx:816
 AGeoAsphericDisk.cxx:817
 AGeoAsphericDisk.cxx:818
 AGeoAsphericDisk.cxx:819
 AGeoAsphericDisk.cxx:820
 AGeoAsphericDisk.cxx:821
 AGeoAsphericDisk.cxx:822
 AGeoAsphericDisk.cxx:823
 AGeoAsphericDisk.cxx:824
 AGeoAsphericDisk.cxx:825
 AGeoAsphericDisk.cxx:826
 AGeoAsphericDisk.cxx:827
 AGeoAsphericDisk.cxx:828
 AGeoAsphericDisk.cxx:829
 AGeoAsphericDisk.cxx:830
 AGeoAsphericDisk.cxx:831
 AGeoAsphericDisk.cxx:832
 AGeoAsphericDisk.cxx:833
 AGeoAsphericDisk.cxx:834
 AGeoAsphericDisk.cxx:835
 AGeoAsphericDisk.cxx:836
 AGeoAsphericDisk.cxx:837
 AGeoAsphericDisk.cxx:838
 AGeoAsphericDisk.cxx:839
 AGeoAsphericDisk.cxx:840
 AGeoAsphericDisk.cxx:841
 AGeoAsphericDisk.cxx:842
 AGeoAsphericDisk.cxx:843
 AGeoAsphericDisk.cxx:844
 AGeoAsphericDisk.cxx:845
 AGeoAsphericDisk.cxx:846
 AGeoAsphericDisk.cxx:847
 AGeoAsphericDisk.cxx:848
 AGeoAsphericDisk.cxx:849
 AGeoAsphericDisk.cxx:850
 AGeoAsphericDisk.cxx:851
 AGeoAsphericDisk.cxx:852
 AGeoAsphericDisk.cxx:853
 AGeoAsphericDisk.cxx:854
 AGeoAsphericDisk.cxx:855
 AGeoAsphericDisk.cxx:856
 AGeoAsphericDisk.cxx:857
 AGeoAsphericDisk.cxx:858
 AGeoAsphericDisk.cxx:859
 AGeoAsphericDisk.cxx:860
 AGeoAsphericDisk.cxx:861
 AGeoAsphericDisk.cxx:862
 AGeoAsphericDisk.cxx:863
 AGeoAsphericDisk.cxx:864
 AGeoAsphericDisk.cxx:865
 AGeoAsphericDisk.cxx:866
 AGeoAsphericDisk.cxx:867
 AGeoAsphericDisk.cxx:868
 AGeoAsphericDisk.cxx:869
 AGeoAsphericDisk.cxx:870
 AGeoAsphericDisk.cxx:871
 AGeoAsphericDisk.cxx:872
 AGeoAsphericDisk.cxx:873
 AGeoAsphericDisk.cxx:874
 AGeoAsphericDisk.cxx:875
 AGeoAsphericDisk.cxx:876
 AGeoAsphericDisk.cxx:877
 AGeoAsphericDisk.cxx:878
 AGeoAsphericDisk.cxx:879
 AGeoAsphericDisk.cxx:880
 AGeoAsphericDisk.cxx:881
 AGeoAsphericDisk.cxx:882
 AGeoAsphericDisk.cxx:883
 AGeoAsphericDisk.cxx:884
 AGeoAsphericDisk.cxx:885
 AGeoAsphericDisk.cxx:886
 AGeoAsphericDisk.cxx:887
 AGeoAsphericDisk.cxx:888
 AGeoAsphericDisk.cxx:889
 AGeoAsphericDisk.cxx:890
 AGeoAsphericDisk.cxx:891
 AGeoAsphericDisk.cxx:892
 AGeoAsphericDisk.cxx:893
 AGeoAsphericDisk.cxx:894
 AGeoAsphericDisk.cxx:895
 AGeoAsphericDisk.cxx:896
 AGeoAsphericDisk.cxx:897
 AGeoAsphericDisk.cxx:898
 AGeoAsphericDisk.cxx:899
 AGeoAsphericDisk.cxx:900
 AGeoAsphericDisk.cxx:901
 AGeoAsphericDisk.cxx:902
 AGeoAsphericDisk.cxx:903
 AGeoAsphericDisk.cxx:904
 AGeoAsphericDisk.cxx:905
 AGeoAsphericDisk.cxx:906
 AGeoAsphericDisk.cxx:907
 AGeoAsphericDisk.cxx:908
 AGeoAsphericDisk.cxx:909
 AGeoAsphericDisk.cxx:910
 AGeoAsphericDisk.cxx:911
 AGeoAsphericDisk.cxx:912
 AGeoAsphericDisk.cxx:913
 AGeoAsphericDisk.cxx:914
 AGeoAsphericDisk.cxx:915
 AGeoAsphericDisk.cxx:916
 AGeoAsphericDisk.cxx:917
 AGeoAsphericDisk.cxx:918
 AGeoAsphericDisk.cxx:919
 AGeoAsphericDisk.cxx:920
 AGeoAsphericDisk.cxx:921
 AGeoAsphericDisk.cxx:922
 AGeoAsphericDisk.cxx:923
 AGeoAsphericDisk.cxx:924
 AGeoAsphericDisk.cxx:925
 AGeoAsphericDisk.cxx:926
 AGeoAsphericDisk.cxx:927
 AGeoAsphericDisk.cxx:928
 AGeoAsphericDisk.cxx:929
 AGeoAsphericDisk.cxx:930
 AGeoAsphericDisk.cxx:931
 AGeoAsphericDisk.cxx:932
 AGeoAsphericDisk.cxx:933
 AGeoAsphericDisk.cxx:934
 AGeoAsphericDisk.cxx:935
 AGeoAsphericDisk.cxx:936
 AGeoAsphericDisk.cxx:937
 AGeoAsphericDisk.cxx:938
 AGeoAsphericDisk.cxx:939
 AGeoAsphericDisk.cxx:940
 AGeoAsphericDisk.cxx:941
 AGeoAsphericDisk.cxx:942
 AGeoAsphericDisk.cxx:943
 AGeoAsphericDisk.cxx:944
 AGeoAsphericDisk.cxx:945
 AGeoAsphericDisk.cxx:946
 AGeoAsphericDisk.cxx:947
 AGeoAsphericDisk.cxx:948
 AGeoAsphericDisk.cxx:949
 AGeoAsphericDisk.cxx:950
 AGeoAsphericDisk.cxx:951
 AGeoAsphericDisk.cxx:952
 AGeoAsphericDisk.cxx:953
 AGeoAsphericDisk.cxx:954
 AGeoAsphericDisk.cxx:955
 AGeoAsphericDisk.cxx:956
 AGeoAsphericDisk.cxx:957
 AGeoAsphericDisk.cxx:958
 AGeoAsphericDisk.cxx:959
 AGeoAsphericDisk.cxx:960
 AGeoAsphericDisk.cxx:961
 AGeoAsphericDisk.cxx:962
 AGeoAsphericDisk.cxx:963
 AGeoAsphericDisk.cxx:964
 AGeoAsphericDisk.cxx:965
 AGeoAsphericDisk.cxx:966
 AGeoAsphericDisk.cxx:967
 AGeoAsphericDisk.cxx:968
 AGeoAsphericDisk.cxx:969
 AGeoAsphericDisk.cxx:970
 AGeoAsphericDisk.cxx:971
 AGeoAsphericDisk.cxx:972
 AGeoAsphericDisk.cxx:973
 AGeoAsphericDisk.cxx:974
 AGeoAsphericDisk.cxx:975
 AGeoAsphericDisk.cxx:976
 AGeoAsphericDisk.cxx:977
 AGeoAsphericDisk.cxx:978
 AGeoAsphericDisk.cxx:979
 AGeoAsphericDisk.cxx:980
 AGeoAsphericDisk.cxx:981
 AGeoAsphericDisk.cxx:982
 AGeoAsphericDisk.cxx:983
 AGeoAsphericDisk.cxx:984
 AGeoAsphericDisk.cxx:985
 AGeoAsphericDisk.cxx:986
 AGeoAsphericDisk.cxx:987
 AGeoAsphericDisk.cxx:988
 AGeoAsphericDisk.cxx:989
 AGeoAsphericDisk.cxx:990
 AGeoAsphericDisk.cxx:991
 AGeoAsphericDisk.cxx:992
 AGeoAsphericDisk.cxx:993
 AGeoAsphericDisk.cxx:994
 AGeoAsphericDisk.cxx:995
 AGeoAsphericDisk.cxx:996
 AGeoAsphericDisk.cxx:997
 AGeoAsphericDisk.cxx:998
 AGeoAsphericDisk.cxx:999
 AGeoAsphericDisk.cxx:1000
 AGeoAsphericDisk.cxx:1001
 AGeoAsphericDisk.cxx:1002
 AGeoAsphericDisk.cxx:1003
 AGeoAsphericDisk.cxx:1004
 AGeoAsphericDisk.cxx:1005
 AGeoAsphericDisk.cxx:1006
 AGeoAsphericDisk.cxx:1007
 AGeoAsphericDisk.cxx:1008
 AGeoAsphericDisk.cxx:1009
 AGeoAsphericDisk.cxx:1010
 AGeoAsphericDisk.cxx:1011
 AGeoAsphericDisk.cxx:1012
 AGeoAsphericDisk.cxx:1013
 AGeoAsphericDisk.cxx:1014
 AGeoAsphericDisk.cxx:1015
 AGeoAsphericDisk.cxx:1016
 AGeoAsphericDisk.cxx:1017
 AGeoAsphericDisk.cxx:1018
 AGeoAsphericDisk.cxx:1019
 AGeoAsphericDisk.cxx:1020
 AGeoAsphericDisk.cxx:1021
 AGeoAsphericDisk.cxx:1022
 AGeoAsphericDisk.cxx:1023
 AGeoAsphericDisk.cxx:1024
 AGeoAsphericDisk.cxx:1025
 AGeoAsphericDisk.cxx:1026
 AGeoAsphericDisk.cxx:1027
 AGeoAsphericDisk.cxx:1028
 AGeoAsphericDisk.cxx:1029
 AGeoAsphericDisk.cxx:1030
 AGeoAsphericDisk.cxx:1031
 AGeoAsphericDisk.cxx:1032
 AGeoAsphericDisk.cxx:1033
 AGeoAsphericDisk.cxx:1034
 AGeoAsphericDisk.cxx:1035
 AGeoAsphericDisk.cxx:1036
 AGeoAsphericDisk.cxx:1037
 AGeoAsphericDisk.cxx:1038
 AGeoAsphericDisk.cxx:1039
 AGeoAsphericDisk.cxx:1040
 AGeoAsphericDisk.cxx:1041
 AGeoAsphericDisk.cxx:1042
 AGeoAsphericDisk.cxx:1043
 AGeoAsphericDisk.cxx:1044
 AGeoAsphericDisk.cxx:1045
 AGeoAsphericDisk.cxx:1046
 AGeoAsphericDisk.cxx:1047
 AGeoAsphericDisk.cxx:1048
 AGeoAsphericDisk.cxx:1049
 AGeoAsphericDisk.cxx:1050
 AGeoAsphericDisk.cxx:1051
 AGeoAsphericDisk.cxx:1052
 AGeoAsphericDisk.cxx:1053
 AGeoAsphericDisk.cxx:1054
 AGeoAsphericDisk.cxx:1055
 AGeoAsphericDisk.cxx:1056
 AGeoAsphericDisk.cxx:1057
 AGeoAsphericDisk.cxx:1058
 AGeoAsphericDisk.cxx:1059
 AGeoAsphericDisk.cxx:1060
 AGeoAsphericDisk.cxx:1061
 AGeoAsphericDisk.cxx:1062
 AGeoAsphericDisk.cxx:1063
 AGeoAsphericDisk.cxx:1064
 AGeoAsphericDisk.cxx:1065
 AGeoAsphericDisk.cxx:1066
 AGeoAsphericDisk.cxx:1067
 AGeoAsphericDisk.cxx:1068
 AGeoAsphericDisk.cxx:1069
 AGeoAsphericDisk.cxx:1070
 AGeoAsphericDisk.cxx:1071
 AGeoAsphericDisk.cxx:1072
 AGeoAsphericDisk.cxx:1073
 AGeoAsphericDisk.cxx:1074
 AGeoAsphericDisk.cxx:1075
 AGeoAsphericDisk.cxx:1076
 AGeoAsphericDisk.cxx:1077
 AGeoAsphericDisk.cxx:1078
 AGeoAsphericDisk.cxx:1079
 AGeoAsphericDisk.cxx:1080
 AGeoAsphericDisk.cxx:1081
 AGeoAsphericDisk.cxx:1082
 AGeoAsphericDisk.cxx:1083
 AGeoAsphericDisk.cxx:1084
 AGeoAsphericDisk.cxx:1085
 AGeoAsphericDisk.cxx:1086
 AGeoAsphericDisk.cxx:1087
 AGeoAsphericDisk.cxx:1088
 AGeoAsphericDisk.cxx:1089
 AGeoAsphericDisk.cxx:1090
 AGeoAsphericDisk.cxx:1091
 AGeoAsphericDisk.cxx:1092
 AGeoAsphericDisk.cxx:1093
 AGeoAsphericDisk.cxx:1094
 AGeoAsphericDisk.cxx:1095
 AGeoAsphericDisk.cxx:1096
 AGeoAsphericDisk.cxx:1097
 AGeoAsphericDisk.cxx:1098
 AGeoAsphericDisk.cxx:1099
 AGeoAsphericDisk.cxx:1100
 AGeoAsphericDisk.cxx:1101
 AGeoAsphericDisk.cxx:1102
 AGeoAsphericDisk.cxx:1103
 AGeoAsphericDisk.cxx:1104
 AGeoAsphericDisk.cxx:1105
 AGeoAsphericDisk.cxx:1106
 AGeoAsphericDisk.cxx:1107
 AGeoAsphericDisk.cxx:1108
 AGeoAsphericDisk.cxx:1109
 AGeoAsphericDisk.cxx:1110
 AGeoAsphericDisk.cxx:1111
 AGeoAsphericDisk.cxx:1112
 AGeoAsphericDisk.cxx:1113
 AGeoAsphericDisk.cxx:1114
 AGeoAsphericDisk.cxx:1115
 AGeoAsphericDisk.cxx:1116
 AGeoAsphericDisk.cxx:1117
 AGeoAsphericDisk.cxx:1118
 AGeoAsphericDisk.cxx:1119
 AGeoAsphericDisk.cxx:1120
 AGeoAsphericDisk.cxx:1121
 AGeoAsphericDisk.cxx:1122
 AGeoAsphericDisk.cxx:1123
 AGeoAsphericDisk.cxx:1124
 AGeoAsphericDisk.cxx:1125
 AGeoAsphericDisk.cxx:1126
 AGeoAsphericDisk.cxx:1127
 AGeoAsphericDisk.cxx:1128
 AGeoAsphericDisk.cxx:1129
 AGeoAsphericDisk.cxx:1130
 AGeoAsphericDisk.cxx:1131
 AGeoAsphericDisk.cxx:1132
 AGeoAsphericDisk.cxx:1133
 AGeoAsphericDisk.cxx:1134
 AGeoAsphericDisk.cxx:1135
 AGeoAsphericDisk.cxx:1136
 AGeoAsphericDisk.cxx:1137
 AGeoAsphericDisk.cxx:1138
 AGeoAsphericDisk.cxx:1139
 AGeoAsphericDisk.cxx:1140
 AGeoAsphericDisk.cxx:1141
 AGeoAsphericDisk.cxx:1142
 AGeoAsphericDisk.cxx:1143
 AGeoAsphericDisk.cxx:1144
 AGeoAsphericDisk.cxx:1145
 AGeoAsphericDisk.cxx:1146
 AGeoAsphericDisk.cxx:1147
 AGeoAsphericDisk.cxx:1148
 AGeoAsphericDisk.cxx:1149
 AGeoAsphericDisk.cxx:1150
 AGeoAsphericDisk.cxx:1151
 AGeoAsphericDisk.cxx:1152
 AGeoAsphericDisk.cxx:1153
 AGeoAsphericDisk.cxx:1154
 AGeoAsphericDisk.cxx:1155
 AGeoAsphericDisk.cxx:1156
 AGeoAsphericDisk.cxx:1157
 AGeoAsphericDisk.cxx:1158
 AGeoAsphericDisk.cxx:1159
 AGeoAsphericDisk.cxx:1160
 AGeoAsphericDisk.cxx:1161
 AGeoAsphericDisk.cxx:1162
 AGeoAsphericDisk.cxx:1163
 AGeoAsphericDisk.cxx:1164
 AGeoAsphericDisk.cxx:1165
 AGeoAsphericDisk.cxx:1166
 AGeoAsphericDisk.cxx:1167
 AGeoAsphericDisk.cxx:1168
 AGeoAsphericDisk.cxx:1169
 AGeoAsphericDisk.cxx:1170
 AGeoAsphericDisk.cxx:1171
 AGeoAsphericDisk.cxx:1172
 AGeoAsphericDisk.cxx:1173
 AGeoAsphericDisk.cxx:1174
 AGeoAsphericDisk.cxx:1175
 AGeoAsphericDisk.cxx:1176
 AGeoAsphericDisk.cxx:1177
 AGeoAsphericDisk.cxx:1178
 AGeoAsphericDisk.cxx:1179
 AGeoAsphericDisk.cxx:1180
 AGeoAsphericDisk.cxx:1181
 AGeoAsphericDisk.cxx:1182
 AGeoAsphericDisk.cxx:1183
 AGeoAsphericDisk.cxx:1184
 AGeoAsphericDisk.cxx:1185
 AGeoAsphericDisk.cxx:1186
 AGeoAsphericDisk.cxx:1187
 AGeoAsphericDisk.cxx:1188
 AGeoAsphericDisk.cxx:1189
 AGeoAsphericDisk.cxx:1190
 AGeoAsphericDisk.cxx:1191
 AGeoAsphericDisk.cxx:1192
 AGeoAsphericDisk.cxx:1193
 AGeoAsphericDisk.cxx:1194
 AGeoAsphericDisk.cxx:1195
 AGeoAsphericDisk.cxx:1196
 AGeoAsphericDisk.cxx:1197
 AGeoAsphericDisk.cxx:1198
 AGeoAsphericDisk.cxx:1199
 AGeoAsphericDisk.cxx:1200
 AGeoAsphericDisk.cxx:1201
 AGeoAsphericDisk.cxx:1202
 AGeoAsphericDisk.cxx:1203
 AGeoAsphericDisk.cxx:1204
 AGeoAsphericDisk.cxx:1205
 AGeoAsphericDisk.cxx:1206
 AGeoAsphericDisk.cxx:1207
 AGeoAsphericDisk.cxx:1208
 AGeoAsphericDisk.cxx:1209
 AGeoAsphericDisk.cxx:1210
 AGeoAsphericDisk.cxx:1211
 AGeoAsphericDisk.cxx:1212
 AGeoAsphericDisk.cxx:1213
 AGeoAsphericDisk.cxx:1214
 AGeoAsphericDisk.cxx:1215
 AGeoAsphericDisk.cxx:1216
 AGeoAsphericDisk.cxx:1217
 AGeoAsphericDisk.cxx:1218
 AGeoAsphericDisk.cxx:1219
 AGeoAsphericDisk.cxx:1220
 AGeoAsphericDisk.cxx:1221
 AGeoAsphericDisk.cxx:1222
 AGeoAsphericDisk.cxx:1223
 AGeoAsphericDisk.cxx:1224
 AGeoAsphericDisk.cxx:1225
 AGeoAsphericDisk.cxx:1226
 AGeoAsphericDisk.cxx:1227
 AGeoAsphericDisk.cxx:1228
 AGeoAsphericDisk.cxx:1229
 AGeoAsphericDisk.cxx:1230
 AGeoAsphericDisk.cxx:1231
 AGeoAsphericDisk.cxx:1232
 AGeoAsphericDisk.cxx:1233
 AGeoAsphericDisk.cxx:1234
 AGeoAsphericDisk.cxx:1235
 AGeoAsphericDisk.cxx:1236
 AGeoAsphericDisk.cxx:1237
 AGeoAsphericDisk.cxx:1238
 AGeoAsphericDisk.cxx:1239
 AGeoAsphericDisk.cxx:1240
 AGeoAsphericDisk.cxx:1241
 AGeoAsphericDisk.cxx:1242
 AGeoAsphericDisk.cxx:1243
 AGeoAsphericDisk.cxx:1244
 AGeoAsphericDisk.cxx:1245
 AGeoAsphericDisk.cxx:1246
 AGeoAsphericDisk.cxx:1247
 AGeoAsphericDisk.cxx:1248
 AGeoAsphericDisk.cxx:1249
 AGeoAsphericDisk.cxx:1250
 AGeoAsphericDisk.cxx:1251
 AGeoAsphericDisk.cxx:1252
 AGeoAsphericDisk.cxx:1253
 AGeoAsphericDisk.cxx:1254
 AGeoAsphericDisk.cxx:1255
 AGeoAsphericDisk.cxx:1256
 AGeoAsphericDisk.cxx:1257
 AGeoAsphericDisk.cxx:1258
 AGeoAsphericDisk.cxx:1259
 AGeoAsphericDisk.cxx:1260
 AGeoAsphericDisk.cxx:1261
 AGeoAsphericDisk.cxx:1262
 AGeoAsphericDisk.cxx:1263
 AGeoAsphericDisk.cxx:1264
 AGeoAsphericDisk.cxx:1265
 AGeoAsphericDisk.cxx:1266
 AGeoAsphericDisk.cxx:1267
 AGeoAsphericDisk.cxx:1268
 AGeoAsphericDisk.cxx:1269
 AGeoAsphericDisk.cxx:1270
 AGeoAsphericDisk.cxx:1271
 AGeoAsphericDisk.cxx:1272
 AGeoAsphericDisk.cxx:1273
 AGeoAsphericDisk.cxx:1274
 AGeoAsphericDisk.cxx:1275
 AGeoAsphericDisk.cxx:1276
 AGeoAsphericDisk.cxx:1277
 AGeoAsphericDisk.cxx:1278
 AGeoAsphericDisk.cxx:1279
 AGeoAsphericDisk.cxx:1280
 AGeoAsphericDisk.cxx:1281
 AGeoAsphericDisk.cxx:1282
 AGeoAsphericDisk.cxx:1283
 AGeoAsphericDisk.cxx:1284
 AGeoAsphericDisk.cxx:1285
 AGeoAsphericDisk.cxx:1286
 AGeoAsphericDisk.cxx:1287
 AGeoAsphericDisk.cxx:1288
 AGeoAsphericDisk.cxx:1289
 AGeoAsphericDisk.cxx:1290
 AGeoAsphericDisk.cxx:1291
 AGeoAsphericDisk.cxx:1292
 AGeoAsphericDisk.cxx:1293
 AGeoAsphericDisk.cxx:1294
 AGeoAsphericDisk.cxx:1295
 AGeoAsphericDisk.cxx:1296
 AGeoAsphericDisk.cxx:1297
 AGeoAsphericDisk.cxx:1298
 AGeoAsphericDisk.cxx:1299
 AGeoAsphericDisk.cxx:1300
 AGeoAsphericDisk.cxx:1301
 AGeoAsphericDisk.cxx:1302
 AGeoAsphericDisk.cxx:1303
 AGeoAsphericDisk.cxx:1304
 AGeoAsphericDisk.cxx:1305
 AGeoAsphericDisk.cxx:1306
 AGeoAsphericDisk.cxx:1307
 AGeoAsphericDisk.cxx:1308
 AGeoAsphericDisk.cxx:1309
 AGeoAsphericDisk.cxx:1310
 AGeoAsphericDisk.cxx:1311
 AGeoAsphericDisk.cxx:1312
 AGeoAsphericDisk.cxx:1313
 AGeoAsphericDisk.cxx:1314
 AGeoAsphericDisk.cxx:1315
 AGeoAsphericDisk.cxx:1316
 AGeoAsphericDisk.cxx:1317
 AGeoAsphericDisk.cxx:1318
 AGeoAsphericDisk.cxx:1319
 AGeoAsphericDisk.cxx:1320
 AGeoAsphericDisk.cxx:1321
 AGeoAsphericDisk.cxx:1322
 AGeoAsphericDisk.cxx:1323
 AGeoAsphericDisk.cxx:1324
 AGeoAsphericDisk.cxx:1325
 AGeoAsphericDisk.cxx:1326
 AGeoAsphericDisk.cxx:1327
 AGeoAsphericDisk.cxx:1328
 AGeoAsphericDisk.cxx:1329
 AGeoAsphericDisk.cxx:1330
 AGeoAsphericDisk.cxx:1331
 AGeoAsphericDisk.cxx:1332
 AGeoAsphericDisk.cxx:1333
 AGeoAsphericDisk.cxx:1334
 AGeoAsphericDisk.cxx:1335
 AGeoAsphericDisk.cxx:1336
 AGeoAsphericDisk.cxx:1337
 AGeoAsphericDisk.cxx:1338
 AGeoAsphericDisk.cxx:1339
 AGeoAsphericDisk.cxx:1340
 AGeoAsphericDisk.cxx:1341
 AGeoAsphericDisk.cxx:1342
 AGeoAsphericDisk.cxx:1343
 AGeoAsphericDisk.cxx:1344
 AGeoAsphericDisk.cxx:1345
 AGeoAsphericDisk.cxx:1346
 AGeoAsphericDisk.cxx:1347
 AGeoAsphericDisk.cxx:1348
 AGeoAsphericDisk.cxx:1349
 AGeoAsphericDisk.cxx:1350
 AGeoAsphericDisk.cxx:1351
 AGeoAsphericDisk.cxx:1352
 AGeoAsphericDisk.cxx:1353
 AGeoAsphericDisk.cxx:1354
 AGeoAsphericDisk.cxx:1355
 AGeoAsphericDisk.cxx:1356
 AGeoAsphericDisk.cxx:1357
 AGeoAsphericDisk.cxx:1358
 AGeoAsphericDisk.cxx:1359
 AGeoAsphericDisk.cxx:1360
 AGeoAsphericDisk.cxx:1361
 AGeoAsphericDisk.cxx:1362
 AGeoAsphericDisk.cxx:1363
 AGeoAsphericDisk.cxx:1364
 AGeoAsphericDisk.cxx:1365
 AGeoAsphericDisk.cxx:1366
 AGeoAsphericDisk.cxx:1367
 AGeoAsphericDisk.cxx:1368
 AGeoAsphericDisk.cxx:1369
 AGeoAsphericDisk.cxx:1370
 AGeoAsphericDisk.cxx:1371
 AGeoAsphericDisk.cxx:1372
 AGeoAsphericDisk.cxx:1373
 AGeoAsphericDisk.cxx:1374
 AGeoAsphericDisk.cxx:1375
 AGeoAsphericDisk.cxx:1376
 AGeoAsphericDisk.cxx:1377
 AGeoAsphericDisk.cxx:1378
 AGeoAsphericDisk.cxx:1379
 AGeoAsphericDisk.cxx:1380
 AGeoAsphericDisk.cxx:1381
 AGeoAsphericDisk.cxx:1382
 AGeoAsphericDisk.cxx:1383
 AGeoAsphericDisk.cxx:1384
 AGeoAsphericDisk.cxx:1385
 AGeoAsphericDisk.cxx:1386
 AGeoAsphericDisk.cxx:1387
 AGeoAsphericDisk.cxx:1388
 AGeoAsphericDisk.cxx:1389
 AGeoAsphericDisk.cxx:1390
 AGeoAsphericDisk.cxx:1391
 AGeoAsphericDisk.cxx:1392
 AGeoAsphericDisk.cxx:1393
 AGeoAsphericDisk.cxx:1394
 AGeoAsphericDisk.cxx:1395
 AGeoAsphericDisk.cxx:1396
 AGeoAsphericDisk.cxx:1397