/* @(#)root/gdml:$Id$ */
// Author: Ben Lloyd 09/11/06

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


/*************************************************************************

____________________________________________________________________

TGDMLParse Class

--------------------------------------------------------------------

 This class contains the implementation of the GDML  parser associated to
 all the supported GDML elements. User should never need to explicitly
 instaciate this class. It is internally used by the TGeoManager.

 Each element process has a 'Binding' to ROOT. The 'binding' is specific
 mapping of GDML elements (materials, solids, etc) to specific objects which
 should be instanciated by the converted. In the present case (ROOT) the
 binding is implemented at the near the end of each process function. Most
 bindings follow similar format, dependent on what is being added to the
 geometry.

 This file also contains the implementation of the TGDMLRefl class. This is
 just a small helper class used internally by the 'reflection' method (for
 reflected solids).

 The presently supported list of TGeo classes is the following:

 Materials:
 TGeoElement
 TGeoMaterial
 TGeoMixture

 Solids:
 TGeoBBox
 TGeoArb8
 TGeoTubeSeg
 TGeoConeSeg
 TGeoCtub
 TGeoPcon
 TGeoTrap
 TGeoGtra
 TGeoTrd2
 TGeoSphere
 TGeoPara
 TGeoTorus
 TGeoHype
 TGeoPgon
 TGeoXtru
 TGeoEltu
 TGeoParaboloid
 TGeoCompositeShape (subtraction, union, intersection)

 Approximated Solids:
 Ellipsoid (approximated to a TGeoBBox)
 Elliptical cone (approximated to a TGeoCone)

 Geometry:
 TGeoVolume
 TGeoVolumeAssembly
 divisions
 reflection

When most solids or volumes are added to the geometry they


 Whenever a new element is added to GDML schema, this class needs to be extended.
 The appropriate method (process) needs to be implemented, as well as the new
 element process then needs to be linked thru the function TGDMLParse

 For any question or remarks concerning this code, please send an email to
 ben.lloyd@cern.ch

****************************************************************************/

#include "TGeoManager.h"
#include "TGeoMatrix.h"
#include "TXMLEngine.h"
#include "TGeoVolume.h"
#include "TGeoBBox.h"
#include "TGeoParaboloid.h"
#include "TGeoArb8.h"
#include "TGeoTube.h"
#include "TGeoCone.h"
#include "TGeoTrd2.h"
#include "TGeoPcon.h"
#include "TGeoPgon.h"
#include "TGeoSphere.h"
#include "TGeoTorus.h"
#include "TGeoPara.h"
#include "TGeoHype.h"
#include "TGeoEltu.h"
#include "TGeoXtru.h"
#include "TGeoScaledShape.h"
#include "TGeoVolume.h"
#include "TROOT.h"
#include "TMath.h"
#include "TMap.h"
#include "TObjString.h"
#include "TGeoExtension.h"
#include "TGeoMaterial.h"
#include "TGeoBoolNode.h"
#include "TGeoMedium.h"
#include "TGeoElement.h"
#include "TGeoShape.h"
#include "TGeoCompositeShape.h"
#include "TGDMLParse.h"
#include <stdlib.h>
#include <string>

ClassImp(TGDMLParse)

//_________________________________________________________________
TGeoVolume* TGDMLParse::GDMLReadFile(const char* filename)
{
   //creates the new instance of the XMLEngine called 'gdml', using the filename >>
   //then parses the file and creates the DOM tree. Then passes the DOM to the
   //next function to translate it.

   // First create engine
   TXMLEngine* gdml = new TXMLEngine;
   gdml->SetSkipComments(kTRUE);

   // Now try to parse xml file
   XMLDocPointer_t gdmldoc = gdml->ParseFile(filename);
   if (gdmldoc == 0) {
      delete gdml;
      return 0;
   } else {

      // take access to main node
      XMLNodePointer_t mainnode = gdml->DocGetRootElement(gdmldoc);

      fFileEngine[fFILENO] = gdml;
      fStartFile = filename;
      fCurrentFile = filename;

      // display recursively all nodes and subnodes
      ParseGDML(gdml, mainnode);

      // Release memory before exit
      gdml->FreeDoc(gdmldoc);
      delete gdml;

   }
   return fWorld;

}

//________________________________________________________________
const char* TGDMLParse::ParseGDML(TXMLEngine* gdml, XMLNodePointer_t node)
{
   //this function recursively moves thru the DOM tree of the GDML file. It checks for
   //key words along the way and if a key word is found it calls the corresponding
   //function to interpret the node.

   XMLAttrPointer_t attr = gdml->GetFirstAttr(node);
   const char* name = gdml->GetNodeName(node);
   XMLNodePointer_t parentn = gdml->GetParent(node);
   const char* parent = gdml->GetNodeName(parentn);
   XMLNodePointer_t childtmp = 0;

   const char* posistr = "position";
   const char* setustr = "setup";
   const char* consstr = "constant";
   const char* varistr = "variable";
   const char* rotastr = "rotation";
   const char* scalstr = "scale";
   const char* elemstr = "element";
   const char* istpstr = "isotope";
   const char* matestr = "material";
   const char* volustr = "volume";
   const char* assestr = "assembly";
   const char* twtrstr = "twistedtrap"; //name changed according to schema
   const char* cutTstr = "cutTube";
   const char* bboxstr = "box";
   const char* xtrustr = "xtru";
   const char* arb8str = "arb8";
   const char* tubestr = "tube";
   const char* conestr = "cone";
   const char* polystr = "polycone";
   const char* hypestr = "hype";
   const char* trapstr = "trap";
   const char* trdstr = "trd";
   const char* sphestr = "sphere";
   const char* orbstr = "orb";
   const char* parastr = "para";
   const char* torustr = "torus";
   const char* hedrstr = "polyhedra";
   const char* eltustr = "eltube";
   const char* subtstr = "subtraction";
   const char* uniostr = "union";
   const char* parbstr = "paraboloid";
   const char* intestr = "intersection";
   const char* reflstr = "reflectedSolid";
   const char* ellistr = "ellipsoid";
   const char* elcnstr = "elcone";
   Bool_t hasIsotopes;
   Bool_t hasIsotopesExtended;

   if ((strcmp(name, posistr)) == 0) {
      node = PosProcess(gdml, node, attr);
   } else if ((strcmp(name, rotastr)) == 0) {
      node = RotProcess(gdml, node, attr);
   } else if ((strcmp(name, scalstr)) == 0) {
      node = SclProcess(gdml, node, attr);
   } else if ((strcmp(name, setustr)) == 0) {
      node = TopProcess(gdml, node);
   } else if ((strcmp(name, consstr)) == 0) {
      node = ConProcess(gdml, node, attr);
   } else if ((strcmp(name, varistr)) == 0) {
      node = ConProcess(gdml, node, attr);
   } 
   //*************eleprocess********************************                                                                                                                                      

   else if (((strcmp(name, "atom")) == 0) && ((strcmp(parent, elemstr)) == 0)) {
     hasIsotopes = kFALSE;
     hasIsotopesExtended = kFALSE;
     node = EleProcess(gdml, node, parentn, hasIsotopes, hasIsotopesExtended);
   }
   else if ((strcmp(name, elemstr) == 0) && !gdml->HasAttr(node, "Z")) {
     hasIsotopes = kTRUE;
     hasIsotopesExtended = kFALSE;
     node = EleProcess(gdml, node, parentn, hasIsotopes, hasIsotopesExtended);
   }

   else if ((strcmp(name, elemstr) == 0) && gdml->HasAttr(node, "Z")) {
     childtmp = gdml->GetChild(node);
     if ((strcmp(gdml->GetNodeName(childtmp), "fraction") == 0) ){
       hasIsotopes = kFALSE;
       hasIsotopesExtended = kTRUE;
       node = EleProcess(gdml, node, parentn, hasIsotopes, hasIsotopesExtended);}
   }

   //********isoprocess******************************  

   else if (((strcmp(name, "atom")) == 0) && ((strcmp(parent, istpstr)) == 0)) {
      node = IsoProcess(gdml, node, parentn);
   } 

   //********matprocess***********************************                                                                                                                                        
   else if ((strcmp(name, matestr)) == 0 && gdml->HasAttr(node, "Z")) {
     childtmp = gdml->GetChild(node);
//     if ((strcmp(gdml->GetNodeName(childtmp), "fraction") == 0) || (strcmp(gdml->GetNodeName(childtmp), "D") == 0)){
     // Bool_t frac = kFALSE;
     Bool_t atom = kFALSE;
     while(childtmp) {
       // frac = strcmp(gdml->GetNodeName(childtmp),"fraction")==0;
       atom = strcmp(gdml->GetNodeName(childtmp),"atom")==0;
       gdml->ShiftToNext(childtmp);
     }
     int z = (atom) ? 1 : 0;
     node = MatProcess(gdml, node, attr, z);
   }
   else if ((strcmp(name, matestr)) == 0 && !gdml->HasAttr(node, "Z")) {
     int z = 0;
     node = MatProcess(gdml, node, attr, z);
   }
    
   //********************************************* 
   else if ((strcmp(name, volustr)) == 0) {
      node = VolProcess(gdml, node);
   } else if ((strcmp(name, bboxstr)) == 0) {
      node = Box(gdml, node, attr);
   } else if ((strcmp(name, ellistr)) == 0) {
      node = Ellipsoid(gdml, node, attr);
   } else if ((strcmp(name, elcnstr)) == 0) {
      node = ElCone(gdml, node, attr);
   } else if ((strcmp(name, cutTstr)) == 0) {
      node = CutTube(gdml, node, attr);
   } else if ((strcmp(name, arb8str)) == 0) {
      node = Arb8(gdml, node, attr);
   } else if ((strcmp(name, tubestr)) == 0) {
      node = Tube(gdml, node, attr);
   } else if ((strcmp(name, conestr)) == 0) {
      node = Cone(gdml, node, attr);
   } else if ((strcmp(name, polystr)) == 0) {
      node = Polycone(gdml, node, attr);
   } else if ((strcmp(name, trapstr)) == 0) {
      node = Trap(gdml, node, attr);
   } else if ((strcmp(name, trdstr)) == 0) {
      node = Trd(gdml, node, attr);
   } else if ((strcmp(name, sphestr)) == 0) {
      node = Sphere(gdml, node, attr);
   } else if ((strcmp(name, xtrustr)) == 0) {
      node = Xtru(gdml, node, attr);
   } else if ((strcmp(name, twtrstr)) == 0) {
      node = TwistTrap(gdml, node, attr);
   } else if ((strcmp(name, hypestr)) == 0) {
      node = Hype(gdml, node, attr);
   } else if ((strcmp(name, orbstr)) == 0) {
      node = Orb(gdml, node, attr);
   } else if ((strcmp(name, parastr)) == 0) {
      node = Para(gdml, node, attr);
   } else if ((strcmp(name, torustr)) == 0) {
      node = Torus(gdml, node, attr);
   } else if ((strcmp(name, eltustr)) == 0) {
      node = ElTube(gdml, node, attr);
   } else if ((strcmp(name, hedrstr)) == 0) {
      node = Polyhedra(gdml, node, attr);
   } else if ((strcmp(name, parbstr)) == 0) {
      node = Paraboloid(gdml, node, attr);
   } else if ((strcmp(name, subtstr)) == 0) {
      node = BooSolid(gdml, node, attr, 1);
   } else if ((strcmp(name, intestr)) == 0) {
      node = BooSolid(gdml, node, attr, 2);
   } else if ((strcmp(name, uniostr)) == 0) {
      node = BooSolid(gdml, node, attr, 3);
   } else if ((strcmp(name, reflstr)) == 0) {
      node = Reflection(gdml, node, attr);
   } else if ((strcmp(name, assestr)) == 0) {
      node = AssProcess(gdml, node);
      //CHECK FOR TAGS NOT SUPPORTED
   } else if (((strcmp(name, "gdml")) != 0) && ((strcmp(name, "define")) != 0) &&
              ((strcmp(name, "element")) != 0) && ((strcmp(name, "materials")) != 0) &&
              ((strcmp(name, "solids")) != 0) && ((strcmp(name, "structure")) != 0) &&
              ((strcmp(name, "zplane")) != 0) && ((strcmp(name, "first")) != 0) &&
              ((strcmp(name, "second")) != 0) && ((strcmp(name, "twoDimVertex")) != 0) &&
              ((strcmp(name, "firstposition")) != 0) && ((strcmp(name, "firstpositionref")) != 0) &&
              ((strcmp(name, "firstrotation")) != 0) && ((strcmp(name, "firstrotationref")) != 0) &&
              ((strcmp(name, "section")) != 0) && ((strcmp(name, "world")) != 0) &&
              ((strcmp(name, "isotope")) != 0)) {
      std::cout << "Error: Unsupported GDML Tag Used :" << name << ". Please Check Geometry/Schema." << std::endl;
   }

   // Check for Child node - if present call this funct. recursively until no more

   XMLNodePointer_t child = gdml->GetChild(node);
   while (child != 0) {
      ParseGDML(gdml, child);
      child = gdml->GetNext(child);
   }

   return fWorldName;

}

//____________________________________________________________
double TGDMLParse::Evaluate(const char* evalline)
{

   //takes a string containing a mathematical expression and returns the value of the expression

   return TFormula("TFormula", evalline).Eval(0);
}

//____________________________________________________________
Int_t TGDMLParse::SetAxis(const char* axisString)
{
   //When using the 'divide' process in the geometry this function
   //sets the variable 'axis' depending on what is specified.

   Int_t axis = 0;

   if ((strcmp(axisString, "kXAxis")) == 0) {
      axis = 1;
   } else if ((strcmp(axisString, "kYAxis")) == 0) {
      axis = 2;
   } else if ((strcmp(axisString, "kZAxis")) == 0) {
      axis = 3;
   } else if ((strcmp(axisString, "kRho")) == 0) {
      axis = 1;
   } else if ((strcmp(axisString, "kPhi")) == 0) {
      axis = 2;
   }

   return axis;
}

//____________________________________________________________
const char* TGDMLParse::NameShort(const char* name)
{
   //this function looks thru a string for the chars '0x' next to
   //each other, when it finds this, it calls another function to strip
   //the hex address.   It does this recursively until the end of the
   //string is reached, returning a string without any hex addresses.
   static TString stripped;
   stripped = name;
   Int_t index = stripped.Index("0x");
   if (index >= 0) stripped = stripped(0, index);
   return stripped.Data();
}

//________________________________________________________
XMLNodePointer_t TGDMLParse::ConProcess(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the define section of the GDML file, constants can be declared.
   //when the constant keyword is found, this function is called, and the
   //name and value of the constant is stored in the "fformvec" vector as
   //a TFormula class, representing a constant function

   TString name = "";
   TString value = "";
   TString tempattr;

   while (attr != 0) {
      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      }
      if (tempattr == "value") {
         value = gdml->GetAttrValue(attr);
      }
      attr = gdml->GetNextAttr(attr);
   }

   //if ((strcmp(fCurrentFile, fStartFile)) != 0) {
   // name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   //}

   fformvec.push_back(new TFormula(name, value));

   return node;
}
//__________________________________________________________
TString TGDMLParse::GetScale(const char* unit)
{
   //Throughout the GDML file, a unit can de specified.   Whether it be
   //angular or linear, values can be used as well as abbreviations such as
   // 'mm' or 'deg'. This function is passed the specified unit and if it is
   //found, replaces it with the appropriate value.

   TString retunit = "";

   if (strcmp(unit, "mm") == 0) {
      retunit = "0.1";
   } else if (strcmp(unit, "milimeter") == 0) {
      retunit = "0.1";
   } else if (strcmp(unit, "cm") == 0) {
      retunit = "1.0";
   } else if (strcmp(unit, "centimeter") == 0) {
      retunit = "1.0";
   } else if (strcmp(unit, "m") == 0) {
      retunit = "100.0";
   } else if (strcmp(unit, "meter") == 0) {
      retunit = "100.0";
   } else if (strcmp(unit, "km") == 0) {
      retunit = "100000.0";
   } else if (strcmp(unit, "kilometer") == 0) {
      retunit = "100000.0";
   } else if (strcmp(unit, "rad") == 0) {
      retunit = TString::Format("%.12f", TMath::RadToDeg());
   } else if (strcmp(unit, "radian") == 0) {
      retunit = TString::Format("%.12f", TMath::RadToDeg());
   } else if (strcmp(unit, "deg") == 0) {
      retunit = "1.0";
   } else if (strcmp(unit, "degree") == 0) {
      retunit = "1.0";
   } else if (strcmp(unit, "pi") == 0) {
      retunit = "pi";
   } else if (strcmp(unit, "avogadro") == 0) {
      retunit = TString::Format("%.12g", TMath::Na());
   } else {
      Fatal("GetScale", "Unit <%s> not known", unit);
      retunit = "0";
   }
   return retunit;

}

//__________________________________________________________
Double_t TGDMLParse::GetScaleVal(const char* unit)
{
   //Throughout the GDML file, a unit can de specified.   Whether it be
   //angular or linear, values can be used as well as abbreviations such as
   // 'mm' or 'deg'. This function is passed the specified unit and if it is
   //found, replaces it with the appropriate value.

   Double_t retunit = 0.;

   if (strcmp(unit, "mm") == 0) {
      retunit = 0.1;
   } else if (strcmp(unit, "milimeter") == 0) {
      retunit = 0.1;
   } else if (strcmp(unit, "cm") == 0) {
      retunit = 1.0;
   } else if (strcmp(unit, "centimeter") == 0) {
      retunit = 1.0;
   } else if (strcmp(unit, "m") == 0) {
      retunit = 100.0;
   } else if (strcmp(unit, "meter") == 0) {
      retunit = 100.0;
   } else if (strcmp(unit, "km") == 0) {
      retunit = 100000.0;
   } else if (strcmp(unit, "kilometer") == 0) {
      retunit = 100000.0;
   } else if (strcmp(unit, "rad") == 0) {
      retunit = TMath::RadToDeg();
   } else if (strcmp(unit, "radian") == 0) {
      retunit = TMath::RadToDeg();
   } else if (strcmp(unit, "deg") == 0) {
      retunit = 1.0;
   } else if (strcmp(unit, "degree") == 0) {
      retunit = 1.0;
   } else if (strcmp(unit, "pi") == 0) {
      retunit = TMath::Pi();
   } else if (strcmp(unit, "avogadro") == 0) {
      retunit = TMath::Na();
   } else {
      Fatal("GetScaleVal", "Unit <%s> not known", unit);
      retunit = 0;
   }
   return retunit;
}

//__________________________________________________________
Double_t TGDMLParse::Value(const char* svalue) const
{
// Convert number in string format to double value.
   static TString s;
   s = svalue;
   return s.Atof();
}   

//____________________________________________________________
XMLNodePointer_t TGDMLParse::PosProcess(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the define section of the GDML file, positions can be declared.
   //when the position keyword is found, this function is called, and the
   //name and values of the position are converted into type TGeoPosition
   //and stored in fposmap map using the name as its key. This function
   //can also be called when declaring solids.

   TString lunit = "mm";
   TString xpos = "0";
   TString ypos = "0";
   TString zpos = "0";
   TString name = "0";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x") {
         xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "y") {
         ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         zpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "unit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);
   Double_t xline = Value(xpos)*retunit;
   Double_t yline = Value(ypos)*retunit;
   Double_t zline = Value(zpos)*retunit;

   TGeoTranslation* pos = new TGeoTranslation(xline, yline, zline);

   fposmap[name.Data()] = pos;

   return node;

}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::RotProcess(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the define section of the GDML file, rotations can be declared.
   //when the rotation keyword is found, this function is called, and the
   //name and values of the rotation are converted into type TGeoRotation
   //and stored in frotmap map using the name as its key. This function
   //can also be called when declaring solids.

   TString aunit = "rad";
   TString xpos = "0";
   TString ypos = "0";
   TString zpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x") {
         xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "y") {
         ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         zpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "unit") {
         aunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(aunit);

   Double_t xline = Value(xpos)*retunit;
   Double_t yline = Value(ypos)*retunit;
   Double_t zline = Value(zpos)*retunit;

   TGeoRotation* rot = new TGeoRotation();

   rot->RotateZ(-zline);
   rot->RotateY(-yline);
   rot->RotateX(-xline);

   frotmap[name.Data()] = rot;

   return node;

}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::SclProcess(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the define section of the GDML file, rotations can be declared.
   //when the scale keyword is found, this function is called, and the
   //name and values of the scale are converted into type TGeoScale
   //and stored in fsclmap map using the name as its key. This function
   //can also be called when declaring solids.

   TString xpos = "0";
   TString ypos = "0";
   TString zpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x") {
         xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "y") {
         ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         zpos = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   TGeoScale* scl = new TGeoScale(Value(xpos), Value(ypos), Value(zpos));

   fsclmap[name.Data()] = scl;

   return node;
}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::IsoProcess(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t parentn)
{
   //In the material section of the GDML file, an isotope may be declared.
   //when the isotope keyword is found, this function is called, and the
   //required parameters are taken and stored, these are then bound and
   //converted to type TGeoIsotope and stored in fisomap map using the name
   //as its key.
   TString z = "0";
   TString name = "";
   TString n = "0";
   TString atom = "0";
   TString tempattr;

   //obtain attributes for the element

   XMLAttrPointer_t attr = gdml->GetFirstAttr(parentn);

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "n") {
         n = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   //get the atom value for the element

   attr = gdml->GetFirstAttr(node);

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);

      if (tempattr == "value") {
         atom = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Int_t z2 = (Int_t)Value(z);
   Int_t n2 = (Int_t)Value(n);
   Double_t atom2 = Value(atom);

   TGeoIsotope* iso = new TGeoIsotope(NameShort(name), z2 , n2, atom2);
   fisomap[name.Data()] = iso;

   return node;

}

//___________________________________________________________
//XMLNodePointer_t TGDMLParse::EleProcess(TXMLEngine* gdml, XMLNodePointer_t node,   XMLNodePointer_t parentn, Bool_t hasIsotopes)
XMLNodePointer_t TGDMLParse::EleProcess(TXMLEngine* gdml, XMLNodePointer_t node,   XMLNodePointer_t parentn, Bool_t hasIsotopes, Bool_t hasIsotopesExtended)

{
                                          
  //when the element keyword is found, this function is called, and the                                                                                                                      
  //name and values of the element are converted into type TGeoElement and                                                                                                                   
  //stored in felemap map using the name as its key.                                                                                                                                         

  TString z = "0";
  TString name = "";
  TString formula = "";
  TString atom = "0";
  TString tempattr;
  Int_t   ncompo = 0;
  typedef FracMap::iterator fractions;
  FracMap fracmap;

  XMLNodePointer_t child = 0;

  //obtain attributes for the element                                                                                                                                                        

  XMLAttrPointer_t attr = gdml->GetFirstAttr(node);

  if (hasIsotopes) {
                                                                                                                                         
    // Get the name of the element                                                                                                                                                           
    while (attr != 0) {
      tempattr = gdml->GetAttrName(attr);
      if (tempattr == "name") {
	name = gdml->GetAttrValue(attr);
                                                                                                                           
	if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	  name = TString::Format("%s_%s", name.Data(), fCurrentFile);
	}
	break;
      }
      attr = gdml->GetNextAttr(attr);
    }
    // Get component isotopes. Loop all children.                                                                                                                                            
    child = gdml->GetChild(node);
    while (child != 0) {

      // Check for fraction node name                                                                                                                                                        
      if ((strcmp(gdml->GetNodeName(child), "fraction")) == 0) {
	Double_t n = 0;
	TString ref = "";
	ncompo = ncompo + 1;
	attr = gdml->GetFirstAttr(child);
	while (attr != 0) {
	  tempattr = gdml->GetAttrName(attr);
	  tempattr.ToLower();
	  if (tempattr == "n") {
	    n = Value(gdml->GetAttrValue(attr));
	  } else if (tempattr == "ref") {
	    ref = gdml->GetAttrValue(attr);
	    if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	      ref = TString::Format("%s_%s", ref.Data(), fCurrentFile);
	    }
	  }
	  attr = gdml->GetNextAttr(attr);
	} // loop on child attributes                                                                                                                                                        
	fracmap[ref.Data()] = n;
      }
      child = gdml->GetNext(child);
    } // loop on children  
    // Create TGeoElement - note: Object(name, title) corresponds to Element(formula, name)                                                                                                  
    TGeoElement *ele = new TGeoElement(NameShort(name), NameShort(name), ncompo);
    for (fractions f = fracmap.begin(); f != fracmap.end(); f++) {
      if (fisomap.find(f->first) != fisomap.end()) {
	ele->AddIsotope((TGeoIsotope*)fisomap[f->first], f->second);
      }
    }
    felemap[name.Data()] = ele;
    return child;
  } // hasisotopes end loop                                                                                                                                                                  

  //*************************   


  if (hasIsotopesExtended) {
                                                                                                                             
    while (attr != 0) {
      tempattr = gdml->GetAttrName(attr);

      if (tempattr == "name") {
	name = gdml->GetAttrValue(attr);
                                                                                                                   
	if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	  name = TString::Format("%s_%s", name.Data(), fCurrentFile);
	}
	break;
      }
      attr = gdml->GetNextAttr(attr);
    }
    // Get component isotopes. Loop all children.                                                                                                                                            
    child = gdml->GetChild(node);
    while (child != 0) {

      // Check for fraction node name                                                                                                                                                        
      if ((strcmp(gdml->GetNodeName(child), "fraction")) == 0) {                                                                                                                         
	Double_t n = 0;
	TString ref = "";
	ncompo = ncompo + 1;
	attr = gdml->GetFirstAttr(child);
	while (attr != 0) {
	  tempattr = gdml->GetAttrName(attr);
	  tempattr.ToLower();
	  if (tempattr == "n") {
	    n = Value(gdml->GetAttrValue(attr));
	  } else if (tempattr == "ref") {
	    ref = gdml->GetAttrValue(attr);
	    if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	      ref = TString::Format("%s_%s", ref.Data(), fCurrentFile);
	    }
	  }
	  attr = gdml->GetNextAttr(attr);
	} // loop on child attributes                                                                                                                                                        
	fracmap[ref.Data()] = n;
      }
      child = gdml->GetNext(child);
    } // loop on children            
    // Create TGeoElement - note: Object(name, title) corresponds to Element(formula, name)                                                                                                  
    TGeoElement *ele = new TGeoElement(NameShort(name), NameShort(name), ncompo);
    for (fractions f = fracmap.begin(); f != fracmap.end(); f++) {
      if (fisomap.find(f->first) != fisomap.end()) {
	ele->AddIsotope((TGeoIsotope*)fisomap[f->first], f->second);
      }
    }
    felemap[name.Data()] = ele;
    return child;
  } // hasisotopesExtended end loop                                                                                                                                                          



  //***************************                                                                                                                                                              

  attr = gdml->GetFirstAttr(parentn);
  while (attr != 0) {

    tempattr = gdml->GetAttrName(attr);
    tempattr.ToLower();

    if (tempattr == "name") {
      name = gdml->GetAttrValue(attr);
                                                                                                                               
    } else if (tempattr == "z") {
      z = gdml->GetAttrValue(attr);
    } else if (tempattr == "formula") {
      formula = gdml->GetAttrValue(attr);
    }

    attr = gdml->GetNextAttr(attr);
  }

  //get the atom value for the element                                                                                                                                                       

  attr = gdml->GetFirstAttr(node);

  while (attr != 0) {

    tempattr = gdml->GetAttrName(attr);
    tempattr.ToLower();

    if (tempattr == "value") {
      atom = gdml->GetAttrValue(attr);
    }

    attr = gdml->GetNextAttr(attr);
  }

  if ((strcmp(fCurrentFile, fStartFile)) != 0) {
    name = TString::Format("%s_%s", name.Data(), fCurrentFile);
  }

  Int_t z2 = (Int_t)Value(z);
  Double_t atom2 = Value(atom);

  TGeoElement* ele = new TGeoElement(formula, NameShort(name), z2 , atom2);

  felemap[name.Data()] = ele;

  return node;

}

//_________________________________________________________________________
XMLNodePointer_t TGDMLParse::MatProcess(TXMLEngine* gdml, XMLNodePointer_t node,   XMLAttrPointer_t attr,  int z)
{
  //In the materials section of the GDML file, materials can be declared.                                                                                                                    
  //when the material keyword is found, this function is called, and the                                                                                                                     
  //name and values of the material are converted into type TGeoMaterial                                                                                                                     
  //and stored in fmatmap map using the name as its key. Mixtures can also                                                                                                                   
  // be declared, and they are converted to TGeoMixture and stored in                                                                                                                        
  //fmixmap.   These mixtures and materials are then all converted into one                                                                                                                  
  //common type - TGeoMedium.   The map fmedmap is then built up of all the                                                                                                                  
  //mixtures and materials.                                                                                                                                                                  

  //!Map to hold fractions while being processed                                                                                                                                                
  typedef FracMap::iterator fractions;
//  typedef FracMap::iterator i;
  FracMap fracmap;

  static int medid = 0;
  XMLNodePointer_t child = gdml->GetChild(node);
  TString tempattr = "";
  Int_t ncompo = 0, mixflag = 2;
  Double_t density = 0;
  TString name = "";
  TGeoMixture* mix = 0;
  TGeoMaterial* mat = 0;
  TString tempconst = "";
  TString matname;
  Bool_t composite = kFALSE;

  if (z == 1) {
    Double_t a = 0;
    Double_t d = 0;

    while (child != 0) {
      attr = gdml->GetFirstAttr(child);

      if ((strcmp(gdml->GetNodeName(child), "atom")) == 0) {
        while (attr != 0) {
          tempattr = gdml->GetAttrName(attr);
          tempattr.ToLower();

          if (tempattr == "value") {
            a = Value(gdml->GetAttrValue(attr));
          }
          attr = gdml->GetNextAttr(attr);
        }
      }

      if ((strcmp(gdml->GetNodeName(child), "D")) == 0) {
        while (attr != 0) {
          tempattr = gdml->GetAttrName(attr);
          tempattr.ToLower();

          if (tempattr == "value") {
            d = Value(gdml->GetAttrValue(attr));
          }
          attr = gdml->GetNextAttr(attr);
        }
      }
      child = gdml->GetNext(child);
    }
    //still in the is Z else...but not in the while..                                                                                                                                         

    name = gdml->GetAttr(node, "name");                                                                                                                          

    if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
    }

    //CHECK FOR CONSTANTS                                                                                                                                                                     
    tempconst = gdml->GetAttr(node, "Z");

    Double_t valZ = Value(tempconst);

    TString tmpname = name;
    //deal with special case - Z of vacuum is always 0                                                                                                                                        
    tmpname.ToLower();
    if (tmpname == "vacuum") {
      valZ = 0;
    }
    mat = new TGeoMaterial(NameShort(name), a, valZ, d);
    mixflag = 0;
    //Note: Object(name, title) corresponds to Element(formula, name)   
    TGeoElement* mat_ele = new TGeoElement(NameShort(name), NameShort(name), atoi(tempconst), a);
    felemap[name.Data()] = mat_ele;

  }

  else if (z == 0) {
    while (child != 0) {
      attr = gdml->GetFirstAttr(child);

      if ((strcmp(gdml->GetNodeName(child), "fraction")) == 0) {
        Double_t n = 0;
        TString ref = "";
        ncompo = ncompo + 1;

        while (attr != 0) {
          tempattr = gdml->GetAttrName(attr);
          tempattr.ToLower();

          if (tempattr == "n") {
            n = Value(gdml->GetAttrValue(attr));
          } else if (tempattr == "ref") {
            ref = gdml->GetAttrValue(attr);
            if ((strcmp(fCurrentFile, fStartFile)) != 0) {
              ref = TString::Format("%s_%s", ref.Data(), fCurrentFile);
            }

          }

          attr = gdml->GetNextAttr(attr);
        }
        fracmap[ref.Data()] = n;

      }

      else if ((strcmp(gdml->GetNodeName(child), "composite")) == 0) {
        composite = kTRUE;
        Double_t n = 0;
        TString ref = "";
        ncompo = ncompo + 1;

        while (attr != 0) {
          tempattr = gdml->GetAttrName(attr);
          tempattr.ToLower();

          if (tempattr == "n") {
            n = Value(gdml->GetAttrValue(attr));
          } else if (tempattr == "ref") {
            ref = gdml->GetAttrValue(attr);
            if ((strcmp(fCurrentFile, fStartFile)) != 0) {
              ref = TString::Format("%s_%s", ref.Data(), fCurrentFile);
            }
          }

          attr = gdml->GetNextAttr(attr);
        }

        fracmap[ref.Data()] = n;

      }
      else if ((strcmp(gdml->GetNodeName(child), "D")) == 0) {
        while (attr != 0) {
          tempattr = gdml->GetAttrName(attr);
          tempattr.ToLower();

          if (tempattr == "value") {
            density = Value(gdml->GetAttrValue(attr));
          }

          attr = gdml->GetNextAttr(attr);
        }
      }

      child = gdml->GetNext(child);
    }
    //still in the not Z else...but not in the while..                                                                                                                                        

    name = gdml->GetAttr(node, "name");
    if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
    }
    //mix = new TGeoMixture(NameShort(name), 0 /*ncompo*/, density);                                                                                                                          
    mix = new TGeoMixture(NameShort(name), ncompo, density);
    mixflag = 1;
    Int_t natoms;
    Double_t weight;

    for (fractions f = fracmap.begin(); f != fracmap.end(); f++) {
      matname = f->first;
      matname = NameShort(matname);                                                                                                           

      TGeoMaterial *mattmp = (TGeoMaterial*)gGeoManager->GetListOfMaterials()->FindObject(matname);

      if (mattmp || (felemap.find(f->first) != felemap.end())) {
        if (composite) {
          natoms = (Int_t)f->second;
	  
          mix->AddElement(felemap[f->first], natoms);
	  
        }

        else {
          weight = f->second;
          if (mattmp){

            mix->AddElement(mattmp, weight);
          }
          else{
           
	    mix->AddElement(felemap[f->first], weight);
          }
	}
      }
    }

  }//end of not Z else                                                                                                                                                                        

  medid = medid + 1;

  TGeoMedium* med = 0;

  if (mixflag == 1) {
    fmixmap[name.Data()] = mix;
    med = new TGeoMedium(NameShort(name), medid, mix);
  } else if (mixflag == 0) {
    fmatmap[name.Data()] = mat;
    med = new TGeoMedium(NameShort(name), medid, mat);
  }

  fmedmap[name.Data()] = med;

  return child;

}

//____________________________________________________________
XMLNodePointer_t TGDMLParse::VolProcess(TXMLEngine* gdml, XMLNodePointer_t node)
{
   //In the structure section of the GDML file, volumes can be declared.
   //when the volume keyword is found, this function is called, and the
   //name and values of the volume are converted into type TGeoVolume and
   //stored in fvolmap map using the name as its key. Volumes reference to
   //a solid declared higher up in the solids section of the GDML file.
   //Some volumes reference to other physical volumes to contain inside
   //that volume, declaring positions and rotations within that volume.
   //When each 'physvol' is declared, a matrix for its rotation and
   //translation is built and the 'physvol node' is added to the original
   //volume using TGeoVolume->AddNode.
   //volume division is also declared within the volume node, and once the
   //values for the division have been collected, using TGeoVolume->divide,
   //the division can be applied.

   XMLAttrPointer_t attr;
   XMLNodePointer_t subchild;
   XMLNodePointer_t subsubchild;

   XMLNodePointer_t child = gdml->GetChild(node);
   TString name;
   TString solidname = "";
   TString tempattr = "";
   TGeoShape* solid = 0;
   TGeoMedium* medium = 0;
   TGeoVolume* vol = 0;
   TGeoVolume* lv = 0;
   TGeoShape* reflex = 0;
   const Double_t* parentrot = 0;
   int yesrefl = 0;
   TString reftemp = "";
   TMap *auxmap = 0;

   while (child != 0) {
      if ((strcmp(gdml->GetNodeName(child), "solidref")) == 0) {

         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fsolmap.find(reftemp.Data()) != fsolmap.end()) {
            solid = fsolmap[reftemp.Data()];
         } else if (freflectmap.find(reftemp.Data()) != freflectmap.end()) {
            solidname = reftemp;
            reflex = fsolmap[freflectmap[reftemp.Data()]];
         } else {
            printf("Solid: %s, Not Yet Defined!\n", reftemp.Data());
         }
      }

      if ((strcmp(gdml->GetNodeName(child), "materialref")) == 0) {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fmedmap.find(reftemp.Data()) != fmedmap.end()) {
            medium = fmedmap[reftemp.Data()];
         } else {
            printf("Medium: %s, Not Yet Defined!\n", gdml->GetAttr(child, "ref"));
         }
      }

      child = gdml->GetNext(child);
   }

   name = gdml->GetAttr(node, "name");

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   if (reflex == 0) {
      vol = new TGeoVolume(NameShort(name), solid, medium);
   } else {
      vol = new TGeoVolume(NameShort(name), reflex, medium);
      freflvolmap[name.Data()] = solidname;
      TGDMLRefl* parentrefl = freflsolidmap[solidname.Data()];
      parentrot = parentrefl->GetMatrix()->GetRotationMatrix();
      yesrefl = 1;
   }

   fvolmap[name.Data()] = vol;

   //PHYSVOL - run through child nodes of VOLUME again..

   child = gdml->GetChild(node);

   while (child != 0) {
      if ((strcmp(gdml->GetNodeName(child), "physvol")) == 0) {

         TString volref = "";

         TGeoTranslation* pos = 0;
         TGeoRotation* rot = 0;
         TGeoScale* scl = 0;

         subchild = gdml->GetChild(child);
	 
         while (subchild != 0) {
	  
	   tempattr = gdml->GetNodeName(subchild);
	   tempattr.ToLower();
	   
	   if (tempattr == "volumeref") {
	     reftemp = gdml->GetAttr(subchild, "ref");
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     
	     lv = fvolmap[reftemp.Data()];
	     
	     volref = reftemp;
	    
	   }


	   else if (tempattr == "file") {
	    
 
	     const char* filevol;
	     const char* prevfile = fCurrentFile;
	     
	     fCurrentFile = gdml->GetAttr(subchild, "name");
	     filevol = gdml->GetAttr(subchild, "volname");
   

	     TXMLEngine* gdml2 = new TXMLEngine;
	     gdml2->SetSkipComments(kTRUE);
	     
	     XMLDocPointer_t filedoc1 = gdml2->ParseFile(fCurrentFile);
	     if (filedoc1 == 0) {
	       Fatal("VolProcess", "Bad filename given %s", fCurrentFile);
	     }
	     // take access to main node
	     XMLNodePointer_t mainnode2 = gdml2->DocGetRootElement(filedoc1);
	     //increase depth counter + add DOM pointer
	     fFILENO = fFILENO + 1;
	     fFileEngine[fFILENO] = gdml2;
	     
	     if (ffilemap.find(fCurrentFile) != ffilemap.end()) {
	       volref = ffilemap[fCurrentFile];
	       
	     } else {
	       volref = ParseGDML(gdml2, mainnode2);
	       
	       ffilemap[fCurrentFile] = volref;
	     }
	     
	     if (filevol) {
	     
	     volref = filevol;
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	     	 volref = TString::Format("%s_%s", volref.Data(), fCurrentFile);
	     }
	     
	     }
	    
	     fFILENO = fFILENO - 1;
	     gdml = fFileEngine[fFILENO];
	     fCurrentFile = prevfile;
	    
	     lv = fvolmap[volref.Data()];
	     //File tree complete - Release memory before exit
	     
	     
	     gdml->FreeDoc(filedoc1);
	     delete gdml2;
	   } 


	   else if (tempattr == "position") {

	     attr = gdml->GetFirstAttr(subchild);
	     PosProcess(gdml, subchild, attr);
	     reftemp = gdml->GetAttr(subchild, "name");
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     pos = fposmap[reftemp.Data()];
	   } else if (tempattr == "positionref") {
	     
	     reftemp = gdml->GetAttr(subchild, "ref");
	     
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     if (fposmap.find(reftemp.Data()) != fposmap.end()) pos = fposmap[reftemp.Data()];
	     else std::cout << "ERROR! Physvol's position " << reftemp << " not found!" << std::endl;
	   } else if (tempattr == "rotation") {
	     
	     attr = gdml->GetFirstAttr(subchild);
	     RotProcess(gdml, subchild, attr);
	     reftemp = gdml->GetAttr(subchild, "name");
	     
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     rot = frotmap[reftemp.Data()];
	   } else if (tempattr == "rotationref") {
	     reftemp = gdml->GetAttr(subchild, "ref");
	    

	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     if (frotmap.find(reftemp.Data()) != frotmap.end()) rot = frotmap[reftemp.Data()];
	     else std::cout << "ERROR! Physvol's rotation " << reftemp << " not found!" << std::endl;
	   } else if (tempattr == "scale") {
	    
	     attr = gdml->GetFirstAttr(subchild);
	     SclProcess(gdml, subchild, attr);
	     reftemp = gdml->GetAttr(subchild, "name");
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     scl = fsclmap[reftemp.Data()];
	   } else if (tempattr == "scaleref") {
	    
	     reftemp = gdml->GetAttr(subchild, "ref");
	     if ((strcmp(fCurrentFile, fStartFile)) != 0) {
	       reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	     }
	     if (fsclmap.find(reftemp.Data()) != fsclmap.end()) scl = fsclmap[reftemp.Data()];
	     else std::cout << "ERROR! Physvol's scale " << reftemp << " not found!" << std::endl;
	   }
	   
	   subchild = gdml->GetNext(subchild);
         }

         //ADD PHYSVOL TO GEOMETRY
         fVolID = fVolID + 1;

         TGeoHMatrix *transform = new TGeoHMatrix();

         if (pos != 0) transform->SetTranslation(pos->GetTranslation());
         if (rot != 0) transform->SetRotation(rot->GetRotationMatrix());

         if (scl != 0) { // Scaling must be added to the rotation matrix!

            Double_t scale3x3[9];
            memset(scale3x3, 0, 9 * sizeof(Double_t));
            const Double_t *diagonal = scl->GetScale();

            scale3x3[0] = diagonal[0];
            scale3x3[4] = diagonal[1];
            scale3x3[8] = diagonal[2];

            TGeoRotation scaleMatrix;
            scaleMatrix.SetMatrix(scale3x3);
            transform->Multiply(&scaleMatrix);
         }

// BEGIN: reflectedSolid. Remove lines between if reflectedSolid will be removed from GDML!!!

         if (freflvolmap.find(volref.Data()) != freflvolmap.end()) {
            // if the volume is a reflected volume the matrix needs to be CHANGED
            TGDMLRefl* temprefl = freflsolidmap[freflvolmap[volref.Data()]];
            transform->Multiply(temprefl->GetMatrix());
         }

         if (yesrefl == 1) {
            // reflection is done per solid so that we cancel it if exists in mother volume!!!
            TGeoRotation prot;
            prot.SetMatrix(parentrot);
            transform->MultiplyLeft(&prot);
         }

// END: reflectedSolid

         vol->AddNode(lv, fVolID, transform);
      } else if ((strcmp(gdml->GetNodeName(child), "divisionvol")) == 0) {
	
	TString divVolref = "";
	Int_t axis = 0;
	TString number = "";
	TString width = "";
	TString offset = "";
	TString lunit = "mm";
	
	attr = gdml->GetFirstAttr(child);
	
	while (attr != 0) {
	  
            tempattr = gdml->GetAttrName(attr);
            tempattr.ToLower();

            if (tempattr == "axis") {
               axis = SetAxis(gdml->GetAttrValue(attr));
            } else if (tempattr == "number") {
               number = gdml->GetAttrValue(attr);
            } else if (tempattr == "width") {
               width = gdml->GetAttrValue(attr);
            } else if (tempattr == "offset") {
               offset = gdml->GetAttrValue(attr);
            } else if (tempattr == "unit") {
               lunit = gdml->GetAttrValue(attr);
            }

            attr = gdml->GetNextAttr(attr);

	}

         subchild = gdml->GetChild(child);

         while (subchild != 0) {
            tempattr = gdml->GetNodeName(subchild);
            tempattr.ToLower();

            if (tempattr == "volumeref") {
               reftemp = gdml->GetAttr(subchild, "ref");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               divVolref = reftemp;
            }

            subchild = gdml->GetNext(subchild);
         }


         Double_t numberline = Value(number);
         Double_t retunit = GetScaleVal(lunit);
         Double_t step = Value(width) * retunit;
         Double_t offsetline = Value(offset) * retunit;

         fVolID = fVolID + 1;
         Double_t xlo, xhi;
         vol->GetShape()->GetAxisRange(axis, xlo, xhi);

         Int_t ndiv = (Int_t)numberline;
         Double_t start = xlo + offsetline;

         Int_t numed = 0;
         TGeoVolume *old = fvolmap[NameShort(reftemp)];
         if (old) {
            // We need to recreate the content of the divided volume
            old = fvolmap[NameShort(reftemp)];
            // medium id
            numed = old->GetMedium()->GetId();
         }
         TGeoVolume *divvol = vol->Divide(NameShort(reftemp), axis, ndiv, start, step, numed);
         if (!divvol) {
            Fatal("VolProcess", "Cannot divide volume %s", vol->GetName());
            return child;
         }
         if (old && old->GetNdaughters()) {
            divvol->ReplayCreation(old);
         }
         fvolmap[NameShort(reftemp)] = divvol;

      }//end of Division else if


      else if ((strcmp(gdml->GetNodeName(child), "replicavol")) == 0) {
	
	TString divVolref = "";
	Int_t axis = 0;
	TString number = "";
	TString width = "";
	TString offset = "";
	TString wunit = "mm";
	TString ounit = "mm";
	Double_t wvalue = 0;
	Double_t ovalue = 0;
       

	attr = gdml->GetFirstAttr(child);
	
	while (attr != 0) {
	  
            tempattr = gdml->GetAttrName(attr);
            tempattr.ToLower();

            if (tempattr == "number") {
	      number = gdml->GetAttrValue(attr);
	    }
            attr = gdml->GetNextAttr(attr);
	}

	subchild = gdml->GetChild(child);

         while (subchild != 0) {
            tempattr = gdml->GetNodeName(subchild);
            tempattr.ToLower();

            if (tempattr == "volumeref") {
	      reftemp = gdml->GetAttr(subchild, "ref");
	      if ((strcmp(fCurrentFile, fStartFile)) != 0) {
		reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
	      }
	      divVolref = reftemp;
	    }
	    
	    if (tempattr == "replicate_along_axis") {
	      subsubchild = gdml->GetChild(subchild);
	      
	      while (subsubchild != 0) {
		if ((strcmp(gdml->GetNodeName(subsubchild), "width")) == 0) {
		  attr = gdml->GetFirstAttr(subsubchild);
		  while (attr != 0) {
		    tempattr = gdml->GetAttrName(attr);
		    tempattr.ToLower();
		    if (tempattr == "value") {
		      wvalue = Value(gdml->GetAttrValue(attr));
		    }
		    else if (tempattr == "unit"){
		      wunit = gdml->GetAttrValue(attr);
		    } 
		    
		    attr = gdml->GetNextAttr(attr);
		  }
		}
		else if ((strcmp(gdml->GetNodeName(subsubchild), "offset")) == 0) {
		  attr = gdml->GetFirstAttr(subsubchild);
		  while (attr != 0) {
		    tempattr = gdml->GetAttrName(attr);
		    tempattr.ToLower();
		    if (tempattr == "value") {
		      ovalue = Value(gdml->GetAttrValue(attr));
		    }
		    else if (tempattr == "unit"){
		      ounit = gdml->GetAttrValue(attr);
		    } 
		    attr = gdml->GetNextAttr(attr);
		  }
		}
		
		else if ((strcmp(gdml->GetNodeName(subsubchild), "direction")) == 0) {
		  attr = gdml->GetFirstAttr(subsubchild);
		  while (attr != 0) {
		    tempattr = gdml->GetAttrName(attr);
		    tempattr.ToLower();
		    if (tempattr == "x") {
		      axis = 1;
		    }
		    else if (tempattr == "y"){
		      axis = 2;
		    }
		    else if (tempattr == "z"){
		      axis = 3;
		    }
		    else if (tempattr == "rho"){
		      axis = 1;
		    }
		    else if (tempattr == "phi"){
		      axis = 2;
		    }

		    attr = gdml->GetNextAttr(attr);
		  }
		}
		
	      subsubchild = gdml->GetNext(subsubchild);
	      }

	    }

	    
	    subchild = gdml->GetNext(subchild);
	 }
      
      
         Double_t retwunit = GetScaleVal(wunit);
	 Double_t retounit = GetScaleVal(ounit);

         Double_t numberline = Value(number);
         Double_t widthline = wvalue*retwunit;
         Double_t offsetline = ovalue*retounit;

         fVolID = fVolID + 1;
         Double_t xlo, xhi;
         vol->GetShape()->GetAxisRange(axis, xlo, xhi);

         Int_t ndiv = (Int_t)numberline;
         Double_t start = xlo + offsetline;

         Double_t step = widthline;
         Int_t numed = 0;
         TGeoVolume *old = fvolmap[NameShort(reftemp)];
         if (old) {
            // We need to recreate the content of the divided volume
            old = fvolmap[NameShort(reftemp)];
            // medium id
            numed = old->GetMedium()->GetId();
         }
         TGeoVolume *divvol = vol->Divide(NameShort(reftemp), axis, ndiv, start, step, numed);
         if (!divvol) {
            Fatal("VolProcess", "Cannot divide volume %s", vol->GetName());
            return child;
         }
         if (old && old->GetNdaughters()) {
            divvol->ReplayCreation(old);
         }
         fvolmap[NameShort(reftemp)] = divvol;

	 } //End of replicavol
      else if (strcmp(gdml->GetNodeName(child), "auxiliary") == 0) {
         if(!auxmap) {
            printf("Auxiliary values for volume %s\n",vol->GetName());
            auxmap = new TMap();
            vol->SetUserExtension(new TGeoRCExtension(auxmap));
         }
         attr = gdml->GetFirstAttr(child);
         while(attr) {
            if(strcmp(gdml->GetAttrName(attr),"auxtype")) Fatal("VolProcess","Expecting auxtype, found %s",
                                          gdml->GetAttrName(attr));
            const char *auxType = gdml->GetAttrValue(attr);
            attr = gdml->GetNextAttr(attr);
            if(strcmp(gdml->GetAttrName(attr),"auxvalue")) Fatal("VolProcess","Expecting auxvalue, found %s",
                                          gdml->GetAttrName(attr));
            const char *auxValue = gdml->GetAttrValue(attr);

            printf("%s = %s\n",auxType, auxValue);
            auxmap->Add(new TObjString(auxType),new TObjString(auxValue));
            attr = gdml->GetNextAttr(attr);
         }
      }

      child = gdml->GetNext(child);
   }

   return child;

}

//______________________________________________________
XMLNodePointer_t TGDMLParse::BooSolid(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr, int num)
{
   //In the solid section of the GDML file, boolean solids can be
   //declared. when the subtraction, intersection or union   keyword
   //is found, this function is called, and the values (rotation and
   //translation) of the solid are converted into type TGeoCompositeShape
   //and stored in fsolmap map using the name as its key.
   //
   //1 = SUBTRACTION
   //2 = INTERSECTION
   //3 = UNION

   TString reftemp = "";
   TString tempattr = "";
   XMLNodePointer_t child = gdml->GetChild(node);

   TGeoShape* first = 0;
   TGeoShape* second = 0;

   TGeoTranslation* firstPos = new TGeoTranslation(0, 0, 0);
   TGeoTranslation* secondPos = new TGeoTranslation(0, 0, 0);

   TGeoRotation* firstRot = new TGeoRotation();
   TGeoRotation* secondRot = new TGeoRotation();

   firstRot->RotateZ(0);
   firstRot->RotateY(0);
   firstRot->RotateX(0);

   secondRot->RotateZ(0);
   secondRot->RotateY(0);
   secondRot->RotateX(0);

   TString name = gdml->GetAttr(node, "name");

   if ((strcmp(fCurrentFile, fStartFile)) != 0)
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);

   while (child != 0) {
      tempattr = gdml->GetNodeName(child);
      tempattr.ToLower();

      if (tempattr == "first") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fsolmap.find(reftemp.Data()) != fsolmap.end()) {
            first = fsolmap[reftemp.Data()];
         }
      } else if (tempattr == "second") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fsolmap.find(reftemp.Data()) != fsolmap.end()) {
            second = fsolmap[reftemp.Data()];
         }
      } else if (tempattr == "position") {
         attr = gdml->GetFirstAttr(child);
         PosProcess(gdml, child, attr);
         reftemp = gdml->GetAttr(child, "name");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         secondPos = fposmap[reftemp.Data()];
      } else if (tempattr == "positionref") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fposmap.find(reftemp.Data()) != fposmap.end()) {
            secondPos = fposmap[reftemp.Data()];
         }
      } else if (tempattr == "rotation") {
         attr = gdml->GetFirstAttr(child);
         RotProcess(gdml, child, attr);
         reftemp = gdml->GetAttr(child, "name");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         secondRot = frotmap[reftemp.Data()];
      } else if (tempattr == "rotationref") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (frotmap.find(reftemp.Data()) != frotmap.end()) {
            secondRot = frotmap[reftemp.Data()];
         }
      } else if (tempattr == "firstposition") {
         attr = gdml->GetFirstAttr(child);
         PosProcess(gdml, child, attr);
         reftemp = gdml->GetAttr(child, "name");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         firstPos = fposmap[reftemp.Data()];
      } else if (tempattr == "firstpositionref") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (fposmap.find(reftemp.Data()) != fposmap.end()) {
            firstPos = fposmap[reftemp.Data()];
         }
      } else if (tempattr == "firstrotation") {
         attr = gdml->GetFirstAttr(child);
         RotProcess(gdml, child, attr);
         reftemp = gdml->GetAttr(child, "name");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         firstRot = frotmap[reftemp.Data()];
      } else if (tempattr == "firstrotationref") {
         reftemp = gdml->GetAttr(child, "ref");
         if ((strcmp(fCurrentFile, fStartFile)) != 0) {
            reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
         }
         if (frotmap.find(reftemp.Data()) != frotmap.end()) {
            firstRot = frotmap[reftemp.Data()];
         }
      }
      child = gdml->GetNext(child);
   }

   TGeoMatrix* firstMatrix = new TGeoCombiTrans(*firstPos, firstRot->Inverse());
   TGeoMatrix* secondMatrix = new TGeoCombiTrans(*secondPos, secondRot->Inverse());

   TGeoCompositeShape* boolean = 0;
   if (!first || !second) {
      Fatal("BooSolid", "Incomplete solid %s, missing shape components", name.Data());
      return child;
   }
   switch (num) {
      case 1:
         boolean = new TGeoCompositeShape(NameShort(name), new TGeoSubtraction(first, second, firstMatrix, secondMatrix));
         break;      // SUBTRACTION
      case 2:
         boolean = new TGeoCompositeShape(NameShort(name), new TGeoIntersection(first, second, firstMatrix, secondMatrix));
         break;     // INTERSECTION
      case 3:
         boolean = new TGeoCompositeShape(NameShort(name), new TGeoUnion(first, second, firstMatrix, secondMatrix));
         break;            // UNION
      default:
         break;
   }

   fsolmap[name.Data()] = boolean;

   return child;
}

//________________________________________________________
XMLNodePointer_t TGDMLParse::AssProcess(TXMLEngine* gdml, XMLNodePointer_t node)
{
   //In the structure section of the GDML file, assembly volumes can be
   //declared. when the assembly keyword is found, this function is called,
   //and the name is converted into type TGeoVolumeAssembly and
   //stored in fvolmap map using the name as its key. Some assembly volumes
   //reference to other physical volumes to contain inside that assembly,
   //declaring positions and rotations within that volume. When each 'physvol'
   //is declared, a matrix for its rotation and translation is built and the
   //'physvol node' is added to the original assembly using TGeoVolume->AddNode.

   TString name = gdml->GetAttr(node, "name");
   TString reftemp = "";

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   XMLAttrPointer_t attr;
   XMLNodePointer_t subchild;
   XMLNodePointer_t child = gdml->GetChild(node);
   TString tempattr = "";
   TGeoVolume* lv = 0;
   TGeoTranslation* pos = 0;
   TGeoRotation* rot = 0;
   TGeoCombiTrans* matr;

   TGeoVolumeAssembly* assem = new TGeoVolumeAssembly(NameShort(name));


   //PHYSVOL - run through child nodes of VOLUME again..

//   child = gdml->GetChild(node);

   while (child != 0) {
      if ((strcmp(gdml->GetNodeName(child), "physvol")) == 0) {
         subchild = gdml->GetChild(child);
         pos = new TGeoTranslation(0, 0, 0);
         rot = new TGeoRotation();

         while (subchild != 0) {
            tempattr = gdml->GetNodeName(subchild);
            tempattr.ToLower();

            if (tempattr == "volumeref") {
               reftemp = gdml->GetAttr(subchild, "ref");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               lv = fvolmap[reftemp.Data()];
            } else if (tempattr == "positionref") {
               reftemp = gdml->GetAttr(subchild, "ref");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               if (fposmap.find(reftemp.Data()) != fposmap.end()) {
                  pos = fposmap[reftemp.Data()];
               }
            } else if (tempattr == "position") {
               attr = gdml->GetFirstAttr(subchild);
               PosProcess(gdml, subchild, attr);
               reftemp = gdml->GetAttr(subchild, "name");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               pos = fposmap[reftemp.Data()];
            } else if (tempattr == "rotationref") {
               reftemp = gdml->GetAttr(subchild, "ref");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               if (frotmap.find(reftemp.Data()) != frotmap.end()) {
                  rot = frotmap[reftemp.Data()];
               }
            } else if (tempattr == "rotation") {
               attr = gdml->GetFirstAttr(subchild);
               RotProcess(gdml, subchild, attr);
               reftemp = gdml->GetAttr(subchild, "name");
               if ((strcmp(fCurrentFile, fStartFile)) != 0) {
                  reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
               }
               rot = frotmap[reftemp.Data()];
            }

            subchild = gdml->GetNext(subchild);
         }

         //ADD PHYSVOL TO GEOMETRY
         fVolID = fVolID + 1;
         matr = new TGeoCombiTrans(*pos, *rot);
         assem->AddNode(lv, fVolID, matr);

      }
      child = gdml->GetNext(child);
   }

   fvolmap[name.Data()] = assem;
   return child;
}

//________________________________________________________
XMLNodePointer_t TGDMLParse::TopProcess(TXMLEngine* gdml, XMLNodePointer_t node)
{
   //In the setup section of the GDML file, the top volume need to be
   //declared. when the setup keyword is found, this function is called,
   //and the top volume ref is taken and 'world' is set

  const char* name = gdml->GetAttr(node, "name");
  gGeoManager->SetName(name);
  XMLNodePointer_t child = gdml->GetChild(node);
  TString reftemp = "";

  while (child != 0) {
    
    if ((strcmp(gdml->GetNodeName(child), "world") == 0)) {
      //const char* reftemp;
      //TString reftemp = "";
      reftemp = gdml->GetAttr(child, "ref");	 	

      
      if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      reftemp = TString::Format("%s_%s", reftemp.Data(), fCurrentFile);
     
      }
      fWorld = fvolmap[reftemp.Data()]; 
      fWorldName = reftemp.Data();
      
    }
    child = gdml->GetNext(child);
  }
  return node;
}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::Box(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a box may be declared.
   //when the box keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoBBox and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString xpos = "0";
   TString ypos = "0";
   TString zpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x") {
         xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "y") {
         ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         zpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t xline = 0.5*Value(xpos)*retunit;
   Double_t yline = 0.5*Value(ypos)*retunit;
   Double_t zline = 0.5*Value(zpos)*retunit;


   TGeoBBox* box = new TGeoBBox(NameShort(name), xline, yline, zline);

   fsolmap[name.Data()] = box;

   return node;

}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::Ellipsoid(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, an ellipsoid may be declared.
   //Unfortunately, the ellipsoid is not supported under ROOT so,
   //when the ellipsoid keyword is found, this function is called
   //to convert it to a simple box with similar dimensions, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoBBox and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString ax = "0";
   TString by = "0";
   TString cz = "0";
   //initialization to empty string
   TString zcut1 = "";
   TString zcut2 = "";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "ax") {
         ax = gdml->GetAttrValue(attr);
      } else if (tempattr == "by") {
         by = gdml->GetAttrValue(attr);
      } else if (tempattr == "cz") {
         cz = gdml->GetAttrValue(attr);
      } else if (tempattr == "zcut1") {
         zcut1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "zcut2") {
         zcut2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t dx = Value(ax)*retunit;
   Double_t dy = Value(by)*retunit;
   Double_t radius = Value(cz)*retunit;
   Double_t sx = dx / radius;
   Double_t sy = dy / radius;
   Double_t sz = 1.;
   Double_t z1, z2;
   //Initialization of cutting
   if (zcut1 == "") {
      z1 = -radius;
   } else {
      z1 = Value(zcut1)*retunit;
   }
   if (zcut2 == "") {
      z2 = radius;
   } else {
      z2 = Value(zcut2)*retunit;
   }

   TGeoSphere *sph = new TGeoSphere(0, radius);
   TGeoScale *scl = new TGeoScale("", sx, sy, sz);
   TGeoScaledShape *shape = new TGeoScaledShape(NameShort(name), sph, scl);

   Double_t origin[3] = {0., 0., 0.};
   origin[2] = 0.5 * (z1 + z2);
   Double_t dz = 0.5 * (z2 - z1);
   TGeoBBox *pCutBox = new TGeoBBox("cutBox", dx, dy, dz, origin);
   TGeoBoolNode *pBoolNode = new TGeoIntersection(shape, pCutBox, 0, 0);
   TGeoCompositeShape *cs = new TGeoCompositeShape(NameShort(name), pBoolNode);
   fsolmap[name.Data()] = cs;

   return node;

}

//___________________________________________________________________
XMLNodePointer_t TGDMLParse::ElCone(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, an elliptical cone may be declared.
   //Unfortunately, the elliptical cone is not supported under ROOT so,
   //when the elcone keyword is found, this function is called
   //to convert it to a simple box with similar dimensions, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoBBox and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString dx = "0";
   TString dy = "0";
   TString zmax = "0";
   TString zcut = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "dx") {
         dx = gdml->GetAttrValue(attr);
      } else if (tempattr == "dy") {
         dy = gdml->GetAttrValue(attr);
      } else if (tempattr == "zmax") {
         zmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "zcut") {
         zcut = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   //semiaxises of elliptical cone (elcone) are different then ellipsoid

   Double_t retunit = GetScaleVal(lunit);

   //dxline and dyline are without units because they are as a ration
   Double_t dxratio = Value(dx);
   Double_t dyratio = Value(dy);
   Double_t z = Value(zmax)*retunit;
   Double_t z1 = Value(zcut)*retunit;

   if (z1 <= 0) {
      Info("ElCone", "ERROR! Parameter zcut = %.12g is not set properly, elcone will not be imported.", z1);
      return node;
   }
   if (z1 > z){
      z1 = z;
   }
   Double_t rx1 = (z + z1) * dxratio;
   Double_t ry1 = (z + z1) * dyratio;
   Double_t rx2 = (z - z1) * dxratio;
   Double_t sx = 1.;
   Double_t sy = ry1 / rx1;
   Double_t sz = 1.;

   TGeoCone *con = new TGeoCone(z1, 0, rx1, 0, rx2);
   TGeoScale *scl = new TGeoScale("", sx, sy, sz);
   TGeoScaledShape *shape = new TGeoScaledShape(NameShort(name), con, scl);

   fsolmap[name.Data()] = shape;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Paraboloid(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Paraboloid may be declared.
   //when the paraboloid keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoParaboloid and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString rlopos = "0";
   TString rhipos = "0";
   TString dzpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rlo") {
         rlopos = gdml->GetAttrValue(attr);
      } else if (tempattr == "rhi") {
         rhipos = gdml->GetAttrValue(attr);
      } else if (tempattr == "dz") {
         dzpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t rlo = Value(rlopos)*retunit;
   Double_t rhi = Value(rhipos)*retunit;
   Double_t dz  = Value(dzpos)*retunit;

   TGeoParaboloid* paraboloid = new TGeoParaboloid(NameShort(name), rlo, rhi, dz);

   fsolmap[name.Data()] = paraboloid;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Arb8(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, an Arb8 may be declared.
   //when the arb8 keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoArb8 and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString v1xpos = "0";
   TString v1ypos = "0";
   TString v2xpos = "0";
   TString v2ypos = "0";
   TString v3xpos = "0";
   TString v3ypos = "0";
   TString v4xpos = "0";
   TString v4ypos = "0";
   TString v5xpos = "0";
   TString v5ypos = "0";
   TString v6xpos = "0";
   TString v6ypos = "0";
   TString v7xpos = "0";
   TString v7ypos = "0";
   TString v8xpos = "0";
   TString v8ypos = "0";
   TString dzpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "v1x") {
         v1xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v1y") {
         v1ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v2x") {
         v2xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v2y") {
         v2ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v3x") {
         v3xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v3y") {
         v3ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v4x") {
         v4xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v4y") {
         v4ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v5x") {
         v5xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v5y") {
         v5ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v6x") {
         v6xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v6y") {
         v6ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v7x") {
         v7xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v7y") {
         v7ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v8x") {
         v8xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "v8y") {
         v8ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "dz") {
         dzpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t v1x = Value(v1xpos)*retunit;
   Double_t v1y = Value(v1ypos)*retunit;
   Double_t v2x = Value(v2xpos)*retunit;
   Double_t v2y = Value(v2ypos)*retunit;
   Double_t v3x = Value(v3xpos)*retunit;
   Double_t v3y = Value(v3ypos)*retunit;
   Double_t v4x = Value(v4xpos)*retunit;
   Double_t v4y = Value(v4ypos)*retunit;
   Double_t v5x = Value(v5xpos)*retunit;
   Double_t v5y = Value(v5ypos)*retunit;
   Double_t v6x = Value(v6xpos)*retunit;
   Double_t v6y = Value(v6ypos)*retunit;
   Double_t v7x = Value(v7xpos)*retunit;
   Double_t v7y = Value(v7ypos)*retunit;
   Double_t v8x = Value(v8xpos)*retunit;
   Double_t v8y = Value(v8ypos)*retunit;
   Double_t dz  = Value(dzpos)*retunit;


   TGeoArb8* arb8 = new TGeoArb8(NameShort(name), dz);

   arb8->SetVertex(0, v1x, v1y);
   arb8->SetVertex(1, v2x, v2y);
   arb8->SetVertex(2, v3x, v3y);
   arb8->SetVertex(3, v4x, v4y);
   arb8->SetVertex(4, v5x, v5y);
   arb8->SetVertex(5, v6x, v6y);
   arb8->SetVertex(6, v7x, v7y);
   arb8->SetVertex(7, v8x, v8y);

   fsolmap[name.Data()] = arb8;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Tube(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Tube may be declared.
   //when the tube keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoTubeSeg and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString z = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin") {
         rmin = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax") {
         rmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rminline = Value(rmin)*retlunit;
   Double_t rmaxline = Value(rmax)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t startphideg = Value(startphi)*retaunit;
   Double_t deltaphideg = Value(deltaphi)*retaunit;
   Double_t endphideg = startphideg + deltaphideg;

   TGeoShape *tube = 0;
   if (deltaphideg < 360.)
      tube = new TGeoTubeSeg(NameShort(name), rminline,
                                       rmaxline,
                                       zline / 2,
                                       startphideg,
                                       endphideg);
   else
      tube = new TGeoTube(NameShort(name), rminline,
                                       rmaxline,
                                       zline / 2);
   fsolmap[name.Data()] = tube;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::CutTube(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Cut Tube may be declared.
   //when the cutTube keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoCtub and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString z = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString lowX = "0";
   TString lowY = "0";
   TString lowZ = "0";
   TString highX = "0";
   TString highY = "0";
   TString highZ = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin") {
         rmin = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax") {
         rmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "lowx") {
         lowX = gdml->GetAttrValue(attr);
      } else if (tempattr == "lowy") {
         lowY = gdml->GetAttrValue(attr);
      } else if (tempattr == "lowz") {
         lowZ = gdml->GetAttrValue(attr);
      } else if (tempattr == "highx") {
         highX = gdml->GetAttrValue(attr);
      } else if (tempattr == "highy") {
         highY = gdml->GetAttrValue(attr);
      } else if (tempattr == "highz") {
         highZ = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rminline = Value(rmin)*retlunit;
   Double_t rmaxline = Value(rmax)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t startphiline = Value(startphi)*retaunit;
   Double_t deltaphiline = Value(deltaphi)*retaunit + startphiline;
   Double_t lowXline = Value(lowX)*retlunit;
   Double_t lowYline = Value(lowY)*retlunit;
   Double_t lowZline = Value(lowZ)*retlunit;
   Double_t highXline = Value(highX)*retlunit;
   Double_t highYline = Value(highY)*retlunit;
   Double_t highZline = Value(highZ)*retlunit;


   TGeoCtub* cuttube = new TGeoCtub(NameShort(name), rminline,
                                    rmaxline,
                                    zline / 2,
                                    startphiline,
                                    deltaphiline,
                                    lowXline,
                                    lowYline,
                                    lowZline,
                                    highXline,
                                    highYline,
                                    highZline);


   fsolmap[name.Data()] = cuttube;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Cone(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a cone may be declared.
   //when the cone keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoConSeg and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin1 = "0";
   TString rmax1 = "0";
   TString rmin2 = "0";
   TString rmax2 = "0";
   TString z = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin1") {
         rmin1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax1") {
         rmax1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin2") {
         rmin2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax2") {
         rmax2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rmin1line = Value(rmin1)*retlunit;
   Double_t rmax1line = Value(rmax1)*retlunit;
   Double_t rmin2line = Value(rmin2)*retlunit;
   Double_t rmax2line = Value(rmax2)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t sphi = Value(startphi)*retaunit;
   Double_t dphi = Value(deltaphi)*retaunit;
   Double_t ephi = sphi + dphi;

   TGeoShape *cone = 0;
   if (dphi < 360.)
      cone = new TGeoConeSeg(NameShort(name), zline / 2,
                                       rmin1line,
                                       rmax1line,
                                       rmin2line,
                                       rmax2line,
                                       sphi, ephi);
   else
      cone = new TGeoCone(NameShort(name), zline / 2,
                                       rmin1line,
                                       rmax1line,
                                       rmin2line,
                                       rmax2line);

   fsolmap[name.Data()] = cone;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Trap(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Trap may be declared.
   //when the trap keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoTrap and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString x1 = "0";
   TString x2 = "0";
   TString x3 = "0";
   TString x4 = "0";
   TString y1 = "0";
   TString y2 = "0";
   TString z = "0";
   TString phi = "0";
   TString theta = "0";
   TString alpha1 = "0";
   TString alpha2 = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x1") {
         x1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x2") {
         x2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x3") {
         x3 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x4") {
         x4 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y1") {
         y1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y2") {
         y2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "phi") {
         phi = gdml->GetAttrValue(attr);
      } else if (tempattr == "theta") {
         theta = gdml->GetAttrValue(attr);
      } else if (tempattr == "alpha1") {
         alpha1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "alpha2") {
         alpha2 = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t x1line = Value(x1)*retlunit;
   Double_t x2line = Value(x2)*retlunit;
   Double_t x3line = Value(x3)*retlunit;
   Double_t x4line = Value(x4)*retlunit;
   Double_t y1line = Value(y1)*retlunit;
   Double_t y2line = Value(y2)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t philine = Value(phi)*retaunit;
   Double_t thetaline = Value(theta)*retaunit;
   Double_t alpha1line = Value(alpha1)*retaunit;
   Double_t alpha2line = Value(alpha2)*retaunit;

   TGeoTrap* trap = new TGeoTrap(NameShort(name), zline / 2,
                                 thetaline,
                                 philine,
                                 y1line / 2,
                                 x1line / 2,
                                 x2line / 2,
                                 alpha1line,
                                 y2line / 2,
                                 x3line / 2,
                                 x4line / 2,
                                 alpha2line);

   fsolmap[name.Data()] = trap;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Trd(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Trd may be declared.
   //when the trd keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoTrd2 and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString x1 = "0";
   TString x2 = "0";
   TString y1 = "0";
   TString y2 = "0";
   TString z = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x1") {
         x1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x2") {
         x2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y1") {
         y1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y2") {
         y2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);

   Double_t x1line = Value(x1)*retlunit;
   Double_t x2line = Value(x2)*retlunit;
   Double_t y1line = Value(y1)*retlunit;
   Double_t y2line = Value(y2)*retlunit;
   Double_t zline = Value(z)*retlunit;

   TGeoTrd2* trd = new TGeoTrd2(NameShort(name),
                                x1line / 2,
                                x2line / 2,
                                y1line / 2,
                                y2line / 2,
                                zline / 2);

   fsolmap[name.Data()] = trd;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Polycone(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Polycone may be declared.
   //when the polycone keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoPCon and stored in fsolmap map using the name
   //as its key. Polycone has Zplanes, planes along the z axis specifying
   //the rmin, rmax dimenstions at that point along z.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString z = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      }
      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   //START TO LOOK THRU CHILD (ZPLANE) NODES...

   XMLNodePointer_t child = gdml->GetChild(node);
   int numplanes = 0;

   while (child != 0) {
      numplanes = numplanes + 1;
      child = gdml->GetNext(child);
   }

   int cols;
   int i;
   cols = 3;
   double ** table = new double*[numplanes];
   for (i = 0; i < numplanes; i++) {
      table[i] = new double[cols];
   }

   child = gdml->GetChild(node);
   int planeno = 0;

   while (child != 0) {
      if (strcmp(gdml->GetNodeName(child), "zplane") == 0) {
         //removed original dec
         Double_t rminline = 0;
         Double_t rmaxline = 0;
         Double_t zline = 0;

         attr = gdml->GetFirstAttr(child);

         while (attr != 0) {
            tempattr = gdml->GetAttrName(attr);
            tempattr.ToLower();

            if (tempattr == "rmin") {
               rmin = gdml->GetAttrValue(attr);
               rminline = Value(rmin)*retlunit;
               table[planeno][0] = rminline;
            } else if (tempattr == "rmax") {
               rmax = gdml->GetAttrValue(attr);
               rmaxline = Value(rmax)*retlunit;
               table[planeno][1] = rmaxline;
            } else if (tempattr == "z") {
               z = gdml->GetAttrValue(attr);
               zline = Value(z)*retlunit;
               table[planeno][2] = zline;
            }
            attr = gdml->GetNextAttr(attr);
         }
      }
      planeno = planeno + 1;
      child = gdml->GetNext(child);
   }

   Double_t startphiline = Value(startphi)*retaunit;
   Double_t deltaphiline = Value(deltaphi)*retaunit;

   TGeoPcon* poly = new TGeoPcon(NameShort(name),
                                 startphiline,
                                 deltaphiline,
                                 numplanes);
   Int_t zno = 0;

   for (int j = 0; j < numplanes; j++) {
      poly->DefineSection(zno, table[j][2], table[j][0], table[j][1]);
      zno = zno + 1;
   }

   fsolmap[name.Data()] = poly;
   for (i = 0; i < numplanes; i++) {
      delete [] table[i];
   }
   delete [] table;

   return node;
}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Polyhedra(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Polyhedra may be declared.
   //when the polyhedra keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoPgon and stored in fsolmap map using the name
   //as its key. Polycone has Zplanes, planes along the z axis specifying
   //the rmin, rmax dimenstions at that point along z.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString z = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString numsides = "1";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "numsides") {
         numsides = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   //START TO LOOK THRU CHILD (ZPLANE) NODES...

   XMLNodePointer_t child = gdml->GetChild(node);
   int numplanes = 0;

   while (child != 0) {
      numplanes = numplanes + 1;
      child = gdml->GetNext(child);
   }

   int cols;
   int i;
   cols = 3;
   double ** table = new double*[numplanes];
   for (i = 0; i < numplanes; i++) {
      table[i] = new double[cols];
   }

   child = gdml->GetChild(node);
   int planeno = 0;

   while (child != 0) {
      if (strcmp(gdml->GetNodeName(child), "zplane") == 0) {

         Double_t rminline = 0;
         Double_t rmaxline = 0;
         Double_t zline = 0;
         attr = gdml->GetFirstAttr(child);

         while (attr != 0) {
            tempattr = gdml->GetAttrName(attr);
            tempattr.ToLower();

            if (tempattr == "rmin") {
               rmin = gdml->GetAttrValue(attr);
               rminline = Value(rmin)*retlunit;
               table[planeno][0] = rminline;
            } else if (tempattr == "rmax") {
               rmax = gdml->GetAttrValue(attr);
               rmaxline = Value(rmax)*retlunit;
               table[planeno][1] = rmaxline;
            } else if (tempattr == "z") {
               z = gdml->GetAttrValue(attr);
               zline = Value(z)*retlunit;
               table[planeno][2] = zline;
            }

            attr = gdml->GetNextAttr(attr);
         }
      }
      planeno = planeno + 1;
      child = gdml->GetNext(child);
   }

   Double_t startphiline = Value(startphi)*retaunit;
   Double_t deltaphiline = Value(deltaphi)*retaunit;
   Int_t numsidesline = (int)Value(numsides);

   TGeoPgon* polyg = new TGeoPgon(NameShort(name),
                                  startphiline,
                                  deltaphiline,
                                  numsidesline,
                                  numplanes);
   Int_t zno = 0;

   for (int j = 0; j < numplanes; j++) {
      polyg->DefineSection(zno, table[j][2], table[j][0], table[j][1]);
      zno = zno + 1;
   }

   fsolmap[name.Data()] = polyg;
   for (i = 0; i < numplanes; i++) {
      delete [] table[i];
   }
   delete [] table;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Sphere(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Sphere may be declared.
   //when the sphere keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoSphere and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString starttheta = "0";
   TString deltatheta = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {
      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin") {
         rmin = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax") {
         rmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "starttheta") {
         starttheta = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltatheta") {
         deltatheta = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rminline = Value(rmin)*retlunit;
   Double_t rmaxline = Value(rmax)*retlunit;
   Double_t startphiline = Value(startphi)*retaunit;
   Double_t deltaphiline = startphiline+ Value(deltaphi)*retaunit;
   Double_t startthetaline = Value(starttheta)*retaunit;
   Double_t deltathetaline = startthetaline + Value(deltatheta)*retaunit;

   TGeoSphere* sphere = new TGeoSphere(NameShort(name),
                                       rminline,
                                       rmaxline,
                                       startthetaline,
                                       deltathetaline,
                                       startphiline,
                                       deltaphiline);

   fsolmap[name.Data()] = sphere;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Torus(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Torus may be declared.
   //when the torus keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoTorus and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString rtor = "0";
   TString startphi = "0";
   TString deltaphi = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin") {
         rmin = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax") {
         rmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "rtor") {
         rtor = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "startphi") {
         startphi = gdml->GetAttrValue(attr);
      } else if (tempattr == "deltaphi") {
         deltaphi = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rminline = Value(rmin)*retlunit;
   Double_t rmaxline = Value(rmax)*retlunit;
   Double_t rtorline = Value(rtor)*retlunit;
   Double_t startphiline = Value(startphi)*retaunit;
   Double_t deltaphiline = Value(deltaphi)*retaunit;


   TGeoTorus* torus = new TGeoTorus(NameShort(name), rtorline,
                                    rminline,
                                    rmaxline,
                                    startphiline,
                                    deltaphiline);

   fsolmap[name.Data()] = torus;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Hype(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Hype may be declared.
   //when the hype keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoHype and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString rmin = "0";
   TString rmax = "0";
   TString z = "0";
   TString inst = "0";
   TString outst = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {
      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmin") {
         rmin = gdml->GetAttrValue(attr);
      } else if (tempattr == "rmax") {
         rmax = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "inst") {
         inst = gdml->GetAttrValue(attr);
      } else if (tempattr == "outst") {
         outst = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t rminline = Value(rmin)*retlunit;
   Double_t rmaxline = Value(rmax)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t instline = Value(inst)*retaunit;
   Double_t outstline = Value(outst)*retaunit;


   TGeoHype* hype = new TGeoHype(NameShort(name),
                                 rminline,
                                 instline,
                                 rmaxline,
                                 outstline,
                                 zline / 2);

   fsolmap[name.Data()] = hype;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::Para(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Para may be declared.
   //when the para keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoPara and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString x = "0";
   TString y = "0";
   TString z = "0";
   TString phi = "0";
   TString theta = "0";
   TString alpha = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x") {
         x = gdml->GetAttrValue(attr);
      } else if (tempattr == "y") {
         y = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "phi") {
         phi = gdml->GetAttrValue(attr);
      } else if (tempattr == "theta") {
         theta = gdml->GetAttrValue(attr);
      } else if (tempattr == "alpha") {
         alpha = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t xline = Value(x)*retlunit;
   Double_t yline = Value(y)*retlunit;
   Double_t zline = Value(z)*retlunit;
   Double_t philine = Value(phi)*retaunit;
   Double_t alphaline = Value(alpha)*retaunit;
   Double_t thetaline = Value(theta)*retaunit;


   TGeoPara* para = new TGeoPara(NameShort(name),
                                 xline / 2,
                                 yline / 2,
                                 zline / 2,
                                 alphaline,
                                 thetaline,
                                 philine);

   fsolmap[name.Data()] = para;

   return node;

}

//_______________________________________________________
XMLNodePointer_t TGDMLParse::TwistTrap(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a TwistTrap may be declared.
   //when the twistedtrap keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoGTra and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString aunit = "rad";
   TString x1 = "0";
   TString x2 = "0";
   TString x3 = "0";
   TString x4 = "0";
   TString y1 = "0";
   TString y2 = "0";
   TString z = "0";
   TString phi = "0";
   TString theta = "0";
   TString alpha1 = "0";
   TString alpha2 = "0";
   TString twist = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "x1") {
         x1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x2") {
         x2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x3") {
         x3 = gdml->GetAttrValue(attr);
      } else if (tempattr == "x4") {
         x4 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y1") {
         y1 = gdml->GetAttrValue(attr);
      } else if (tempattr == "y2") {
         y2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "z") {
         z = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "aunit") {
         aunit = gdml->GetAttrValue(attr);
      } else if (tempattr == "phi") {
         phi = gdml->GetAttrValue(attr);
      } else if (tempattr == "theta") {
         theta = gdml->GetAttrValue(attr);
      } else if (tempattr == "alph") { //gdml schema knows only alph attribute
         alpha1 = gdml->GetAttrValue(attr);
         alpha2 = alpha1;
         //} else if (tempattr == "alpha2") {
         //   alpha2 = gdml->GetAttrValue(attr);
      } else if (tempattr == "phitwist") {
         twist = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);
   Double_t retaunit = GetScaleVal(aunit);

   Double_t x1line = Value(x1)*retlunit;
   Double_t x2line = Value(x2)*retlunit;
   Double_t x3line = Value(x3)*retlunit;
   Double_t x4line = Value(x4)*retlunit;
   Double_t y1line = Value(y1)*retlunit;
   Double_t y2line = Value(y2)*retlunit;
   Double_t zline  = Value(z)*retlunit;
   Double_t philine = Value(phi)*retaunit;
   Double_t thetaline = Value(theta)*retaunit;
   Double_t alpha1line = Value(alpha1)*retaunit;
   Double_t alpha2line = Value(alpha2)*retaunit;
   Double_t twistline = Value(twist)*retaunit;


   TGeoGtra* twtrap = new TGeoGtra(NameShort(name), zline / 2,
                                   thetaline,
                                   philine,
                                   twistline,
                                   y1line / 2,
                                   x1line / 2,
                                   x2line / 2,
                                   alpha1line,
                                   y2line / 2,
                                   x3line / 2,
                                   x4line / 2,
                                   alpha2line);

   fsolmap[name.Data()] = twtrap;

   return node;

}


//___________________________________________________________________
XMLNodePointer_t TGDMLParse::ElTube(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a ElTube may be declared.
   //when the eltube keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoEltu and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString xpos = "0";
   TString ypos = "0";
   TString zpos = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "dx") {
         xpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "dy") {
         ypos = gdml->GetAttrValue(attr);
      } else if (tempattr == "dz") {
         zpos = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t xline = Value(xpos)*retunit;
   Double_t yline = Value(ypos)*retunit;
   Double_t zline = Value(zpos)*retunit;

   TGeoEltu* eltu = new TGeoEltu(NameShort(name), xline,
                                 yline,
                                 zline);

   fsolmap[name.Data()] = eltu;

   return node;

}
//___________________________________________________________________
XMLNodePointer_t TGDMLParse::Orb(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, an Orb may be declared.
   //when the orb keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoSphere and stored in fsolmap map using the name
   //as its key.

   TString lunit = "mm";
   TString r = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "r") {
         r = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retunit = GetScaleVal(lunit);

   Double_t rline = Value(r)*retunit;

   TGeoSphere* orb = new TGeoSphere(NameShort(name), 0, rline, 0, 180, 0, 360);

   fsolmap[name.Data()] = orb;

   return node;

}


//_______________________________________________________
XMLNodePointer_t TGDMLParse::Xtru(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, an Xtru may be declared.
   //when the xtru keyword is found, this function is called, and the
   //dimensions required are taken and stored, these are then bound and
   //converted to type TGeoXtru and stored in fsolmap map using the name
   //as its key. The xtru has child nodes of either 'twoDimVertex'or
   //'section'.   These two nodes define the real structure of the shape.
   //The twoDimVertex's define the x,y sizes of a vertice. The section links
   //the vertice to a position within the xtru.

   TString lunit = "mm";
//   TString aunit = "rad";
   TString x = "0";
   TString y = "0";
   TString zorder = "0";
   TString zpos = "0";
   TString xoff = "0";
   TString yoff = "0";
   TString scale = "0";
   TString name = "";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "lunit") {
         lunit = gdml->GetAttrValue(attr);
      }

      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }

   Double_t retlunit = GetScaleVal(lunit);

   //START TO LOOK THRU CHILD NODES...

   XMLNodePointer_t child = gdml->GetChild(node);
   int nosects = 0;
   int noverts = 0;

   while (child != 0) {
      tempattr = gdml->GetNodeName(child);

      if (tempattr == "twoDimVertex") {
         noverts = noverts + 1;
      } else if (tempattr == "section") {
         nosects = nosects + 1;
      }

      child = gdml->GetNext(child);
   }

   //Build the dynamic arrays..
   int cols;
   int i;
   double *vertx = new double[noverts];
   double *verty = new double[noverts];
   cols = 5;
   double ** section = new double*[nosects];
   for (i = 0; i < nosects; i++) {
      section[i] = new double[cols];
   }

   child = gdml->GetChild(node);
   int sect = 0;
   int vert = 0;

   while (child != 0) {
      if (strcmp(gdml->GetNodeName(child), "twoDimVertex") == 0) {
         Double_t xline = 0;
         Double_t yline = 0;

         attr = gdml->GetFirstAttr(child);

         while (attr != 0) {
            tempattr = gdml->GetAttrName(attr);

            if (tempattr == "x") {
               x = gdml->GetAttrValue(attr);
               xline = Value(x)*retlunit;
               vertx[vert] = xline;
            } else if (tempattr == "y") {
               y = gdml->GetAttrValue(attr);
               yline = Value(y)*retlunit;
               verty[vert] = yline;
            }

            attr = gdml->GetNextAttr(attr);
         }

         vert = vert + 1;
      }

      else if (strcmp(gdml->GetNodeName(child), "section") == 0) {

         Double_t zposline = 0;
         Double_t xoffline = 0;
         Double_t yoffline = 0;

         attr = gdml->GetFirstAttr(child);

         while (attr != 0) {
            tempattr = gdml->GetAttrName(attr);

            if (tempattr == "zOrder") {
               zorder = gdml->GetAttrValue(attr);
               section[sect][0] = Value(zorder);
            } else if (tempattr == "zPosition") {
               zpos = gdml->GetAttrValue(attr);
               zposline = Value(zpos)*retlunit;
               section[sect][1] = zposline;
            } else if (tempattr == "xOffset") {
               xoff = gdml->GetAttrValue(attr);
               xoffline = Value(xoff)*retlunit;
               section[sect][2] = xoffline;
            } else if (tempattr == "yOffset") {
               yoff = gdml->GetAttrValue(attr);
               yoffline = Value(yoff)*retlunit;
               section[sect][3] = yoffline;
            } else if (tempattr == "scalingFactor") {
               scale = gdml->GetAttrValue(attr);
               section[sect][4] = Value(scale);
            }

            attr = gdml->GetNextAttr(attr);
         }

         sect = sect + 1;
      }
      child = gdml->GetNext(child);
   }

   TGeoXtru* xtru = new TGeoXtru(nosects);
   xtru->SetName(NameShort(name));
   xtru->DefinePolygon(vert, vertx, verty);

   for (int j = 0; j < sect; j++) {
      xtru->DefineSection((int)section[j][0], section[j][1], section[j][2], section[j][3], section[j][4]);
   }

   fsolmap[name.Data()] = xtru;
   delete [] vertx;
   delete [] verty;
   for (i = 0; i < nosects; i++) {
      delete [] section[i];
   }
   delete [] section;
   return node;
}

//____________________________________________________________
XMLNodePointer_t TGDMLParse::Reflection(TXMLEngine* gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
{
   //In the solids section of the GDML file, a Reflected Solid may be
   //declared when the ReflectedSolid keyword is found, this function
   //is called. The rotation, position and scale for the reflection are
   //applied to a matrix that is then stored in the class object
   //TGDMLRefl.   This is then stored in the map freflsolidmap, with
   //the reflection name as a reference. also the name of the solid to
   //be reflected is stored in a map called freflectmap with the reflection
   //name as a reference.

   std::cout << "WARNING! The reflectedSolid is obsolete! Use scale transformation instead!" << std::endl;

   TString sx = "0";
   TString sy = "0";
   TString sz = "0";
   TString rx = "0";
   TString ry = "0";
   TString rz = "0";
   TString dx = "0";
   TString dy = "0";
   TString dz = "0";
   TString name = "0";
   TString solid = "0";
   TString tempattr;

   while (attr != 0) {

      tempattr = gdml->GetAttrName(attr);
      tempattr.ToLower();

      if (tempattr == "name") {
         name = gdml->GetAttrValue(attr);
      } else if (tempattr == "sx") {
         sx = gdml->GetAttrValue(attr);
      } else if (tempattr == "sy") {
         sy = gdml->GetAttrValue(attr);
      } else if (tempattr == "sz") {
         sz = gdml->GetAttrValue(attr);
      } else if (tempattr == "rx") {
         rx = gdml->GetAttrValue(attr);
      } else if (tempattr == "ry") {
         ry = gdml->GetAttrValue(attr);
      } else if (tempattr == "rz") {
         rz = gdml->GetAttrValue(attr);
      } else if (tempattr == "dx") {
         dx = gdml->GetAttrValue(attr);
      } else if (tempattr == "dy") {
         dy = gdml->GetAttrValue(attr);
      } else if (tempattr == "dz") {
         dz = gdml->GetAttrValue(attr);
      } else if (tempattr == "solid") {
         solid = gdml->GetAttrValue(attr);
      }
      attr = gdml->GetNextAttr(attr);
   }

   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      name = TString::Format("%s_%s", name.Data(), fCurrentFile);
   }
   if ((strcmp(fCurrentFile, fStartFile)) != 0) {
      solid = TString::Format("%s_%s", solid.Data(), fCurrentFile);
   }

   TGeoRotation* rot = new TGeoRotation();
   rot->RotateZ(-(Value(rz)));
   rot->RotateY(-(Value(ry)));
   rot->RotateX(-(Value(rx)));

   if (atoi(sx) == -1) {
      rot->ReflectX(kTRUE);
   }
   if (atoi(sy) == -1) {
      rot->ReflectY(kTRUE);
   }
   if (atoi(sz) == -1) {
      rot->ReflectZ(kTRUE);
   }

   TGeoCombiTrans* relf_matx = new TGeoCombiTrans(Value(dx), Value(dy), Value(dz), rot);

   TGDMLRefl* reflsol = new TGDMLRefl(NameShort(name), solid, relf_matx);
   freflsolidmap[name.Data()] = reflsol;
   freflectmap[name.Data()] = solid;

   return node;
}



//===================================================================

ClassImp(TGDMLRefl)

/******************************************************************
____________________________________________________________

TGDMLRefl Class

------------------------------------------------------------

This class is a helper class for TGDMLParse.   It assists in the
reflection process.   This process takes a previously defined solid
and can reflect the matrix of it. This class stores the name of the
reflected solid, along with the name of the solid that is being
reflected, and finally the reflected solid's matrix.   This is then
recalled when the volume is used in the structure part of the gdml
file.

******************************************************************/

//___________________________________________________________________
TGDMLRefl::TGDMLRefl(const char* name, const char* solid, TGeoMatrix* matrix)
{
   //this constructor method stores the values brought in as params.

   fNameS = name;
   fSolid = solid;
   fMatrix = matrix;
}

//_________________________________________________________________
TGeoMatrix* TGDMLRefl::GetMatrix()
{
   //this accessor method returns the matrix.

   return fMatrix;
}
 TGDMLParse.cxx:1
 TGDMLParse.cxx:2
 TGDMLParse.cxx:3
 TGDMLParse.cxx:4
 TGDMLParse.cxx:5
 TGDMLParse.cxx:6
 TGDMLParse.cxx:7
 TGDMLParse.cxx:8
 TGDMLParse.cxx:9
 TGDMLParse.cxx:10
 TGDMLParse.cxx:11
 TGDMLParse.cxx:12
 TGDMLParse.cxx:13
 TGDMLParse.cxx:14
 TGDMLParse.cxx:15
 TGDMLParse.cxx:16
 TGDMLParse.cxx:17
 TGDMLParse.cxx:18
 TGDMLParse.cxx:19
 TGDMLParse.cxx:20
 TGDMLParse.cxx:21
 TGDMLParse.cxx:22
 TGDMLParse.cxx:23
 TGDMLParse.cxx:24
 TGDMLParse.cxx:25
 TGDMLParse.cxx:26
 TGDMLParse.cxx:27
 TGDMLParse.cxx:28
 TGDMLParse.cxx:29
 TGDMLParse.cxx:30
 TGDMLParse.cxx:31
 TGDMLParse.cxx:32
 TGDMLParse.cxx:33
 TGDMLParse.cxx:34
 TGDMLParse.cxx:35
 TGDMLParse.cxx:36
 TGDMLParse.cxx:37
 TGDMLParse.cxx:38
 TGDMLParse.cxx:39
 TGDMLParse.cxx:40
 TGDMLParse.cxx:41
 TGDMLParse.cxx:42
 TGDMLParse.cxx:43
 TGDMLParse.cxx:44
 TGDMLParse.cxx:45
 TGDMLParse.cxx:46
 TGDMLParse.cxx:47
 TGDMLParse.cxx:48
 TGDMLParse.cxx:49
 TGDMLParse.cxx:50
 TGDMLParse.cxx:51
 TGDMLParse.cxx:52
 TGDMLParse.cxx:53
 TGDMLParse.cxx:54
 TGDMLParse.cxx:55
 TGDMLParse.cxx:56
 TGDMLParse.cxx:57
 TGDMLParse.cxx:58
 TGDMLParse.cxx:59
 TGDMLParse.cxx:60
 TGDMLParse.cxx:61
 TGDMLParse.cxx:62
 TGDMLParse.cxx:63
 TGDMLParse.cxx:64
 TGDMLParse.cxx:65
 TGDMLParse.cxx:66
 TGDMLParse.cxx:67
 TGDMLParse.cxx:68
 TGDMLParse.cxx:69
 TGDMLParse.cxx:70
 TGDMLParse.cxx:71
 TGDMLParse.cxx:72
 TGDMLParse.cxx:73
 TGDMLParse.cxx:74
 TGDMLParse.cxx:75
 TGDMLParse.cxx:76
 TGDMLParse.cxx:77
 TGDMLParse.cxx:78
 TGDMLParse.cxx:79
 TGDMLParse.cxx:80
 TGDMLParse.cxx:81
 TGDMLParse.cxx:82
 TGDMLParse.cxx:83
 TGDMLParse.cxx:84
 TGDMLParse.cxx:85
 TGDMLParse.cxx:86
 TGDMLParse.cxx:87
 TGDMLParse.cxx:88
 TGDMLParse.cxx:89
 TGDMLParse.cxx:90
 TGDMLParse.cxx:91
 TGDMLParse.cxx:92
 TGDMLParse.cxx:93
 TGDMLParse.cxx:94
 TGDMLParse.cxx:95
 TGDMLParse.cxx:96
 TGDMLParse.cxx:97
 TGDMLParse.cxx:98
 TGDMLParse.cxx:99
 TGDMLParse.cxx:100
 TGDMLParse.cxx:101
 TGDMLParse.cxx:102
 TGDMLParse.cxx:103
 TGDMLParse.cxx:104
 TGDMLParse.cxx:105
 TGDMLParse.cxx:106
 TGDMLParse.cxx:107
 TGDMLParse.cxx:108
 TGDMLParse.cxx:109
 TGDMLParse.cxx:110
 TGDMLParse.cxx:111
 TGDMLParse.cxx:112
 TGDMLParse.cxx:113
 TGDMLParse.cxx:114
 TGDMLParse.cxx:115
 TGDMLParse.cxx:116
 TGDMLParse.cxx:117
 TGDMLParse.cxx:118
 TGDMLParse.cxx:119
 TGDMLParse.cxx:120
 TGDMLParse.cxx:121
 TGDMLParse.cxx:122
 TGDMLParse.cxx:123
 TGDMLParse.cxx:124
 TGDMLParse.cxx:125
 TGDMLParse.cxx:126
 TGDMLParse.cxx:127
 TGDMLParse.cxx:128
 TGDMLParse.cxx:129
 TGDMLParse.cxx:130
 TGDMLParse.cxx:131
 TGDMLParse.cxx:132
 TGDMLParse.cxx:133
 TGDMLParse.cxx:134
 TGDMLParse.cxx:135
 TGDMLParse.cxx:136
 TGDMLParse.cxx:137
 TGDMLParse.cxx:138
 TGDMLParse.cxx:139
 TGDMLParse.cxx:140
 TGDMLParse.cxx:141
 TGDMLParse.cxx:142
 TGDMLParse.cxx:143
 TGDMLParse.cxx:144
 TGDMLParse.cxx:145
 TGDMLParse.cxx:146
 TGDMLParse.cxx:147
 TGDMLParse.cxx:148
 TGDMLParse.cxx:149
 TGDMLParse.cxx:150
 TGDMLParse.cxx:151
 TGDMLParse.cxx:152
 TGDMLParse.cxx:153
 TGDMLParse.cxx:154
 TGDMLParse.cxx:155
 TGDMLParse.cxx:156
 TGDMLParse.cxx:157
 TGDMLParse.cxx:158
 TGDMLParse.cxx:159
 TGDMLParse.cxx:160
 TGDMLParse.cxx:161
 TGDMLParse.cxx:162
 TGDMLParse.cxx:163
 TGDMLParse.cxx:164
 TGDMLParse.cxx:165
 TGDMLParse.cxx:166
 TGDMLParse.cxx:167
 TGDMLParse.cxx:168
 TGDMLParse.cxx:169
 TGDMLParse.cxx:170
 TGDMLParse.cxx:171
 TGDMLParse.cxx:172
 TGDMLParse.cxx:173
 TGDMLParse.cxx:174
 TGDMLParse.cxx:175
 TGDMLParse.cxx:176
 TGDMLParse.cxx:177
 TGDMLParse.cxx:178
 TGDMLParse.cxx:179
 TGDMLParse.cxx:180
 TGDMLParse.cxx:181
 TGDMLParse.cxx:182
 TGDMLParse.cxx:183
 TGDMLParse.cxx:184
 TGDMLParse.cxx:185
 TGDMLParse.cxx:186
 TGDMLParse.cxx:187
 TGDMLParse.cxx:188
 TGDMLParse.cxx:189
 TGDMLParse.cxx:190
 TGDMLParse.cxx:191
 TGDMLParse.cxx:192
 TGDMLParse.cxx:193
 TGDMLParse.cxx:194
 TGDMLParse.cxx:195
 TGDMLParse.cxx:196
 TGDMLParse.cxx:197
 TGDMLParse.cxx:198
 TGDMLParse.cxx:199
 TGDMLParse.cxx:200
 TGDMLParse.cxx:201
 TGDMLParse.cxx:202
 TGDMLParse.cxx:203
 TGDMLParse.cxx:204
 TGDMLParse.cxx:205
 TGDMLParse.cxx:206
 TGDMLParse.cxx:207
 TGDMLParse.cxx:208
 TGDMLParse.cxx:209
 TGDMLParse.cxx:210
 TGDMLParse.cxx:211
 TGDMLParse.cxx:212
 TGDMLParse.cxx:213
 TGDMLParse.cxx:214
 TGDMLParse.cxx:215
 TGDMLParse.cxx:216
 TGDMLParse.cxx:217
 TGDMLParse.cxx:218
 TGDMLParse.cxx:219
 TGDMLParse.cxx:220
 TGDMLParse.cxx:221
 TGDMLParse.cxx:222
 TGDMLParse.cxx:223
 TGDMLParse.cxx:224
 TGDMLParse.cxx:225
 TGDMLParse.cxx:226
 TGDMLParse.cxx:227
 TGDMLParse.cxx:228
 TGDMLParse.cxx:229
 TGDMLParse.cxx:230
 TGDMLParse.cxx:231
 TGDMLParse.cxx:232
 TGDMLParse.cxx:233
 TGDMLParse.cxx:234
 TGDMLParse.cxx:235
 TGDMLParse.cxx:236
 TGDMLParse.cxx:237
 TGDMLParse.cxx:238
 TGDMLParse.cxx:239
 TGDMLParse.cxx:240
 TGDMLParse.cxx:241
 TGDMLParse.cxx:242
 TGDMLParse.cxx:243
 TGDMLParse.cxx:244
 TGDMLParse.cxx:245
 TGDMLParse.cxx:246
 TGDMLParse.cxx:247
 TGDMLParse.cxx:248
 TGDMLParse.cxx:249
 TGDMLParse.cxx:250
 TGDMLParse.cxx:251
 TGDMLParse.cxx:252
 TGDMLParse.cxx:253
 TGDMLParse.cxx:254
 TGDMLParse.cxx:255
 TGDMLParse.cxx:256
 TGDMLParse.cxx:257
 TGDMLParse.cxx:258
 TGDMLParse.cxx:259
 TGDMLParse.cxx:260
 TGDMLParse.cxx:261
 TGDMLParse.cxx:262
 TGDMLParse.cxx:263
 TGDMLParse.cxx:264
 TGDMLParse.cxx:265
 TGDMLParse.cxx:266
 TGDMLParse.cxx:267
 TGDMLParse.cxx:268
 TGDMLParse.cxx:269
 TGDMLParse.cxx:270
 TGDMLParse.cxx:271
 TGDMLParse.cxx:272
 TGDMLParse.cxx:273
 TGDMLParse.cxx:274
 TGDMLParse.cxx:275
 TGDMLParse.cxx:276
 TGDMLParse.cxx:277
 TGDMLParse.cxx:278
 TGDMLParse.cxx:279
 TGDMLParse.cxx:280
 TGDMLParse.cxx:281
 TGDMLParse.cxx:282
 TGDMLParse.cxx:283
 TGDMLParse.cxx:284
 TGDMLParse.cxx:285
 TGDMLParse.cxx:286
 TGDMLParse.cxx:287
 TGDMLParse.cxx:288
 TGDMLParse.cxx:289
 TGDMLParse.cxx:290
 TGDMLParse.cxx:291
 TGDMLParse.cxx:292
 TGDMLParse.cxx:293
 TGDMLParse.cxx:294
 TGDMLParse.cxx:295
 TGDMLParse.cxx:296
 TGDMLParse.cxx:297
 TGDMLParse.cxx:298
 TGDMLParse.cxx:299
 TGDMLParse.cxx:300
 TGDMLParse.cxx:301
 TGDMLParse.cxx:302
 TGDMLParse.cxx:303
 TGDMLParse.cxx:304
 TGDMLParse.cxx:305
 TGDMLParse.cxx:306
 TGDMLParse.cxx:307
 TGDMLParse.cxx:308
 TGDMLParse.cxx:309
 TGDMLParse.cxx:310
 TGDMLParse.cxx:311
 TGDMLParse.cxx:312
 TGDMLParse.cxx:313
 TGDMLParse.cxx:314
 TGDMLParse.cxx:315
 TGDMLParse.cxx:316
 TGDMLParse.cxx:317
 TGDMLParse.cxx:318
 TGDMLParse.cxx:319
 TGDMLParse.cxx:320
 TGDMLParse.cxx:321
 TGDMLParse.cxx:322
 TGDMLParse.cxx:323
 TGDMLParse.cxx:324
 TGDMLParse.cxx:325
 TGDMLParse.cxx:326
 TGDMLParse.cxx:327
 TGDMLParse.cxx:328
 TGDMLParse.cxx:329
 TGDMLParse.cxx:330
 TGDMLParse.cxx:331
 TGDMLParse.cxx:332
 TGDMLParse.cxx:333
 TGDMLParse.cxx:334
 TGDMLParse.cxx:335
 TGDMLParse.cxx:336
 TGDMLParse.cxx:337
 TGDMLParse.cxx:338
 TGDMLParse.cxx:339
 TGDMLParse.cxx:340
 TGDMLParse.cxx:341
 TGDMLParse.cxx:342
 TGDMLParse.cxx:343
 TGDMLParse.cxx:344
 TGDMLParse.cxx:345
 TGDMLParse.cxx:346
 TGDMLParse.cxx:347
 TGDMLParse.cxx:348
 TGDMLParse.cxx:349
 TGDMLParse.cxx:350
 TGDMLParse.cxx:351
 TGDMLParse.cxx:352
 TGDMLParse.cxx:353
 TGDMLParse.cxx:354
 TGDMLParse.cxx:355
 TGDMLParse.cxx:356
 TGDMLParse.cxx:357
 TGDMLParse.cxx:358
 TGDMLParse.cxx:359
 TGDMLParse.cxx:360
 TGDMLParse.cxx:361
 TGDMLParse.cxx:362
 TGDMLParse.cxx:363
 TGDMLParse.cxx:364
 TGDMLParse.cxx:365
 TGDMLParse.cxx:366
 TGDMLParse.cxx:367
 TGDMLParse.cxx:368
 TGDMLParse.cxx:369
 TGDMLParse.cxx:370
 TGDMLParse.cxx:371
 TGDMLParse.cxx:372
 TGDMLParse.cxx:373
 TGDMLParse.cxx:374
 TGDMLParse.cxx:375
 TGDMLParse.cxx:376
 TGDMLParse.cxx:377
 TGDMLParse.cxx:378
 TGDMLParse.cxx:379
 TGDMLParse.cxx:380
 TGDMLParse.cxx:381
 TGDMLParse.cxx:382
 TGDMLParse.cxx:383
 TGDMLParse.cxx:384
 TGDMLParse.cxx:385
 TGDMLParse.cxx:386
 TGDMLParse.cxx:387
 TGDMLParse.cxx:388
 TGDMLParse.cxx:389
 TGDMLParse.cxx:390
 TGDMLParse.cxx:391
 TGDMLParse.cxx:392
 TGDMLParse.cxx:393
 TGDMLParse.cxx:394
 TGDMLParse.cxx:395
 TGDMLParse.cxx:396
 TGDMLParse.cxx:397
 TGDMLParse.cxx:398
 TGDMLParse.cxx:399
 TGDMLParse.cxx:400
 TGDMLParse.cxx:401
 TGDMLParse.cxx:402
 TGDMLParse.cxx:403
 TGDMLParse.cxx:404
 TGDMLParse.cxx:405
 TGDMLParse.cxx:406
 TGDMLParse.cxx:407
 TGDMLParse.cxx:408
 TGDMLParse.cxx:409
 TGDMLParse.cxx:410
 TGDMLParse.cxx:411
 TGDMLParse.cxx:412
 TGDMLParse.cxx:413
 TGDMLParse.cxx:414
 TGDMLParse.cxx:415
 TGDMLParse.cxx:416
 TGDMLParse.cxx:417
 TGDMLParse.cxx:418
 TGDMLParse.cxx:419
 TGDMLParse.cxx:420
 TGDMLParse.cxx:421
 TGDMLParse.cxx:422
 TGDMLParse.cxx:423
 TGDMLParse.cxx:424
 TGDMLParse.cxx:425
 TGDMLParse.cxx:426
 TGDMLParse.cxx:427
 TGDMLParse.cxx:428
 TGDMLParse.cxx:429
 TGDMLParse.cxx:430
 TGDMLParse.cxx:431
 TGDMLParse.cxx:432
 TGDMLParse.cxx:433
 TGDMLParse.cxx:434
 TGDMLParse.cxx:435
 TGDMLParse.cxx:436
 TGDMLParse.cxx:437
 TGDMLParse.cxx:438
 TGDMLParse.cxx:439
 TGDMLParse.cxx:440
 TGDMLParse.cxx:441
 TGDMLParse.cxx:442
 TGDMLParse.cxx:443
 TGDMLParse.cxx:444
 TGDMLParse.cxx:445
 TGDMLParse.cxx:446
 TGDMLParse.cxx:447
 TGDMLParse.cxx:448
 TGDMLParse.cxx:449
 TGDMLParse.cxx:450
 TGDMLParse.cxx:451
 TGDMLParse.cxx:452
 TGDMLParse.cxx:453
 TGDMLParse.cxx:454
 TGDMLParse.cxx:455
 TGDMLParse.cxx:456
 TGDMLParse.cxx:457
 TGDMLParse.cxx:458
 TGDMLParse.cxx:459
 TGDMLParse.cxx:460
 TGDMLParse.cxx:461
 TGDMLParse.cxx:462
 TGDMLParse.cxx:463
 TGDMLParse.cxx:464
 TGDMLParse.cxx:465
 TGDMLParse.cxx:466
 TGDMLParse.cxx:467
 TGDMLParse.cxx:468
 TGDMLParse.cxx:469
 TGDMLParse.cxx:470
 TGDMLParse.cxx:471
 TGDMLParse.cxx:472
 TGDMLParse.cxx:473
 TGDMLParse.cxx:474
 TGDMLParse.cxx:475
 TGDMLParse.cxx:476
 TGDMLParse.cxx:477
 TGDMLParse.cxx:478
 TGDMLParse.cxx:479
 TGDMLParse.cxx:480
 TGDMLParse.cxx:481
 TGDMLParse.cxx:482
 TGDMLParse.cxx:483
 TGDMLParse.cxx:484
 TGDMLParse.cxx:485
 TGDMLParse.cxx:486
 TGDMLParse.cxx:487
 TGDMLParse.cxx:488
 TGDMLParse.cxx:489
 TGDMLParse.cxx:490
 TGDMLParse.cxx:491
 TGDMLParse.cxx:492
 TGDMLParse.cxx:493
 TGDMLParse.cxx:494
 TGDMLParse.cxx:495
 TGDMLParse.cxx:496
 TGDMLParse.cxx:497
 TGDMLParse.cxx:498
 TGDMLParse.cxx:499
 TGDMLParse.cxx:500
 TGDMLParse.cxx:501
 TGDMLParse.cxx:502
 TGDMLParse.cxx:503
 TGDMLParse.cxx:504
 TGDMLParse.cxx:505
 TGDMLParse.cxx:506
 TGDMLParse.cxx:507
 TGDMLParse.cxx:508
 TGDMLParse.cxx:509
 TGDMLParse.cxx:510
 TGDMLParse.cxx:511
 TGDMLParse.cxx:512
 TGDMLParse.cxx:513
 TGDMLParse.cxx:514
 TGDMLParse.cxx:515
 TGDMLParse.cxx:516
 TGDMLParse.cxx:517
 TGDMLParse.cxx:518
 TGDMLParse.cxx:519
 TGDMLParse.cxx:520
 TGDMLParse.cxx:521
 TGDMLParse.cxx:522
 TGDMLParse.cxx:523
 TGDMLParse.cxx:524
 TGDMLParse.cxx:525
 TGDMLParse.cxx:526
 TGDMLParse.cxx:527
 TGDMLParse.cxx:528
 TGDMLParse.cxx:529
 TGDMLParse.cxx:530
 TGDMLParse.cxx:531
 TGDMLParse.cxx:532
 TGDMLParse.cxx:533
 TGDMLParse.cxx:534
 TGDMLParse.cxx:535
 TGDMLParse.cxx:536
 TGDMLParse.cxx:537
 TGDMLParse.cxx:538
 TGDMLParse.cxx:539
 TGDMLParse.cxx:540
 TGDMLParse.cxx:541
 TGDMLParse.cxx:542
 TGDMLParse.cxx:543
 TGDMLParse.cxx:544
 TGDMLParse.cxx:545
 TGDMLParse.cxx:546
 TGDMLParse.cxx:547
 TGDMLParse.cxx:548
 TGDMLParse.cxx:549
 TGDMLParse.cxx:550
 TGDMLParse.cxx:551
 TGDMLParse.cxx:552
 TGDMLParse.cxx:553
 TGDMLParse.cxx:554
 TGDMLParse.cxx:555
 TGDMLParse.cxx:556
 TGDMLParse.cxx:557
 TGDMLParse.cxx:558
 TGDMLParse.cxx:559
 TGDMLParse.cxx:560
 TGDMLParse.cxx:561
 TGDMLParse.cxx:562
 TGDMLParse.cxx:563
 TGDMLParse.cxx:564
 TGDMLParse.cxx:565
 TGDMLParse.cxx:566
 TGDMLParse.cxx:567
 TGDMLParse.cxx:568
 TGDMLParse.cxx:569
 TGDMLParse.cxx:570
 TGDMLParse.cxx:571
 TGDMLParse.cxx:572
 TGDMLParse.cxx:573
 TGDMLParse.cxx:574
 TGDMLParse.cxx:575
 TGDMLParse.cxx:576
 TGDMLParse.cxx:577
 TGDMLParse.cxx:578
 TGDMLParse.cxx:579
 TGDMLParse.cxx:580
 TGDMLParse.cxx:581
 TGDMLParse.cxx:582
 TGDMLParse.cxx:583
 TGDMLParse.cxx:584
 TGDMLParse.cxx:585
 TGDMLParse.cxx:586
 TGDMLParse.cxx:587
 TGDMLParse.cxx:588
 TGDMLParse.cxx:589
 TGDMLParse.cxx:590
 TGDMLParse.cxx:591
 TGDMLParse.cxx:592
 TGDMLParse.cxx:593
 TGDMLParse.cxx:594
 TGDMLParse.cxx:595
 TGDMLParse.cxx:596
 TGDMLParse.cxx:597
 TGDMLParse.cxx:598
 TGDMLParse.cxx:599
 TGDMLParse.cxx:600
 TGDMLParse.cxx:601
 TGDMLParse.cxx:602
 TGDMLParse.cxx:603
 TGDMLParse.cxx:604
 TGDMLParse.cxx:605
 TGDMLParse.cxx:606
 TGDMLParse.cxx:607
 TGDMLParse.cxx:608
 TGDMLParse.cxx:609
 TGDMLParse.cxx:610
 TGDMLParse.cxx:611
 TGDMLParse.cxx:612
 TGDMLParse.cxx:613
 TGDMLParse.cxx:614
 TGDMLParse.cxx:615
 TGDMLParse.cxx:616
 TGDMLParse.cxx:617
 TGDMLParse.cxx:618
 TGDMLParse.cxx:619
 TGDMLParse.cxx:620
 TGDMLParse.cxx:621
 TGDMLParse.cxx:622
 TGDMLParse.cxx:623
 TGDMLParse.cxx:624
 TGDMLParse.cxx:625
 TGDMLParse.cxx:626
 TGDMLParse.cxx:627
 TGDMLParse.cxx:628
 TGDMLParse.cxx:629
 TGDMLParse.cxx:630
 TGDMLParse.cxx:631
 TGDMLParse.cxx:632
 TGDMLParse.cxx:633
 TGDMLParse.cxx:634
 TGDMLParse.cxx:635
 TGDMLParse.cxx:636
 TGDMLParse.cxx:637
 TGDMLParse.cxx:638
 TGDMLParse.cxx:639
 TGDMLParse.cxx:640
 TGDMLParse.cxx:641
 TGDMLParse.cxx:642
 TGDMLParse.cxx:643
 TGDMLParse.cxx:644
 TGDMLParse.cxx:645
 TGDMLParse.cxx:646
 TGDMLParse.cxx:647
 TGDMLParse.cxx:648
 TGDMLParse.cxx:649
 TGDMLParse.cxx:650
 TGDMLParse.cxx:651
 TGDMLParse.cxx:652
 TGDMLParse.cxx:653
 TGDMLParse.cxx:654
 TGDMLParse.cxx:655
 TGDMLParse.cxx:656
 TGDMLParse.cxx:657
 TGDMLParse.cxx:658
 TGDMLParse.cxx:659
 TGDMLParse.cxx:660
 TGDMLParse.cxx:661
 TGDMLParse.cxx:662
 TGDMLParse.cxx:663
 TGDMLParse.cxx:664
 TGDMLParse.cxx:665
 TGDMLParse.cxx:666
 TGDMLParse.cxx:667
 TGDMLParse.cxx:668
 TGDMLParse.cxx:669
 TGDMLParse.cxx:670
 TGDMLParse.cxx:671
 TGDMLParse.cxx:672
 TGDMLParse.cxx:673
 TGDMLParse.cxx:674
 TGDMLParse.cxx:675
 TGDMLParse.cxx:676
 TGDMLParse.cxx:677
 TGDMLParse.cxx:678
 TGDMLParse.cxx:679
 TGDMLParse.cxx:680
 TGDMLParse.cxx:681
 TGDMLParse.cxx:682
 TGDMLParse.cxx:683
 TGDMLParse.cxx:684
 TGDMLParse.cxx:685
 TGDMLParse.cxx:686
 TGDMLParse.cxx:687
 TGDMLParse.cxx:688
 TGDMLParse.cxx:689
 TGDMLParse.cxx:690
 TGDMLParse.cxx:691
 TGDMLParse.cxx:692
 TGDMLParse.cxx:693
 TGDMLParse.cxx:694
 TGDMLParse.cxx:695
 TGDMLParse.cxx:696
 TGDMLParse.cxx:697
 TGDMLParse.cxx:698
 TGDMLParse.cxx:699
 TGDMLParse.cxx:700
 TGDMLParse.cxx:701
 TGDMLParse.cxx:702
 TGDMLParse.cxx:703
 TGDMLParse.cxx:704
 TGDMLParse.cxx:705
 TGDMLParse.cxx:706
 TGDMLParse.cxx:707
 TGDMLParse.cxx:708
 TGDMLParse.cxx:709
 TGDMLParse.cxx:710
 TGDMLParse.cxx:711
 TGDMLParse.cxx:712
 TGDMLParse.cxx:713
 TGDMLParse.cxx:714
 TGDMLParse.cxx:715
 TGDMLParse.cxx:716
 TGDMLParse.cxx:717
 TGDMLParse.cxx:718
 TGDMLParse.cxx:719
 TGDMLParse.cxx:720
 TGDMLParse.cxx:721
 TGDMLParse.cxx:722
 TGDMLParse.cxx:723
 TGDMLParse.cxx:724
 TGDMLParse.cxx:725
 TGDMLParse.cxx:726
 TGDMLParse.cxx:727
 TGDMLParse.cxx:728
 TGDMLParse.cxx:729
 TGDMLParse.cxx:730
 TGDMLParse.cxx:731
 TGDMLParse.cxx:732
 TGDMLParse.cxx:733
 TGDMLParse.cxx:734
 TGDMLParse.cxx:735
 TGDMLParse.cxx:736
 TGDMLParse.cxx:737
 TGDMLParse.cxx:738
 TGDMLParse.cxx:739
 TGDMLParse.cxx:740
 TGDMLParse.cxx:741
 TGDMLParse.cxx:742
 TGDMLParse.cxx:743
 TGDMLParse.cxx:744
 TGDMLParse.cxx:745
 TGDMLParse.cxx:746
 TGDMLParse.cxx:747
 TGDMLParse.cxx:748
 TGDMLParse.cxx:749
 TGDMLParse.cxx:750
 TGDMLParse.cxx:751
 TGDMLParse.cxx:752
 TGDMLParse.cxx:753
 TGDMLParse.cxx:754
 TGDMLParse.cxx:755
 TGDMLParse.cxx:756
 TGDMLParse.cxx:757
 TGDMLParse.cxx:758
 TGDMLParse.cxx:759
 TGDMLParse.cxx:760
 TGDMLParse.cxx:761
 TGDMLParse.cxx:762
 TGDMLParse.cxx:763
 TGDMLParse.cxx:764
 TGDMLParse.cxx:765
 TGDMLParse.cxx:766
 TGDMLParse.cxx:767
 TGDMLParse.cxx:768
 TGDMLParse.cxx:769
 TGDMLParse.cxx:770
 TGDMLParse.cxx:771
 TGDMLParse.cxx:772
 TGDMLParse.cxx:773
 TGDMLParse.cxx:774
 TGDMLParse.cxx:775
 TGDMLParse.cxx:776
 TGDMLParse.cxx:777
 TGDMLParse.cxx:778
 TGDMLParse.cxx:779
 TGDMLParse.cxx:780
 TGDMLParse.cxx:781
 TGDMLParse.cxx:782
 TGDMLParse.cxx:783
 TGDMLParse.cxx:784
 TGDMLParse.cxx:785
 TGDMLParse.cxx:786
 TGDMLParse.cxx:787
 TGDMLParse.cxx:788
 TGDMLParse.cxx:789
 TGDMLParse.cxx:790
 TGDMLParse.cxx:791
 TGDMLParse.cxx:792
 TGDMLParse.cxx:793
 TGDMLParse.cxx:794
 TGDMLParse.cxx:795
 TGDMLParse.cxx:796
 TGDMLParse.cxx:797
 TGDMLParse.cxx:798
 TGDMLParse.cxx:799
 TGDMLParse.cxx:800
 TGDMLParse.cxx:801
 TGDMLParse.cxx:802
 TGDMLParse.cxx:803
 TGDMLParse.cxx:804
 TGDMLParse.cxx:805
 TGDMLParse.cxx:806
 TGDMLParse.cxx:807
 TGDMLParse.cxx:808
 TGDMLParse.cxx:809
 TGDMLParse.cxx:810
 TGDMLParse.cxx:811
 TGDMLParse.cxx:812
 TGDMLParse.cxx:813
 TGDMLParse.cxx:814
 TGDMLParse.cxx:815
 TGDMLParse.cxx:816
 TGDMLParse.cxx:817
 TGDMLParse.cxx:818
 TGDMLParse.cxx:819
 TGDMLParse.cxx:820
 TGDMLParse.cxx:821
 TGDMLParse.cxx:822
 TGDMLParse.cxx:823
 TGDMLParse.cxx:824
 TGDMLParse.cxx:825
 TGDMLParse.cxx:826
 TGDMLParse.cxx:827
 TGDMLParse.cxx:828
 TGDMLParse.cxx:829
 TGDMLParse.cxx:830
 TGDMLParse.cxx:831
 TGDMLParse.cxx:832
 TGDMLParse.cxx:833
 TGDMLParse.cxx:834
 TGDMLParse.cxx:835
 TGDMLParse.cxx:836
 TGDMLParse.cxx:837
 TGDMLParse.cxx:838
 TGDMLParse.cxx:839
 TGDMLParse.cxx:840
 TGDMLParse.cxx:841
 TGDMLParse.cxx:842
 TGDMLParse.cxx:843
 TGDMLParse.cxx:844
 TGDMLParse.cxx:845
 TGDMLParse.cxx:846
 TGDMLParse.cxx:847
 TGDMLParse.cxx:848
 TGDMLParse.cxx:849
 TGDMLParse.cxx:850
 TGDMLParse.cxx:851
 TGDMLParse.cxx:852
 TGDMLParse.cxx:853
 TGDMLParse.cxx:854
 TGDMLParse.cxx:855
 TGDMLParse.cxx:856
 TGDMLParse.cxx:857
 TGDMLParse.cxx:858
 TGDMLParse.cxx:859
 TGDMLParse.cxx:860
 TGDMLParse.cxx:861
 TGDMLParse.cxx:862
 TGDMLParse.cxx:863
 TGDMLParse.cxx:864
 TGDMLParse.cxx:865
 TGDMLParse.cxx:866
 TGDMLParse.cxx:867
 TGDMLParse.cxx:868
 TGDMLParse.cxx:869
 TGDMLParse.cxx:870
 TGDMLParse.cxx:871
 TGDMLParse.cxx:872
 TGDMLParse.cxx:873
 TGDMLParse.cxx:874
 TGDMLParse.cxx:875
 TGDMLParse.cxx:876
 TGDMLParse.cxx:877
 TGDMLParse.cxx:878
 TGDMLParse.cxx:879
 TGDMLParse.cxx:880
 TGDMLParse.cxx:881
 TGDMLParse.cxx:882
 TGDMLParse.cxx:883
 TGDMLParse.cxx:884
 TGDMLParse.cxx:885
 TGDMLParse.cxx:886
 TGDMLParse.cxx:887
 TGDMLParse.cxx:888
 TGDMLParse.cxx:889
 TGDMLParse.cxx:890
 TGDMLParse.cxx:891
 TGDMLParse.cxx:892
 TGDMLParse.cxx:893
 TGDMLParse.cxx:894
 TGDMLParse.cxx:895
 TGDMLParse.cxx:896
 TGDMLParse.cxx:897
 TGDMLParse.cxx:898
 TGDMLParse.cxx:899
 TGDMLParse.cxx:900
 TGDMLParse.cxx:901
 TGDMLParse.cxx:902
 TGDMLParse.cxx:903
 TGDMLParse.cxx:904
 TGDMLParse.cxx:905
 TGDMLParse.cxx:906
 TGDMLParse.cxx:907
 TGDMLParse.cxx:908
 TGDMLParse.cxx:909
 TGDMLParse.cxx:910
 TGDMLParse.cxx:911
 TGDMLParse.cxx:912
 TGDMLParse.cxx:913
 TGDMLParse.cxx:914
 TGDMLParse.cxx:915
 TGDMLParse.cxx:916
 TGDMLParse.cxx:917
 TGDMLParse.cxx:918
 TGDMLParse.cxx:919
 TGDMLParse.cxx:920
 TGDMLParse.cxx:921
 TGDMLParse.cxx:922
 TGDMLParse.cxx:923
 TGDMLParse.cxx:924
 TGDMLParse.cxx:925
 TGDMLParse.cxx:926
 TGDMLParse.cxx:927
 TGDMLParse.cxx:928
 TGDMLParse.cxx:929
 TGDMLParse.cxx:930
 TGDMLParse.cxx:931
 TGDMLParse.cxx:932
 TGDMLParse.cxx:933
 TGDMLParse.cxx:934
 TGDMLParse.cxx:935
 TGDMLParse.cxx:936
 TGDMLParse.cxx:937
 TGDMLParse.cxx:938
 TGDMLParse.cxx:939
 TGDMLParse.cxx:940
 TGDMLParse.cxx:941
 TGDMLParse.cxx:942
 TGDMLParse.cxx:943
 TGDMLParse.cxx:944
 TGDMLParse.cxx:945
 TGDMLParse.cxx:946
 TGDMLParse.cxx:947
 TGDMLParse.cxx:948
 TGDMLParse.cxx:949
 TGDMLParse.cxx:950
 TGDMLParse.cxx:951
 TGDMLParse.cxx:952
 TGDMLParse.cxx:953
 TGDMLParse.cxx:954
 TGDMLParse.cxx:955
 TGDMLParse.cxx:956
 TGDMLParse.cxx:957
 TGDMLParse.cxx:958
 TGDMLParse.cxx:959
 TGDMLParse.cxx:960
 TGDMLParse.cxx:961
 TGDMLParse.cxx:962
 TGDMLParse.cxx:963
 TGDMLParse.cxx:964
 TGDMLParse.cxx:965
 TGDMLParse.cxx:966
 TGDMLParse.cxx:967
 TGDMLParse.cxx:968
 TGDMLParse.cxx:969
 TGDMLParse.cxx:970
 TGDMLParse.cxx:971
 TGDMLParse.cxx:972
 TGDMLParse.cxx:973
 TGDMLParse.cxx:974
 TGDMLParse.cxx:975
 TGDMLParse.cxx:976
 TGDMLParse.cxx:977
 TGDMLParse.cxx:978
 TGDMLParse.cxx:979
 TGDMLParse.cxx:980
 TGDMLParse.cxx:981
 TGDMLParse.cxx:982
 TGDMLParse.cxx:983
 TGDMLParse.cxx:984
 TGDMLParse.cxx:985
 TGDMLParse.cxx:986
 TGDMLParse.cxx:987
 TGDMLParse.cxx:988
 TGDMLParse.cxx:989
 TGDMLParse.cxx:990
 TGDMLParse.cxx:991
 TGDMLParse.cxx:992
 TGDMLParse.cxx:993
 TGDMLParse.cxx:994
 TGDMLParse.cxx:995
 TGDMLParse.cxx:996
 TGDMLParse.cxx:997
 TGDMLParse.cxx:998
 TGDMLParse.cxx:999
 TGDMLParse.cxx:1000
 TGDMLParse.cxx:1001
 TGDMLParse.cxx:1002
 TGDMLParse.cxx:1003
 TGDMLParse.cxx:1004
 TGDMLParse.cxx:1005
 TGDMLParse.cxx:1006
 TGDMLParse.cxx:1007
 TGDMLParse.cxx:1008
 TGDMLParse.cxx:1009
 TGDMLParse.cxx:1010
 TGDMLParse.cxx:1011
 TGDMLParse.cxx:1012
 TGDMLParse.cxx:1013
 TGDMLParse.cxx:1014
 TGDMLParse.cxx:1015
 TGDMLParse.cxx:1016
 TGDMLParse.cxx:1017
 TGDMLParse.cxx:1018
 TGDMLParse.cxx:1019
 TGDMLParse.cxx:1020
 TGDMLParse.cxx:1021
 TGDMLParse.cxx:1022
 TGDMLParse.cxx:1023
 TGDMLParse.cxx:1024
 TGDMLParse.cxx:1025
 TGDMLParse.cxx:1026
 TGDMLParse.cxx:1027
 TGDMLParse.cxx:1028
 TGDMLParse.cxx:1029
 TGDMLParse.cxx:1030
 TGDMLParse.cxx:1031
 TGDMLParse.cxx:1032
 TGDMLParse.cxx:1033
 TGDMLParse.cxx:1034
 TGDMLParse.cxx:1035
 TGDMLParse.cxx:1036
 TGDMLParse.cxx:1037
 TGDMLParse.cxx:1038
 TGDMLParse.cxx:1039
 TGDMLParse.cxx:1040
 TGDMLParse.cxx:1041
 TGDMLParse.cxx:1042
 TGDMLParse.cxx:1043
 TGDMLParse.cxx:1044
 TGDMLParse.cxx:1045
 TGDMLParse.cxx:1046
 TGDMLParse.cxx:1047
 TGDMLParse.cxx:1048
 TGDMLParse.cxx:1049
 TGDMLParse.cxx:1050
 TGDMLParse.cxx:1051
 TGDMLParse.cxx:1052
 TGDMLParse.cxx:1053
 TGDMLParse.cxx:1054
 TGDMLParse.cxx:1055
 TGDMLParse.cxx:1056
 TGDMLParse.cxx:1057
 TGDMLParse.cxx:1058
 TGDMLParse.cxx:1059
 TGDMLParse.cxx:1060
 TGDMLParse.cxx:1061
 TGDMLParse.cxx:1062
 TGDMLParse.cxx:1063
 TGDMLParse.cxx:1064
 TGDMLParse.cxx:1065
 TGDMLParse.cxx:1066
 TGDMLParse.cxx:1067
 TGDMLParse.cxx:1068
 TGDMLParse.cxx:1069
 TGDMLParse.cxx:1070
 TGDMLParse.cxx:1071
 TGDMLParse.cxx:1072
 TGDMLParse.cxx:1073
 TGDMLParse.cxx:1074
 TGDMLParse.cxx:1075
 TGDMLParse.cxx:1076
 TGDMLParse.cxx:1077
 TGDMLParse.cxx:1078
 TGDMLParse.cxx:1079
 TGDMLParse.cxx:1080
 TGDMLParse.cxx:1081
 TGDMLParse.cxx:1082
 TGDMLParse.cxx:1083
 TGDMLParse.cxx:1084
 TGDMLParse.cxx:1085
 TGDMLParse.cxx:1086
 TGDMLParse.cxx:1087
 TGDMLParse.cxx:1088
 TGDMLParse.cxx:1089
 TGDMLParse.cxx:1090
 TGDMLParse.cxx:1091
 TGDMLParse.cxx:1092
 TGDMLParse.cxx:1093
 TGDMLParse.cxx:1094
 TGDMLParse.cxx:1095
 TGDMLParse.cxx:1096
 TGDMLParse.cxx:1097
 TGDMLParse.cxx:1098
 TGDMLParse.cxx:1099
 TGDMLParse.cxx:1100
 TGDMLParse.cxx:1101
 TGDMLParse.cxx:1102
 TGDMLParse.cxx:1103
 TGDMLParse.cxx:1104
 TGDMLParse.cxx:1105
 TGDMLParse.cxx:1106
 TGDMLParse.cxx:1107
 TGDMLParse.cxx:1108
 TGDMLParse.cxx:1109
 TGDMLParse.cxx:1110
 TGDMLParse.cxx:1111
 TGDMLParse.cxx:1112
 TGDMLParse.cxx:1113
 TGDMLParse.cxx:1114
 TGDMLParse.cxx:1115
 TGDMLParse.cxx:1116
 TGDMLParse.cxx:1117
 TGDMLParse.cxx:1118
 TGDMLParse.cxx:1119
 TGDMLParse.cxx:1120
 TGDMLParse.cxx:1121
 TGDMLParse.cxx:1122
 TGDMLParse.cxx:1123
 TGDMLParse.cxx:1124
 TGDMLParse.cxx:1125
 TGDMLParse.cxx:1126
 TGDMLParse.cxx:1127
 TGDMLParse.cxx:1128
 TGDMLParse.cxx:1129
 TGDMLParse.cxx:1130
 TGDMLParse.cxx:1131
 TGDMLParse.cxx:1132
 TGDMLParse.cxx:1133
 TGDMLParse.cxx:1134
 TGDMLParse.cxx:1135
 TGDMLParse.cxx:1136
 TGDMLParse.cxx:1137
 TGDMLParse.cxx:1138
 TGDMLParse.cxx:1139
 TGDMLParse.cxx:1140
 TGDMLParse.cxx:1141
 TGDMLParse.cxx:1142
 TGDMLParse.cxx:1143
 TGDMLParse.cxx:1144
 TGDMLParse.cxx:1145
 TGDMLParse.cxx:1146
 TGDMLParse.cxx:1147
 TGDMLParse.cxx:1148
 TGDMLParse.cxx:1149
 TGDMLParse.cxx:1150
 TGDMLParse.cxx:1151
 TGDMLParse.cxx:1152
 TGDMLParse.cxx:1153
 TGDMLParse.cxx:1154
 TGDMLParse.cxx:1155
 TGDMLParse.cxx:1156
 TGDMLParse.cxx:1157
 TGDMLParse.cxx:1158
 TGDMLParse.cxx:1159
 TGDMLParse.cxx:1160
 TGDMLParse.cxx:1161
 TGDMLParse.cxx:1162
 TGDMLParse.cxx:1163
 TGDMLParse.cxx:1164
 TGDMLParse.cxx:1165
 TGDMLParse.cxx:1166
 TGDMLParse.cxx:1167
 TGDMLParse.cxx:1168
 TGDMLParse.cxx:1169
 TGDMLParse.cxx:1170
 TGDMLParse.cxx:1171
 TGDMLParse.cxx:1172
 TGDMLParse.cxx:1173
 TGDMLParse.cxx:1174
 TGDMLParse.cxx:1175
 TGDMLParse.cxx:1176
 TGDMLParse.cxx:1177
 TGDMLParse.cxx:1178
 TGDMLParse.cxx:1179
 TGDMLParse.cxx:1180
 TGDMLParse.cxx:1181
 TGDMLParse.cxx:1182
 TGDMLParse.cxx:1183
 TGDMLParse.cxx:1184
 TGDMLParse.cxx:1185
 TGDMLParse.cxx:1186
 TGDMLParse.cxx:1187
 TGDMLParse.cxx:1188
 TGDMLParse.cxx:1189
 TGDMLParse.cxx:1190
 TGDMLParse.cxx:1191
 TGDMLParse.cxx:1192
 TGDMLParse.cxx:1193
 TGDMLParse.cxx:1194
 TGDMLParse.cxx:1195
 TGDMLParse.cxx:1196
 TGDMLParse.cxx:1197
 TGDMLParse.cxx:1198
 TGDMLParse.cxx:1199
 TGDMLParse.cxx:1200
 TGDMLParse.cxx:1201
 TGDMLParse.cxx:1202
 TGDMLParse.cxx:1203
 TGDMLParse.cxx:1204
 TGDMLParse.cxx:1205
 TGDMLParse.cxx:1206
 TGDMLParse.cxx:1207
 TGDMLParse.cxx:1208
 TGDMLParse.cxx:1209
 TGDMLParse.cxx:1210
 TGDMLParse.cxx:1211
 TGDMLParse.cxx:1212
 TGDMLParse.cxx:1213
 TGDMLParse.cxx:1214
 TGDMLParse.cxx:1215
 TGDMLParse.cxx:1216
 TGDMLParse.cxx:1217
 TGDMLParse.cxx:1218
 TGDMLParse.cxx:1219
 TGDMLParse.cxx:1220
 TGDMLParse.cxx:1221
 TGDMLParse.cxx:1222
 TGDMLParse.cxx:1223
 TGDMLParse.cxx:1224
 TGDMLParse.cxx:1225
 TGDMLParse.cxx:1226
 TGDMLParse.cxx:1227
 TGDMLParse.cxx:1228
 TGDMLParse.cxx:1229
 TGDMLParse.cxx:1230
 TGDMLParse.cxx:1231
 TGDMLParse.cxx:1232
 TGDMLParse.cxx:1233
 TGDMLParse.cxx:1234
 TGDMLParse.cxx:1235
 TGDMLParse.cxx:1236
 TGDMLParse.cxx:1237
 TGDMLParse.cxx:1238
 TGDMLParse.cxx:1239
 TGDMLParse.cxx:1240
 TGDMLParse.cxx:1241
 TGDMLParse.cxx:1242
 TGDMLParse.cxx:1243
 TGDMLParse.cxx:1244
 TGDMLParse.cxx:1245
 TGDMLParse.cxx:1246
 TGDMLParse.cxx:1247
 TGDMLParse.cxx:1248
 TGDMLParse.cxx:1249
 TGDMLParse.cxx:1250
 TGDMLParse.cxx:1251
 TGDMLParse.cxx:1252
 TGDMLParse.cxx:1253
 TGDMLParse.cxx:1254
 TGDMLParse.cxx:1255
 TGDMLParse.cxx:1256
 TGDMLParse.cxx:1257
 TGDMLParse.cxx:1258
 TGDMLParse.cxx:1259
 TGDMLParse.cxx:1260
 TGDMLParse.cxx:1261
 TGDMLParse.cxx:1262
 TGDMLParse.cxx:1263
 TGDMLParse.cxx:1264
 TGDMLParse.cxx:1265
 TGDMLParse.cxx:1266
 TGDMLParse.cxx:1267
 TGDMLParse.cxx:1268
 TGDMLParse.cxx:1269
 TGDMLParse.cxx:1270
 TGDMLParse.cxx:1271
 TGDMLParse.cxx:1272
 TGDMLParse.cxx:1273
 TGDMLParse.cxx:1274
 TGDMLParse.cxx:1275
 TGDMLParse.cxx:1276
 TGDMLParse.cxx:1277
 TGDMLParse.cxx:1278
 TGDMLParse.cxx:1279
 TGDMLParse.cxx:1280
 TGDMLParse.cxx:1281
 TGDMLParse.cxx:1282
 TGDMLParse.cxx:1283
 TGDMLParse.cxx:1284
 TGDMLParse.cxx:1285
 TGDMLParse.cxx:1286
 TGDMLParse.cxx:1287
 TGDMLParse.cxx:1288
 TGDMLParse.cxx:1289
 TGDMLParse.cxx:1290
 TGDMLParse.cxx:1291
 TGDMLParse.cxx:1292
 TGDMLParse.cxx:1293
 TGDMLParse.cxx:1294
 TGDMLParse.cxx:1295
 TGDMLParse.cxx:1296
 TGDMLParse.cxx:1297
 TGDMLParse.cxx:1298
 TGDMLParse.cxx:1299
 TGDMLParse.cxx:1300
 TGDMLParse.cxx:1301
 TGDMLParse.cxx:1302
 TGDMLParse.cxx:1303
 TGDMLParse.cxx:1304
 TGDMLParse.cxx:1305
 TGDMLParse.cxx:1306
 TGDMLParse.cxx:1307
 TGDMLParse.cxx:1308
 TGDMLParse.cxx:1309
 TGDMLParse.cxx:1310
 TGDMLParse.cxx:1311
 TGDMLParse.cxx:1312
 TGDMLParse.cxx:1313
 TGDMLParse.cxx:1314
 TGDMLParse.cxx:1315
 TGDMLParse.cxx:1316
 TGDMLParse.cxx:1317
 TGDMLParse.cxx:1318
 TGDMLParse.cxx:1319
 TGDMLParse.cxx:1320
 TGDMLParse.cxx:1321
 TGDMLParse.cxx:1322
 TGDMLParse.cxx:1323
 TGDMLParse.cxx:1324
 TGDMLParse.cxx:1325
 TGDMLParse.cxx:1326
 TGDMLParse.cxx:1327
 TGDMLParse.cxx:1328
 TGDMLParse.cxx:1329
 TGDMLParse.cxx:1330
 TGDMLParse.cxx:1331
 TGDMLParse.cxx:1332
 TGDMLParse.cxx:1333
 TGDMLParse.cxx:1334
 TGDMLParse.cxx:1335
 TGDMLParse.cxx:1336
 TGDMLParse.cxx:1337
 TGDMLParse.cxx:1338
 TGDMLParse.cxx:1339
 TGDMLParse.cxx:1340
 TGDMLParse.cxx:1341
 TGDMLParse.cxx:1342
 TGDMLParse.cxx:1343
 TGDMLParse.cxx:1344
 TGDMLParse.cxx:1345
 TGDMLParse.cxx:1346
 TGDMLParse.cxx:1347
 TGDMLParse.cxx:1348
 TGDMLParse.cxx:1349
 TGDMLParse.cxx:1350
 TGDMLParse.cxx:1351
 TGDMLParse.cxx:1352
 TGDMLParse.cxx:1353
 TGDMLParse.cxx:1354
 TGDMLParse.cxx:1355
 TGDMLParse.cxx:1356
 TGDMLParse.cxx:1357
 TGDMLParse.cxx:1358
 TGDMLParse.cxx:1359
 TGDMLParse.cxx:1360
 TGDMLParse.cxx:1361
 TGDMLParse.cxx:1362
 TGDMLParse.cxx:1363
 TGDMLParse.cxx:1364
 TGDMLParse.cxx:1365
 TGDMLParse.cxx:1366
 TGDMLParse.cxx:1367
 TGDMLParse.cxx:1368
 TGDMLParse.cxx:1369
 TGDMLParse.cxx:1370
 TGDMLParse.cxx:1371
 TGDMLParse.cxx:1372
 TGDMLParse.cxx:1373
 TGDMLParse.cxx:1374
 TGDMLParse.cxx:1375
 TGDMLParse.cxx:1376
 TGDMLParse.cxx:1377
 TGDMLParse.cxx:1378
 TGDMLParse.cxx:1379
 TGDMLParse.cxx:1380
 TGDMLParse.cxx:1381
 TGDMLParse.cxx:1382
 TGDMLParse.cxx:1383
 TGDMLParse.cxx:1384
 TGDMLParse.cxx:1385
 TGDMLParse.cxx:1386
 TGDMLParse.cxx:1387
 TGDMLParse.cxx:1388
 TGDMLParse.cxx:1389
 TGDMLParse.cxx:1390
 TGDMLParse.cxx:1391
 TGDMLParse.cxx:1392
 TGDMLParse.cxx:1393
 TGDMLParse.cxx:1394
 TGDMLParse.cxx:1395
 TGDMLParse.cxx:1396
 TGDMLParse.cxx:1397
 TGDMLParse.cxx:1398
 TGDMLParse.cxx:1399
 TGDMLParse.cxx:1400
 TGDMLParse.cxx:1401
 TGDMLParse.cxx:1402
 TGDMLParse.cxx:1403
 TGDMLParse.cxx:1404
 TGDMLParse.cxx:1405
 TGDMLParse.cxx:1406
 TGDMLParse.cxx:1407
 TGDMLParse.cxx:1408
 TGDMLParse.cxx:1409
 TGDMLParse.cxx:1410
 TGDMLParse.cxx:1411
 TGDMLParse.cxx:1412
 TGDMLParse.cxx:1413
 TGDMLParse.cxx:1414
 TGDMLParse.cxx:1415
 TGDMLParse.cxx:1416
 TGDMLParse.cxx:1417
 TGDMLParse.cxx:1418
 TGDMLParse.cxx:1419
 TGDMLParse.cxx:1420
 TGDMLParse.cxx:1421
 TGDMLParse.cxx:1422
 TGDMLParse.cxx:1423
 TGDMLParse.cxx:1424
 TGDMLParse.cxx:1425
 TGDMLParse.cxx:1426
 TGDMLParse.cxx:1427
 TGDMLParse.cxx:1428
 TGDMLParse.cxx:1429
 TGDMLParse.cxx:1430
 TGDMLParse.cxx:1431
 TGDMLParse.cxx:1432
 TGDMLParse.cxx:1433
 TGDMLParse.cxx:1434
 TGDMLParse.cxx:1435
 TGDMLParse.cxx:1436
 TGDMLParse.cxx:1437
 TGDMLParse.cxx:1438
 TGDMLParse.cxx:1439
 TGDMLParse.cxx:1440
 TGDMLParse.cxx:1441
 TGDMLParse.cxx:1442
 TGDMLParse.cxx:1443
 TGDMLParse.cxx:1444
 TGDMLParse.cxx:1445
 TGDMLParse.cxx:1446
 TGDMLParse.cxx:1447
 TGDMLParse.cxx:1448
 TGDMLParse.cxx:1449
 TGDMLParse.cxx:1450
 TGDMLParse.cxx:1451
 TGDMLParse.cxx:1452
 TGDMLParse.cxx:1453
 TGDMLParse.cxx:1454
 TGDMLParse.cxx:1455
 TGDMLParse.cxx:1456
 TGDMLParse.cxx:1457
 TGDMLParse.cxx:1458
 TGDMLParse.cxx:1459
 TGDMLParse.cxx:1460
 TGDMLParse.cxx:1461
 TGDMLParse.cxx:1462
 TGDMLParse.cxx:1463
 TGDMLParse.cxx:1464
 TGDMLParse.cxx:1465
 TGDMLParse.cxx:1466
 TGDMLParse.cxx:1467
 TGDMLParse.cxx:1468
 TGDMLParse.cxx:1469
 TGDMLParse.cxx:1470
 TGDMLParse.cxx:1471
 TGDMLParse.cxx:1472
 TGDMLParse.cxx:1473
 TGDMLParse.cxx:1474
 TGDMLParse.cxx:1475
 TGDMLParse.cxx:1476
 TGDMLParse.cxx:1477
 TGDMLParse.cxx:1478
 TGDMLParse.cxx:1479
 TGDMLParse.cxx:1480
 TGDMLParse.cxx:1481
 TGDMLParse.cxx:1482
 TGDMLParse.cxx:1483
 TGDMLParse.cxx:1484
 TGDMLParse.cxx:1485
 TGDMLParse.cxx:1486
 TGDMLParse.cxx:1487
 TGDMLParse.cxx:1488
 TGDMLParse.cxx:1489
 TGDMLParse.cxx:1490
 TGDMLParse.cxx:1491
 TGDMLParse.cxx:1492
 TGDMLParse.cxx:1493
 TGDMLParse.cxx:1494
 TGDMLParse.cxx:1495
 TGDMLParse.cxx:1496
 TGDMLParse.cxx:1497
 TGDMLParse.cxx:1498
 TGDMLParse.cxx:1499
 TGDMLParse.cxx:1500
 TGDMLParse.cxx:1501
 TGDMLParse.cxx:1502
 TGDMLParse.cxx:1503
 TGDMLParse.cxx:1504
 TGDMLParse.cxx:1505
 TGDMLParse.cxx:1506
 TGDMLParse.cxx:1507
 TGDMLParse.cxx:1508
 TGDMLParse.cxx:1509
 TGDMLParse.cxx:1510
 TGDMLParse.cxx:1511
 TGDMLParse.cxx:1512
 TGDMLParse.cxx:1513
 TGDMLParse.cxx:1514
 TGDMLParse.cxx:1515
 TGDMLParse.cxx:1516
 TGDMLParse.cxx:1517
 TGDMLParse.cxx:1518
 TGDMLParse.cxx:1519
 TGDMLParse.cxx:1520
 TGDMLParse.cxx:1521
 TGDMLParse.cxx:1522
 TGDMLParse.cxx:1523
 TGDMLParse.cxx:1524
 TGDMLParse.cxx:1525
 TGDMLParse.cxx:1526
 TGDMLParse.cxx:1527
 TGDMLParse.cxx:1528
 TGDMLParse.cxx:1529
 TGDMLParse.cxx:1530
 TGDMLParse.cxx:1531
 TGDMLParse.cxx:1532
 TGDMLParse.cxx:1533
 TGDMLParse.cxx:1534
 TGDMLParse.cxx:1535
 TGDMLParse.cxx:1536
 TGDMLParse.cxx:1537
 TGDMLParse.cxx:1538
 TGDMLParse.cxx:1539
 TGDMLParse.cxx:1540
 TGDMLParse.cxx:1541
 TGDMLParse.cxx:1542
 TGDMLParse.cxx:1543
 TGDMLParse.cxx:1544
 TGDMLParse.cxx:1545
 TGDMLParse.cxx:1546
 TGDMLParse.cxx:1547
 TGDMLParse.cxx:1548
 TGDMLParse.cxx:1549
 TGDMLParse.cxx:1550
 TGDMLParse.cxx:1551
 TGDMLParse.cxx:1552
 TGDMLParse.cxx:1553
 TGDMLParse.cxx:1554
 TGDMLParse.cxx:1555
 TGDMLParse.cxx:1556
 TGDMLParse.cxx:1557
 TGDMLParse.cxx:1558
 TGDMLParse.cxx:1559
 TGDMLParse.cxx:1560
 TGDMLParse.cxx:1561
 TGDMLParse.cxx:1562
 TGDMLParse.cxx:1563
 TGDMLParse.cxx:1564
 TGDMLParse.cxx:1565
 TGDMLParse.cxx:1566
 TGDMLParse.cxx:1567
 TGDMLParse.cxx:1568
 TGDMLParse.cxx:1569
 TGDMLParse.cxx:1570
 TGDMLParse.cxx:1571
 TGDMLParse.cxx:1572
 TGDMLParse.cxx:1573
 TGDMLParse.cxx:1574
 TGDMLParse.cxx:1575
 TGDMLParse.cxx:1576
 TGDMLParse.cxx:1577
 TGDMLParse.cxx:1578
 TGDMLParse.cxx:1579
 TGDMLParse.cxx:1580
 TGDMLParse.cxx:1581
 TGDMLParse.cxx:1582
 TGDMLParse.cxx:1583
 TGDMLParse.cxx:1584
 TGDMLParse.cxx:1585
 TGDMLParse.cxx:1586
 TGDMLParse.cxx:1587
 TGDMLParse.cxx:1588
 TGDMLParse.cxx:1589
 TGDMLParse.cxx:1590
 TGDMLParse.cxx:1591
 TGDMLParse.cxx:1592
 TGDMLParse.cxx:1593
 TGDMLParse.cxx:1594
 TGDMLParse.cxx:1595
 TGDMLParse.cxx:1596
 TGDMLParse.cxx:1597
 TGDMLParse.cxx:1598
 TGDMLParse.cxx:1599
 TGDMLParse.cxx:1600
 TGDMLParse.cxx:1601
 TGDMLParse.cxx:1602
 TGDMLParse.cxx:1603
 TGDMLParse.cxx:1604
 TGDMLParse.cxx:1605
 TGDMLParse.cxx:1606
 TGDMLParse.cxx:1607
 TGDMLParse.cxx:1608
 TGDMLParse.cxx:1609
 TGDMLParse.cxx:1610
 TGDMLParse.cxx:1611
 TGDMLParse.cxx:1612
 TGDMLParse.cxx:1613
 TGDMLParse.cxx:1614
 TGDMLParse.cxx:1615
 TGDMLParse.cxx:1616
 TGDMLParse.cxx:1617
 TGDMLParse.cxx:1618
 TGDMLParse.cxx:1619
 TGDMLParse.cxx:1620
 TGDMLParse.cxx:1621
 TGDMLParse.cxx:1622
 TGDMLParse.cxx:1623
 TGDMLParse.cxx:1624
 TGDMLParse.cxx:1625
 TGDMLParse.cxx:1626
 TGDMLParse.cxx:1627
 TGDMLParse.cxx:1628
 TGDMLParse.cxx:1629
 TGDMLParse.cxx:1630
 TGDMLParse.cxx:1631
 TGDMLParse.cxx:1632
 TGDMLParse.cxx:1633
 TGDMLParse.cxx:1634
 TGDMLParse.cxx:1635
 TGDMLParse.cxx:1636
 TGDMLParse.cxx:1637
 TGDMLParse.cxx:1638
 TGDMLParse.cxx:1639
 TGDMLParse.cxx:1640
 TGDMLParse.cxx:1641
 TGDMLParse.cxx:1642
 TGDMLParse.cxx:1643
 TGDMLParse.cxx:1644
 TGDMLParse.cxx:1645
 TGDMLParse.cxx:1646
 TGDMLParse.cxx:1647
 TGDMLParse.cxx:1648
 TGDMLParse.cxx:1649
 TGDMLParse.cxx:1650
 TGDMLParse.cxx:1651
 TGDMLParse.cxx:1652
 TGDMLParse.cxx:1653
 TGDMLParse.cxx:1654
 TGDMLParse.cxx:1655
 TGDMLParse.cxx:1656
 TGDMLParse.cxx:1657
 TGDMLParse.cxx:1658
 TGDMLParse.cxx:1659
 TGDMLParse.cxx:1660
 TGDMLParse.cxx:1661
 TGDMLParse.cxx:1662
 TGDMLParse.cxx:1663
 TGDMLParse.cxx:1664
 TGDMLParse.cxx:1665
 TGDMLParse.cxx:1666
 TGDMLParse.cxx:1667
 TGDMLParse.cxx:1668
 TGDMLParse.cxx:1669
 TGDMLParse.cxx:1670
 TGDMLParse.cxx:1671
 TGDMLParse.cxx:1672
 TGDMLParse.cxx:1673
 TGDMLParse.cxx:1674
 TGDMLParse.cxx:1675
 TGDMLParse.cxx:1676
 TGDMLParse.cxx:1677
 TGDMLParse.cxx:1678
 TGDMLParse.cxx:1679
 TGDMLParse.cxx:1680
 TGDMLParse.cxx:1681
 TGDMLParse.cxx:1682
 TGDMLParse.cxx:1683
 TGDMLParse.cxx:1684
 TGDMLParse.cxx:1685
 TGDMLParse.cxx:1686
 TGDMLParse.cxx:1687
 TGDMLParse.cxx:1688
 TGDMLParse.cxx:1689
 TGDMLParse.cxx:1690
 TGDMLParse.cxx:1691
 TGDMLParse.cxx:1692
 TGDMLParse.cxx:1693
 TGDMLParse.cxx:1694
 TGDMLParse.cxx:1695
 TGDMLParse.cxx:1696
 TGDMLParse.cxx:1697
 TGDMLParse.cxx:1698
 TGDMLParse.cxx:1699
 TGDMLParse.cxx:1700
 TGDMLParse.cxx:1701
 TGDMLParse.cxx:1702
 TGDMLParse.cxx:1703
 TGDMLParse.cxx:1704
 TGDMLParse.cxx:1705
 TGDMLParse.cxx:1706
 TGDMLParse.cxx:1707
 TGDMLParse.cxx:1708
 TGDMLParse.cxx:1709
 TGDMLParse.cxx:1710
 TGDMLParse.cxx:1711
 TGDMLParse.cxx:1712
 TGDMLParse.cxx:1713
 TGDMLParse.cxx:1714
 TGDMLParse.cxx:1715
 TGDMLParse.cxx:1716
 TGDMLParse.cxx:1717
 TGDMLParse.cxx:1718
 TGDMLParse.cxx:1719
 TGDMLParse.cxx:1720
 TGDMLParse.cxx:1721
 TGDMLParse.cxx:1722
 TGDMLParse.cxx:1723
 TGDMLParse.cxx:1724
 TGDMLParse.cxx:1725
 TGDMLParse.cxx:1726
 TGDMLParse.cxx:1727
 TGDMLParse.cxx:1728
 TGDMLParse.cxx:1729
 TGDMLParse.cxx:1730
 TGDMLParse.cxx:1731
 TGDMLParse.cxx:1732
 TGDMLParse.cxx:1733
 TGDMLParse.cxx:1734
 TGDMLParse.cxx:1735
 TGDMLParse.cxx:1736
 TGDMLParse.cxx:1737
 TGDMLParse.cxx:1738
 TGDMLParse.cxx:1739
 TGDMLParse.cxx:1740
 TGDMLParse.cxx:1741
 TGDMLParse.cxx:1742
 TGDMLParse.cxx:1743
 TGDMLParse.cxx:1744
 TGDMLParse.cxx:1745
 TGDMLParse.cxx:1746
 TGDMLParse.cxx:1747
 TGDMLParse.cxx:1748
 TGDMLParse.cxx:1749
 TGDMLParse.cxx:1750
 TGDMLParse.cxx:1751
 TGDMLParse.cxx:1752
 TGDMLParse.cxx:1753
 TGDMLParse.cxx:1754
 TGDMLParse.cxx:1755
 TGDMLParse.cxx:1756
 TGDMLParse.cxx:1757
 TGDMLParse.cxx:1758
 TGDMLParse.cxx:1759
 TGDMLParse.cxx:1760
 TGDMLParse.cxx:1761
 TGDMLParse.cxx:1762
 TGDMLParse.cxx:1763
 TGDMLParse.cxx:1764
 TGDMLParse.cxx:1765
 TGDMLParse.cxx:1766
 TGDMLParse.cxx:1767
 TGDMLParse.cxx:1768
 TGDMLParse.cxx:1769
 TGDMLParse.cxx:1770
 TGDMLParse.cxx:1771
 TGDMLParse.cxx:1772
 TGDMLParse.cxx:1773
 TGDMLParse.cxx:1774
 TGDMLParse.cxx:1775
 TGDMLParse.cxx:1776
 TGDMLParse.cxx:1777
 TGDMLParse.cxx:1778
 TGDMLParse.cxx:1779
 TGDMLParse.cxx:1780
 TGDMLParse.cxx:1781
 TGDMLParse.cxx:1782
 TGDMLParse.cxx:1783
 TGDMLParse.cxx:1784
 TGDMLParse.cxx:1785
 TGDMLParse.cxx:1786
 TGDMLParse.cxx:1787
 TGDMLParse.cxx:1788
 TGDMLParse.cxx:1789
 TGDMLParse.cxx:1790
 TGDMLParse.cxx:1791
 TGDMLParse.cxx:1792
 TGDMLParse.cxx:1793
 TGDMLParse.cxx:1794
 TGDMLParse.cxx:1795
 TGDMLParse.cxx:1796
 TGDMLParse.cxx:1797
 TGDMLParse.cxx:1798
 TGDMLParse.cxx:1799
 TGDMLParse.cxx:1800
 TGDMLParse.cxx:1801
 TGDMLParse.cxx:1802
 TGDMLParse.cxx:1803
 TGDMLParse.cxx:1804
 TGDMLParse.cxx:1805
 TGDMLParse.cxx:1806
 TGDMLParse.cxx:1807
 TGDMLParse.cxx:1808
 TGDMLParse.cxx:1809
 TGDMLParse.cxx:1810
 TGDMLParse.cxx:1811
 TGDMLParse.cxx:1812
 TGDMLParse.cxx:1813
 TGDMLParse.cxx:1814
 TGDMLParse.cxx:1815
 TGDMLParse.cxx:1816
 TGDMLParse.cxx:1817
 TGDMLParse.cxx:1818
 TGDMLParse.cxx:1819
 TGDMLParse.cxx:1820
 TGDMLParse.cxx:1821
 TGDMLParse.cxx:1822
 TGDMLParse.cxx:1823
 TGDMLParse.cxx:1824
 TGDMLParse.cxx:1825
 TGDMLParse.cxx:1826
 TGDMLParse.cxx:1827
 TGDMLParse.cxx:1828
 TGDMLParse.cxx:1829
 TGDMLParse.cxx:1830
 TGDMLParse.cxx:1831
 TGDMLParse.cxx:1832
 TGDMLParse.cxx:1833
 TGDMLParse.cxx:1834
 TGDMLParse.cxx:1835
 TGDMLParse.cxx:1836
 TGDMLParse.cxx:1837
 TGDMLParse.cxx:1838
 TGDMLParse.cxx:1839
 TGDMLParse.cxx:1840
 TGDMLParse.cxx:1841
 TGDMLParse.cxx:1842
 TGDMLParse.cxx:1843
 TGDMLParse.cxx:1844
 TGDMLParse.cxx:1845
 TGDMLParse.cxx:1846
 TGDMLParse.cxx:1847
 TGDMLParse.cxx:1848
 TGDMLParse.cxx:1849
 TGDMLParse.cxx:1850
 TGDMLParse.cxx:1851
 TGDMLParse.cxx:1852
 TGDMLParse.cxx:1853
 TGDMLParse.cxx:1854
 TGDMLParse.cxx:1855
 TGDMLParse.cxx:1856
 TGDMLParse.cxx:1857
 TGDMLParse.cxx:1858
 TGDMLParse.cxx:1859
 TGDMLParse.cxx:1860
 TGDMLParse.cxx:1861
 TGDMLParse.cxx:1862
 TGDMLParse.cxx:1863
 TGDMLParse.cxx:1864
 TGDMLParse.cxx:1865
 TGDMLParse.cxx:1866
 TGDMLParse.cxx:1867
 TGDMLParse.cxx:1868
 TGDMLParse.cxx:1869
 TGDMLParse.cxx:1870
 TGDMLParse.cxx:1871
 TGDMLParse.cxx:1872
 TGDMLParse.cxx:1873
 TGDMLParse.cxx:1874
 TGDMLParse.cxx:1875
 TGDMLParse.cxx:1876
 TGDMLParse.cxx:1877
 TGDMLParse.cxx:1878
 TGDMLParse.cxx:1879
 TGDMLParse.cxx:1880
 TGDMLParse.cxx:1881
 TGDMLParse.cxx:1882
 TGDMLParse.cxx:1883
 TGDMLParse.cxx:1884
 TGDMLParse.cxx:1885
 TGDMLParse.cxx:1886
 TGDMLParse.cxx:1887
 TGDMLParse.cxx:1888
 TGDMLParse.cxx:1889
 TGDMLParse.cxx:1890
 TGDMLParse.cxx:1891
 TGDMLParse.cxx:1892
 TGDMLParse.cxx:1893
 TGDMLParse.cxx:1894
 TGDMLParse.cxx:1895
 TGDMLParse.cxx:1896
 TGDMLParse.cxx:1897
 TGDMLParse.cxx:1898
 TGDMLParse.cxx:1899
 TGDMLParse.cxx:1900
 TGDMLParse.cxx:1901
 TGDMLParse.cxx:1902
 TGDMLParse.cxx:1903
 TGDMLParse.cxx:1904
 TGDMLParse.cxx:1905
 TGDMLParse.cxx:1906
 TGDMLParse.cxx:1907
 TGDMLParse.cxx:1908
 TGDMLParse.cxx:1909
 TGDMLParse.cxx:1910
 TGDMLParse.cxx:1911
 TGDMLParse.cxx:1912
 TGDMLParse.cxx:1913
 TGDMLParse.cxx:1914
 TGDMLParse.cxx:1915
 TGDMLParse.cxx:1916
 TGDMLParse.cxx:1917
 TGDMLParse.cxx:1918
 TGDMLParse.cxx:1919
 TGDMLParse.cxx:1920
 TGDMLParse.cxx:1921
 TGDMLParse.cxx:1922
 TGDMLParse.cxx:1923
 TGDMLParse.cxx:1924
 TGDMLParse.cxx:1925
 TGDMLParse.cxx:1926
 TGDMLParse.cxx:1927
 TGDMLParse.cxx:1928
 TGDMLParse.cxx:1929
 TGDMLParse.cxx:1930
 TGDMLParse.cxx:1931
 TGDMLParse.cxx:1932
 TGDMLParse.cxx:1933
 TGDMLParse.cxx:1934
 TGDMLParse.cxx:1935
 TGDMLParse.cxx:1936
 TGDMLParse.cxx:1937
 TGDMLParse.cxx:1938
 TGDMLParse.cxx:1939
 TGDMLParse.cxx:1940
 TGDMLParse.cxx:1941
 TGDMLParse.cxx:1942
 TGDMLParse.cxx:1943
 TGDMLParse.cxx:1944
 TGDMLParse.cxx:1945
 TGDMLParse.cxx:1946
 TGDMLParse.cxx:1947
 TGDMLParse.cxx:1948
 TGDMLParse.cxx:1949
 TGDMLParse.cxx:1950
 TGDMLParse.cxx:1951
 TGDMLParse.cxx:1952
 TGDMLParse.cxx:1953
 TGDMLParse.cxx:1954
 TGDMLParse.cxx:1955
 TGDMLParse.cxx:1956
 TGDMLParse.cxx:1957
 TGDMLParse.cxx:1958
 TGDMLParse.cxx:1959
 TGDMLParse.cxx:1960
 TGDMLParse.cxx:1961
 TGDMLParse.cxx:1962
 TGDMLParse.cxx:1963
 TGDMLParse.cxx:1964
 TGDMLParse.cxx:1965
 TGDMLParse.cxx:1966
 TGDMLParse.cxx:1967
 TGDMLParse.cxx:1968
 TGDMLParse.cxx:1969
 TGDMLParse.cxx:1970
 TGDMLParse.cxx:1971
 TGDMLParse.cxx:1972
 TGDMLParse.cxx:1973
 TGDMLParse.cxx:1974
 TGDMLParse.cxx:1975
 TGDMLParse.cxx:1976
 TGDMLParse.cxx:1977
 TGDMLParse.cxx:1978
 TGDMLParse.cxx:1979
 TGDMLParse.cxx:1980
 TGDMLParse.cxx:1981
 TGDMLParse.cxx:1982
 TGDMLParse.cxx:1983
 TGDMLParse.cxx:1984
 TGDMLParse.cxx:1985
 TGDMLParse.cxx:1986
 TGDMLParse.cxx:1987
 TGDMLParse.cxx:1988
 TGDMLParse.cxx:1989
 TGDMLParse.cxx:1990
 TGDMLParse.cxx:1991
 TGDMLParse.cxx:1992
 TGDMLParse.cxx:1993
 TGDMLParse.cxx:1994
 TGDMLParse.cxx:1995
 TGDMLParse.cxx:1996
 TGDMLParse.cxx:1997
 TGDMLParse.cxx:1998
 TGDMLParse.cxx:1999
 TGDMLParse.cxx:2000
 TGDMLParse.cxx:2001
 TGDMLParse.cxx:2002
 TGDMLParse.cxx:2003
 TGDMLParse.cxx:2004
 TGDMLParse.cxx:2005
 TGDMLParse.cxx:2006
 TGDMLParse.cxx:2007
 TGDMLParse.cxx:2008
 TGDMLParse.cxx:2009
 TGDMLParse.cxx:2010
 TGDMLParse.cxx:2011
 TGDMLParse.cxx:2012
 TGDMLParse.cxx:2013
 TGDMLParse.cxx:2014
 TGDMLParse.cxx:2015
 TGDMLParse.cxx:2016
 TGDMLParse.cxx:2017
 TGDMLParse.cxx:2018
 TGDMLParse.cxx:2019
 TGDMLParse.cxx:2020
 TGDMLParse.cxx:2021
 TGDMLParse.cxx:2022
 TGDMLParse.cxx:2023
 TGDMLParse.cxx:2024
 TGDMLParse.cxx:2025
 TGDMLParse.cxx:2026
 TGDMLParse.cxx:2027
 TGDMLParse.cxx:2028
 TGDMLParse.cxx:2029
 TGDMLParse.cxx:2030
 TGDMLParse.cxx:2031
 TGDMLParse.cxx:2032
 TGDMLParse.cxx:2033
 TGDMLParse.cxx:2034
 TGDMLParse.cxx:2035
 TGDMLParse.cxx:2036
 TGDMLParse.cxx:2037
 TGDMLParse.cxx:2038
 TGDMLParse.cxx:2039
 TGDMLParse.cxx:2040
 TGDMLParse.cxx:2041
 TGDMLParse.cxx:2042
 TGDMLParse.cxx:2043
 TGDMLParse.cxx:2044
 TGDMLParse.cxx:2045
 TGDMLParse.cxx:2046
 TGDMLParse.cxx:2047
 TGDMLParse.cxx:2048
 TGDMLParse.cxx:2049
 TGDMLParse.cxx:2050
 TGDMLParse.cxx:2051
 TGDMLParse.cxx:2052
 TGDMLParse.cxx:2053
 TGDMLParse.cxx:2054
 TGDMLParse.cxx:2055
 TGDMLParse.cxx:2056
 TGDMLParse.cxx:2057
 TGDMLParse.cxx:2058
 TGDMLParse.cxx:2059
 TGDMLParse.cxx:2060
 TGDMLParse.cxx:2061
 TGDMLParse.cxx:2062
 TGDMLParse.cxx:2063
 TGDMLParse.cxx:2064
 TGDMLParse.cxx:2065
 TGDMLParse.cxx:2066
 TGDMLParse.cxx:2067
 TGDMLParse.cxx:2068
 TGDMLParse.cxx:2069
 TGDMLParse.cxx:2070
 TGDMLParse.cxx:2071
 TGDMLParse.cxx:2072
 TGDMLParse.cxx:2073
 TGDMLParse.cxx:2074
 TGDMLParse.cxx:2075
 TGDMLParse.cxx:2076
 TGDMLParse.cxx:2077
 TGDMLParse.cxx:2078
 TGDMLParse.cxx:2079
 TGDMLParse.cxx:2080
 TGDMLParse.cxx:2081
 TGDMLParse.cxx:2082
 TGDMLParse.cxx:2083
 TGDMLParse.cxx:2084
 TGDMLParse.cxx:2085
 TGDMLParse.cxx:2086
 TGDMLParse.cxx:2087
 TGDMLParse.cxx:2088
 TGDMLParse.cxx:2089
 TGDMLParse.cxx:2090
 TGDMLParse.cxx:2091
 TGDMLParse.cxx:2092
 TGDMLParse.cxx:2093
 TGDMLParse.cxx:2094
 TGDMLParse.cxx:2095
 TGDMLParse.cxx:2096
 TGDMLParse.cxx:2097
 TGDMLParse.cxx:2098
 TGDMLParse.cxx:2099
 TGDMLParse.cxx:2100
 TGDMLParse.cxx:2101
 TGDMLParse.cxx:2102
 TGDMLParse.cxx:2103
 TGDMLParse.cxx:2104
 TGDMLParse.cxx:2105
 TGDMLParse.cxx:2106
 TGDMLParse.cxx:2107
 TGDMLParse.cxx:2108
 TGDMLParse.cxx:2109
 TGDMLParse.cxx:2110
 TGDMLParse.cxx:2111
 TGDMLParse.cxx:2112
 TGDMLParse.cxx:2113
 TGDMLParse.cxx:2114
 TGDMLParse.cxx:2115
 TGDMLParse.cxx:2116
 TGDMLParse.cxx:2117
 TGDMLParse.cxx:2118
 TGDMLParse.cxx:2119
 TGDMLParse.cxx:2120
 TGDMLParse.cxx:2121
 TGDMLParse.cxx:2122
 TGDMLParse.cxx:2123
 TGDMLParse.cxx:2124
 TGDMLParse.cxx:2125
 TGDMLParse.cxx:2126
 TGDMLParse.cxx:2127
 TGDMLParse.cxx:2128
 TGDMLParse.cxx:2129
 TGDMLParse.cxx:2130
 TGDMLParse.cxx:2131
 TGDMLParse.cxx:2132
 TGDMLParse.cxx:2133
 TGDMLParse.cxx:2134
 TGDMLParse.cxx:2135
 TGDMLParse.cxx:2136
 TGDMLParse.cxx:2137
 TGDMLParse.cxx:2138
 TGDMLParse.cxx:2139
 TGDMLParse.cxx:2140
 TGDMLParse.cxx:2141
 TGDMLParse.cxx:2142
 TGDMLParse.cxx:2143
 TGDMLParse.cxx:2144
 TGDMLParse.cxx:2145
 TGDMLParse.cxx:2146
 TGDMLParse.cxx:2147
 TGDMLParse.cxx:2148
 TGDMLParse.cxx:2149
 TGDMLParse.cxx:2150
 TGDMLParse.cxx:2151
 TGDMLParse.cxx:2152
 TGDMLParse.cxx:2153
 TGDMLParse.cxx:2154
 TGDMLParse.cxx:2155
 TGDMLParse.cxx:2156
 TGDMLParse.cxx:2157
 TGDMLParse.cxx:2158
 TGDMLParse.cxx:2159
 TGDMLParse.cxx:2160
 TGDMLParse.cxx:2161
 TGDMLParse.cxx:2162
 TGDMLParse.cxx:2163
 TGDMLParse.cxx:2164
 TGDMLParse.cxx:2165
 TGDMLParse.cxx:2166
 TGDMLParse.cxx:2167
 TGDMLParse.cxx:2168
 TGDMLParse.cxx:2169
 TGDMLParse.cxx:2170
 TGDMLParse.cxx:2171
 TGDMLParse.cxx:2172
 TGDMLParse.cxx:2173
 TGDMLParse.cxx:2174
 TGDMLParse.cxx:2175
 TGDMLParse.cxx:2176
 TGDMLParse.cxx:2177
 TGDMLParse.cxx:2178
 TGDMLParse.cxx:2179
 TGDMLParse.cxx:2180
 TGDMLParse.cxx:2181
 TGDMLParse.cxx:2182
 TGDMLParse.cxx:2183
 TGDMLParse.cxx:2184
 TGDMLParse.cxx:2185
 TGDMLParse.cxx:2186
 TGDMLParse.cxx:2187
 TGDMLParse.cxx:2188
 TGDMLParse.cxx:2189
 TGDMLParse.cxx:2190
 TGDMLParse.cxx:2191
 TGDMLParse.cxx:2192
 TGDMLParse.cxx:2193
 TGDMLParse.cxx:2194
 TGDMLParse.cxx:2195
 TGDMLParse.cxx:2196
 TGDMLParse.cxx:2197
 TGDMLParse.cxx:2198
 TGDMLParse.cxx:2199
 TGDMLParse.cxx:2200
 TGDMLParse.cxx:2201
 TGDMLParse.cxx:2202
 TGDMLParse.cxx:2203
 TGDMLParse.cxx:2204
 TGDMLParse.cxx:2205
 TGDMLParse.cxx:2206
 TGDMLParse.cxx:2207
 TGDMLParse.cxx:2208
 TGDMLParse.cxx:2209
 TGDMLParse.cxx:2210
 TGDMLParse.cxx:2211
 TGDMLParse.cxx:2212
 TGDMLParse.cxx:2213
 TGDMLParse.cxx:2214
 TGDMLParse.cxx:2215
 TGDMLParse.cxx:2216
 TGDMLParse.cxx:2217
 TGDMLParse.cxx:2218
 TGDMLParse.cxx:2219
 TGDMLParse.cxx:2220
 TGDMLParse.cxx:2221
 TGDMLParse.cxx:2222
 TGDMLParse.cxx:2223
 TGDMLParse.cxx:2224
 TGDMLParse.cxx:2225
 TGDMLParse.cxx:2226
 TGDMLParse.cxx:2227
 TGDMLParse.cxx:2228
 TGDMLParse.cxx:2229
 TGDMLParse.cxx:2230
 TGDMLParse.cxx:2231
 TGDMLParse.cxx:2232
 TGDMLParse.cxx:2233
 TGDMLParse.cxx:2234
 TGDMLParse.cxx:2235
 TGDMLParse.cxx:2236
 TGDMLParse.cxx:2237
 TGDMLParse.cxx:2238
 TGDMLParse.cxx:2239
 TGDMLParse.cxx:2240
 TGDMLParse.cxx:2241
 TGDMLParse.cxx:2242
 TGDMLParse.cxx:2243
 TGDMLParse.cxx:2244
 TGDMLParse.cxx:2245
 TGDMLParse.cxx:2246
 TGDMLParse.cxx:2247
 TGDMLParse.cxx:2248
 TGDMLParse.cxx:2249
 TGDMLParse.cxx:2250
 TGDMLParse.cxx:2251
 TGDMLParse.cxx:2252
 TGDMLParse.cxx:2253
 TGDMLParse.cxx:2254
 TGDMLParse.cxx:2255
 TGDMLParse.cxx:2256
 TGDMLParse.cxx:2257
 TGDMLParse.cxx:2258
 TGDMLParse.cxx:2259
 TGDMLParse.cxx:2260
 TGDMLParse.cxx:2261
 TGDMLParse.cxx:2262
 TGDMLParse.cxx:2263
 TGDMLParse.cxx:2264
 TGDMLParse.cxx:2265
 TGDMLParse.cxx:2266
 TGDMLParse.cxx:2267
 TGDMLParse.cxx:2268
 TGDMLParse.cxx:2269
 TGDMLParse.cxx:2270
 TGDMLParse.cxx:2271
 TGDMLParse.cxx:2272
 TGDMLParse.cxx:2273
 TGDMLParse.cxx:2274
 TGDMLParse.cxx:2275
 TGDMLParse.cxx:2276
 TGDMLParse.cxx:2277
 TGDMLParse.cxx:2278
 TGDMLParse.cxx:2279
 TGDMLParse.cxx:2280
 TGDMLParse.cxx:2281
 TGDMLParse.cxx:2282
 TGDMLParse.cxx:2283
 TGDMLParse.cxx:2284
 TGDMLParse.cxx:2285
 TGDMLParse.cxx:2286
 TGDMLParse.cxx:2287
 TGDMLParse.cxx:2288
 TGDMLParse.cxx:2289
 TGDMLParse.cxx:2290
 TGDMLParse.cxx:2291
 TGDMLParse.cxx:2292
 TGDMLParse.cxx:2293
 TGDMLParse.cxx:2294
 TGDMLParse.cxx:2295
 TGDMLParse.cxx:2296
 TGDMLParse.cxx:2297
 TGDMLParse.cxx:2298
 TGDMLParse.cxx:2299
 TGDMLParse.cxx:2300
 TGDMLParse.cxx:2301
 TGDMLParse.cxx:2302
 TGDMLParse.cxx:2303
 TGDMLParse.cxx:2304
 TGDMLParse.cxx:2305
 TGDMLParse.cxx:2306
 TGDMLParse.cxx:2307
 TGDMLParse.cxx:2308
 TGDMLParse.cxx:2309
 TGDMLParse.cxx:2310
 TGDMLParse.cxx:2311
 TGDMLParse.cxx:2312
 TGDMLParse.cxx:2313
 TGDMLParse.cxx:2314
 TGDMLParse.cxx:2315
 TGDMLParse.cxx:2316
 TGDMLParse.cxx:2317
 TGDMLParse.cxx:2318
 TGDMLParse.cxx:2319
 TGDMLParse.cxx:2320
 TGDMLParse.cxx:2321
 TGDMLParse.cxx:2322
 TGDMLParse.cxx:2323
 TGDMLParse.cxx:2324
 TGDMLParse.cxx:2325
 TGDMLParse.cxx:2326
 TGDMLParse.cxx:2327
 TGDMLParse.cxx:2328
 TGDMLParse.cxx:2329
 TGDMLParse.cxx:2330
 TGDMLParse.cxx:2331
 TGDMLParse.cxx:2332
 TGDMLParse.cxx:2333
 TGDMLParse.cxx:2334
 TGDMLParse.cxx:2335
 TGDMLParse.cxx:2336
 TGDMLParse.cxx:2337
 TGDMLParse.cxx:2338
 TGDMLParse.cxx:2339
 TGDMLParse.cxx:2340
 TGDMLParse.cxx:2341
 TGDMLParse.cxx:2342
 TGDMLParse.cxx:2343
 TGDMLParse.cxx:2344
 TGDMLParse.cxx:2345
 TGDMLParse.cxx:2346
 TGDMLParse.cxx:2347
 TGDMLParse.cxx:2348
 TGDMLParse.cxx:2349
 TGDMLParse.cxx:2350
 TGDMLParse.cxx:2351
 TGDMLParse.cxx:2352
 TGDMLParse.cxx:2353
 TGDMLParse.cxx:2354
 TGDMLParse.cxx:2355
 TGDMLParse.cxx:2356
 TGDMLParse.cxx:2357
 TGDMLParse.cxx:2358
 TGDMLParse.cxx:2359
 TGDMLParse.cxx:2360
 TGDMLParse.cxx:2361
 TGDMLParse.cxx:2362
 TGDMLParse.cxx:2363
 TGDMLParse.cxx:2364
 TGDMLParse.cxx:2365
 TGDMLParse.cxx:2366
 TGDMLParse.cxx:2367
 TGDMLParse.cxx:2368
 TGDMLParse.cxx:2369
 TGDMLParse.cxx:2370
 TGDMLParse.cxx:2371
 TGDMLParse.cxx:2372
 TGDMLParse.cxx:2373
 TGDMLParse.cxx:2374
 TGDMLParse.cxx:2375
 TGDMLParse.cxx:2376
 TGDMLParse.cxx:2377
 TGDMLParse.cxx:2378
 TGDMLParse.cxx:2379
 TGDMLParse.cxx:2380
 TGDMLParse.cxx:2381
 TGDMLParse.cxx:2382
 TGDMLParse.cxx:2383
 TGDMLParse.cxx:2384
 TGDMLParse.cxx:2385
 TGDMLParse.cxx:2386
 TGDMLParse.cxx:2387
 TGDMLParse.cxx:2388
 TGDMLParse.cxx:2389
 TGDMLParse.cxx:2390
 TGDMLParse.cxx:2391
 TGDMLParse.cxx:2392
 TGDMLParse.cxx:2393
 TGDMLParse.cxx:2394
 TGDMLParse.cxx:2395
 TGDMLParse.cxx:2396
 TGDMLParse.cxx:2397
 TGDMLParse.cxx:2398
 TGDMLParse.cxx:2399
 TGDMLParse.cxx:2400
 TGDMLParse.cxx:2401
 TGDMLParse.cxx:2402
 TGDMLParse.cxx:2403
 TGDMLParse.cxx:2404
 TGDMLParse.cxx:2405
 TGDMLParse.cxx:2406
 TGDMLParse.cxx:2407
 TGDMLParse.cxx:2408
 TGDMLParse.cxx:2409
 TGDMLParse.cxx:2410
 TGDMLParse.cxx:2411
 TGDMLParse.cxx:2412
 TGDMLParse.cxx:2413
 TGDMLParse.cxx:2414
 TGDMLParse.cxx:2415
 TGDMLParse.cxx:2416
 TGDMLParse.cxx:2417
 TGDMLParse.cxx:2418
 TGDMLParse.cxx:2419
 TGDMLParse.cxx:2420
 TGDMLParse.cxx:2421
 TGDMLParse.cxx:2422
 TGDMLParse.cxx:2423
 TGDMLParse.cxx:2424
 TGDMLParse.cxx:2425
 TGDMLParse.cxx:2426
 TGDMLParse.cxx:2427
 TGDMLParse.cxx:2428
 TGDMLParse.cxx:2429
 TGDMLParse.cxx:2430
 TGDMLParse.cxx:2431
 TGDMLParse.cxx:2432
 TGDMLParse.cxx:2433
 TGDMLParse.cxx:2434
 TGDMLParse.cxx:2435
 TGDMLParse.cxx:2436
 TGDMLParse.cxx:2437
 TGDMLParse.cxx:2438
 TGDMLParse.cxx:2439
 TGDMLParse.cxx:2440
 TGDMLParse.cxx:2441
 TGDMLParse.cxx:2442
 TGDMLParse.cxx:2443
 TGDMLParse.cxx:2444
 TGDMLParse.cxx:2445
 TGDMLParse.cxx:2446
 TGDMLParse.cxx:2447
 TGDMLParse.cxx:2448
 TGDMLParse.cxx:2449
 TGDMLParse.cxx:2450
 TGDMLParse.cxx:2451
 TGDMLParse.cxx:2452
 TGDMLParse.cxx:2453
 TGDMLParse.cxx:2454
 TGDMLParse.cxx:2455
 TGDMLParse.cxx:2456
 TGDMLParse.cxx:2457
 TGDMLParse.cxx:2458
 TGDMLParse.cxx:2459
 TGDMLParse.cxx:2460
 TGDMLParse.cxx:2461
 TGDMLParse.cxx:2462
 TGDMLParse.cxx:2463
 TGDMLParse.cxx:2464
 TGDMLParse.cxx:2465
 TGDMLParse.cxx:2466
 TGDMLParse.cxx:2467
 TGDMLParse.cxx:2468
 TGDMLParse.cxx:2469
 TGDMLParse.cxx:2470
 TGDMLParse.cxx:2471
 TGDMLParse.cxx:2472
 TGDMLParse.cxx:2473
 TGDMLParse.cxx:2474
 TGDMLParse.cxx:2475
 TGDMLParse.cxx:2476
 TGDMLParse.cxx:2477
 TGDMLParse.cxx:2478
 TGDMLParse.cxx:2479
 TGDMLParse.cxx:2480
 TGDMLParse.cxx:2481
 TGDMLParse.cxx:2482
 TGDMLParse.cxx:2483
 TGDMLParse.cxx:2484
 TGDMLParse.cxx:2485
 TGDMLParse.cxx:2486
 TGDMLParse.cxx:2487
 TGDMLParse.cxx:2488
 TGDMLParse.cxx:2489
 TGDMLParse.cxx:2490
 TGDMLParse.cxx:2491
 TGDMLParse.cxx:2492
 TGDMLParse.cxx:2493
 TGDMLParse.cxx:2494
 TGDMLParse.cxx:2495
 TGDMLParse.cxx:2496
 TGDMLParse.cxx:2497
 TGDMLParse.cxx:2498
 TGDMLParse.cxx:2499
 TGDMLParse.cxx:2500
 TGDMLParse.cxx:2501
 TGDMLParse.cxx:2502
 TGDMLParse.cxx:2503
 TGDMLParse.cxx:2504
 TGDMLParse.cxx:2505
 TGDMLParse.cxx:2506
 TGDMLParse.cxx:2507
 TGDMLParse.cxx:2508
 TGDMLParse.cxx:2509
 TGDMLParse.cxx:2510
 TGDMLParse.cxx:2511
 TGDMLParse.cxx:2512
 TGDMLParse.cxx:2513
 TGDMLParse.cxx:2514
 TGDMLParse.cxx:2515
 TGDMLParse.cxx:2516
 TGDMLParse.cxx:2517
 TGDMLParse.cxx:2518
 TGDMLParse.cxx:2519
 TGDMLParse.cxx:2520
 TGDMLParse.cxx:2521
 TGDMLParse.cxx:2522
 TGDMLParse.cxx:2523
 TGDMLParse.cxx:2524
 TGDMLParse.cxx:2525
 TGDMLParse.cxx:2526
 TGDMLParse.cxx:2527
 TGDMLParse.cxx:2528
 TGDMLParse.cxx:2529
 TGDMLParse.cxx:2530
 TGDMLParse.cxx:2531
 TGDMLParse.cxx:2532
 TGDMLParse.cxx:2533
 TGDMLParse.cxx:2534
 TGDMLParse.cxx:2535
 TGDMLParse.cxx:2536
 TGDMLParse.cxx:2537
 TGDMLParse.cxx:2538
 TGDMLParse.cxx:2539
 TGDMLParse.cxx:2540
 TGDMLParse.cxx:2541
 TGDMLParse.cxx:2542
 TGDMLParse.cxx:2543
 TGDMLParse.cxx:2544
 TGDMLParse.cxx:2545
 TGDMLParse.cxx:2546
 TGDMLParse.cxx:2547
 TGDMLParse.cxx:2548
 TGDMLParse.cxx:2549
 TGDMLParse.cxx:2550
 TGDMLParse.cxx:2551
 TGDMLParse.cxx:2552
 TGDMLParse.cxx:2553
 TGDMLParse.cxx:2554
 TGDMLParse.cxx:2555
 TGDMLParse.cxx:2556
 TGDMLParse.cxx:2557
 TGDMLParse.cxx:2558
 TGDMLParse.cxx:2559
 TGDMLParse.cxx:2560
 TGDMLParse.cxx:2561
 TGDMLParse.cxx:2562
 TGDMLParse.cxx:2563
 TGDMLParse.cxx:2564
 TGDMLParse.cxx:2565
 TGDMLParse.cxx:2566
 TGDMLParse.cxx:2567
 TGDMLParse.cxx:2568
 TGDMLParse.cxx:2569
 TGDMLParse.cxx:2570
 TGDMLParse.cxx:2571
 TGDMLParse.cxx:2572
 TGDMLParse.cxx:2573
 TGDMLParse.cxx:2574
 TGDMLParse.cxx:2575
 TGDMLParse.cxx:2576
 TGDMLParse.cxx:2577
 TGDMLParse.cxx:2578
 TGDMLParse.cxx:2579
 TGDMLParse.cxx:2580
 TGDMLParse.cxx:2581
 TGDMLParse.cxx:2582
 TGDMLParse.cxx:2583
 TGDMLParse.cxx:2584
 TGDMLParse.cxx:2585
 TGDMLParse.cxx:2586
 TGDMLParse.cxx:2587
 TGDMLParse.cxx:2588
 TGDMLParse.cxx:2589
 TGDMLParse.cxx:2590
 TGDMLParse.cxx:2591
 TGDMLParse.cxx:2592
 TGDMLParse.cxx:2593
 TGDMLParse.cxx:2594
 TGDMLParse.cxx:2595
 TGDMLParse.cxx:2596
 TGDMLParse.cxx:2597
 TGDMLParse.cxx:2598
 TGDMLParse.cxx:2599
 TGDMLParse.cxx:2600
 TGDMLParse.cxx:2601
 TGDMLParse.cxx:2602
 TGDMLParse.cxx:2603
 TGDMLParse.cxx:2604
 TGDMLParse.cxx:2605
 TGDMLParse.cxx:2606
 TGDMLParse.cxx:2607
 TGDMLParse.cxx:2608
 TGDMLParse.cxx:2609
 TGDMLParse.cxx:2610
 TGDMLParse.cxx:2611
 TGDMLParse.cxx:2612
 TGDMLParse.cxx:2613
 TGDMLParse.cxx:2614
 TGDMLParse.cxx:2615
 TGDMLParse.cxx:2616
 TGDMLParse.cxx:2617
 TGDMLParse.cxx:2618
 TGDMLParse.cxx:2619
 TGDMLParse.cxx:2620
 TGDMLParse.cxx:2621
 TGDMLParse.cxx:2622
 TGDMLParse.cxx:2623
 TGDMLParse.cxx:2624
 TGDMLParse.cxx:2625
 TGDMLParse.cxx:2626
 TGDMLParse.cxx:2627
 TGDMLParse.cxx:2628
 TGDMLParse.cxx:2629
 TGDMLParse.cxx:2630
 TGDMLParse.cxx:2631
 TGDMLParse.cxx:2632
 TGDMLParse.cxx:2633
 TGDMLParse.cxx:2634
 TGDMLParse.cxx:2635
 TGDMLParse.cxx:2636
 TGDMLParse.cxx:2637
 TGDMLParse.cxx:2638
 TGDMLParse.cxx:2639
 TGDMLParse.cxx:2640
 TGDMLParse.cxx:2641
 TGDMLParse.cxx:2642
 TGDMLParse.cxx:2643
 TGDMLParse.cxx:2644
 TGDMLParse.cxx:2645
 TGDMLParse.cxx:2646
 TGDMLParse.cxx:2647
 TGDMLParse.cxx:2648
 TGDMLParse.cxx:2649
 TGDMLParse.cxx:2650
 TGDMLParse.cxx:2651
 TGDMLParse.cxx:2652
 TGDMLParse.cxx:2653
 TGDMLParse.cxx:2654
 TGDMLParse.cxx:2655
 TGDMLParse.cxx:2656
 TGDMLParse.cxx:2657
 TGDMLParse.cxx:2658
 TGDMLParse.cxx:2659
 TGDMLParse.cxx:2660
 TGDMLParse.cxx:2661
 TGDMLParse.cxx:2662
 TGDMLParse.cxx:2663
 TGDMLParse.cxx:2664
 TGDMLParse.cxx:2665
 TGDMLParse.cxx:2666
 TGDMLParse.cxx:2667
 TGDMLParse.cxx:2668
 TGDMLParse.cxx:2669
 TGDMLParse.cxx:2670
 TGDMLParse.cxx:2671
 TGDMLParse.cxx:2672
 TGDMLParse.cxx:2673
 TGDMLParse.cxx:2674
 TGDMLParse.cxx:2675
 TGDMLParse.cxx:2676
 TGDMLParse.cxx:2677
 TGDMLParse.cxx:2678
 TGDMLParse.cxx:2679
 TGDMLParse.cxx:2680
 TGDMLParse.cxx:2681
 TGDMLParse.cxx:2682
 TGDMLParse.cxx:2683
 TGDMLParse.cxx:2684
 TGDMLParse.cxx:2685
 TGDMLParse.cxx:2686
 TGDMLParse.cxx:2687
 TGDMLParse.cxx:2688
 TGDMLParse.cxx:2689
 TGDMLParse.cxx:2690
 TGDMLParse.cxx:2691
 TGDMLParse.cxx:2692
 TGDMLParse.cxx:2693
 TGDMLParse.cxx:2694
 TGDMLParse.cxx:2695
 TGDMLParse.cxx:2696
 TGDMLParse.cxx:2697
 TGDMLParse.cxx:2698
 TGDMLParse.cxx:2699
 TGDMLParse.cxx:2700
 TGDMLParse.cxx:2701
 TGDMLParse.cxx:2702
 TGDMLParse.cxx:2703
 TGDMLParse.cxx:2704
 TGDMLParse.cxx:2705
 TGDMLParse.cxx:2706
 TGDMLParse.cxx:2707
 TGDMLParse.cxx:2708
 TGDMLParse.cxx:2709
 TGDMLParse.cxx:2710
 TGDMLParse.cxx:2711
 TGDMLParse.cxx:2712
 TGDMLParse.cxx:2713
 TGDMLParse.cxx:2714
 TGDMLParse.cxx:2715
 TGDMLParse.cxx:2716
 TGDMLParse.cxx:2717
 TGDMLParse.cxx:2718
 TGDMLParse.cxx:2719
 TGDMLParse.cxx:2720
 TGDMLParse.cxx:2721
 TGDMLParse.cxx:2722
 TGDMLParse.cxx:2723
 TGDMLParse.cxx:2724
 TGDMLParse.cxx:2725
 TGDMLParse.cxx:2726
 TGDMLParse.cxx:2727
 TGDMLParse.cxx:2728
 TGDMLParse.cxx:2729
 TGDMLParse.cxx:2730
 TGDMLParse.cxx:2731
 TGDMLParse.cxx:2732
 TGDMLParse.cxx:2733
 TGDMLParse.cxx:2734
 TGDMLParse.cxx:2735
 TGDMLParse.cxx:2736
 TGDMLParse.cxx:2737
 TGDMLParse.cxx:2738
 TGDMLParse.cxx:2739
 TGDMLParse.cxx:2740
 TGDMLParse.cxx:2741
 TGDMLParse.cxx:2742
 TGDMLParse.cxx:2743
 TGDMLParse.cxx:2744
 TGDMLParse.cxx:2745
 TGDMLParse.cxx:2746
 TGDMLParse.cxx:2747
 TGDMLParse.cxx:2748
 TGDMLParse.cxx:2749
 TGDMLParse.cxx:2750
 TGDMLParse.cxx:2751
 TGDMLParse.cxx:2752
 TGDMLParse.cxx:2753
 TGDMLParse.cxx:2754
 TGDMLParse.cxx:2755
 TGDMLParse.cxx:2756
 TGDMLParse.cxx:2757
 TGDMLParse.cxx:2758
 TGDMLParse.cxx:2759
 TGDMLParse.cxx:2760
 TGDMLParse.cxx:2761
 TGDMLParse.cxx:2762
 TGDMLParse.cxx:2763
 TGDMLParse.cxx:2764
 TGDMLParse.cxx:2765
 TGDMLParse.cxx:2766
 TGDMLParse.cxx:2767
 TGDMLParse.cxx:2768
 TGDMLParse.cxx:2769
 TGDMLParse.cxx:2770
 TGDMLParse.cxx:2771
 TGDMLParse.cxx:2772
 TGDMLParse.cxx:2773
 TGDMLParse.cxx:2774
 TGDMLParse.cxx:2775
 TGDMLParse.cxx:2776
 TGDMLParse.cxx:2777
 TGDMLParse.cxx:2778
 TGDMLParse.cxx:2779
 TGDMLParse.cxx:2780
 TGDMLParse.cxx:2781
 TGDMLParse.cxx:2782
 TGDMLParse.cxx:2783
 TGDMLParse.cxx:2784
 TGDMLParse.cxx:2785
 TGDMLParse.cxx:2786
 TGDMLParse.cxx:2787
 TGDMLParse.cxx:2788
 TGDMLParse.cxx:2789
 TGDMLParse.cxx:2790
 TGDMLParse.cxx:2791
 TGDMLParse.cxx:2792
 TGDMLParse.cxx:2793
 TGDMLParse.cxx:2794
 TGDMLParse.cxx:2795
 TGDMLParse.cxx:2796
 TGDMLParse.cxx:2797
 TGDMLParse.cxx:2798
 TGDMLParse.cxx:2799
 TGDMLParse.cxx:2800
 TGDMLParse.cxx:2801
 TGDMLParse.cxx:2802
 TGDMLParse.cxx:2803
 TGDMLParse.cxx:2804
 TGDMLParse.cxx:2805
 TGDMLParse.cxx:2806
 TGDMLParse.cxx:2807
 TGDMLParse.cxx:2808
 TGDMLParse.cxx:2809
 TGDMLParse.cxx:2810
 TGDMLParse.cxx:2811
 TGDMLParse.cxx:2812
 TGDMLParse.cxx:2813
 TGDMLParse.cxx:2814
 TGDMLParse.cxx:2815
 TGDMLParse.cxx:2816
 TGDMLParse.cxx:2817
 TGDMLParse.cxx:2818
 TGDMLParse.cxx:2819
 TGDMLParse.cxx:2820
 TGDMLParse.cxx:2821
 TGDMLParse.cxx:2822
 TGDMLParse.cxx:2823
 TGDMLParse.cxx:2824
 TGDMLParse.cxx:2825
 TGDMLParse.cxx:2826
 TGDMLParse.cxx:2827
 TGDMLParse.cxx:2828
 TGDMLParse.cxx:2829
 TGDMLParse.cxx:2830
 TGDMLParse.cxx:2831
 TGDMLParse.cxx:2832
 TGDMLParse.cxx:2833
 TGDMLParse.cxx:2834
 TGDMLParse.cxx:2835
 TGDMLParse.cxx:2836
 TGDMLParse.cxx:2837
 TGDMLParse.cxx:2838
 TGDMLParse.cxx:2839
 TGDMLParse.cxx:2840
 TGDMLParse.cxx:2841
 TGDMLParse.cxx:2842
 TGDMLParse.cxx:2843
 TGDMLParse.cxx:2844
 TGDMLParse.cxx:2845
 TGDMLParse.cxx:2846
 TGDMLParse.cxx:2847
 TGDMLParse.cxx:2848
 TGDMLParse.cxx:2849
 TGDMLParse.cxx:2850
 TGDMLParse.cxx:2851
 TGDMLParse.cxx:2852
 TGDMLParse.cxx:2853
 TGDMLParse.cxx:2854
 TGDMLParse.cxx:2855
 TGDMLParse.cxx:2856
 TGDMLParse.cxx:2857
 TGDMLParse.cxx:2858
 TGDMLParse.cxx:2859
 TGDMLParse.cxx:2860
 TGDMLParse.cxx:2861
 TGDMLParse.cxx:2862
 TGDMLParse.cxx:2863
 TGDMLParse.cxx:2864
 TGDMLParse.cxx:2865
 TGDMLParse.cxx:2866
 TGDMLParse.cxx:2867
 TGDMLParse.cxx:2868
 TGDMLParse.cxx:2869
 TGDMLParse.cxx:2870
 TGDMLParse.cxx:2871
 TGDMLParse.cxx:2872
 TGDMLParse.cxx:2873
 TGDMLParse.cxx:2874
 TGDMLParse.cxx:2875
 TGDMLParse.cxx:2876
 TGDMLParse.cxx:2877
 TGDMLParse.cxx:2878
 TGDMLParse.cxx:2879
 TGDMLParse.cxx:2880
 TGDMLParse.cxx:2881
 TGDMLParse.cxx:2882
 TGDMLParse.cxx:2883
 TGDMLParse.cxx:2884
 TGDMLParse.cxx:2885
 TGDMLParse.cxx:2886
 TGDMLParse.cxx:2887
 TGDMLParse.cxx:2888
 TGDMLParse.cxx:2889
 TGDMLParse.cxx:2890
 TGDMLParse.cxx:2891
 TGDMLParse.cxx:2892
 TGDMLParse.cxx:2893
 TGDMLParse.cxx:2894
 TGDMLParse.cxx:2895
 TGDMLParse.cxx:2896
 TGDMLParse.cxx:2897
 TGDMLParse.cxx:2898
 TGDMLParse.cxx:2899
 TGDMLParse.cxx:2900
 TGDMLParse.cxx:2901
 TGDMLParse.cxx:2902
 TGDMLParse.cxx:2903
 TGDMLParse.cxx:2904
 TGDMLParse.cxx:2905
 TGDMLParse.cxx:2906
 TGDMLParse.cxx:2907
 TGDMLParse.cxx:2908
 TGDMLParse.cxx:2909
 TGDMLParse.cxx:2910
 TGDMLParse.cxx:2911
 TGDMLParse.cxx:2912
 TGDMLParse.cxx:2913
 TGDMLParse.cxx:2914
 TGDMLParse.cxx:2915
 TGDMLParse.cxx:2916
 TGDMLParse.cxx:2917
 TGDMLParse.cxx:2918
 TGDMLParse.cxx:2919
 TGDMLParse.cxx:2920
 TGDMLParse.cxx:2921
 TGDMLParse.cxx:2922
 TGDMLParse.cxx:2923
 TGDMLParse.cxx:2924
 TGDMLParse.cxx:2925
 TGDMLParse.cxx:2926
 TGDMLParse.cxx:2927
 TGDMLParse.cxx:2928
 TGDMLParse.cxx:2929
 TGDMLParse.cxx:2930
 TGDMLParse.cxx:2931
 TGDMLParse.cxx:2932
 TGDMLParse.cxx:2933
 TGDMLParse.cxx:2934
 TGDMLParse.cxx:2935
 TGDMLParse.cxx:2936
 TGDMLParse.cxx:2937
 TGDMLParse.cxx:2938
 TGDMLParse.cxx:2939
 TGDMLParse.cxx:2940
 TGDMLParse.cxx:2941
 TGDMLParse.cxx:2942
 TGDMLParse.cxx:2943
 TGDMLParse.cxx:2944
 TGDMLParse.cxx:2945
 TGDMLParse.cxx:2946
 TGDMLParse.cxx:2947
 TGDMLParse.cxx:2948
 TGDMLParse.cxx:2949
 TGDMLParse.cxx:2950
 TGDMLParse.cxx:2951
 TGDMLParse.cxx:2952
 TGDMLParse.cxx:2953
 TGDMLParse.cxx:2954
 TGDMLParse.cxx:2955
 TGDMLParse.cxx:2956
 TGDMLParse.cxx:2957
 TGDMLParse.cxx:2958
 TGDMLParse.cxx:2959
 TGDMLParse.cxx:2960
 TGDMLParse.cxx:2961
 TGDMLParse.cxx:2962
 TGDMLParse.cxx:2963
 TGDMLParse.cxx:2964
 TGDMLParse.cxx:2965
 TGDMLParse.cxx:2966
 TGDMLParse.cxx:2967
 TGDMLParse.cxx:2968
 TGDMLParse.cxx:2969
 TGDMLParse.cxx:2970
 TGDMLParse.cxx:2971
 TGDMLParse.cxx:2972
 TGDMLParse.cxx:2973
 TGDMLParse.cxx:2974
 TGDMLParse.cxx:2975
 TGDMLParse.cxx:2976
 TGDMLParse.cxx:2977
 TGDMLParse.cxx:2978
 TGDMLParse.cxx:2979
 TGDMLParse.cxx:2980
 TGDMLParse.cxx:2981
 TGDMLParse.cxx:2982
 TGDMLParse.cxx:2983
 TGDMLParse.cxx:2984
 TGDMLParse.cxx:2985
 TGDMLParse.cxx:2986
 TGDMLParse.cxx:2987
 TGDMLParse.cxx:2988
 TGDMLParse.cxx:2989
 TGDMLParse.cxx:2990
 TGDMLParse.cxx:2991
 TGDMLParse.cxx:2992
 TGDMLParse.cxx:2993
 TGDMLParse.cxx:2994
 TGDMLParse.cxx:2995
 TGDMLParse.cxx:2996
 TGDMLParse.cxx:2997
 TGDMLParse.cxx:2998
 TGDMLParse.cxx:2999
 TGDMLParse.cxx:3000
 TGDMLParse.cxx:3001
 TGDMLParse.cxx:3002
 TGDMLParse.cxx:3003
 TGDMLParse.cxx:3004
 TGDMLParse.cxx:3005
 TGDMLParse.cxx:3006
 TGDMLParse.cxx:3007
 TGDMLParse.cxx:3008
 TGDMLParse.cxx:3009
 TGDMLParse.cxx:3010
 TGDMLParse.cxx:3011
 TGDMLParse.cxx:3012
 TGDMLParse.cxx:3013
 TGDMLParse.cxx:3014
 TGDMLParse.cxx:3015
 TGDMLParse.cxx:3016
 TGDMLParse.cxx:3017
 TGDMLParse.cxx:3018
 TGDMLParse.cxx:3019
 TGDMLParse.cxx:3020
 TGDMLParse.cxx:3021
 TGDMLParse.cxx:3022
 TGDMLParse.cxx:3023
 TGDMLParse.cxx:3024
 TGDMLParse.cxx:3025
 TGDMLParse.cxx:3026
 TGDMLParse.cxx:3027
 TGDMLParse.cxx:3028
 TGDMLParse.cxx:3029
 TGDMLParse.cxx:3030
 TGDMLParse.cxx:3031
 TGDMLParse.cxx:3032
 TGDMLParse.cxx:3033
 TGDMLParse.cxx:3034
 TGDMLParse.cxx:3035
 TGDMLParse.cxx:3036
 TGDMLParse.cxx:3037
 TGDMLParse.cxx:3038
 TGDMLParse.cxx:3039
 TGDMLParse.cxx:3040
 TGDMLParse.cxx:3041
 TGDMLParse.cxx:3042
 TGDMLParse.cxx:3043
 TGDMLParse.cxx:3044
 TGDMLParse.cxx:3045
 TGDMLParse.cxx:3046
 TGDMLParse.cxx:3047
 TGDMLParse.cxx:3048
 TGDMLParse.cxx:3049
 TGDMLParse.cxx:3050
 TGDMLParse.cxx:3051
 TGDMLParse.cxx:3052
 TGDMLParse.cxx:3053
 TGDMLParse.cxx:3054
 TGDMLParse.cxx:3055
 TGDMLParse.cxx:3056
 TGDMLParse.cxx:3057
 TGDMLParse.cxx:3058
 TGDMLParse.cxx:3059
 TGDMLParse.cxx:3060
 TGDMLParse.cxx:3061
 TGDMLParse.cxx:3062
 TGDMLParse.cxx:3063
 TGDMLParse.cxx:3064
 TGDMLParse.cxx:3065
 TGDMLParse.cxx:3066
 TGDMLParse.cxx:3067
 TGDMLParse.cxx:3068
 TGDMLParse.cxx:3069
 TGDMLParse.cxx:3070
 TGDMLParse.cxx:3071
 TGDMLParse.cxx:3072
 TGDMLParse.cxx:3073
 TGDMLParse.cxx:3074
 TGDMLParse.cxx:3075
 TGDMLParse.cxx:3076
 TGDMLParse.cxx:3077
 TGDMLParse.cxx:3078
 TGDMLParse.cxx:3079
 TGDMLParse.cxx:3080
 TGDMLParse.cxx:3081
 TGDMLParse.cxx:3082
 TGDMLParse.cxx:3083
 TGDMLParse.cxx:3084
 TGDMLParse.cxx:3085
 TGDMLParse.cxx:3086
 TGDMLParse.cxx:3087
 TGDMLParse.cxx:3088
 TGDMLParse.cxx:3089
 TGDMLParse.cxx:3090
 TGDMLParse.cxx:3091
 TGDMLParse.cxx:3092
 TGDMLParse.cxx:3093
 TGDMLParse.cxx:3094
 TGDMLParse.cxx:3095
 TGDMLParse.cxx:3096
 TGDMLParse.cxx:3097
 TGDMLParse.cxx:3098
 TGDMLParse.cxx:3099
 TGDMLParse.cxx:3100
 TGDMLParse.cxx:3101
 TGDMLParse.cxx:3102
 TGDMLParse.cxx:3103
 TGDMLParse.cxx:3104
 TGDMLParse.cxx:3105
 TGDMLParse.cxx:3106
 TGDMLParse.cxx:3107
 TGDMLParse.cxx:3108
 TGDMLParse.cxx:3109
 TGDMLParse.cxx:3110
 TGDMLParse.cxx:3111
 TGDMLParse.cxx:3112
 TGDMLParse.cxx:3113
 TGDMLParse.cxx:3114
 TGDMLParse.cxx:3115
 TGDMLParse.cxx:3116
 TGDMLParse.cxx:3117
 TGDMLParse.cxx:3118
 TGDMLParse.cxx:3119
 TGDMLParse.cxx:3120
 TGDMLParse.cxx:3121
 TGDMLParse.cxx:3122
 TGDMLParse.cxx:3123
 TGDMLParse.cxx:3124
 TGDMLParse.cxx:3125
 TGDMLParse.cxx:3126
 TGDMLParse.cxx:3127
 TGDMLParse.cxx:3128
 TGDMLParse.cxx:3129
 TGDMLParse.cxx:3130
 TGDMLParse.cxx:3131
 TGDMLParse.cxx:3132
 TGDMLParse.cxx:3133
 TGDMLParse.cxx:3134
 TGDMLParse.cxx:3135
 TGDMLParse.cxx:3136
 TGDMLParse.cxx:3137
 TGDMLParse.cxx:3138
 TGDMLParse.cxx:3139
 TGDMLParse.cxx:3140
 TGDMLParse.cxx:3141
 TGDMLParse.cxx:3142
 TGDMLParse.cxx:3143
 TGDMLParse.cxx:3144
 TGDMLParse.cxx:3145
 TGDMLParse.cxx:3146
 TGDMLParse.cxx:3147
 TGDMLParse.cxx:3148
 TGDMLParse.cxx:3149
 TGDMLParse.cxx:3150
 TGDMLParse.cxx:3151
 TGDMLParse.cxx:3152
 TGDMLParse.cxx:3153
 TGDMLParse.cxx:3154
 TGDMLParse.cxx:3155
 TGDMLParse.cxx:3156
 TGDMLParse.cxx:3157
 TGDMLParse.cxx:3158
 TGDMLParse.cxx:3159
 TGDMLParse.cxx:3160
 TGDMLParse.cxx:3161
 TGDMLParse.cxx:3162
 TGDMLParse.cxx:3163
 TGDMLParse.cxx:3164
 TGDMLParse.cxx:3165
 TGDMLParse.cxx:3166
 TGDMLParse.cxx:3167
 TGDMLParse.cxx:3168
 TGDMLParse.cxx:3169
 TGDMLParse.cxx:3170
 TGDMLParse.cxx:3171
 TGDMLParse.cxx:3172
 TGDMLParse.cxx:3173
 TGDMLParse.cxx:3174
 TGDMLParse.cxx:3175
 TGDMLParse.cxx:3176
 TGDMLParse.cxx:3177
 TGDMLParse.cxx:3178
 TGDMLParse.cxx:3179
 TGDMLParse.cxx:3180
 TGDMLParse.cxx:3181
 TGDMLParse.cxx:3182
 TGDMLParse.cxx:3183
 TGDMLParse.cxx:3184
 TGDMLParse.cxx:3185
 TGDMLParse.cxx:3186
 TGDMLParse.cxx:3187
 TGDMLParse.cxx:3188
 TGDMLParse.cxx:3189
 TGDMLParse.cxx:3190
 TGDMLParse.cxx:3191
 TGDMLParse.cxx:3192
 TGDMLParse.cxx:3193
 TGDMLParse.cxx:3194
 TGDMLParse.cxx:3195
 TGDMLParse.cxx:3196
 TGDMLParse.cxx:3197
 TGDMLParse.cxx:3198
 TGDMLParse.cxx:3199
 TGDMLParse.cxx:3200
 TGDMLParse.cxx:3201
 TGDMLParse.cxx:3202
 TGDMLParse.cxx:3203
 TGDMLParse.cxx:3204
 TGDMLParse.cxx:3205
 TGDMLParse.cxx:3206
 TGDMLParse.cxx:3207
 TGDMLParse.cxx:3208
 TGDMLParse.cxx:3209
 TGDMLParse.cxx:3210
 TGDMLParse.cxx:3211
 TGDMLParse.cxx:3212
 TGDMLParse.cxx:3213
 TGDMLParse.cxx:3214
 TGDMLParse.cxx:3215
 TGDMLParse.cxx:3216
 TGDMLParse.cxx:3217
 TGDMLParse.cxx:3218
 TGDMLParse.cxx:3219
 TGDMLParse.cxx:3220
 TGDMLParse.cxx:3221
 TGDMLParse.cxx:3222
 TGDMLParse.cxx:3223
 TGDMLParse.cxx:3224
 TGDMLParse.cxx:3225
 TGDMLParse.cxx:3226
 TGDMLParse.cxx:3227
 TGDMLParse.cxx:3228
 TGDMLParse.cxx:3229
 TGDMLParse.cxx:3230
 TGDMLParse.cxx:3231
 TGDMLParse.cxx:3232
 TGDMLParse.cxx:3233
 TGDMLParse.cxx:3234
 TGDMLParse.cxx:3235
 TGDMLParse.cxx:3236
 TGDMLParse.cxx:3237
 TGDMLParse.cxx:3238
 TGDMLParse.cxx:3239
 TGDMLParse.cxx:3240
 TGDMLParse.cxx:3241
 TGDMLParse.cxx:3242
 TGDMLParse.cxx:3243
 TGDMLParse.cxx:3244
 TGDMLParse.cxx:3245
 TGDMLParse.cxx:3246
 TGDMLParse.cxx:3247
 TGDMLParse.cxx:3248
 TGDMLParse.cxx:3249
 TGDMLParse.cxx:3250
 TGDMLParse.cxx:3251
 TGDMLParse.cxx:3252
 TGDMLParse.cxx:3253
 TGDMLParse.cxx:3254
 TGDMLParse.cxx:3255
 TGDMLParse.cxx:3256
 TGDMLParse.cxx:3257
 TGDMLParse.cxx:3258
 TGDMLParse.cxx:3259
 TGDMLParse.cxx:3260
 TGDMLParse.cxx:3261
 TGDMLParse.cxx:3262
 TGDMLParse.cxx:3263
 TGDMLParse.cxx:3264
 TGDMLParse.cxx:3265
 TGDMLParse.cxx:3266
 TGDMLParse.cxx:3267
 TGDMLParse.cxx:3268
 TGDMLParse.cxx:3269
 TGDMLParse.cxx:3270
 TGDMLParse.cxx:3271
 TGDMLParse.cxx:3272
 TGDMLParse.cxx:3273
 TGDMLParse.cxx:3274
 TGDMLParse.cxx:3275
 TGDMLParse.cxx:3276
 TGDMLParse.cxx:3277
 TGDMLParse.cxx:3278
 TGDMLParse.cxx:3279
 TGDMLParse.cxx:3280
 TGDMLParse.cxx:3281
 TGDMLParse.cxx:3282
 TGDMLParse.cxx:3283
 TGDMLParse.cxx:3284
 TGDMLParse.cxx:3285
 TGDMLParse.cxx:3286
 TGDMLParse.cxx:3287
 TGDMLParse.cxx:3288
 TGDMLParse.cxx:3289
 TGDMLParse.cxx:3290
 TGDMLParse.cxx:3291
 TGDMLParse.cxx:3292
 TGDMLParse.cxx:3293
 TGDMLParse.cxx:3294
 TGDMLParse.cxx:3295
 TGDMLParse.cxx:3296
 TGDMLParse.cxx:3297
 TGDMLParse.cxx:3298
 TGDMLParse.cxx:3299
 TGDMLParse.cxx:3300
 TGDMLParse.cxx:3301
 TGDMLParse.cxx:3302
 TGDMLParse.cxx:3303
 TGDMLParse.cxx:3304
 TGDMLParse.cxx:3305
 TGDMLParse.cxx:3306
 TGDMLParse.cxx:3307
 TGDMLParse.cxx:3308
 TGDMLParse.cxx:3309
 TGDMLParse.cxx:3310
 TGDMLParse.cxx:3311
 TGDMLParse.cxx:3312
 TGDMLParse.cxx:3313
 TGDMLParse.cxx:3314
 TGDMLParse.cxx:3315
 TGDMLParse.cxx:3316
 TGDMLParse.cxx:3317
 TGDMLParse.cxx:3318
 TGDMLParse.cxx:3319
 TGDMLParse.cxx:3320
 TGDMLParse.cxx:3321
 TGDMLParse.cxx:3322
 TGDMLParse.cxx:3323
 TGDMLParse.cxx:3324
 TGDMLParse.cxx:3325
 TGDMLParse.cxx:3326
 TGDMLParse.cxx:3327
 TGDMLParse.cxx:3328
 TGDMLParse.cxx:3329
 TGDMLParse.cxx:3330
 TGDMLParse.cxx:3331
 TGDMLParse.cxx:3332
 TGDMLParse.cxx:3333
 TGDMLParse.cxx:3334
 TGDMLParse.cxx:3335
 TGDMLParse.cxx:3336
 TGDMLParse.cxx:3337
 TGDMLParse.cxx:3338
 TGDMLParse.cxx:3339
 TGDMLParse.cxx:3340
 TGDMLParse.cxx:3341
 TGDMLParse.cxx:3342
 TGDMLParse.cxx:3343
 TGDMLParse.cxx:3344
 TGDMLParse.cxx:3345
 TGDMLParse.cxx:3346
 TGDMLParse.cxx:3347
 TGDMLParse.cxx:3348
 TGDMLParse.cxx:3349
 TGDMLParse.cxx:3350
 TGDMLParse.cxx:3351
 TGDMLParse.cxx:3352
 TGDMLParse.cxx:3353
 TGDMLParse.cxx:3354
 TGDMLParse.cxx:3355
 TGDMLParse.cxx:3356
 TGDMLParse.cxx:3357
 TGDMLParse.cxx:3358
 TGDMLParse.cxx:3359
 TGDMLParse.cxx:3360
 TGDMLParse.cxx:3361
 TGDMLParse.cxx:3362
 TGDMLParse.cxx:3363
 TGDMLParse.cxx:3364
 TGDMLParse.cxx:3365
 TGDMLParse.cxx:3366
 TGDMLParse.cxx:3367
 TGDMLParse.cxx:3368
 TGDMLParse.cxx:3369
 TGDMLParse.cxx:3370
 TGDMLParse.cxx:3371
 TGDMLParse.cxx:3372
 TGDMLParse.cxx:3373
 TGDMLParse.cxx:3374
 TGDMLParse.cxx:3375
 TGDMLParse.cxx:3376
 TGDMLParse.cxx:3377
 TGDMLParse.cxx:3378
 TGDMLParse.cxx:3379
 TGDMLParse.cxx:3380
 TGDMLParse.cxx:3381
 TGDMLParse.cxx:3382
 TGDMLParse.cxx:3383
 TGDMLParse.cxx:3384
 TGDMLParse.cxx:3385
 TGDMLParse.cxx:3386
 TGDMLParse.cxx:3387
 TGDMLParse.cxx:3388
 TGDMLParse.cxx:3389
 TGDMLParse.cxx:3390
 TGDMLParse.cxx:3391
 TGDMLParse.cxx:3392
 TGDMLParse.cxx:3393
 TGDMLParse.cxx:3394
 TGDMLParse.cxx:3395
 TGDMLParse.cxx:3396
 TGDMLParse.cxx:3397
 TGDMLParse.cxx:3398
 TGDMLParse.cxx:3399
 TGDMLParse.cxx:3400
 TGDMLParse.cxx:3401
 TGDMLParse.cxx:3402
 TGDMLParse.cxx:3403
 TGDMLParse.cxx:3404
 TGDMLParse.cxx:3405
 TGDMLParse.cxx:3406
 TGDMLParse.cxx:3407
 TGDMLParse.cxx:3408
 TGDMLParse.cxx:3409
 TGDMLParse.cxx:3410
 TGDMLParse.cxx:3411
 TGDMLParse.cxx:3412
 TGDMLParse.cxx:3413
 TGDMLParse.cxx:3414
 TGDMLParse.cxx:3415
 TGDMLParse.cxx:3416
 TGDMLParse.cxx:3417
 TGDMLParse.cxx:3418
 TGDMLParse.cxx:3419
 TGDMLParse.cxx:3420
 TGDMLParse.cxx:3421
 TGDMLParse.cxx:3422
 TGDMLParse.cxx:3423
 TGDMLParse.cxx:3424
 TGDMLParse.cxx:3425
 TGDMLParse.cxx:3426
 TGDMLParse.cxx:3427
 TGDMLParse.cxx:3428
 TGDMLParse.cxx:3429
 TGDMLParse.cxx:3430
 TGDMLParse.cxx:3431
 TGDMLParse.cxx:3432
 TGDMLParse.cxx:3433
 TGDMLParse.cxx:3434
 TGDMLParse.cxx:3435
 TGDMLParse.cxx:3436
 TGDMLParse.cxx:3437
 TGDMLParse.cxx:3438
 TGDMLParse.cxx:3439
 TGDMLParse.cxx:3440
 TGDMLParse.cxx:3441
 TGDMLParse.cxx:3442
 TGDMLParse.cxx:3443
 TGDMLParse.cxx:3444
 TGDMLParse.cxx:3445
 TGDMLParse.cxx:3446
 TGDMLParse.cxx:3447
 TGDMLParse.cxx:3448
 TGDMLParse.cxx:3449
 TGDMLParse.cxx:3450
 TGDMLParse.cxx:3451
 TGDMLParse.cxx:3452
 TGDMLParse.cxx:3453
 TGDMLParse.cxx:3454
 TGDMLParse.cxx:3455
 TGDMLParse.cxx:3456
 TGDMLParse.cxx:3457
 TGDMLParse.cxx:3458
 TGDMLParse.cxx:3459
 TGDMLParse.cxx:3460
 TGDMLParse.cxx:3461
 TGDMLParse.cxx:3462
 TGDMLParse.cxx:3463
 TGDMLParse.cxx:3464
 TGDMLParse.cxx:3465
 TGDMLParse.cxx:3466
 TGDMLParse.cxx:3467
 TGDMLParse.cxx:3468
 TGDMLParse.cxx:3469
 TGDMLParse.cxx:3470
 TGDMLParse.cxx:3471
 TGDMLParse.cxx:3472
 TGDMLParse.cxx:3473
 TGDMLParse.cxx:3474
 TGDMLParse.cxx:3475
 TGDMLParse.cxx:3476
 TGDMLParse.cxx:3477
 TGDMLParse.cxx:3478
 TGDMLParse.cxx:3479
 TGDMLParse.cxx:3480
 TGDMLParse.cxx:3481
 TGDMLParse.cxx:3482
 TGDMLParse.cxx:3483
 TGDMLParse.cxx:3484
 TGDMLParse.cxx:3485
 TGDMLParse.cxx:3486
 TGDMLParse.cxx:3487
 TGDMLParse.cxx:3488
 TGDMLParse.cxx:3489
 TGDMLParse.cxx:3490
 TGDMLParse.cxx:3491
 TGDMLParse.cxx:3492
 TGDMLParse.cxx:3493
 TGDMLParse.cxx:3494
 TGDMLParse.cxx:3495
 TGDMLParse.cxx:3496
 TGDMLParse.cxx:3497
 TGDMLParse.cxx:3498
 TGDMLParse.cxx:3499
 TGDMLParse.cxx:3500
 TGDMLParse.cxx:3501
 TGDMLParse.cxx:3502
 TGDMLParse.cxx:3503
 TGDMLParse.cxx:3504
 TGDMLParse.cxx:3505
 TGDMLParse.cxx:3506
 TGDMLParse.cxx:3507
 TGDMLParse.cxx:3508
 TGDMLParse.cxx:3509
 TGDMLParse.cxx:3510
 TGDMLParse.cxx:3511
 TGDMLParse.cxx:3512
 TGDMLParse.cxx:3513
 TGDMLParse.cxx:3514
 TGDMLParse.cxx:3515
 TGDMLParse.cxx:3516
 TGDMLParse.cxx:3517
 TGDMLParse.cxx:3518
 TGDMLParse.cxx:3519
 TGDMLParse.cxx:3520
 TGDMLParse.cxx:3521
 TGDMLParse.cxx:3522
 TGDMLParse.cxx:3523
 TGDMLParse.cxx:3524
 TGDMLParse.cxx:3525
 TGDMLParse.cxx:3526
 TGDMLParse.cxx:3527
 TGDMLParse.cxx:3528
 TGDMLParse.cxx:3529
 TGDMLParse.cxx:3530
 TGDMLParse.cxx:3531
 TGDMLParse.cxx:3532
 TGDMLParse.cxx:3533
 TGDMLParse.cxx:3534
 TGDMLParse.cxx:3535
 TGDMLParse.cxx:3536
 TGDMLParse.cxx:3537
 TGDMLParse.cxx:3538
 TGDMLParse.cxx:3539
 TGDMLParse.cxx:3540
 TGDMLParse.cxx:3541
 TGDMLParse.cxx:3542
 TGDMLParse.cxx:3543
 TGDMLParse.cxx:3544
 TGDMLParse.cxx:3545
 TGDMLParse.cxx:3546
 TGDMLParse.cxx:3547
 TGDMLParse.cxx:3548
 TGDMLParse.cxx:3549
 TGDMLParse.cxx:3550
 TGDMLParse.cxx:3551
 TGDMLParse.cxx:3552
 TGDMLParse.cxx:3553
 TGDMLParse.cxx:3554
 TGDMLParse.cxx:3555
 TGDMLParse.cxx:3556
 TGDMLParse.cxx:3557
 TGDMLParse.cxx:3558
 TGDMLParse.cxx:3559
 TGDMLParse.cxx:3560
 TGDMLParse.cxx:3561
 TGDMLParse.cxx:3562
 TGDMLParse.cxx:3563
 TGDMLParse.cxx:3564
 TGDMLParse.cxx:3565
 TGDMLParse.cxx:3566
 TGDMLParse.cxx:3567
 TGDMLParse.cxx:3568
 TGDMLParse.cxx:3569
 TGDMLParse.cxx:3570
 TGDMLParse.cxx:3571
 TGDMLParse.cxx:3572
 TGDMLParse.cxx:3573
 TGDMLParse.cxx:3574
 TGDMLParse.cxx:3575
 TGDMLParse.cxx:3576
 TGDMLParse.cxx:3577
 TGDMLParse.cxx:3578
 TGDMLParse.cxx:3579
 TGDMLParse.cxx:3580
 TGDMLParse.cxx:3581
 TGDMLParse.cxx:3582
 TGDMLParse.cxx:3583
 TGDMLParse.cxx:3584
 TGDMLParse.cxx:3585
 TGDMLParse.cxx:3586
 TGDMLParse.cxx:3587
 TGDMLParse.cxx:3588
 TGDMLParse.cxx:3589
 TGDMLParse.cxx:3590
 TGDMLParse.cxx:3591
 TGDMLParse.cxx:3592
 TGDMLParse.cxx:3593
 TGDMLParse.cxx:3594
 TGDMLParse.cxx:3595
 TGDMLParse.cxx:3596
 TGDMLParse.cxx:3597
 TGDMLParse.cxx:3598
 TGDMLParse.cxx:3599
 TGDMLParse.cxx:3600
 TGDMLParse.cxx:3601
 TGDMLParse.cxx:3602
 TGDMLParse.cxx:3603
 TGDMLParse.cxx:3604
 TGDMLParse.cxx:3605
 TGDMLParse.cxx:3606
 TGDMLParse.cxx:3607
 TGDMLParse.cxx:3608
 TGDMLParse.cxx:3609
 TGDMLParse.cxx:3610
 TGDMLParse.cxx:3611
 TGDMLParse.cxx:3612
 TGDMLParse.cxx:3613
 TGDMLParse.cxx:3614
 TGDMLParse.cxx:3615
 TGDMLParse.cxx:3616
 TGDMLParse.cxx:3617
 TGDMLParse.cxx:3618
 TGDMLParse.cxx:3619
 TGDMLParse.cxx:3620
 TGDMLParse.cxx:3621
 TGDMLParse.cxx:3622
 TGDMLParse.cxx:3623
 TGDMLParse.cxx:3624
 TGDMLParse.cxx:3625
 TGDMLParse.cxx:3626
 TGDMLParse.cxx:3627
 TGDMLParse.cxx:3628
 TGDMLParse.cxx:3629
 TGDMLParse.cxx:3630
 TGDMLParse.cxx:3631
 TGDMLParse.cxx:3632
 TGDMLParse.cxx:3633
 TGDMLParse.cxx:3634
 TGDMLParse.cxx:3635
 TGDMLParse.cxx:3636
 TGDMLParse.cxx:3637
 TGDMLParse.cxx:3638
 TGDMLParse.cxx:3639
 TGDMLParse.cxx:3640
 TGDMLParse.cxx:3641
 TGDMLParse.cxx:3642
 TGDMLParse.cxx:3643
 TGDMLParse.cxx:3644
 TGDMLParse.cxx:3645
 TGDMLParse.cxx:3646
 TGDMLParse.cxx:3647
 TGDMLParse.cxx:3648
 TGDMLParse.cxx:3649
 TGDMLParse.cxx:3650
 TGDMLParse.cxx:3651
 TGDMLParse.cxx:3652
 TGDMLParse.cxx:3653
 TGDMLParse.cxx:3654
 TGDMLParse.cxx:3655
 TGDMLParse.cxx:3656
 TGDMLParse.cxx:3657
 TGDMLParse.cxx:3658
 TGDMLParse.cxx:3659
 TGDMLParse.cxx:3660
 TGDMLParse.cxx:3661
 TGDMLParse.cxx:3662
 TGDMLParse.cxx:3663
 TGDMLParse.cxx:3664
 TGDMLParse.cxx:3665
 TGDMLParse.cxx:3666
 TGDMLParse.cxx:3667
 TGDMLParse.cxx:3668
 TGDMLParse.cxx:3669
 TGDMLParse.cxx:3670
 TGDMLParse.cxx:3671
 TGDMLParse.cxx:3672
 TGDMLParse.cxx:3673
 TGDMLParse.cxx:3674
 TGDMLParse.cxx:3675
 TGDMLParse.cxx:3676
 TGDMLParse.cxx:3677
 TGDMLParse.cxx:3678
 TGDMLParse.cxx:3679
 TGDMLParse.cxx:3680
 TGDMLParse.cxx:3681
 TGDMLParse.cxx:3682
 TGDMLParse.cxx:3683
 TGDMLParse.cxx:3684
 TGDMLParse.cxx:3685
 TGDMLParse.cxx:3686
 TGDMLParse.cxx:3687
 TGDMLParse.cxx:3688
 TGDMLParse.cxx:3689
 TGDMLParse.cxx:3690
 TGDMLParse.cxx:3691
 TGDMLParse.cxx:3692
 TGDMLParse.cxx:3693
 TGDMLParse.cxx:3694
 TGDMLParse.cxx:3695
 TGDMLParse.cxx:3696
 TGDMLParse.cxx:3697
 TGDMLParse.cxx:3698
 TGDMLParse.cxx:3699
 TGDMLParse.cxx:3700
 TGDMLParse.cxx:3701
 TGDMLParse.cxx:3702
 TGDMLParse.cxx:3703
 TGDMLParse.cxx:3704
 TGDMLParse.cxx:3705
 TGDMLParse.cxx:3706
 TGDMLParse.cxx:3707
 TGDMLParse.cxx:3708
 TGDMLParse.cxx:3709
 TGDMLParse.cxx:3710
 TGDMLParse.cxx:3711
 TGDMLParse.cxx:3712
 TGDMLParse.cxx:3713
 TGDMLParse.cxx:3714
 TGDMLParse.cxx:3715
 TGDMLParse.cxx:3716
 TGDMLParse.cxx:3717
 TGDMLParse.cxx:3718
 TGDMLParse.cxx:3719
 TGDMLParse.cxx:3720
 TGDMLParse.cxx:3721
 TGDMLParse.cxx:3722
 TGDMLParse.cxx:3723
 TGDMLParse.cxx:3724
 TGDMLParse.cxx:3725
 TGDMLParse.cxx:3726
 TGDMLParse.cxx:3727
 TGDMLParse.cxx:3728
 TGDMLParse.cxx:3729
 TGDMLParse.cxx:3730
 TGDMLParse.cxx:3731
 TGDMLParse.cxx:3732
 TGDMLParse.cxx:3733
 TGDMLParse.cxx:3734
 TGDMLParse.cxx:3735
 TGDMLParse.cxx:3736
 TGDMLParse.cxx:3737
 TGDMLParse.cxx:3738
 TGDMLParse.cxx:3739
 TGDMLParse.cxx:3740
 TGDMLParse.cxx:3741
 TGDMLParse.cxx:3742
 TGDMLParse.cxx:3743
 TGDMLParse.cxx:3744
 TGDMLParse.cxx:3745
 TGDMLParse.cxx:3746
 TGDMLParse.cxx:3747
 TGDMLParse.cxx:3748
 TGDMLParse.cxx:3749
 TGDMLParse.cxx:3750
 TGDMLParse.cxx:3751
 TGDMLParse.cxx:3752
 TGDMLParse.cxx:3753
 TGDMLParse.cxx:3754
 TGDMLParse.cxx:3755
 TGDMLParse.cxx:3756
 TGDMLParse.cxx:3757
 TGDMLParse.cxx:3758
 TGDMLParse.cxx:3759
 TGDMLParse.cxx:3760
 TGDMLParse.cxx:3761
 TGDMLParse.cxx:3762
 TGDMLParse.cxx:3763
 TGDMLParse.cxx:3764
 TGDMLParse.cxx:3765
 TGDMLParse.cxx:3766
 TGDMLParse.cxx:3767
 TGDMLParse.cxx:3768
 TGDMLParse.cxx:3769
 TGDMLParse.cxx:3770
 TGDMLParse.cxx:3771
 TGDMLParse.cxx:3772
 TGDMLParse.cxx:3773
 TGDMLParse.cxx:3774
 TGDMLParse.cxx:3775
 TGDMLParse.cxx:3776
 TGDMLParse.cxx:3777
 TGDMLParse.cxx:3778
 TGDMLParse.cxx:3779
 TGDMLParse.cxx:3780
 TGDMLParse.cxx:3781
 TGDMLParse.cxx:3782
 TGDMLParse.cxx:3783
 TGDMLParse.cxx:3784
 TGDMLParse.cxx:3785
 TGDMLParse.cxx:3786
 TGDMLParse.cxx:3787
 TGDMLParse.cxx:3788
 TGDMLParse.cxx:3789
 TGDMLParse.cxx:3790
 TGDMLParse.cxx:3791
 TGDMLParse.cxx:3792
 TGDMLParse.cxx:3793
 TGDMLParse.cxx:3794
 TGDMLParse.cxx:3795
 TGDMLParse.cxx:3796
 TGDMLParse.cxx:3797
 TGDMLParse.cxx:3798
 TGDMLParse.cxx:3799
 TGDMLParse.cxx:3800
 TGDMLParse.cxx:3801
 TGDMLParse.cxx:3802
 TGDMLParse.cxx:3803
 TGDMLParse.cxx:3804
 TGDMLParse.cxx:3805
 TGDMLParse.cxx:3806
 TGDMLParse.cxx:3807
 TGDMLParse.cxx:3808
 TGDMLParse.cxx:3809
 TGDMLParse.cxx:3810
 TGDMLParse.cxx:3811
 TGDMLParse.cxx:3812
 TGDMLParse.cxx:3813
 TGDMLParse.cxx:3814
 TGDMLParse.cxx:3815
 TGDMLParse.cxx:3816
 TGDMLParse.cxx:3817
 TGDMLParse.cxx:3818
 TGDMLParse.cxx:3819
 TGDMLParse.cxx:3820
 TGDMLParse.cxx:3821
 TGDMLParse.cxx:3822
 TGDMLParse.cxx:3823
 TGDMLParse.cxx:3824
 TGDMLParse.cxx:3825
 TGDMLParse.cxx:3826
 TGDMLParse.cxx:3827
 TGDMLParse.cxx:3828
 TGDMLParse.cxx:3829
 TGDMLParse.cxx:3830
 TGDMLParse.cxx:3831
 TGDMLParse.cxx:3832
 TGDMLParse.cxx:3833
 TGDMLParse.cxx:3834
 TGDMLParse.cxx:3835
 TGDMLParse.cxx:3836