3 // by I. Hrivnacova, 27.07.2000
5 // Singleton class for generation of geometry data files in XML,
6 // the XML format is independent from G4 geometry
9 #ifndef TG4_XML_GEOMETRY_GENERATOR_H
10 #define TG4_XML_GEOMETRY_GENERATOR_H
12 #include "TG4Globals.h"
15 #include <g4std/fstream>
17 class TG4VXMLConvertor;
19 class G4LogicalVolume;
21 class TG4XMLGeometryGenerator
24 TG4XMLGeometryGenerator();
26 // TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
27 virtual ~TG4XMLGeometryGenerator();
29 // static access method
30 static TG4XMLGeometryGenerator* Instance();
33 void GenerateMaterials(const G4String& version, const G4String& date,
34 const G4String& author, const G4String dtdVersion,
36 void GenerateSection(const G4String& name, const G4String& version,
37 const G4String& date, const G4String& author,
38 const G4String& topVolume, G4LogicalVolume* lv);
39 void OpenFile(G4String filePath);
43 TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
46 TG4XMLGeometryGenerator& operator=(const TG4XMLGeometryGenerator& right);
50 void CutName(G4String& name) const;
51 void ProcessLogicalVolume(G4LogicalVolume* lv);
52 void ProcessMaterials(G4LogicalVolume* lv);
53 void ProcessSolids(G4LogicalVolume* lv);
54 void ProcessRotations(G4LogicalVolume* lv);
55 void ClearMaterialNames();
56 void ClearVolumeNames();
58 // static data members
59 static TG4XMLGeometryGenerator* fgInstance; //this instance
62 TG4VXMLConvertor* fConvertor; //interface to XML convertor
63 G4std::ofstream fOutFile; //output file
64 TG4StringSet fMaterialNames; //set of names of materials
65 TG4StringSet fVolumeNames; //set of names of solids
70 inline TG4XMLGeometryGenerator* TG4XMLGeometryGenerator::Instance()
71 { return fgInstance; }
73 #endif //TG4_GEOMETRY_XML_MANAGER_H