40 #ifndef _PHG4GDMLWRITE_INCLUDED_
41 #define _PHG4GDMLWRITE_INCLUDED_
45 #include <xercesc/dom/DOM.hpp>
46 #include <xercesc/framework/LocalFileFormatTarget.hpp>
47 #include <xercesc/util/PlatformUtils.hpp>
48 #include <xercesc/util/XMLString.hpp>
50 #include <Geant4/G4Transform3D.hh>
55 class G4LogicalVolume;
56 class G4VPhysicalVolume;
60 typedef std::map<const G4LogicalVolume*,G4Transform3D> VolumeMapType;
61 typedef std::map<const G4VPhysicalVolume*,G4String> PhysVolumeMapType;
62 typedef std::map<G4int,G4int> DepthMapType;
66 G4Transform3D
Write(
const G4String& filename,
67 const G4LogicalVolume*
const topLog,
68 const G4String& schemaPath,
69 const G4int depth, G4bool storeReferences=
true);
73 void AddModule(
const G4VPhysicalVolume*
const topVol);
94 const G4LogicalVolume*
const)=0;
101 const G4LogicalVolume*
const);
109 G4String
GenerateName(
const G4String&,
const void*
const);
118 xercesc::DOMAttr*
NewAttribute(
const G4String&,
const G4String&);
119 xercesc::DOMAttr*
NewAttribute(
const G4String&,
const G4double&);
120 xercesc::DOMElement*
NewElement(
const G4String&);
121 G4String
Modularize(
const G4VPhysicalVolume*
const topvol,
134 xercesc::DOMDocument*
doc;
std::vector< PHG4GDMLAuxStructType > PHG4GDMLAuxListType
DepthMapType & DepthMap()
G4String GenerateName(const G4String &, const void *const)
virtual void StructureWrite(xercesc::DOMElement *)=0
PHG4GDMLAuxListType auxList
void AddAuxiliary(PHG4GDMLAuxStructType myaux)
VolumeMapType & VolumeMap()
virtual void AddExtension(xercesc::DOMElement *, const G4LogicalVolume *const)
void AddModule(const G4VPhysicalVolume *const topVol)
virtual void ExtensionWrite(xercesc::DOMElement *)
virtual void MaterialsWrite(xercesc::DOMElement *)=0
void AddAuxInfo(PHG4GDMLAuxListType *auxInfoList, xercesc::DOMElement *element)
PhysVolumeMapType & PvolumeMap()
virtual void SolidsWrite(xercesc::DOMElement *)=0
G4String Modularize(const G4VPhysicalVolume *const topvol, const G4int depth)
xercesc::DOMElement * extElement
virtual void DefineWrite(xercesc::DOMElement *)=0
virtual void SetupWrite(xercesc::DOMElement *, const G4LogicalVolume *const)=0
xercesc::DOMElement * userinfoElement
static void SetAddPointerToName(G4bool)
virtual G4Transform3D TraverseVolumeTree(const G4LogicalVolume *const, const G4int)=0
xercesc::DOMDocument * doc
G4bool FileExists(const G4String &) const
virtual void UserinfoWrite(xercesc::DOMElement *)
xercesc::DOMElement * NewElement(const G4String &)
static G4bool addPointerToName
virtual void SurfacesWrite()=0
G4Transform3D Write(const G4String &filename, const G4LogicalVolume *const topLog, const G4String &schemaPath, const G4int depth, G4bool storeReferences=true)
xercesc::DOMAttr * NewAttribute(const G4String &, const G4String &)