ROOT logo
// @(#)root/vmc:$Id: TGeoMCGeometry.cxx 27157 2009-01-15 14:05:12Z brun $
// Authors: Alice collaboration 25/06/2002

/*************************************************************************
 * Copyright (C) 2006, Rene Brun and Fons Rademakers.                    *
 * Copyright (C) 2002, ALICE Experiment at CERN.                         *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/


//______________________________________________________________________________
//
// Implementation of the TVirtualMCGeometry interface
// for building TGeo geometry.
//______________________________________________________________________________

#include <ctype.h>
#include "TError.h"
#include "TArrayD.h"

#include "TGeoMCGeometry.h"
#include "TGeoManager.h"
#include "TGeoMatrix.h"
#include "TGeoVolume.h"
#include "TGeoArb8.h"
#include "TGeoTrd1.h"
#include "TGeoTrd2.h"
#include "TGeoTube.h"
#include "TGeoCone.h"
#include "TGeoPgon.h"
#include "TGeoSphere.h"
#include "TGeoPara.h"
#include "TGeoEltu.h"
#include "TGeoHype.h"
#include "TMath.h"

ClassImp(TGeoMCGeometry)

TGeoMCGeometry* TGeoMCGeometry::fgInstance=0;

//_____________________________________________________________________________
TGeoMCGeometry::TGeoMCGeometry(const char *name, const char *title,
                               Bool_t g3CompatibleVolumeNames)
  : TVirtualMCGeometry(name, title),
    fG3CompatibleVolumeNames(g3CompatibleVolumeNames)
{
   //
   // Standard constructor
   //
}

//_____________________________________________________________________________
TGeoMCGeometry::TGeoMCGeometry()
  : TVirtualMCGeometry(),
    fG3CompatibleVolumeNames(kFALSE)
{
   //
   // Default constructor
   //
}

//_____________________________________________________________________________
TGeoMCGeometry::~TGeoMCGeometry()
{
   //
   // Destructor
   //
   fgInstance=0;
}

//
// private methods
//


//_____________________________________________________________________________
Double_t* TGeoMCGeometry::CreateDoubleArray(Float_t* array, Int_t size) const
{
// Converts Float_t* array to Double_t*,
// !! The new array has to be deleted by user.
// ---

   Double_t* doubleArray;
   if (size>0) {
      doubleArray = new Double_t[size];
      for (Int_t i=0; i<size; i++) doubleArray[i] = array[i];
   } else {
      //doubleArray = 0;
      doubleArray = new Double_t[1];
   }
   return doubleArray;
}

//______________________________________________________________________________
void TGeoMCGeometry::Vname(const char *name, char *vname) const
{
   //
   //  convert name to upper case. Make vname at least 4 chars
   //
   if (fG3CompatibleVolumeNames) {
      Int_t l = strlen(name);
      Int_t i;
      l = l < 4 ? l : 4;
      for (i=0;i<l;i++) vname[i] = toupper(name[i]);
      for (i=l;i<4;i++) vname[i] = ' ';
      vname[4] = 0;
   } else {
      Int_t l = strlen(name);
      if ( l>=79 ) l = 79;
      for (Int_t i=0;i<l;i++) vname[i] = name[i];
      vname[l] = 0;
   }
}

//
// public methods
//

//_____________________________________________________________________________
void TGeoMCGeometry::Material(Int_t& kmat, const char* name, Double_t a, Double_t z,
                       Double_t dens, Double_t radl, Double_t absl, Float_t* buf,
                       Int_t nwbuf)
{
  //
  // Defines a Material
  //
  //  kmat               number assigned to the material
  //  name               material name
  //  a                  atomic mass in au
  //  z                  atomic number
  //  dens               density in g/cm3
  //  absl               absorbtion length in cm
  //                     if >=0 it is ignored and the program
  //                     calculates it, if <0. -absl is taken
  //  radl               radiation length in cm
  //                     if >=0 it is ignored and the program
  //                     calculates it, if <0. -radl is taken
  //  buf                pointer to an array of user words
  //  nbuf               number of user words
  //

   Double_t* dbuf = CreateDoubleArray(buf, nwbuf);
   Material(kmat, name, a, z, dens, radl, absl, dbuf, nwbuf);
   delete [] dbuf;
}

//_____________________________________________________________________________
void TGeoMCGeometry::Material(Int_t& kmat, const char* name, Double_t a, Double_t z,
                     Double_t dens, Double_t radl, Double_t absl, Double_t* /*buf*/,
                     Int_t /*nwbuf*/)
{
  //
  // Defines a Material
  //
  //  kmat               number assigned to the material
  //  name               material name
  //  a                  atomic mass in au
  //  z                  atomic number
  //  dens               density in g/cm3
  //  absl               absorbtion length in cm
  //                     if >=0 it is ignored and the program
  //                     calculates it, if <0. -absl is taken
  //  radl               radiation length in cm
  //                     if >=0 it is ignored and the program
  //                     calculates it, if <0. -radl is taken
  //  buf                pointer to an array of user words
  //  nbuf               number of user words
  //

   gGeoManager->Material(name, a, z, dens, kmat, radl, absl);
}

//_____________________________________________________________________________
void TGeoMCGeometry::Mixture(Int_t& kmat, const char* name, Float_t* a, Float_t* z,
                    Double_t dens, Int_t nlmat, Float_t* wmat)
{
  //
  // Defines mixture OR COMPOUND IMAT as composed by
  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
  //
  // If NLMAT > 0 then wmat contains the proportion by
  // weights of each basic material in the mixture.
  //
  // If nlmat < 0 then WMAT contains the number of atoms
  // of a given kind into the molecule of the COMPOUND
  // In this case, WMAT in output is changed to relative
  // weigths.
  //

   Double_t* da = CreateDoubleArray(a, TMath::Abs(nlmat));
   Double_t* dz = CreateDoubleArray(z, TMath::Abs(nlmat));
   Double_t* dwmat = CreateDoubleArray(wmat, TMath::Abs(nlmat));

   Mixture(kmat, name, da, dz, dens, nlmat, dwmat);
   for (Int_t i=0; i<nlmat; i++) {
      a[i] = da[i]; z[i] = dz[i]; wmat[i] = dwmat[i];
   }

   delete [] da;
   delete [] dz;
   delete [] dwmat;
}

//_____________________________________________________________________________
void TGeoMCGeometry::Mixture(Int_t& kmat, const char* name, Double_t* a, Double_t* z,
                    Double_t dens, Int_t nlmat, Double_t* wmat)
{
  //
  // Defines mixture OR COMPOUND IMAT as composed by
  // THE BASIC NLMAT materials defined by arrays A,Z and WMAT
  //
  // If NLMAT > 0 then wmat contains the proportion by
  // weights of each basic material in the mixture.
  //
  // If nlmat < 0 then WMAT contains the number of atoms
  // of a given kind into the molecule of the COMPOUND
  // In this case, WMAT in output is changed to relative
  // weigths.
  //

   if (nlmat < 0) {
      nlmat = - nlmat;
      Double_t amol = 0;
      Int_t i;
      for (i=0;i<nlmat;i++) {
         amol += a[i]*wmat[i];
      }
      for (i=0;i<nlmat;i++) {
         wmat[i] *= a[i]/amol;
      }
   }
   gGeoManager->Mixture(name, a, z, dens, nlmat, wmat, kmat);
}

//_____________________________________________________________________________
void TGeoMCGeometry::Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol,
                   Int_t ifield, Double_t fieldm, Double_t tmaxfd,
                   Double_t stemax, Double_t deemax, Double_t epsil,
                   Double_t stmin, Float_t* ubuf, Int_t nbuf)
{
  //
  //  kmed      tracking medium number assigned
  //  name      tracking medium name
  //  nmat      material number
  //  isvol     sensitive volume flag
  //  ifield    magnetic field
  //  fieldm    max. field value (kilogauss)
  //  tmaxfd    max. angle due to field (deg/step)
  //  stemax    max. step allowed
  //  deemax    max. fraction of energy lost in a step
  //  epsil     tracking precision (cm)
  //  stmin     min. step due to continuous processes (cm)
  //
  //  ifield = 0 if no magnetic field; ifield = -1 if user decision in guswim;
  //  ifield = 1 if tracking performed with g3rkuta; ifield = 2 if tracking
  //  performed with g3helix; ifield = 3 if tracking performed with g3helx3.
  //

  //printf("Creating mediuma: %s, numed=%d, nmat=%d\n",name,kmed,nmat);
   Double_t* dubuf = CreateDoubleArray(ubuf, nbuf);
   Medium(kmed, name, nmat, isvol, ifield, fieldm, tmaxfd, stemax, deemax, epsil,
          stmin, dubuf, nbuf);
   delete [] dubuf;
}

//_____________________________________________________________________________
void TGeoMCGeometry::Medium(Int_t& kmed, const char* name, Int_t nmat, Int_t isvol,
                   Int_t ifield, Double_t fieldm, Double_t tmaxfd,
                   Double_t stemax, Double_t deemax, Double_t epsil,
                   Double_t stmin, Double_t* /*ubuf*/, Int_t /*nbuf*/)
{
  //
  //  kmed      tracking medium number assigned
  //  name      tracking medium name
  //  nmat      material number
  //  isvol     sensitive volume flag
  //  ifield    magnetic field
  //  fieldm    max. field value (kilogauss)
  //  tmaxfd    max. angle due to field (deg/step)
  //  stemax    max. step allowed
  //  deemax    max. fraction of energy lost in a step
  //  epsil     tracking precision (cm)
  //  stmin     min. step due to continuos processes (cm)
  //
  //  ifield = 0 if no magnetic field; ifield = -1 if user decision in guswim;
  //  ifield = 1 if tracking performed with g3rkuta; ifield = 2 if tracking
  //  performed with g3helix; ifield = 3 if tracking performed with g3helx3.
  //

   gGeoManager->Medium(name,kmed,nmat, isvol, ifield, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
}

//_____________________________________________________________________________
void TGeoMCGeometry::Matrix(Int_t& krot, Double_t thex, Double_t phix, Double_t they,
                   Double_t phiy, Double_t thez, Double_t phiz)
{
  //
  //  krot     rotation matrix number assigned
  //  theta1   polar angle for axis i
  //  phi1     azimuthal angle for axis i
  //  theta2   polar angle for axis ii
  //  phi2     azimuthal angle for axis ii
  //  theta3   polar angle for axis iii
  //  phi3     azimuthal angle for axis iii
  //
  //  it defines the rotation matrix number irot.
  //

   krot = gGeoManager->GetListOfMatrices()->GetEntriesFast();
   gGeoManager->Matrix(krot, thex, phix, they, phiy, thez, phiz);
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::Gsvolu(const char *name, const char *shape, Int_t nmed,
                    Float_t *upar, Int_t npar)
{
  //
  //  NAME   Volume name
  //  SHAPE  Volume type
  //  NUMED  Tracking medium number
  //  NPAR   Number of shape parameters
  //  UPAR   Vector containing shape parameters
  //
  //  It creates a new volume in the JVOLUM data structure.
  //

   Double_t* dupar = CreateDoubleArray(upar, npar);
   Int_t id = Gsvolu(name, shape, nmed, dupar, npar);
   delete [] dupar;
   return id;
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::Gsvolu(const char *name, const char *shape, Int_t nmed,
                    Double_t *upar, Int_t npar)
{
  //
  //  NAME   Volume name
  //  SHAPE  Volume type
  //  NUMED  Tracking medium number
  //  NPAR   Number of shape parameters
  //  UPAR   Vector containing shape parameters
  //
  //  It creates a new volume in the JVOLUM data structure.
  //

   char vname[80];
   Vname(name,vname);
   char vshape[5];
   Vname(shape,vshape);

   TGeoVolume* vol = gGeoManager->Volume(vname, vshape, nmed, upar, npar);
   return vol->GetNumber();
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsdvn(const char *name, const char *mother, Int_t ndiv,
                   Int_t iaxis)
{
  //
  // Create a new volume by dividing an existing one
  //
  //  NAME   Volume name
  //  MOTHER Mother volume name
  //  NDIV   Number of divisions
  //  IAXIS  Axis value
  //
  //  X,Y,Z of CAXIS will be translated to 1,2,3 for IAXIS.
  //  It divides a previously defined volume.
  //
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   gGeoManager->Division(vname, vmother, iaxis, ndiv, 0, 0, 0, "n");
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsdvn2(const char *name, const char *mother, Int_t ndiv,
                    Int_t iaxis, Double_t c0i, Int_t numed)
{
  //
  // Create a new volume by dividing an existing one
  //
  // Divides mother into ndiv divisions called name
  // along axis iaxis starting at coordinate value c0.
  // the new volume created will be medium number numed.
  //
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   gGeoManager->Division(vname, vmother, iaxis, ndiv, c0i, 0, numed, "nx");
}
//_____________________________________________________________________________
void  TGeoMCGeometry::Gsdvt(const char *name, const char *mother, Double_t step,
                   Int_t iaxis, Int_t numed, Int_t /*ndvmx*/)
{
  //
  // Create a new volume by dividing an existing one
  //
  //       Divides MOTHER into divisions called NAME along
  //       axis IAXIS in steps of STEP. If not exactly divisible
  //       will make as many as possible and will centre them
  //       with respect to the mother. Divisions will have medium
  //       number NUMED. If NUMED is 0, NUMED of MOTHER is taken.
  //       NDVMX is the expected maximum number of divisions
  //          (If 0, no protection tests are performed)
  //
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   gGeoManager->Division(vname, vmother, iaxis, 0, 0, step, numed, "s");
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsdvt2(const char *name, const char *mother, Double_t step,
                    Int_t iaxis, Double_t c0, Int_t numed, Int_t /*ndvmx*/)
{
  //
  // Create a new volume by dividing an existing one
  //
  //           Divides MOTHER into divisions called NAME along
  //            axis IAXIS starting at coordinate value C0 with step
  //            size STEP.
  //           The new volume created will have medium number NUMED.
  //           If NUMED is 0, NUMED of mother is taken.
  //           NDVMX is the expected maximum number of divisions
  //             (If 0, no protection tests are performed)
  //
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   gGeoManager->Division(vname, vmother, iaxis, 0, c0, step, numed, "sx");
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsord(const char * /*name*/, Int_t /*iax*/)
{
  //
  //    Flags volume CHNAME whose contents will have to be ordered
  //    along axis IAX, by setting the search flag to -IAX
  //           IAX = 1    X axis
  //           IAX = 2    Y axis
  //           IAX = 3    Z axis
  //           IAX = 4    Rxy (static ordering only  -> GTMEDI)
  //           IAX = 14   Rxy (also dynamic ordering -> GTNEXT)
  //           IAX = 5    Rxyz (static ordering only -> GTMEDI)
  //           IAX = 15   Rxyz (also dynamic ordering -> GTNEXT)
  //           IAX = 6    PHI   (PHI=0 => X axis)
  //           IAX = 7    THETA (THETA=0 => Z axis)
  //

  // TBC - keep this function
  // nothing to be done for TGeo  //xx
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gspos(const char *name, Int_t nr, const char *mother, Double_t x,
                   Double_t y, Double_t z, Int_t irot, const char *konly)
{
  //
  // Position a volume into an existing one
  //
  //  NAME   Volume name
  //  NUMBER Copy number of the volume
  //  MOTHER Mother volume name
  //  X      X coord. of the volume in mother ref. sys.
  //  Y      Y coord. of the volume in mother ref. sys.
  //  Z      Z coord. of the volume in mother ref. sys.
  //  IROT   Rotation matrix number w.r.t. mother ref. sys.
  //  ONLY   ONLY/MANY flag
  //
  //  It positions a previously defined volume in the mother.
  //

   TString only = konly;
   only.ToLower();
   Bool_t isOnly = kFALSE;
   if (only.Contains("only")) isOnly = kTRUE;
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   Double_t *upar=0;
   gGeoManager->Node(vname, nr, vmother, x, y, z, irot, isOnly, upar);
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsposp(const char *name, Int_t nr, const char *mother,
                    Double_t x, Double_t y, Double_t z, Int_t irot,
                    const char *konly, Float_t *upar, Int_t np )
{
  //
  //      Place a copy of generic volume NAME with user number
  //      NR inside MOTHER, with its parameters UPAR(1..NP)
  //

   Double_t* dupar = CreateDoubleArray(upar, np);
   Gsposp(name, nr, mother, x, y, z, irot, konly, dupar, np);
   delete [] dupar;
}

//_____________________________________________________________________________
void  TGeoMCGeometry::Gsposp(const char *name, Int_t nr, const char *mother,
                    Double_t x, Double_t y, Double_t z, Int_t irot,
                    const char *konly, Double_t *upar, Int_t np )
{
  //
  //      Place a copy of generic volume NAME with user number
  //      NR inside MOTHER, with its parameters UPAR(1..NP)
  //

   TString only = konly;
   only.ToLower();
   Bool_t isOnly = kFALSE;
   if (only.Contains("only")) isOnly = kTRUE;
   char vname[80];
   Vname(name,vname);
   char vmother[80];
   Vname(mother,vmother);

   gGeoManager->Node(vname,nr,vmother, x,y,z,irot,isOnly,upar,np);
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::VolId(const char *name) const
{
  //
  // Return the unique numeric identifier for volume name
  //

   Int_t uid = gGeoManager->GetUID(name);
   if (uid<0) {
      printf("VolId: Volume %s not found\n",name);
      return 0;
   }
   return uid;
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::MediumId(const char *name) const
{
  //
  // Return the unique numeric identifier for medium name
  //

   TGeoMedium* medium = gGeoManager->GetMedium(name);
   if (medium) return medium->GetId();

   printf("MediumId: Medium %s not found\n",name);
   return 0;
}

//_____________________________________________________________________________
const char* TGeoMCGeometry::VolName(Int_t id) const
{
  //
  // Return the volume name given the volume identifier
  //

   TGeoVolume *volume = gGeoManager->GetVolume(id);
   if (!volume) {
      Error("VolName","volume with id=%d does not exist",id);
      return "NULL";
   }
   return volume->GetName();
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::NofVolumes() const
{
  //
  // Return total number of volumes in the geometry
  //

   return gGeoManager->GetListOfUVolumes()->GetEntriesFast()-1;
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::NofVolDaughters(const char* volName) const
{
// Return number of daughters of the volume specified by volName
// According to A. Morsch' G3toRoot class (by A. Morsch)
// ---

   TGeoVolume* volume = gGeoManager->GetVolume(volName);

   if (!volume) {
      Error("NofVolDaughters", "Volume %s not found.", volName);
      return 0;
   }

   return volume->GetNdaughters();
}

//_____________________________________________________________________________
const char*  TGeoMCGeometry::VolDaughterName(const char* volName, Int_t i) const
{
// Return the name of i-th daughters of the volume specified by volName
// According to A. Morsch' G3toRoot class.
// ---

   // Get volume
   TGeoVolume* volume = gGeoManager->GetVolume(volName);
   if (!volume) {
      Error("VolDaughterName", "Volume %s not found.", volName);
      return "";
   }

   // Check index
   if (i<0 || i>=volume->GetNdaughters()) {
      Error("VolDaughterName", "Index out of limits", volName);
      return "";
   }

   // Return node's volume name
   return volume->GetNode(i)->GetVolume()->GetName();
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::VolDaughterCopyNo(const char* volName, Int_t i) const
{
// Return the copyNo of i-th daughters of the volume specified by volName
// According to A. Morsch' G3toRoot class.
// ---


   // Get volume
   TGeoVolume* volume = gGeoManager->GetVolume(volName);
   if (!volume) {
      Error("VolDaughterName", "Volume %s not found.", volName);
      return 0;
   }

   // Check index
   if (i<0 || i>=volume->GetNdaughters()) {
      Error("VolDaughterName", "Index out of limits", volName);
      return 0;
   }

   // Return node's copyNo
   return volume->GetNode(i)->GetNumber();
}

//_____________________________________________________________________________
Int_t TGeoMCGeometry::VolId2Mate(Int_t id) const
{
  //
  // Return material number for a given volume id
  //

   TGeoVolume *volume = gGeoManager->GetVolume(id);
   if (!volume) {
      Error("VolId2Mate","volume with id=%d does not exist",id);
      return 0;
   }
   TGeoMedium *med = volume->GetMedium();
   if (!med) return 0;
   return med->GetId();
}

//______________________________________________________________________
Bool_t TGeoMCGeometry::GetTransformation(const TString &volumePath,TGeoHMatrix &mat)
{
    // Returns the Transformation matrix between the volume specified
    // by the path volumePath and the Top or mater volume. The format
    // of the path volumePath is as follows (assuming ALIC is the Top volume)
    // "/ALIC_1/DDIP_1/S05I_2/S05H_1/S05G_3". Here ALIC is the top most
    // or master volume which has only 1 instance of. Of all of the daughter
    // volumes of ALICE, DDIP volume copy #1 is indicated. Similarly for
    // the daughter volume of DDIP is S05I copy #2 and so on.
    // Inputs:
    //   TString& volumePath  The volume path to the specific volume
    //                        for which you want the matrix. Volume name
    //                        hierarchy is separated by "/" while the
    //                        copy number is appended using a "_".
    // Outputs:
    //  TGeoHMatrix &mat      A matrix with its values set to those
    //                        appropriate to the Local to Master transformation
    // Return:
    //   A logical value if kFALSE then an error occurred and no change to
    //   mat was made.

   // We have to preserve the modeler state
   gGeoManager->PushPath();
   if (!gGeoManager->cd(volumePath.Data())) {
      gGeoManager->PopPath();
      return kFALSE;
   }
   mat = *gGeoManager->GetCurrentMatrix();
   gGeoManager->PopPath();
   return kTRUE;
}
//______________________________________________________________________
Bool_t TGeoMCGeometry::GetShape(const TString &volumePath,TString &shapeType,
                         TArrayD &par)
{
    // Returns the shape and its parameters for the volume specified
    // by volumeName.
    // Inputs:
    //   TString& volumeName  The volume name
    // Outputs:
    //   TString &shapeType   Shape type
    //   TArrayD &par         A TArrayD of parameters with all of the
    //                        parameters of the specified shape.
    // Return:
    //   A logical indicating whether there was an error in getting this
    //   information
   Int_t npar;
   gGeoManager->PushPath();
   if (!gGeoManager->cd(volumePath.Data())) {
      gGeoManager->PopPath();
      return kFALSE;
   }
   TGeoVolume * vol = gGeoManager->GetCurrentVolume();
   gGeoManager->PopPath();
   if (!vol) return kFALSE;
   TGeoShape *shape = vol->GetShape();
   TClass *class_type = shape->IsA();
   if (class_type==TGeoBBox::Class()) {
      shapeType = "BOX";
      npar = 3;
      par.Set(npar);
      TGeoBBox *box = (TGeoBBox*)shape;
      par.AddAt(box->GetDX(),0);
      par.AddAt(box->GetDY(),1);
      par.AddAt(box->GetDZ(),2);
      return kTRUE;
   }
   if (class_type==TGeoTrd1::Class()) {
      shapeType = "TRD1";
      npar = 4;
      par.Set(npar);
      TGeoTrd1 *trd1 = (TGeoTrd1*)shape;
      par.AddAt(trd1->GetDx1(),0);
      par.AddAt(trd1->GetDx2(),1);
      par.AddAt(trd1->GetDy(), 2);
      par.AddAt(trd1->GetDz(), 3);
      return kTRUE;
   }
   if (class_type==TGeoTrd2::Class()) {
      shapeType = "TRD2";
      npar = 5;
      par.Set(npar);
      TGeoTrd2 *trd2 = (TGeoTrd2*)shape;
      par.AddAt(trd2->GetDx1(),0);
      par.AddAt(trd2->GetDx2(),1);
      par.AddAt(trd2->GetDy1(),2);
      par.AddAt(trd2->GetDy2(),3);
      par.AddAt(trd2->GetDz(), 4);
      return kTRUE;
   }
   if (class_type==TGeoTrap::Class()) {
      shapeType = "TRAP";
      npar = 11;
      par.Set(npar);
      TGeoTrap *trap = (TGeoTrap*)shape;
      Double_t tth = TMath::Tan(trap->GetTheta()*TMath::DegToRad());
      par.AddAt(trap->GetDz(),0);
      par.AddAt(tth*TMath::Cos(trap->GetPhi()*TMath::DegToRad()),1);
      par.AddAt(tth*TMath::Sin(trap->GetPhi()*TMath::DegToRad()),2);
      par.AddAt(trap->GetH1(),3);
      par.AddAt(trap->GetBl1(),4);
      par.AddAt(trap->GetTl1(),5);
      par.AddAt(TMath::Tan(trap->GetAlpha1()*TMath::DegToRad()),6);
      par.AddAt(trap->GetH2(),7);
      par.AddAt(trap->GetBl2(),8);
      par.AddAt(trap->GetTl2(),9);
      par.AddAt(TMath::Tan(trap->GetAlpha2()*TMath::DegToRad()),10);
      return kTRUE;
   }
   if (class_type==TGeoTube::Class()) {
      shapeType = "TUBE";
      npar = 3;
      par.Set(npar);
      TGeoTube *tube = (TGeoTube*)shape;
      par.AddAt(tube->GetRmin(),0);
      par.AddAt(tube->GetRmax(),1);
      par.AddAt(tube->GetDz(),2);
      return kTRUE;
   }
   if (class_type==TGeoTubeSeg::Class()) {
      shapeType = "TUBS";
      npar = 5;
      par.Set(npar);
      TGeoTubeSeg *tubs = (TGeoTubeSeg*)shape;
      par.AddAt(tubs->GetRmin(),0);
      par.AddAt(tubs->GetRmax(),1);
      par.AddAt(tubs->GetDz(),2);
      par.AddAt(tubs->GetPhi1(),3);
      par.AddAt(tubs->GetPhi2(),4);
      return kTRUE;
   }
   if (class_type==TGeoCone::Class()) {
      shapeType = "CONE";
      npar = 5;
      par.Set(npar);
      TGeoCone *cone = (TGeoCone*)shape;
      par.AddAt(cone->GetDz(),0);
      par.AddAt(cone->GetRmin1(),1);
      par.AddAt(cone->GetRmax1(),2);
      par.AddAt(cone->GetRmin2(),3);
      par.AddAt(cone->GetRmax2(),4);
      return kTRUE;
   }
   if (class_type==TGeoConeSeg::Class()) {
      shapeType = "CONS";
      npar = 7;
      par.Set(npar);
      TGeoConeSeg *cons = (TGeoConeSeg*)shape;
      par.AddAt(cons->GetDz(),0);
      par.AddAt(cons->GetRmin1(),1);
      par.AddAt(cons->GetRmax1(),2);
      par.AddAt(cons->GetRmin2(),3);
      par.AddAt(cons->GetRmax2(),4);
      par.AddAt(cons->GetPhi1(),5);
      par.AddAt(cons->GetPhi2(),6);
      return kTRUE;
   }
   if (class_type==TGeoSphere::Class()) {
      shapeType = "SPHE";
      npar = 6;
      par.Set(npar);
      TGeoSphere *sphe = (TGeoSphere*)shape;
      par.AddAt(sphe->GetRmin(),0);
      par.AddAt(sphe->GetRmax(),1);
      par.AddAt(sphe->GetTheta1(),2);
      par.AddAt(sphe->GetTheta2(),3);
      par.AddAt(sphe->GetPhi1(),4);
      par.AddAt(sphe->GetPhi2(),5);
      return kTRUE;
   }
   if (class_type==TGeoPara::Class()) {
      shapeType = "PARA";
      npar = 6;
      par.Set(npar);
      TGeoPara *para = (TGeoPara*)shape;
      par.AddAt(para->GetX(),0);
      par.AddAt(para->GetY(),1);
      par.AddAt(para->GetZ(),2);
      par.AddAt(para->GetTxy(),3);
      par.AddAt(para->GetTxz(),4);
      par.AddAt(para->GetTyz(),5);
      return kTRUE;
   }
   if (class_type==TGeoPgon::Class()) {
      shapeType = "PGON";
      TGeoPgon *pgon = (TGeoPgon*)shape;
      Int_t nz = pgon->GetNz();
      const Double_t *rmin = pgon->GetRmin();
      const Double_t *rmax = pgon->GetRmax();
      const Double_t *z = pgon->GetZ();
      npar = 4 + 3*nz;
      par.Set(npar);
      par.AddAt(pgon->GetPhi1(),0);
      par.AddAt(pgon->GetDphi(),1);
      par.AddAt(pgon->GetNedges(),2);
      par.AddAt(pgon->GetNz(),3);
      for (Int_t i=0; i<nz; i++) {
         par.AddAt(z[i], 4+3*i);
         par.AddAt(rmin[i], 4+3*i+1);
         par.AddAt(rmax[i], 4+3*i+2);
      }
      return kTRUE;
   }
   if (class_type==TGeoPcon::Class()) {
      shapeType = "PCON";
      TGeoPcon *pcon = (TGeoPcon*)shape;
      Int_t nz = pcon->GetNz();
      const Double_t *rmin = pcon->GetRmin();
      const Double_t *rmax = pcon->GetRmax();
      const Double_t *z = pcon->GetZ();
      npar = 3 + 3*nz;
      par.Set(npar);
      par.AddAt(pcon->GetPhi1(),0);
      par.AddAt(pcon->GetDphi(),1);
      par.AddAt(pcon->GetNz(),2);
      for (Int_t i=0; i<nz; i++) {
         par.AddAt(z[i], 3+3*i);
         par.AddAt(rmin[i], 3+3*i+1);
         par.AddAt(rmax[i], 3+3*i+2);
      }
      return kTRUE;
   }
   if (class_type==TGeoEltu::Class()) {
      shapeType = "ELTU";
      npar = 3;
      par.Set(npar);
      TGeoEltu *eltu = (TGeoEltu*)shape;
      par.AddAt(eltu->GetA(),0);
      par.AddAt(eltu->GetB(),1);
      par.AddAt(eltu->GetDz(),2);
      return kTRUE;
   }
   if (class_type==TGeoHype::Class()) {
      shapeType = "HYPE";
      npar = 5;
      par.Set(npar);
      TGeoHype *hype = (TGeoHype*)shape;
      par.AddAt(TMath::Sqrt(hype->RadiusHypeSq(0.,kTRUE)),0);
      par.AddAt(TMath::Sqrt(hype->RadiusHypeSq(0.,kFALSE)),1);
      par.AddAt(hype->GetDZ(),2);
      par.AddAt(hype->GetStIn(),3);
      par.AddAt(hype->GetStOut(),4);
      return kTRUE;
   }
   if (class_type==TGeoGtra::Class()) {
      shapeType = "GTRA";
      npar = 12;
      par.Set(npar);
      TGeoGtra *trap = (TGeoGtra*)shape;
      Double_t tth = TMath::Tan(trap->GetTheta()*TMath::DegToRad());
      par.AddAt(trap->GetDz(),0);
      par.AddAt(tth*TMath::Cos(trap->GetPhi()*TMath::DegToRad()),1);
      par.AddAt(tth*TMath::Sin(trap->GetPhi()*TMath::DegToRad()),2);
      par.AddAt(trap->GetH1(),3);
      par.AddAt(trap->GetBl1(),4);
      par.AddAt(trap->GetTl1(),5);
      par.AddAt(TMath::Tan(trap->GetAlpha1()*TMath::DegToRad()),6);
      par.AddAt(trap->GetH2(),7);
      par.AddAt(trap->GetBl2(),8);
      par.AddAt(trap->GetTl2(),9);
      par.AddAt(TMath::Tan(trap->GetAlpha2()*TMath::DegToRad()),10);
      par.AddAt(trap->GetTwistAngle(),11);
      return kTRUE;
   }
   if (class_type==TGeoCtub::Class()) {
      shapeType = "CTUB";
      npar = 11;
      par.Set(npar);
      TGeoCtub *ctub = (TGeoCtub*)shape;
      const Double_t *lx = ctub->GetNlow();
      const Double_t *tx = ctub->GetNhigh();
      par.AddAt(ctub->GetRmin(),0);
      par.AddAt(ctub->GetRmax(),1);
      par.AddAt(ctub->GetDz(),2);
      par.AddAt(ctub->GetPhi1(),3);
      par.AddAt(ctub->GetPhi2(),4);
      par.AddAt(lx[0],5);
      par.AddAt(lx[1],6);
      par.AddAt(lx[2],7);
      par.AddAt(tx[0],8);
      par.AddAt(tx[1],9);
      par.AddAt(tx[2],10);
      return kTRUE;

   }
   Error("GetShape","Getting shape parameters for shape %s not implemented", shape->ClassName());
   return kFALSE;
}

//______________________________________________________________________
Bool_t TGeoMCGeometry::GetMaterial(const TString &volumeName,
                            TString &name,Int_t &imat,
                            Double_t &a,Double_t &z,Double_t &dens,
                            Double_t &radl,Double_t &inter,TArrayD &par)
{
    // Returns the Material and its parameters for the volume specified
    // by volumeName.
    // Note, Geant3 stores and uses mixtures as an element with an effective
    // Z and A. Consequently, if the parameter Z is not integer, then
    // this material represents some sort of mixture.
    // Inputs:
    //   TString& volumeName  The volume name
    // Outputs:
    //   TSrting   &name       Material name
    //   Int_t     &imat       Material index number
    //   Double_t  &a          Average Atomic mass of material
    //   Double_t  &z          Average Atomic number of material
    //   Double_t  &dens       Density of material [g/cm^3]
    //   Double_t  &radl       Average radiation length of material [cm]
    //   Double_t  &inter      Average interaction length of material [cm]
    //   TArrayD   &par        A TArrayD of user defined parameters.
    // Return:
    //   kTRUE if no errors
   TGeoVolume *vol = gGeoManager->GetVolume(volumeName.Data());
   if (!vol) return kFALSE;
   TGeoMedium *med = vol->GetMedium();
   if (!med) return kFALSE;
   TGeoMaterial *mat = med->GetMaterial();
   imat = mat->GetUniqueID();
   name = mat->GetName();
   name = name.Strip(TString::kTrailing, '$');
   a      = mat->GetA();
   z      = mat->GetZ();
   dens   = mat->GetDensity();
   radl   = mat->GetRadLen();
   inter  = mat->GetIntLen(); // WARNING: THIS IS NOT COMPUTED NATIVELY BY TGEO
   par.Set(0); // NO USER PARAMETERS STORED IN TGEO
   return kTRUE;
}

//______________________________________________________________________
Bool_t TGeoMCGeometry::GetMedium(const TString &volumeName,TString &name,
                          Int_t &imed,Int_t &nmat,Int_t &isvol,Int_t &ifield,
                          Double_t &fieldm,Double_t &tmaxfd,Double_t &stemax,
                          Double_t &deemax,Double_t &epsil, Double_t &stmin,
                          TArrayD &par)
{
    // Returns the Medium and its parameters for the volume specified
    // by volumeName.
    // Inputs:
    //   TString& volumeName  The volume name.
    // Outputs:
    //   TString  &name       Medium name
    //   Int_t    &nmat       Material number defined for this medium
    //   Int_t    &imed       The medium index number
    //   Int_t    &isvol      volume number defined for this medium
    //   Int_t    &iflield    Magnetic field flag
    //   Double_t &fieldm     Magnetic field strength
    //   Double_t &tmaxfd     Maximum angle of deflection per step
    //   Double_t &stemax     Maximum step size
    //   Double_t &deemax     Maximum fraction of energy allowed to be lost
    //                        to continuous process.
    //   Double_t &epsil      Boundary crossing precision
    //   Double_t &stmin      Minimum step size allowed
    //   TArrayD  &par        A TArrayD of user parameters with all of the
    //                        parameters of the specified medium.
    // Return:
    //   kTRUE if there where no errors
   TGeoVolume *vol = gGeoManager->GetVolume(volumeName.Data());
   if (!vol) return kFALSE;
   TGeoMedium *med = vol->GetMedium();
   if (!med) return kFALSE;
   TGeoMaterial *mat = med->GetMaterial();
   nmat = mat->GetUniqueID();
   imed = med->GetId();
   name = med->GetName();
   name = name.Strip(TString::kTrailing, '$');
   par.Set(0); // NO USER PARAMETERS IN TGEO
   isvol  = (Int_t)med->GetParam(0);
   ifield = (Int_t)med->GetParam(1);
   fieldm = med->GetParam(2);
   tmaxfd = med->GetParam(3);
   stemax = med->GetParam(4);
   deemax = med->GetParam(5);
   epsil  = med->GetParam(6);
   stmin  = med->GetParam(7);
   return kTRUE;
}

 TGeoMCGeometry.cxx:1
 TGeoMCGeometry.cxx:2
 TGeoMCGeometry.cxx:3
 TGeoMCGeometry.cxx:4
 TGeoMCGeometry.cxx:5
 TGeoMCGeometry.cxx:6
 TGeoMCGeometry.cxx:7
 TGeoMCGeometry.cxx:8
 TGeoMCGeometry.cxx:9
 TGeoMCGeometry.cxx:10
 TGeoMCGeometry.cxx:11
 TGeoMCGeometry.cxx:12
 TGeoMCGeometry.cxx:13
 TGeoMCGeometry.cxx:14
 TGeoMCGeometry.cxx:15
 TGeoMCGeometry.cxx:16
 TGeoMCGeometry.cxx:17
 TGeoMCGeometry.cxx:18
 TGeoMCGeometry.cxx:19
 TGeoMCGeometry.cxx:20
 TGeoMCGeometry.cxx:21
 TGeoMCGeometry.cxx:22
 TGeoMCGeometry.cxx:23
 TGeoMCGeometry.cxx:24
 TGeoMCGeometry.cxx:25
 TGeoMCGeometry.cxx:26
 TGeoMCGeometry.cxx:27
 TGeoMCGeometry.cxx:28
 TGeoMCGeometry.cxx:29
 TGeoMCGeometry.cxx:30
 TGeoMCGeometry.cxx:31
 TGeoMCGeometry.cxx:32
 TGeoMCGeometry.cxx:33
 TGeoMCGeometry.cxx:34
 TGeoMCGeometry.cxx:35
 TGeoMCGeometry.cxx:36
 TGeoMCGeometry.cxx:37
 TGeoMCGeometry.cxx:38
 TGeoMCGeometry.cxx:39
 TGeoMCGeometry.cxx:40
 TGeoMCGeometry.cxx:41
 TGeoMCGeometry.cxx:42
 TGeoMCGeometry.cxx:43
 TGeoMCGeometry.cxx:44
 TGeoMCGeometry.cxx:45
 TGeoMCGeometry.cxx:46
 TGeoMCGeometry.cxx:47
 TGeoMCGeometry.cxx:48
 TGeoMCGeometry.cxx:49
 TGeoMCGeometry.cxx:50
 TGeoMCGeometry.cxx:51
 TGeoMCGeometry.cxx:52
 TGeoMCGeometry.cxx:53
 TGeoMCGeometry.cxx:54
 TGeoMCGeometry.cxx:55
 TGeoMCGeometry.cxx:56
 TGeoMCGeometry.cxx:57
 TGeoMCGeometry.cxx:58
 TGeoMCGeometry.cxx:59
 TGeoMCGeometry.cxx:60
 TGeoMCGeometry.cxx:61
 TGeoMCGeometry.cxx:62
 TGeoMCGeometry.cxx:63
 TGeoMCGeometry.cxx:64
 TGeoMCGeometry.cxx:65
 TGeoMCGeometry.cxx:66
 TGeoMCGeometry.cxx:67
 TGeoMCGeometry.cxx:68
 TGeoMCGeometry.cxx:69
 TGeoMCGeometry.cxx:70
 TGeoMCGeometry.cxx:71
 TGeoMCGeometry.cxx:72
 TGeoMCGeometry.cxx:73
 TGeoMCGeometry.cxx:74
 TGeoMCGeometry.cxx:75
 TGeoMCGeometry.cxx:76
 TGeoMCGeometry.cxx:77
 TGeoMCGeometry.cxx:78
 TGeoMCGeometry.cxx:79
 TGeoMCGeometry.cxx:80
 TGeoMCGeometry.cxx:81
 TGeoMCGeometry.cxx:82
 TGeoMCGeometry.cxx:83
 TGeoMCGeometry.cxx:84
 TGeoMCGeometry.cxx:85
 TGeoMCGeometry.cxx:86
 TGeoMCGeometry.cxx:87
 TGeoMCGeometry.cxx:88
 TGeoMCGeometry.cxx:89
 TGeoMCGeometry.cxx:90
 TGeoMCGeometry.cxx:91
 TGeoMCGeometry.cxx:92
 TGeoMCGeometry.cxx:93
 TGeoMCGeometry.cxx:94
 TGeoMCGeometry.cxx:95
 TGeoMCGeometry.cxx:96
 TGeoMCGeometry.cxx:97
 TGeoMCGeometry.cxx:98
 TGeoMCGeometry.cxx:99
 TGeoMCGeometry.cxx:100
 TGeoMCGeometry.cxx:101
 TGeoMCGeometry.cxx:102
 TGeoMCGeometry.cxx:103
 TGeoMCGeometry.cxx:104
 TGeoMCGeometry.cxx:105
 TGeoMCGeometry.cxx:106
 TGeoMCGeometry.cxx:107
 TGeoMCGeometry.cxx:108
 TGeoMCGeometry.cxx:109
 TGeoMCGeometry.cxx:110
 TGeoMCGeometry.cxx:111
 TGeoMCGeometry.cxx:112
 TGeoMCGeometry.cxx:113
 TGeoMCGeometry.cxx:114
 TGeoMCGeometry.cxx:115
 TGeoMCGeometry.cxx:116
 TGeoMCGeometry.cxx:117
 TGeoMCGeometry.cxx:118
 TGeoMCGeometry.cxx:119
 TGeoMCGeometry.cxx:120
 TGeoMCGeometry.cxx:121
 TGeoMCGeometry.cxx:122
 TGeoMCGeometry.cxx:123
 TGeoMCGeometry.cxx:124
 TGeoMCGeometry.cxx:125
 TGeoMCGeometry.cxx:126
 TGeoMCGeometry.cxx:127
 TGeoMCGeometry.cxx:128
 TGeoMCGeometry.cxx:129
 TGeoMCGeometry.cxx:130
 TGeoMCGeometry.cxx:131
 TGeoMCGeometry.cxx:132
 TGeoMCGeometry.cxx:133
 TGeoMCGeometry.cxx:134
 TGeoMCGeometry.cxx:135
 TGeoMCGeometry.cxx:136
 TGeoMCGeometry.cxx:137
 TGeoMCGeometry.cxx:138
 TGeoMCGeometry.cxx:139
 TGeoMCGeometry.cxx:140
 TGeoMCGeometry.cxx:141
 TGeoMCGeometry.cxx:142
 TGeoMCGeometry.cxx:143
 TGeoMCGeometry.cxx:144
 TGeoMCGeometry.cxx:145
 TGeoMCGeometry.cxx:146
 TGeoMCGeometry.cxx:147
 TGeoMCGeometry.cxx:148
 TGeoMCGeometry.cxx:149
 TGeoMCGeometry.cxx:150
 TGeoMCGeometry.cxx:151
 TGeoMCGeometry.cxx:152
 TGeoMCGeometry.cxx:153
 TGeoMCGeometry.cxx:154
 TGeoMCGeometry.cxx:155
 TGeoMCGeometry.cxx:156
 TGeoMCGeometry.cxx:157
 TGeoMCGeometry.cxx:158
 TGeoMCGeometry.cxx:159
 TGeoMCGeometry.cxx:160
 TGeoMCGeometry.cxx:161
 TGeoMCGeometry.cxx:162
 TGeoMCGeometry.cxx:163
 TGeoMCGeometry.cxx:164
 TGeoMCGeometry.cxx:165
 TGeoMCGeometry.cxx:166
 TGeoMCGeometry.cxx:167
 TGeoMCGeometry.cxx:168
 TGeoMCGeometry.cxx:169
 TGeoMCGeometry.cxx:170
 TGeoMCGeometry.cxx:171
 TGeoMCGeometry.cxx:172
 TGeoMCGeometry.cxx:173
 TGeoMCGeometry.cxx:174
 TGeoMCGeometry.cxx:175
 TGeoMCGeometry.cxx:176
 TGeoMCGeometry.cxx:177
 TGeoMCGeometry.cxx:178
 TGeoMCGeometry.cxx:179
 TGeoMCGeometry.cxx:180
 TGeoMCGeometry.cxx:181
 TGeoMCGeometry.cxx:182
 TGeoMCGeometry.cxx:183
 TGeoMCGeometry.cxx:184
 TGeoMCGeometry.cxx:185
 TGeoMCGeometry.cxx:186
 TGeoMCGeometry.cxx:187
 TGeoMCGeometry.cxx:188
 TGeoMCGeometry.cxx:189
 TGeoMCGeometry.cxx:190
 TGeoMCGeometry.cxx:191
 TGeoMCGeometry.cxx:192
 TGeoMCGeometry.cxx:193
 TGeoMCGeometry.cxx:194
 TGeoMCGeometry.cxx:195
 TGeoMCGeometry.cxx:196
 TGeoMCGeometry.cxx:197
 TGeoMCGeometry.cxx:198
 TGeoMCGeometry.cxx:199
 TGeoMCGeometry.cxx:200
 TGeoMCGeometry.cxx:201
 TGeoMCGeometry.cxx:202
 TGeoMCGeometry.cxx:203
 TGeoMCGeometry.cxx:204
 TGeoMCGeometry.cxx:205
 TGeoMCGeometry.cxx:206
 TGeoMCGeometry.cxx:207
 TGeoMCGeometry.cxx:208
 TGeoMCGeometry.cxx:209
 TGeoMCGeometry.cxx:210
 TGeoMCGeometry.cxx:211
 TGeoMCGeometry.cxx:212
 TGeoMCGeometry.cxx:213
 TGeoMCGeometry.cxx:214
 TGeoMCGeometry.cxx:215
 TGeoMCGeometry.cxx:216
 TGeoMCGeometry.cxx:217
 TGeoMCGeometry.cxx:218
 TGeoMCGeometry.cxx:219
 TGeoMCGeometry.cxx:220
 TGeoMCGeometry.cxx:221
 TGeoMCGeometry.cxx:222
 TGeoMCGeometry.cxx:223
 TGeoMCGeometry.cxx:224
 TGeoMCGeometry.cxx:225
 TGeoMCGeometry.cxx:226
 TGeoMCGeometry.cxx:227
 TGeoMCGeometry.cxx:228
 TGeoMCGeometry.cxx:229
 TGeoMCGeometry.cxx:230
 TGeoMCGeometry.cxx:231
 TGeoMCGeometry.cxx:232
 TGeoMCGeometry.cxx:233
 TGeoMCGeometry.cxx:234
 TGeoMCGeometry.cxx:235
 TGeoMCGeometry.cxx:236
 TGeoMCGeometry.cxx:237
 TGeoMCGeometry.cxx:238
 TGeoMCGeometry.cxx:239
 TGeoMCGeometry.cxx:240
 TGeoMCGeometry.cxx:241
 TGeoMCGeometry.cxx:242
 TGeoMCGeometry.cxx:243
 TGeoMCGeometry.cxx:244
 TGeoMCGeometry.cxx:245
 TGeoMCGeometry.cxx:246
 TGeoMCGeometry.cxx:247
 TGeoMCGeometry.cxx:248
 TGeoMCGeometry.cxx:249
 TGeoMCGeometry.cxx:250
 TGeoMCGeometry.cxx:251
 TGeoMCGeometry.cxx:252
 TGeoMCGeometry.cxx:253
 TGeoMCGeometry.cxx:254
 TGeoMCGeometry.cxx:255
 TGeoMCGeometry.cxx:256
 TGeoMCGeometry.cxx:257
 TGeoMCGeometry.cxx:258
 TGeoMCGeometry.cxx:259
 TGeoMCGeometry.cxx:260
 TGeoMCGeometry.cxx:261
 TGeoMCGeometry.cxx:262
 TGeoMCGeometry.cxx:263
 TGeoMCGeometry.cxx:264
 TGeoMCGeometry.cxx:265
 TGeoMCGeometry.cxx:266
 TGeoMCGeometry.cxx:267
 TGeoMCGeometry.cxx:268
 TGeoMCGeometry.cxx:269
 TGeoMCGeometry.cxx:270
 TGeoMCGeometry.cxx:271
 TGeoMCGeometry.cxx:272
 TGeoMCGeometry.cxx:273
 TGeoMCGeometry.cxx:274
 TGeoMCGeometry.cxx:275
 TGeoMCGeometry.cxx:276
 TGeoMCGeometry.cxx:277
 TGeoMCGeometry.cxx:278
 TGeoMCGeometry.cxx:279
 TGeoMCGeometry.cxx:280
 TGeoMCGeometry.cxx:281
 TGeoMCGeometry.cxx:282
 TGeoMCGeometry.cxx:283
 TGeoMCGeometry.cxx:284
 TGeoMCGeometry.cxx:285
 TGeoMCGeometry.cxx:286
 TGeoMCGeometry.cxx:287
 TGeoMCGeometry.cxx:288
 TGeoMCGeometry.cxx:289
 TGeoMCGeometry.cxx:290
 TGeoMCGeometry.cxx:291
 TGeoMCGeometry.cxx:292
 TGeoMCGeometry.cxx:293
 TGeoMCGeometry.cxx:294
 TGeoMCGeometry.cxx:295
 TGeoMCGeometry.cxx:296
 TGeoMCGeometry.cxx:297
 TGeoMCGeometry.cxx:298
 TGeoMCGeometry.cxx:299
 TGeoMCGeometry.cxx:300
 TGeoMCGeometry.cxx:301
 TGeoMCGeometry.cxx:302
 TGeoMCGeometry.cxx:303
 TGeoMCGeometry.cxx:304
 TGeoMCGeometry.cxx:305
 TGeoMCGeometry.cxx:306
 TGeoMCGeometry.cxx:307
 TGeoMCGeometry.cxx:308
 TGeoMCGeometry.cxx:309
 TGeoMCGeometry.cxx:310
 TGeoMCGeometry.cxx:311
 TGeoMCGeometry.cxx:312
 TGeoMCGeometry.cxx:313
 TGeoMCGeometry.cxx:314
 TGeoMCGeometry.cxx:315
 TGeoMCGeometry.cxx:316
 TGeoMCGeometry.cxx:317
 TGeoMCGeometry.cxx:318
 TGeoMCGeometry.cxx:319
 TGeoMCGeometry.cxx:320
 TGeoMCGeometry.cxx:321
 TGeoMCGeometry.cxx:322
 TGeoMCGeometry.cxx:323
 TGeoMCGeometry.cxx:324
 TGeoMCGeometry.cxx:325
 TGeoMCGeometry.cxx:326
 TGeoMCGeometry.cxx:327
 TGeoMCGeometry.cxx:328
 TGeoMCGeometry.cxx:329
 TGeoMCGeometry.cxx:330
 TGeoMCGeometry.cxx:331
 TGeoMCGeometry.cxx:332
 TGeoMCGeometry.cxx:333
 TGeoMCGeometry.cxx:334
 TGeoMCGeometry.cxx:335
 TGeoMCGeometry.cxx:336
 TGeoMCGeometry.cxx:337
 TGeoMCGeometry.cxx:338
 TGeoMCGeometry.cxx:339
 TGeoMCGeometry.cxx:340
 TGeoMCGeometry.cxx:341
 TGeoMCGeometry.cxx:342
 TGeoMCGeometry.cxx:343
 TGeoMCGeometry.cxx:344
 TGeoMCGeometry.cxx:345
 TGeoMCGeometry.cxx:346
 TGeoMCGeometry.cxx:347
 TGeoMCGeometry.cxx:348
 TGeoMCGeometry.cxx:349
 TGeoMCGeometry.cxx:350
 TGeoMCGeometry.cxx:351
 TGeoMCGeometry.cxx:352
 TGeoMCGeometry.cxx:353
 TGeoMCGeometry.cxx:354
 TGeoMCGeometry.cxx:355
 TGeoMCGeometry.cxx:356
 TGeoMCGeometry.cxx:357
 TGeoMCGeometry.cxx:358
 TGeoMCGeometry.cxx:359
 TGeoMCGeometry.cxx:360
 TGeoMCGeometry.cxx:361
 TGeoMCGeometry.cxx:362
 TGeoMCGeometry.cxx:363
 TGeoMCGeometry.cxx:364
 TGeoMCGeometry.cxx:365
 TGeoMCGeometry.cxx:366
 TGeoMCGeometry.cxx:367
 TGeoMCGeometry.cxx:368
 TGeoMCGeometry.cxx:369
 TGeoMCGeometry.cxx:370
 TGeoMCGeometry.cxx:371
 TGeoMCGeometry.cxx:372
 TGeoMCGeometry.cxx:373
 TGeoMCGeometry.cxx:374
 TGeoMCGeometry.cxx:375
 TGeoMCGeometry.cxx:376
 TGeoMCGeometry.cxx:377
 TGeoMCGeometry.cxx:378
 TGeoMCGeometry.cxx:379
 TGeoMCGeometry.cxx:380
 TGeoMCGeometry.cxx:381
 TGeoMCGeometry.cxx:382
 TGeoMCGeometry.cxx:383
 TGeoMCGeometry.cxx:384
 TGeoMCGeometry.cxx:385
 TGeoMCGeometry.cxx:386
 TGeoMCGeometry.cxx:387
 TGeoMCGeometry.cxx:388
 TGeoMCGeometry.cxx:389
 TGeoMCGeometry.cxx:390
 TGeoMCGeometry.cxx:391
 TGeoMCGeometry.cxx:392
 TGeoMCGeometry.cxx:393
 TGeoMCGeometry.cxx:394
 TGeoMCGeometry.cxx:395
 TGeoMCGeometry.cxx:396
 TGeoMCGeometry.cxx:397
 TGeoMCGeometry.cxx:398
 TGeoMCGeometry.cxx:399
 TGeoMCGeometry.cxx:400
 TGeoMCGeometry.cxx:401
 TGeoMCGeometry.cxx:402
 TGeoMCGeometry.cxx:403
 TGeoMCGeometry.cxx:404
 TGeoMCGeometry.cxx:405
 TGeoMCGeometry.cxx:406
 TGeoMCGeometry.cxx:407
 TGeoMCGeometry.cxx:408
 TGeoMCGeometry.cxx:409
 TGeoMCGeometry.cxx:410
 TGeoMCGeometry.cxx:411
 TGeoMCGeometry.cxx:412
 TGeoMCGeometry.cxx:413
 TGeoMCGeometry.cxx:414
 TGeoMCGeometry.cxx:415
 TGeoMCGeometry.cxx:416
 TGeoMCGeometry.cxx:417
 TGeoMCGeometry.cxx:418
 TGeoMCGeometry.cxx:419
 TGeoMCGeometry.cxx:420
 TGeoMCGeometry.cxx:421
 TGeoMCGeometry.cxx:422
 TGeoMCGeometry.cxx:423
 TGeoMCGeometry.cxx:424
 TGeoMCGeometry.cxx:425
 TGeoMCGeometry.cxx:426
 TGeoMCGeometry.cxx:427
 TGeoMCGeometry.cxx:428
 TGeoMCGeometry.cxx:429
 TGeoMCGeometry.cxx:430
 TGeoMCGeometry.cxx:431
 TGeoMCGeometry.cxx:432
 TGeoMCGeometry.cxx:433
 TGeoMCGeometry.cxx:434
 TGeoMCGeometry.cxx:435
 TGeoMCGeometry.cxx:436
 TGeoMCGeometry.cxx:437
 TGeoMCGeometry.cxx:438
 TGeoMCGeometry.cxx:439
 TGeoMCGeometry.cxx:440
 TGeoMCGeometry.cxx:441
 TGeoMCGeometry.cxx:442
 TGeoMCGeometry.cxx:443
 TGeoMCGeometry.cxx:444
 TGeoMCGeometry.cxx:445
 TGeoMCGeometry.cxx:446
 TGeoMCGeometry.cxx:447
 TGeoMCGeometry.cxx:448
 TGeoMCGeometry.cxx:449
 TGeoMCGeometry.cxx:450
 TGeoMCGeometry.cxx:451
 TGeoMCGeometry.cxx:452
 TGeoMCGeometry.cxx:453
 TGeoMCGeometry.cxx:454
 TGeoMCGeometry.cxx:455
 TGeoMCGeometry.cxx:456
 TGeoMCGeometry.cxx:457
 TGeoMCGeometry.cxx:458
 TGeoMCGeometry.cxx:459
 TGeoMCGeometry.cxx:460
 TGeoMCGeometry.cxx:461
 TGeoMCGeometry.cxx:462
 TGeoMCGeometry.cxx:463
 TGeoMCGeometry.cxx:464
 TGeoMCGeometry.cxx:465
 TGeoMCGeometry.cxx:466
 TGeoMCGeometry.cxx:467
 TGeoMCGeometry.cxx:468
 TGeoMCGeometry.cxx:469
 TGeoMCGeometry.cxx:470
 TGeoMCGeometry.cxx:471
 TGeoMCGeometry.cxx:472
 TGeoMCGeometry.cxx:473
 TGeoMCGeometry.cxx:474
 TGeoMCGeometry.cxx:475
 TGeoMCGeometry.cxx:476
 TGeoMCGeometry.cxx:477
 TGeoMCGeometry.cxx:478
 TGeoMCGeometry.cxx:479
 TGeoMCGeometry.cxx:480
 TGeoMCGeometry.cxx:481
 TGeoMCGeometry.cxx:482
 TGeoMCGeometry.cxx:483
 TGeoMCGeometry.cxx:484
 TGeoMCGeometry.cxx:485
 TGeoMCGeometry.cxx:486
 TGeoMCGeometry.cxx:487
 TGeoMCGeometry.cxx:488
 TGeoMCGeometry.cxx:489
 TGeoMCGeometry.cxx:490
 TGeoMCGeometry.cxx:491
 TGeoMCGeometry.cxx:492
 TGeoMCGeometry.cxx:493
 TGeoMCGeometry.cxx:494
 TGeoMCGeometry.cxx:495
 TGeoMCGeometry.cxx:496
 TGeoMCGeometry.cxx:497
 TGeoMCGeometry.cxx:498
 TGeoMCGeometry.cxx:499
 TGeoMCGeometry.cxx:500
 TGeoMCGeometry.cxx:501
 TGeoMCGeometry.cxx:502
 TGeoMCGeometry.cxx:503
 TGeoMCGeometry.cxx:504
 TGeoMCGeometry.cxx:505
 TGeoMCGeometry.cxx:506
 TGeoMCGeometry.cxx:507
 TGeoMCGeometry.cxx:508
 TGeoMCGeometry.cxx:509
 TGeoMCGeometry.cxx:510
 TGeoMCGeometry.cxx:511
 TGeoMCGeometry.cxx:512
 TGeoMCGeometry.cxx:513
 TGeoMCGeometry.cxx:514
 TGeoMCGeometry.cxx:515
 TGeoMCGeometry.cxx:516
 TGeoMCGeometry.cxx:517
 TGeoMCGeometry.cxx:518
 TGeoMCGeometry.cxx:519
 TGeoMCGeometry.cxx:520
 TGeoMCGeometry.cxx:521
 TGeoMCGeometry.cxx:522
 TGeoMCGeometry.cxx:523
 TGeoMCGeometry.cxx:524
 TGeoMCGeometry.cxx:525
 TGeoMCGeometry.cxx:526
 TGeoMCGeometry.cxx:527
 TGeoMCGeometry.cxx:528
 TGeoMCGeometry.cxx:529
 TGeoMCGeometry.cxx:530
 TGeoMCGeometry.cxx:531
 TGeoMCGeometry.cxx:532
 TGeoMCGeometry.cxx:533
 TGeoMCGeometry.cxx:534
 TGeoMCGeometry.cxx:535
 TGeoMCGeometry.cxx:536
 TGeoMCGeometry.cxx:537
 TGeoMCGeometry.cxx:538
 TGeoMCGeometry.cxx:539
 TGeoMCGeometry.cxx:540
 TGeoMCGeometry.cxx:541
 TGeoMCGeometry.cxx:542
 TGeoMCGeometry.cxx:543
 TGeoMCGeometry.cxx:544
 TGeoMCGeometry.cxx:545
 TGeoMCGeometry.cxx:546
 TGeoMCGeometry.cxx:547
 TGeoMCGeometry.cxx:548
 TGeoMCGeometry.cxx:549
 TGeoMCGeometry.cxx:550
 TGeoMCGeometry.cxx:551
 TGeoMCGeometry.cxx:552
 TGeoMCGeometry.cxx:553
 TGeoMCGeometry.cxx:554
 TGeoMCGeometry.cxx:555
 TGeoMCGeometry.cxx:556
 TGeoMCGeometry.cxx:557
 TGeoMCGeometry.cxx:558
 TGeoMCGeometry.cxx:559
 TGeoMCGeometry.cxx:560
 TGeoMCGeometry.cxx:561
 TGeoMCGeometry.cxx:562
 TGeoMCGeometry.cxx:563
 TGeoMCGeometry.cxx:564
 TGeoMCGeometry.cxx:565
 TGeoMCGeometry.cxx:566
 TGeoMCGeometry.cxx:567
 TGeoMCGeometry.cxx:568
 TGeoMCGeometry.cxx:569
 TGeoMCGeometry.cxx:570
 TGeoMCGeometry.cxx:571
 TGeoMCGeometry.cxx:572
 TGeoMCGeometry.cxx:573
 TGeoMCGeometry.cxx:574
 TGeoMCGeometry.cxx:575
 TGeoMCGeometry.cxx:576
 TGeoMCGeometry.cxx:577
 TGeoMCGeometry.cxx:578
 TGeoMCGeometry.cxx:579
 TGeoMCGeometry.cxx:580
 TGeoMCGeometry.cxx:581
 TGeoMCGeometry.cxx:582
 TGeoMCGeometry.cxx:583
 TGeoMCGeometry.cxx:584
 TGeoMCGeometry.cxx:585
 TGeoMCGeometry.cxx:586
 TGeoMCGeometry.cxx:587
 TGeoMCGeometry.cxx:588
 TGeoMCGeometry.cxx:589
 TGeoMCGeometry.cxx:590
 TGeoMCGeometry.cxx:591
 TGeoMCGeometry.cxx:592
 TGeoMCGeometry.cxx:593
 TGeoMCGeometry.cxx:594
 TGeoMCGeometry.cxx:595
 TGeoMCGeometry.cxx:596
 TGeoMCGeometry.cxx:597
 TGeoMCGeometry.cxx:598
 TGeoMCGeometry.cxx:599
 TGeoMCGeometry.cxx:600
 TGeoMCGeometry.cxx:601
 TGeoMCGeometry.cxx:602
 TGeoMCGeometry.cxx:603
 TGeoMCGeometry.cxx:604
 TGeoMCGeometry.cxx:605
 TGeoMCGeometry.cxx:606
 TGeoMCGeometry.cxx:607
 TGeoMCGeometry.cxx:608
 TGeoMCGeometry.cxx:609
 TGeoMCGeometry.cxx:610
 TGeoMCGeometry.cxx:611
 TGeoMCGeometry.cxx:612
 TGeoMCGeometry.cxx:613
 TGeoMCGeometry.cxx:614
 TGeoMCGeometry.cxx:615
 TGeoMCGeometry.cxx:616
 TGeoMCGeometry.cxx:617
 TGeoMCGeometry.cxx:618
 TGeoMCGeometry.cxx:619
 TGeoMCGeometry.cxx:620
 TGeoMCGeometry.cxx:621
 TGeoMCGeometry.cxx:622
 TGeoMCGeometry.cxx:623
 TGeoMCGeometry.cxx:624
 TGeoMCGeometry.cxx:625
 TGeoMCGeometry.cxx:626
 TGeoMCGeometry.cxx:627
 TGeoMCGeometry.cxx:628
 TGeoMCGeometry.cxx:629
 TGeoMCGeometry.cxx:630
 TGeoMCGeometry.cxx:631
 TGeoMCGeometry.cxx:632
 TGeoMCGeometry.cxx:633
 TGeoMCGeometry.cxx:634
 TGeoMCGeometry.cxx:635
 TGeoMCGeometry.cxx:636
 TGeoMCGeometry.cxx:637
 TGeoMCGeometry.cxx:638
 TGeoMCGeometry.cxx:639
 TGeoMCGeometry.cxx:640
 TGeoMCGeometry.cxx:641
 TGeoMCGeometry.cxx:642
 TGeoMCGeometry.cxx:643
 TGeoMCGeometry.cxx:644
 TGeoMCGeometry.cxx:645
 TGeoMCGeometry.cxx:646
 TGeoMCGeometry.cxx:647
 TGeoMCGeometry.cxx:648
 TGeoMCGeometry.cxx:649
 TGeoMCGeometry.cxx:650
 TGeoMCGeometry.cxx:651
 TGeoMCGeometry.cxx:652
 TGeoMCGeometry.cxx:653
 TGeoMCGeometry.cxx:654
 TGeoMCGeometry.cxx:655
 TGeoMCGeometry.cxx:656
 TGeoMCGeometry.cxx:657
 TGeoMCGeometry.cxx:658
 TGeoMCGeometry.cxx:659
 TGeoMCGeometry.cxx:660
 TGeoMCGeometry.cxx:661
 TGeoMCGeometry.cxx:662
 TGeoMCGeometry.cxx:663
 TGeoMCGeometry.cxx:664
 TGeoMCGeometry.cxx:665
 TGeoMCGeometry.cxx:666
 TGeoMCGeometry.cxx:667
 TGeoMCGeometry.cxx:668
 TGeoMCGeometry.cxx:669
 TGeoMCGeometry.cxx:670
 TGeoMCGeometry.cxx:671
 TGeoMCGeometry.cxx:672
 TGeoMCGeometry.cxx:673
 TGeoMCGeometry.cxx:674
 TGeoMCGeometry.cxx:675
 TGeoMCGeometry.cxx:676
 TGeoMCGeometry.cxx:677
 TGeoMCGeometry.cxx:678
 TGeoMCGeometry.cxx:679
 TGeoMCGeometry.cxx:680
 TGeoMCGeometry.cxx:681
 TGeoMCGeometry.cxx:682
 TGeoMCGeometry.cxx:683
 TGeoMCGeometry.cxx:684
 TGeoMCGeometry.cxx:685
 TGeoMCGeometry.cxx:686
 TGeoMCGeometry.cxx:687
 TGeoMCGeometry.cxx:688
 TGeoMCGeometry.cxx:689
 TGeoMCGeometry.cxx:690
 TGeoMCGeometry.cxx:691
 TGeoMCGeometry.cxx:692
 TGeoMCGeometry.cxx:693
 TGeoMCGeometry.cxx:694
 TGeoMCGeometry.cxx:695
 TGeoMCGeometry.cxx:696
 TGeoMCGeometry.cxx:697
 TGeoMCGeometry.cxx:698
 TGeoMCGeometry.cxx:699
 TGeoMCGeometry.cxx:700
 TGeoMCGeometry.cxx:701
 TGeoMCGeometry.cxx:702
 TGeoMCGeometry.cxx:703
 TGeoMCGeometry.cxx:704
 TGeoMCGeometry.cxx:705
 TGeoMCGeometry.cxx:706
 TGeoMCGeometry.cxx:707
 TGeoMCGeometry.cxx:708
 TGeoMCGeometry.cxx:709
 TGeoMCGeometry.cxx:710
 TGeoMCGeometry.cxx:711
 TGeoMCGeometry.cxx:712
 TGeoMCGeometry.cxx:713
 TGeoMCGeometry.cxx:714
 TGeoMCGeometry.cxx:715
 TGeoMCGeometry.cxx:716
 TGeoMCGeometry.cxx:717
 TGeoMCGeometry.cxx:718
 TGeoMCGeometry.cxx:719
 TGeoMCGeometry.cxx:720
 TGeoMCGeometry.cxx:721
 TGeoMCGeometry.cxx:722
 TGeoMCGeometry.cxx:723
 TGeoMCGeometry.cxx:724
 TGeoMCGeometry.cxx:725
 TGeoMCGeometry.cxx:726
 TGeoMCGeometry.cxx:727
 TGeoMCGeometry.cxx:728
 TGeoMCGeometry.cxx:729
 TGeoMCGeometry.cxx:730
 TGeoMCGeometry.cxx:731
 TGeoMCGeometry.cxx:732
 TGeoMCGeometry.cxx:733
 TGeoMCGeometry.cxx:734
 TGeoMCGeometry.cxx:735
 TGeoMCGeometry.cxx:736
 TGeoMCGeometry.cxx:737
 TGeoMCGeometry.cxx:738
 TGeoMCGeometry.cxx:739
 TGeoMCGeometry.cxx:740
 TGeoMCGeometry.cxx:741
 TGeoMCGeometry.cxx:742
 TGeoMCGeometry.cxx:743
 TGeoMCGeometry.cxx:744
 TGeoMCGeometry.cxx:745
 TGeoMCGeometry.cxx:746
 TGeoMCGeometry.cxx:747
 TGeoMCGeometry.cxx:748
 TGeoMCGeometry.cxx:749
 TGeoMCGeometry.cxx:750
 TGeoMCGeometry.cxx:751
 TGeoMCGeometry.cxx:752
 TGeoMCGeometry.cxx:753
 TGeoMCGeometry.cxx:754
 TGeoMCGeometry.cxx:755
 TGeoMCGeometry.cxx:756
 TGeoMCGeometry.cxx:757
 TGeoMCGeometry.cxx:758
 TGeoMCGeometry.cxx:759
 TGeoMCGeometry.cxx:760
 TGeoMCGeometry.cxx:761
 TGeoMCGeometry.cxx:762
 TGeoMCGeometry.cxx:763
 TGeoMCGeometry.cxx:764
 TGeoMCGeometry.cxx:765
 TGeoMCGeometry.cxx:766
 TGeoMCGeometry.cxx:767
 TGeoMCGeometry.cxx:768
 TGeoMCGeometry.cxx:769
 TGeoMCGeometry.cxx:770
 TGeoMCGeometry.cxx:771
 TGeoMCGeometry.cxx:772
 TGeoMCGeometry.cxx:773
 TGeoMCGeometry.cxx:774
 TGeoMCGeometry.cxx:775
 TGeoMCGeometry.cxx:776
 TGeoMCGeometry.cxx:777
 TGeoMCGeometry.cxx:778
 TGeoMCGeometry.cxx:779
 TGeoMCGeometry.cxx:780
 TGeoMCGeometry.cxx:781
 TGeoMCGeometry.cxx:782
 TGeoMCGeometry.cxx:783
 TGeoMCGeometry.cxx:784
 TGeoMCGeometry.cxx:785
 TGeoMCGeometry.cxx:786
 TGeoMCGeometry.cxx:787
 TGeoMCGeometry.cxx:788
 TGeoMCGeometry.cxx:789
 TGeoMCGeometry.cxx:790
 TGeoMCGeometry.cxx:791
 TGeoMCGeometry.cxx:792
 TGeoMCGeometry.cxx:793
 TGeoMCGeometry.cxx:794
 TGeoMCGeometry.cxx:795
 TGeoMCGeometry.cxx:796
 TGeoMCGeometry.cxx:797
 TGeoMCGeometry.cxx:798
 TGeoMCGeometry.cxx:799
 TGeoMCGeometry.cxx:800
 TGeoMCGeometry.cxx:801
 TGeoMCGeometry.cxx:802
 TGeoMCGeometry.cxx:803
 TGeoMCGeometry.cxx:804
 TGeoMCGeometry.cxx:805
 TGeoMCGeometry.cxx:806
 TGeoMCGeometry.cxx:807
 TGeoMCGeometry.cxx:808
 TGeoMCGeometry.cxx:809
 TGeoMCGeometry.cxx:810
 TGeoMCGeometry.cxx:811
 TGeoMCGeometry.cxx:812
 TGeoMCGeometry.cxx:813
 TGeoMCGeometry.cxx:814
 TGeoMCGeometry.cxx:815
 TGeoMCGeometry.cxx:816
 TGeoMCGeometry.cxx:817
 TGeoMCGeometry.cxx:818
 TGeoMCGeometry.cxx:819
 TGeoMCGeometry.cxx:820
 TGeoMCGeometry.cxx:821
 TGeoMCGeometry.cxx:822
 TGeoMCGeometry.cxx:823
 TGeoMCGeometry.cxx:824
 TGeoMCGeometry.cxx:825
 TGeoMCGeometry.cxx:826
 TGeoMCGeometry.cxx:827
 TGeoMCGeometry.cxx:828
 TGeoMCGeometry.cxx:829
 TGeoMCGeometry.cxx:830
 TGeoMCGeometry.cxx:831
 TGeoMCGeometry.cxx:832
 TGeoMCGeometry.cxx:833
 TGeoMCGeometry.cxx:834
 TGeoMCGeometry.cxx:835
 TGeoMCGeometry.cxx:836
 TGeoMCGeometry.cxx:837
 TGeoMCGeometry.cxx:838
 TGeoMCGeometry.cxx:839
 TGeoMCGeometry.cxx:840
 TGeoMCGeometry.cxx:841
 TGeoMCGeometry.cxx:842
 TGeoMCGeometry.cxx:843
 TGeoMCGeometry.cxx:844
 TGeoMCGeometry.cxx:845
 TGeoMCGeometry.cxx:846
 TGeoMCGeometry.cxx:847
 TGeoMCGeometry.cxx:848
 TGeoMCGeometry.cxx:849
 TGeoMCGeometry.cxx:850
 TGeoMCGeometry.cxx:851
 TGeoMCGeometry.cxx:852
 TGeoMCGeometry.cxx:853
 TGeoMCGeometry.cxx:854
 TGeoMCGeometry.cxx:855
 TGeoMCGeometry.cxx:856
 TGeoMCGeometry.cxx:857
 TGeoMCGeometry.cxx:858
 TGeoMCGeometry.cxx:859
 TGeoMCGeometry.cxx:860
 TGeoMCGeometry.cxx:861
 TGeoMCGeometry.cxx:862
 TGeoMCGeometry.cxx:863
 TGeoMCGeometry.cxx:864
 TGeoMCGeometry.cxx:865
 TGeoMCGeometry.cxx:866
 TGeoMCGeometry.cxx:867
 TGeoMCGeometry.cxx:868
 TGeoMCGeometry.cxx:869
 TGeoMCGeometry.cxx:870
 TGeoMCGeometry.cxx:871
 TGeoMCGeometry.cxx:872
 TGeoMCGeometry.cxx:873
 TGeoMCGeometry.cxx:874
 TGeoMCGeometry.cxx:875
 TGeoMCGeometry.cxx:876
 TGeoMCGeometry.cxx:877
 TGeoMCGeometry.cxx:878
 TGeoMCGeometry.cxx:879
 TGeoMCGeometry.cxx:880
 TGeoMCGeometry.cxx:881
 TGeoMCGeometry.cxx:882
 TGeoMCGeometry.cxx:883
 TGeoMCGeometry.cxx:884
 TGeoMCGeometry.cxx:885
 TGeoMCGeometry.cxx:886
 TGeoMCGeometry.cxx:887
 TGeoMCGeometry.cxx:888
 TGeoMCGeometry.cxx:889
 TGeoMCGeometry.cxx:890
 TGeoMCGeometry.cxx:891
 TGeoMCGeometry.cxx:892
 TGeoMCGeometry.cxx:893
 TGeoMCGeometry.cxx:894
 TGeoMCGeometry.cxx:895
 TGeoMCGeometry.cxx:896
 TGeoMCGeometry.cxx:897
 TGeoMCGeometry.cxx:898
 TGeoMCGeometry.cxx:899
 TGeoMCGeometry.cxx:900
 TGeoMCGeometry.cxx:901
 TGeoMCGeometry.cxx:902
 TGeoMCGeometry.cxx:903
 TGeoMCGeometry.cxx:904
 TGeoMCGeometry.cxx:905
 TGeoMCGeometry.cxx:906
 TGeoMCGeometry.cxx:907
 TGeoMCGeometry.cxx:908
 TGeoMCGeometry.cxx:909
 TGeoMCGeometry.cxx:910
 TGeoMCGeometry.cxx:911
 TGeoMCGeometry.cxx:912
 TGeoMCGeometry.cxx:913
 TGeoMCGeometry.cxx:914
 TGeoMCGeometry.cxx:915
 TGeoMCGeometry.cxx:916
 TGeoMCGeometry.cxx:917
 TGeoMCGeometry.cxx:918
 TGeoMCGeometry.cxx:919
 TGeoMCGeometry.cxx:920
 TGeoMCGeometry.cxx:921
 TGeoMCGeometry.cxx:922
 TGeoMCGeometry.cxx:923
 TGeoMCGeometry.cxx:924
 TGeoMCGeometry.cxx:925
 TGeoMCGeometry.cxx:926
 TGeoMCGeometry.cxx:927
 TGeoMCGeometry.cxx:928
 TGeoMCGeometry.cxx:929
 TGeoMCGeometry.cxx:930
 TGeoMCGeometry.cxx:931
 TGeoMCGeometry.cxx:932
 TGeoMCGeometry.cxx:933
 TGeoMCGeometry.cxx:934
 TGeoMCGeometry.cxx:935
 TGeoMCGeometry.cxx:936
 TGeoMCGeometry.cxx:937
 TGeoMCGeometry.cxx:938
 TGeoMCGeometry.cxx:939
 TGeoMCGeometry.cxx:940
 TGeoMCGeometry.cxx:941
 TGeoMCGeometry.cxx:942
 TGeoMCGeometry.cxx:943
 TGeoMCGeometry.cxx:944
 TGeoMCGeometry.cxx:945
 TGeoMCGeometry.cxx:946
 TGeoMCGeometry.cxx:947
 TGeoMCGeometry.cxx:948
 TGeoMCGeometry.cxx:949
 TGeoMCGeometry.cxx:950
 TGeoMCGeometry.cxx:951
 TGeoMCGeometry.cxx:952
 TGeoMCGeometry.cxx:953
 TGeoMCGeometry.cxx:954
 TGeoMCGeometry.cxx:955
 TGeoMCGeometry.cxx:956
 TGeoMCGeometry.cxx:957
 TGeoMCGeometry.cxx:958
 TGeoMCGeometry.cxx:959
 TGeoMCGeometry.cxx:960
 TGeoMCGeometry.cxx:961
 TGeoMCGeometry.cxx:962
 TGeoMCGeometry.cxx:963
 TGeoMCGeometry.cxx:964
 TGeoMCGeometry.cxx:965
 TGeoMCGeometry.cxx:966
 TGeoMCGeometry.cxx:967
 TGeoMCGeometry.cxx:968
 TGeoMCGeometry.cxx:969
 TGeoMCGeometry.cxx:970
 TGeoMCGeometry.cxx:971
 TGeoMCGeometry.cxx:972
 TGeoMCGeometry.cxx:973
 TGeoMCGeometry.cxx:974
 TGeoMCGeometry.cxx:975
 TGeoMCGeometry.cxx:976
 TGeoMCGeometry.cxx:977
 TGeoMCGeometry.cxx:978
 TGeoMCGeometry.cxx:979
 TGeoMCGeometry.cxx:980
 TGeoMCGeometry.cxx:981
 TGeoMCGeometry.cxx:982
 TGeoMCGeometry.cxx:983
 TGeoMCGeometry.cxx:984
 TGeoMCGeometry.cxx:985
 TGeoMCGeometry.cxx:986
 TGeoMCGeometry.cxx:987
 TGeoMCGeometry.cxx:988
 TGeoMCGeometry.cxx:989
 TGeoMCGeometry.cxx:990
 TGeoMCGeometry.cxx:991
 TGeoMCGeometry.cxx:992
 TGeoMCGeometry.cxx:993
 TGeoMCGeometry.cxx:994
 TGeoMCGeometry.cxx:995
 TGeoMCGeometry.cxx:996
 TGeoMCGeometry.cxx:997
 TGeoMCGeometry.cxx:998
 TGeoMCGeometry.cxx:999
 TGeoMCGeometry.cxx:1000
 TGeoMCGeometry.cxx:1001
 TGeoMCGeometry.cxx:1002
 TGeoMCGeometry.cxx:1003
 TGeoMCGeometry.cxx:1004
 TGeoMCGeometry.cxx:1005
 TGeoMCGeometry.cxx:1006
 TGeoMCGeometry.cxx:1007
 TGeoMCGeometry.cxx:1008
 TGeoMCGeometry.cxx:1009
 TGeoMCGeometry.cxx:1010
 TGeoMCGeometry.cxx:1011
 TGeoMCGeometry.cxx:1012
 TGeoMCGeometry.cxx:1013
 TGeoMCGeometry.cxx:1014
 TGeoMCGeometry.cxx:1015
 TGeoMCGeometry.cxx:1016
 TGeoMCGeometry.cxx:1017
 TGeoMCGeometry.cxx:1018
 TGeoMCGeometry.cxx:1019
 TGeoMCGeometry.cxx:1020
 TGeoMCGeometry.cxx:1021
 TGeoMCGeometry.cxx:1022
 TGeoMCGeometry.cxx:1023
 TGeoMCGeometry.cxx:1024
 TGeoMCGeometry.cxx:1025
 TGeoMCGeometry.cxx:1026
 TGeoMCGeometry.cxx:1027
 TGeoMCGeometry.cxx:1028
 TGeoMCGeometry.cxx:1029
 TGeoMCGeometry.cxx:1030
 TGeoMCGeometry.cxx:1031
 TGeoMCGeometry.cxx:1032
 TGeoMCGeometry.cxx:1033
 TGeoMCGeometry.cxx:1034
 TGeoMCGeometry.cxx:1035
 TGeoMCGeometry.cxx:1036
 TGeoMCGeometry.cxx:1037
 TGeoMCGeometry.cxx:1038
 TGeoMCGeometry.cxx:1039
 TGeoMCGeometry.cxx:1040
 TGeoMCGeometry.cxx:1041
 TGeoMCGeometry.cxx:1042
 TGeoMCGeometry.cxx:1043
 TGeoMCGeometry.cxx:1044
 TGeoMCGeometry.cxx:1045
 TGeoMCGeometry.cxx:1046
 TGeoMCGeometry.cxx:1047
 TGeoMCGeometry.cxx:1048
 TGeoMCGeometry.cxx:1049
 TGeoMCGeometry.cxx:1050
 TGeoMCGeometry.cxx:1051
 TGeoMCGeometry.cxx:1052