ROOT logo
// $Id$
// Author: Akira Okumura 2007/9/25

/******************************************************************************
 * 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()
{
  // Default constructor
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(0, 0, 0, 0, 0, 0);
  SetPolynomials(0, 0, 0, 0);

  SetFineness(100, 4);
}


//_____________________________________________________________________________
AGeoAsphericDisk::AGeoAsphericDisk(Double_t z1, Double_t curve1,
                                   Double_t z2, Double_t curve2,
                                   Double_t rmax, Double_t rmin)
  : TGeoBBox(0, 0, 0)
{
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(z1, curve1, z2, curve2, rmax, rmin);
  SetPolynomials(0, 0, 0, 0);

  SetFineness(100, 4);

  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)
{
  SetShapeBit(TGeoShape::kGeoBox);
  SetAsphDimensions(z1, curve1, z2, curve2, rmax, rmin);
  SetPolynomials(0, 0, 0, 0);

  SetFineness(100, 4);

  ComputeBBox();
}

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

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcdF1dr(Double_t r) const throw(std::exception)
{
  // Caculate dF1/dr
  Double_t p = r*r*fCurve1*fCurve1;
  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);
  } // i
  
  return ret;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::CalcdF2dr(Double_t r) const throw(std::exception)
{
  // Caculate dF2/dr
  Double_t p = r*r*fCurve2*fCurve2;
  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);
  } // i

  return ret;
}

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

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

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

  return ret;
}

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

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

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

  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();
    } // try
    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();
        } // try
        if(f > zmax){
          zmax = f;
          r_ = r;
        } // if
      } // j
      r1 = r_==fRmin ? fRmin : r_ - step;
      r2 = r_==fRmax ? fRmax : r_ + step;
    } // i
  } // if

  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();
    } // try
    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();
        } // try
        if(f < zmin){
          zmin = f;
          r_ = r;
        } // if
      } // r
      r1 = r_ == fRmin ? fRmin : r_ - step;
      r2 = r_ == fRmax ? fRmax : r_ + step;
    } // i
  } // if

  fOrigin[0] = 0;
  fOrigin[1] = 0;
  fOrigin[2] = (zmax + zmin)/2;;
  fDX = fRmax;
  fDY = fRmax;
  fDZ = (zmax - zmin)/2;
}

//_____________________________________________________________________________
void AGeoAsphericDisk::ComputeNormal(Double_t* point, 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, df1, df2;
  try { 
    f1 = CalcF1(r);
  } catch (...) {
    f1 = -TGeoShape::Big();
  } // try
  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
  } // if
  
  try { 
    f2 = CalcF2(r);
  } catch (...) {
    f2 = TGeoShape::Big();
  } // try
  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();
    } // try
  } // if

  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);
    } // if
  } else {
    if(df2 == 0){
      norm[2] = 1;
    } else {
      norm[0] = df2/sqrt(1 + df2*df2);
      norm[2] = -1/sqrt(1 + df2*df2);
    } // if
  } // if

  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];
  } // if
}

//_____________________________________________________________________________
Bool_t AGeoAsphericDisk::Contains(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;
  } // try

  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);
  } // if

  return ShapeDistancetoPrimitive(numPoints, px, py);
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistFromInside(Double_t* point, 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();
  } // if
  
  // 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(Double_t* point, 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();
  } // if
  
  // 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, Double_t* point, 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();
  } // if

  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();
    } // if
    H2 = npoint[0]*npoint[0] + npoint[1]*npoint[1];
    check = n == 1 ? 1 - H2*fCurve1*fCurve1 : 1 - H2*fCurve2*fCurve2;
    if(check < 0){
      // This is a limitation too
      return TGeoShape::Big();
    } // if
    
    Double_t l = sqrt(check);

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

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

    check = dir[2]*l + dir[0]*m + dir[1]*n;
    if(check == 0){
      return TGeoShape::Big();
    } // if
    
    Double_t e = l*(x - npoint[2])/check;

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

    if(TMath::Abs(e) < 1e-10) break;
  } // i
  
  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();
  } // if

  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(Double_t* point, Double_t* dir) const
{
  if(!TestShapeBit(kGeoRSeg)){
    return TGeoShape::Big();
  } // if

  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();
  } // if
  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();
  } // if

  // 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();
  } // if

  if(t1 == 0 or t2 == 0){
    return 0;
  } // if

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

  if(t1 < 0 and t2 > 0){
    Double_t z = t2*dir[2] + point[2];
    if(zmin <= z and z <= zmax){
      return t2;
    } else {
      return TGeoShape::Big();
    } // if
  } else if(t1 > 0 and t2 < 0){
    Double_t z = t1*dir[2] + point[2];
    if(zmin <= z and z <= zmax){
      return t1;
    } else {
      return TGeoShape::Big();
    } // if
  } else if(t1 > 0 and t2 > 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
    if(z2 < zmin or zmax < z2){
      t2 = TGeoShape::Big();
    } // if
    
    return t1 < t2 ? t1 : t2;
  } // if
    
  return TGeoShape::Big();
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::DistToOuter(Double_t* point, 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();
  } // if
  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();
  } // if

  // 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();
  } // if

  if(t1 == 0 or t2 == 0){
    return 0;
  } // if

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

  if(t1 < 0 and t2 > 0){
    Double_t z = t2*dir[2] + point[2];
    if(zmin <= z and z <= zmax){
      return t2;
    } else {
      return TGeoShape::Big();
    } // if
  } else if(t1 > 0 and t2 < 0){
    Double_t z = t1*dir[2] + point[2];
    if(zmin <= z and z <= zmax){
      return t1;
    } else {
      return TGeoShape::Big();
    } // if
  } else if(t1 > 0 and t2 > 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
    if(z2 < zmin or zmax < z2){
      t2 = TGeoShape::Big();
    } // if
    
    return t1 < t2 ? t1 : t2;
  } // if
    
  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

    if(buffer.SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, nbPols, 6*nbPols)){
      buffer.SetSectionsValid(TBuffer3D::kRawSizes);
    } // if
  } // if

  if((reqSections & TBuffer3D::kRaw) && buffer.SectionsValid(TBuffer3D::kRawSizes)){
    SetPoints(buffer.fPnts);
    if(!buffer.fLocalFrame){
      TransformPoints(buffer.fPnts, buffer.NbPnts());
    } // if
    SetSegsAndPols(buffer);
    buffer.SetSectionsValid(TBuffer3D::kRaw);
  } // if

  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);
  } // if
}

//_____________________________________________________________________________
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);
  } // if

  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]);
  } // i
  printf("    K2:");
  for(Int_t i=0; i<fNPol2; i++){
    printf("    %d: %11.5f\n", (i+1)*2, fK2[i]);
  } // 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);
  } // if

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

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

  return buff;
}

//_____________________________________________________________________________
Double_t AGeoAsphericDisk::Safety(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;
    } // if
  } // if
  
  // 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();
      } // try
      Double_t d2 = (f - point[2])*(f - point[2]) + (r - rad)*(r - rad);
      if(d2 < dist[0]){
        dist[0] = d2;
        r_ = r;
      } // if
    } // r
    r1 = r_==fRmin ? fRmin : r_ - step;
    r2 = r_==fRmax ? fRmax : r_ + step;
  } // i
  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();
      } // try
      Double_t d2 = (f - point[2])*(f - point[2]) + (r - rad)*(r - rad);
      if(d2 < dist[1]){
	dist[1] = d2;
	r_ = r;
      } // if
    } // r
    r1 = r_==fRmin ? fRmin : r_ - step;
    r2 = r_==fRmax ? fRmax : r_ + step;
  } // i
  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;
    } // i
  } else {
    safe = dist[0] < dist[1] ? dist[0] : dist[1];
  } // if

  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 << "   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;
    } // i
  } // if
  if(fNPol2 > 0){
    out << "double k2[" << fNPol2 << "] = {";
    for(Int_t i = 0; i < fNPol2; i++){
      out << fK2[i];
      out << (i != fNPol2 - 1 ? "," : "};") << std::endl;
    } // i
  } // if
  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;
  } // if
  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    

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

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

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

//_____________________________________________________________________________
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();
          } // try
          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();
          } // try
        } // j
      } // i
    } 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();
          } // try
          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();
          } // try
        } // j
      } // i
      // 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();
      } // try
      points[index+3] = 0;
      points[index+4] = 0;
      try {
        points[index+5] = CalcF2(0);
      } catch (...) {
        points[index+5] = -TGeoShape::Big();
      } // try
    } // if
  } // if
}

//_____________________________________________________________________________
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();
          } // try
          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();
          } // try
        } // j
      } // i
    } 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();
          } // try
          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();
          } // try
        } // j
      } // i
      // 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();
      } // try
      points[index + 3] = 0;
      points[index + 4] = 0;
      try {
        points[index + 5] = CalcF2(0);
      } catch (...) {
        points[index + 5] = -TGeoShape::Big();
      } // try
    } // if
  } // if
}

//_____________________________________________________________________________
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[n1];
    for(Int_t i = 0; i < n1; i++) fK1[i] = k1[i];
  } // if

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

  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;
      } // j
    } // i
    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);
      } // j
    } // i
    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);
    } // i

    // 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;
      } // j
    } // i
    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;
    } // j
  } 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;
      } // j
    } // i
    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;
      } // j
    } // i
    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;
    } // 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;
    } // 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;

      } // j
    } // i

    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;

    } // j
  } // if
}

//_____________________________________________________________________________
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