G4GDMLWrite Class Reference

#include <G4GDMLWrite.hh>

Inheritance diagram for G4GDMLWrite:

G4GDMLWriteDefine G4GDMLWriteMaterials G4GDMLWriteSolids G4GDMLWriteSetup G4GDMLWriteParamvol G4GDMLWriteStructure

Public Member Functions

G4Transform3D Write (const G4String &filename, const G4LogicalVolume *const topLog, const G4String &schemaPath, const G4int depth, G4bool storeReferences=true)
void AddModule (const G4VPhysicalVolume *const topVol)
void AddModule (const G4int depth)
virtual void DefineWrite (xercesc::DOMElement *)=0
virtual void MaterialsWrite (xercesc::DOMElement *)=0
virtual void SolidsWrite (xercesc::DOMElement *)=0
virtual void StructureWrite (xercesc::DOMElement *)=0
virtual G4Transform3D TraverseVolumeTree (const G4LogicalVolume *const, const G4int)=0
virtual void SurfacesWrite ()=0
virtual void SetupWrite (xercesc::DOMElement *, const G4LogicalVolume *const)=0
virtual void ExtensionWrite (xercesc::DOMElement *)
virtual void AddExtension (xercesc::DOMElement *, const G4LogicalVolume *const)

Static Public Member Functions

static void SetAddPointerToName (G4bool)

Protected Member Functions

 G4GDMLWrite ()
virtual ~G4GDMLWrite ()
VolumeMapType & VolumeMap ()
G4String GenerateName (const G4String &, const void *const)
xercesc::DOMAttr * NewAttribute (const G4String &, const G4String &)
xercesc::DOMAttr * NewAttribute (const G4String &, const G4double &)
xercesc::DOMElement * NewElement (const G4String &)
G4String Modularize (const G4VPhysicalVolume *const topvol, const G4int depth)
G4bool FileExists (const G4String &) const
PhysVolumeMapType & PvolumeMap ()
DepthMapType & DepthMap ()

Protected Attributes

G4String SchemaLocation
xercesc::DOMDocument * doc
xercesc::DOMElement * extElement
XMLCh tempStr [10000]

Static Protected Attributes

static G4bool addPointerToName = true

Detailed Description

Definition at line 55 of file G4GDMLWrite.hh.


Constructor & Destructor Documentation

G4GDMLWrite::G4GDMLWrite (  )  [protected]

Definition at line 46 of file G4GDMLWrite.cc.

00046                          : doc(0), extElement(0)
00047 {
00048 }

G4GDMLWrite::~G4GDMLWrite (  )  [protected, virtual]

Definition at line 50 of file G4GDMLWrite.cc.

00051 {
00052 }


Member Function Documentation

void G4GDMLWrite::AddExtension ( xercesc::DOMElement *  ,
const G4LogicalVolume const 
) [virtual]

Definition at line 78 of file G4GDMLWrite.cc.

Referenced by G4GDMLWriteStructure::TraverseVolumeTree().

00080 {
00081    // Empty implementation. To be overwritten by user for specific extensions
00082    // related to attributes associated to volumes
00083 }

void G4GDMLWrite::AddModule ( const G4int  depth  ) 

Definition at line 280 of file G4GDMLWrite.cc.

References DepthMap(), FatalException, and G4Exception().

00281 {
00282    if (depth<0)
00283    {
00284      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00285                  "Depth must be a positive number!");
00286    }
00287    if (DepthMap().find(depth) != DepthMap().end())
00288    {
00289      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00290                  "Adding module(s) at this depth is already requested!");
00291    }
00292    DepthMap()[depth] = 0;
00293 }

void G4GDMLWrite::AddModule ( const G4VPhysicalVolume *const   topVol  ) 

Definition at line 247 of file G4GDMLWrite.cc.

References FatalException, G4cout, G4endl, G4Exception(), GenerateName(), G4VPhysicalVolume::GetName(), and PvolumeMap().

Referenced by G4GDMLParser::AddModule().

00248 {
00249    G4String fname = GenerateName(physvol->GetName(),physvol);
00250    G4cout << "G4GDML: Adding module '" << fname << "'..." << G4endl;
00251 
00252    if (physvol == 0)
00253    {
00254      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00255                  "Invalid NULL pointer is specified for modularization!");
00256      return;
00257    }
00258    if (dynamic_cast<const G4PVDivision*>(physvol))
00259    {
00260      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00261                  "It is not possible to modularize by divisionvol!");
00262      return;
00263    }
00264    if (physvol->IsParameterised())
00265    {
00266      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00267                  "It is not possible to modularize by parameterised volume!");
00268      return;
00269    }
00270    if (physvol->IsReplicated())
00271    {
00272      G4Exception("G4GDMLWrite::AddModule()", "InvalidSetup", FatalException,
00273                  "It is not possible to modularize by replicated volume!");
00274      return;
00275    }
00276 
00277    PvolumeMap()[physvol] = fname;
00278 }

virtual void G4GDMLWrite::DefineWrite ( xercesc::DOMElement *   )  [pure virtual]

Implemented in G4GDMLWriteDefine.

Referenced by Write().

G4GDMLWrite::DepthMapType & G4GDMLWrite::DepthMap (  )  [protected]

Definition at line 72 of file G4GDMLWrite.cc.

Referenced by AddModule(), and Modularize().

00073 {
00074    static DepthMapType instance;
00075    return instance;
00076 }

void G4GDMLWrite::ExtensionWrite ( xercesc::DOMElement *   )  [virtual]

Definition at line 85 of file G4GDMLWrite.cc.

Referenced by Write().

00086 {
00087    // Empty implementation. To be overwritten by user for specific extensions
00088 }

G4bool G4GDMLWrite::FileExists ( const G4String  )  const [protected]

Definition at line 54 of file G4GDMLWrite.cc.

Referenced by Write().

00055 {
00056   struct stat FileInfo;
00057   return (stat(fname.c_str(),&FileInfo) == 0); 
00058 }

G4String G4GDMLWrite::GenerateName ( const G4String ,
const void *  const 
) [protected]

Definition at line 90 of file G4GDMLWrite.cc.

References addPointerToName, and G4String::contains().

Referenced by AddModule(), G4GDMLWriteSolids::BooleanWrite(), G4GDMLWriteStructure::BorderSurfaceCache(), G4GDMLWriteSolids::BoxWrite(), G4GDMLWriteSolids::ConeWrite(), G4GDMLWriteSolids::CutTubeWrite(), G4GDMLWriteStructure::DivisionvolWrite(), G4GDMLWriteSolids::ElconeWrite(), G4GDMLWriteMaterials::ElementWrite(), G4GDMLWriteSolids::EllipsoidWrite(), G4GDMLWriteSolids::EltubeWrite(), G4GDMLWriteSolids::GenTrapWrite(), G4GDMLWriteSolids::HypeWrite(), G4GDMLWriteMaterials::IsotopeWrite(), G4GDMLWriteMaterials::MaterialWrite(), G4GDMLWriteSolids::OrbWrite(), G4GDMLWriteSolids::ParaboloidWrite(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteParamvol::ParamvolAlgorithmWrite(), G4GDMLWriteParamvol::ParamvolWrite(), G4GDMLWriteSolids::ParaWrite(), G4GDMLWriteStructure::PhysvolWrite(), G4GDMLWriteSolids::PolyconeWrite(), G4GDMLWriteSolids::PolyhedraWrite(), G4GDMLWriteMaterials::PropertyVectorWrite(), G4GDMLWriteMaterials::PropertyWrite(), G4GDMLWriteStructure::ReplicavolWrite(), G4GDMLWriteSetup::SetupWrite(), G4GDMLWriteStructure::SkinSurfaceCache(), G4GDMLWriteSolids::SphereWrite(), G4GDMLWriteSolids::TessellatedWrite(), G4GDMLWriteSolids::TetWrite(), G4GDMLWriteSolids::TorusWrite(), G4GDMLWriteSolids::TrapWrite(), G4GDMLWriteStructure::TraverseVolumeTree(), G4GDMLWriteSolids::TrdWrite(), G4GDMLWriteSolids::TubeWrite(), G4GDMLWriteSolids::TwistedboxWrite(), G4GDMLWriteSolids::TwistedtrapWrite(), G4GDMLWriteSolids::TwistedtrdWrite(), G4GDMLWriteSolids::TwistedtubsWrite(), and G4GDMLWriteSolids::XtruWrite().

00091 {
00092    G4String nameOut;
00093    std::stringstream stream; stream << name;
00094    if (addPointerToName) { stream << ptr; };
00095 
00096    nameOut=G4String(stream.str());
00097    if(nameOut.contains(' '))
00098    nameOut.erase(std::remove(nameOut.begin(),nameOut.end(),' '),nameOut.end());
00099 
00100    return nameOut;
00101 }

virtual void G4GDMLWrite::MaterialsWrite ( xercesc::DOMElement *   )  [pure virtual]

Implemented in G4GDMLWriteMaterials.

Referenced by Write().

G4String G4GDMLWrite::Modularize ( const G4VPhysicalVolume *const   topvol,
const G4int  depth 
) [protected]

Definition at line 295 of file G4GDMLWrite.cc.

References DepthMap(), and PvolumeMap().

Referenced by G4GDMLWriteStructure::TraverseVolumeTree().

00297 {
00298    if (PvolumeMap().find(physvol) != PvolumeMap().end())
00299    {
00300      return PvolumeMap()[physvol]; // Modularize via physvol
00301    }
00302 
00303    if (DepthMap().find(depth) != DepthMap().end()) // Modularize via depth
00304    {
00305      std::stringstream stream;
00306      stream << "depth" << depth << "_module" << DepthMap()[depth] << ".gdml";
00307      DepthMap()[depth]++;           // There can be more modules at this depth!
00308      return G4String(stream.str());
00309    }
00310 
00311    return G4String(""); // Empty string for module name = no modularization
00312                         // was requested at that level/physvol!
00313 }

xercesc::DOMAttr * G4GDMLWrite::NewAttribute ( const G4String ,
const G4double  
) [protected]

Definition at line 113 of file G4GDMLWrite.cc.

References doc, and tempStr.

00115 {
00116    xercesc::XMLString::transcode(name,tempStr,99);
00117    xercesc::DOMAttr* att = doc->createAttribute(tempStr);
00118    std::ostringstream ostream;
00119    ostream.precision(15);
00120    ostream << value;
00121    G4String str = ostream.str();
00122    xercesc::XMLString::transcode(str,tempStr,99);
00123    att->setValue(tempStr);
00124    return att;
00125 }

xercesc::DOMAttr * G4GDMLWrite::NewAttribute ( const G4String ,
const G4String  
) [protected]

Definition at line 103 of file G4GDMLWrite.cc.

References doc, and tempStr.

Referenced by G4GDMLWriteMaterials::AtomWrite(), G4GDMLWriteSolids::BooleanWrite(), G4GDMLWriteStructure::BorderSurfaceCache(), G4GDMLWriteParamvol::Box_dimensionsWrite(), G4GDMLWriteSolids::BoxWrite(), G4GDMLWriteParamvol::Cone_dimensionsWrite(), G4GDMLWriteSolids::ConeWrite(), G4GDMLWriteSolids::CutTubeWrite(), G4GDMLWriteStructure::DivisionvolWrite(), G4GDMLWriteMaterials::DWrite(), G4GDMLWriteSolids::ElconeWrite(), G4GDMLWriteMaterials::ElementWrite(), G4GDMLWriteSolids::EllipsoidWrite(), G4GDMLWriteSolids::EltubeWrite(), G4GDMLWriteSolids::GenTrapWrite(), G4GDMLWriteParamvol::Hype_dimensionsWrite(), G4GDMLWriteSolids::HypeWrite(), G4GDMLWriteMaterials::IsotopeWrite(), G4GDMLWriteMaterials::MaterialWrite(), G4GDMLWriteMaterials::MEEWrite(), G4GDMLWriteSolids::OpticalSurfaceWrite(), G4GDMLWriteParamvol::Orb_dimensionsWrite(), G4GDMLWriteSolids::OrbWrite(), G4GDMLWriteParamvol::Para_dimensionsWrite(), G4GDMLWriteSolids::ParaboloidWrite(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteParamvol::ParamvolWrite(), G4GDMLWriteSolids::ParaWrite(), G4GDMLWriteStructure::PhysvolWrite(), G4GDMLWriteSolids::PolyconeWrite(), G4GDMLWriteSolids::PolyhedraWrite(), G4GDMLWriteDefine::Position_vectorWrite(), G4GDMLWriteMaterials::PropertyVectorWrite(), G4GDMLWriteMaterials::PropertyWrite(), G4GDMLWriteMaterials::PWrite(), G4GDMLWriteStructure::ReplicavolWrite(), G4GDMLWriteDefine::Rotation_vectorWrite(), G4GDMLWriteDefine::Scale_vectorWrite(), G4GDMLWriteSetup::SetupWrite(), G4GDMLWriteStructure::SkinSurfaceCache(), G4GDMLWriteParamvol::Sphere_dimensionsWrite(), G4GDMLWriteSolids::SphereWrite(), G4GDMLWriteSolids::TessellatedWrite(), G4GDMLWriteSolids::TetWrite(), G4GDMLWriteParamvol::Torus_dimensionsWrite(), G4GDMLWriteSolids::TorusWrite(), G4GDMLWriteParamvol::Trap_dimensionsWrite(), G4GDMLWriteSolids::TrapWrite(), G4GDMLWriteStructure::TraverseVolumeTree(), G4GDMLWriteParamvol::Trd_dimensionsWrite(), G4GDMLWriteSolids::TrdWrite(), G4GDMLWriteParamvol::Tube_dimensionsWrite(), G4GDMLWriteSolids::TubeWrite(), G4GDMLWriteSolids::TwistedboxWrite(), G4GDMLWriteSolids::TwistedtrapWrite(), G4GDMLWriteSolids::TwistedtrdWrite(), G4GDMLWriteSolids::TwistedtubsWrite(), G4GDMLWriteMaterials::TWrite(), Write(), G4GDMLWriteSolids::XtruWrite(), and G4GDMLWriteSolids::ZplaneWrite().

00105 {
00106    xercesc::XMLString::transcode(name,tempStr,99);
00107    xercesc::DOMAttr* att = doc->createAttribute(tempStr);
00108    xercesc::XMLString::transcode(value,tempStr,99);
00109    att->setValue(tempStr);
00110    return att;
00111 }

xercesc::DOMElement * G4GDMLWrite::NewElement ( const G4String  )  [protected]

Definition at line 127 of file G4GDMLWrite.cc.

References doc, and tempStr.

Referenced by G4GDMLWriteMaterials::AtomWrite(), G4GDMLWriteSolids::BooleanWrite(), G4GDMLWriteStructure::BorderSurfaceCache(), G4GDMLWriteParamvol::Box_dimensionsWrite(), G4GDMLWriteSolids::BoxWrite(), G4GDMLWriteParamvol::Cone_dimensionsWrite(), G4GDMLWriteSolids::ConeWrite(), G4GDMLWriteSolids::CutTubeWrite(), G4GDMLWriteDefine::DefineWrite(), G4GDMLWriteStructure::DivisionvolWrite(), G4GDMLWriteMaterials::DWrite(), G4GDMLWriteSolids::ElconeWrite(), G4GDMLWriteMaterials::ElementWrite(), G4GDMLWriteSolids::EllipsoidWrite(), G4GDMLWriteSolids::EltubeWrite(), G4GDMLWriteSolids::GenTrapWrite(), G4GDMLWriteParamvol::Hype_dimensionsWrite(), G4GDMLWriteSolids::HypeWrite(), G4GDMLWriteMaterials::IsotopeWrite(), G4GDMLWriteMaterials::MaterialsWrite(), G4GDMLWriteMaterials::MaterialWrite(), G4GDMLWriteMaterials::MEEWrite(), G4GDMLWriteSolids::OpticalSurfaceWrite(), G4GDMLWriteParamvol::Orb_dimensionsWrite(), G4GDMLWriteSolids::OrbWrite(), G4GDMLWriteParamvol::Para_dimensionsWrite(), G4GDMLWriteSolids::ParaboloidWrite(), G4GDMLWriteParamvol::ParametersWrite(), G4GDMLWriteParamvol::ParamvolWrite(), G4GDMLWriteSolids::ParaWrite(), G4GDMLWriteStructure::PhysvolWrite(), G4GDMLWriteSolids::PolyconeWrite(), G4GDMLWriteSolids::PolyhedraWrite(), G4GDMLWriteDefine::Position_vectorWrite(), G4GDMLWriteMaterials::PropertyVectorWrite(), G4GDMLWriteMaterials::PropertyWrite(), G4GDMLWriteMaterials::PWrite(), G4GDMLWriteStructure::ReplicavolWrite(), G4GDMLWriteDefine::Rotation_vectorWrite(), G4GDMLWriteDefine::Scale_vectorWrite(), G4GDMLWriteSetup::SetupWrite(), G4GDMLWriteStructure::SkinSurfaceCache(), G4GDMLWriteSolids::SolidsWrite(), G4GDMLWriteParamvol::Sphere_dimensionsWrite(), G4GDMLWriteSolids::SphereWrite(), G4GDMLWriteStructure::StructureWrite(), G4GDMLWriteSolids::TessellatedWrite(), G4GDMLWriteSolids::TetWrite(), G4GDMLWriteParamvol::Torus_dimensionsWrite(), G4GDMLWriteSolids::TorusWrite(), G4GDMLWriteParamvol::Trap_dimensionsWrite(), G4GDMLWriteSolids::TrapWrite(), G4GDMLWriteStructure::TraverseVolumeTree(), G4GDMLWriteParamvol::Trd_dimensionsWrite(), G4GDMLWriteSolids::TrdWrite(), G4GDMLWriteParamvol::Tube_dimensionsWrite(), G4GDMLWriteSolids::TubeWrite(), G4GDMLWriteSolids::TwistedboxWrite(), G4GDMLWriteSolids::TwistedtrapWrite(), G4GDMLWriteSolids::TwistedtrdWrite(), G4GDMLWriteSolids::TwistedtubsWrite(), G4GDMLWriteMaterials::TWrite(), G4GDMLWriteSolids::XtruWrite(), and G4GDMLWriteSolids::ZplaneWrite().

00128 {
00129    xercesc::XMLString::transcode(name,tempStr,99);
00130    return doc->createElement(tempStr);
00131 }

G4GDMLWrite::PhysVolumeMapType & G4GDMLWrite::PvolumeMap (  )  [protected]

Definition at line 66 of file G4GDMLWrite.cc.

Referenced by AddModule(), and Modularize().

00067 {
00068    static PhysVolumeMapType instance;
00069    return instance;
00070 }

void G4GDMLWrite::SetAddPointerToName ( G4bool   )  [static]

Definition at line 315 of file G4GDMLWrite.cc.

References addPointerToName.

Referenced by G4GDMLParser::SetAddPointerToName().

00316 {
00317    addPointerToName = set;
00318 }

virtual void G4GDMLWrite::SetupWrite ( xercesc::DOMElement *  ,
const G4LogicalVolume const 
) [pure virtual]

Implemented in G4GDMLWriteSetup.

Referenced by Write().

virtual void G4GDMLWrite::SolidsWrite ( xercesc::DOMElement *   )  [pure virtual]

Implemented in G4GDMLWriteSolids.

Referenced by Write().

virtual void G4GDMLWrite::StructureWrite ( xercesc::DOMElement *   )  [pure virtual]

Implemented in G4GDMLWriteStructure.

Referenced by Write().

virtual void G4GDMLWrite::SurfacesWrite (  )  [pure virtual]

Implemented in G4GDMLWriteStructure.

Referenced by Write().

virtual G4Transform3D G4GDMLWrite::TraverseVolumeTree ( const G4LogicalVolume const,
const   G4int 
) [pure virtual]

Implemented in G4GDMLWriteStructure.

Referenced by Write().

G4GDMLWrite::VolumeMapType & G4GDMLWrite::VolumeMap (  )  [protected]

Definition at line 60 of file G4GDMLWrite.cc.

Referenced by G4GDMLWriteStructure::TraverseVolumeTree(), and Write().

00061 {
00062    static VolumeMapType instance;
00063    return instance;
00064 }

G4Transform3D G4GDMLWrite::Write ( const G4String filename,
const G4LogicalVolume *const   topLog,
const G4String schemaPath,
const G4int  depth,
G4bool  storeReferences = true 
)

Definition at line 133 of file G4GDMLWrite.cc.

References addPointerToName, DefineWrite(), doc, ExtensionWrite(), FatalException, FileExists(), G4cout, G4endl, G4Exception(), MaterialsWrite(), NewAttribute(), SchemaLocation, SetupWrite(), SolidsWrite(), StructureWrite(), SurfacesWrite(), tempStr, TraverseVolumeTree(), and VolumeMap().

Referenced by G4GDMLWriteStructure::TraverseVolumeTree(), and G4GDMLParser::Write().

00138 {
00139    SchemaLocation = setSchemaLocation;
00140    addPointerToName = refs;
00141 
00142    if (depth==0) { G4cout << "G4GDML: Writing '" << fname << "'..." << G4endl; }
00143    else   { G4cout << "G4GDML: Writing module '" << fname << "'..." << G4endl; }
00144    
00145    if (FileExists(fname))
00146    {
00147      G4String ErrorMessage = "File '"+fname+"' already exists!";
00148      G4Exception("G4GDMLWrite::Write()", "InvalidSetup",
00149                  FatalException, ErrorMessage);
00150    }
00151    
00152    VolumeMap().clear(); // The module map is global for all modules,
00153                         // so clear it only at once!
00154 
00155    xercesc::XMLString::transcode("LS", tempStr, 99);
00156      xercesc::DOMImplementationRegistry::getDOMImplementation(tempStr);
00157    xercesc::XMLString::transcode("Range", tempStr, 99);
00158    xercesc::DOMImplementation* impl =
00159      xercesc::DOMImplementationRegistry::getDOMImplementation(tempStr);
00160    xercesc::XMLString::transcode("gdml", tempStr, 99);
00161    doc = impl->createDocument(0,tempStr,0);
00162    xercesc::DOMElement* gdml = doc->getDocumentElement();
00163 
00164 #if XERCES_VERSION_MAJOR >= 3
00165                                              // DOM L3 as per Xerces 3.0 API
00166     xercesc::DOMLSSerializer* writer =
00167       ((xercesc::DOMImplementationLS*)impl)->createLSSerializer();
00168 
00169     xercesc::DOMConfiguration *dc = writer->getDomConfig();
00170     dc->setParameter(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true);
00171 
00172 #else
00173 
00174    xercesc::DOMWriter* writer =
00175      ((xercesc::DOMImplementationLS*)impl)->createDOMWriter();
00176 
00177    if (writer->canSetFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true))
00178        writer->setFeature(xercesc::XMLUni::fgDOMWRTFormatPrettyPrint, true);
00179 
00180 #endif
00181 
00182    gdml->setAttributeNode(NewAttribute("xmlns:xsi",
00183                           "http://www.w3.org/2001/XMLSchema-instance"));
00184    gdml->setAttributeNode(NewAttribute("xsi:noNamespaceSchemaLocation",
00185                           SchemaLocation));
00186 
00187    ExtensionWrite(gdml);
00188    DefineWrite(gdml);
00189    MaterialsWrite(gdml);
00190    SolidsWrite(gdml);
00191    StructureWrite(gdml);
00192    SetupWrite(gdml,logvol);
00193 
00194    G4Transform3D R = TraverseVolumeTree(logvol,depth);
00195 
00196    SurfacesWrite();
00197    xercesc::XMLFormatTarget *myFormTarget =
00198      new xercesc::LocalFileFormatTarget(fname.c_str());
00199 
00200    try
00201    {
00202 #if XERCES_VERSION_MAJOR >= 3
00203                                             // DOM L3 as per Xerces 3.0 API
00204       xercesc::DOMLSOutput *theOutput =
00205         ((xercesc::DOMImplementationLS*)impl)->createLSOutput();
00206       theOutput->setByteStream(myFormTarget);
00207       writer->write(doc, theOutput);
00208 #else
00209       writer->writeNode(myFormTarget, *doc);
00210 #endif
00211    }
00212    catch (const xercesc::XMLException& toCatch)
00213    {
00214       char* message = xercesc::XMLString::transcode(toCatch.getMessage());
00215       G4cout << "G4GDML: Exception message is: " << message << G4endl;
00216       xercesc::XMLString::release(&message);
00217       return G4Transform3D::Identity;
00218    }
00219    catch (const xercesc::DOMException& toCatch)
00220    {
00221       char* message = xercesc::XMLString::transcode(toCatch.msg);
00222       G4cout << "G4GDML: Exception message is: " << message << G4endl;
00223       xercesc::XMLString::release(&message);
00224       return G4Transform3D::Identity;
00225    }
00226    catch (...)
00227    {   
00228       G4cout << "G4GDML: Unexpected Exception!" << G4endl;
00229       return G4Transform3D::Identity;
00230    }        
00231 
00232    delete myFormTarget;
00233    writer->release();
00234 
00235    if (depth==0)
00236    {
00237      G4cout << "G4GDML: Writing '" << fname << "' done !" << G4endl;
00238    }
00239    else
00240    {
00241      G4cout << "G4GDML: Writing module '" << fname << "' done !" << G4endl;
00242    }
00243 
00244    return R;
00245 }


Field Documentation

G4bool G4GDMLWrite::addPointerToName = true [static, protected]

Definition at line 122 of file G4GDMLWrite.hh.

Referenced by GenerateName(), SetAddPointerToName(), and Write().

xercesc::DOMDocument* G4GDMLWrite::doc [protected]

Definition at line 123 of file G4GDMLWrite.hh.

Referenced by NewAttribute(), NewElement(), and Write().

xercesc::DOMElement* G4GDMLWrite::extElement [protected]

Definition at line 124 of file G4GDMLWrite.hh.

G4String G4GDMLWrite::SchemaLocation [protected]

Definition at line 121 of file G4GDMLWrite.hh.

Referenced by G4GDMLWriteStructure::TraverseVolumeTree(), and Write().

XMLCh G4GDMLWrite::tempStr[10000] [protected]

Definition at line 125 of file G4GDMLWrite.hh.

Referenced by NewAttribute(), NewElement(), and Write().


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:03 2013 for Geant4 by  doxygen 1.4.7