4 // Author: I. Hrivnacova, 27.07.2000
6 // Class TG4XMLGeometryGenerator
7 // -----------------------------
8 // Singleton class for generation of geometry data files in XML,
9 // the XML format is independent from G4 geometry
12 #ifndef TG4_XML_GEOMETRY_GENERATOR_H
13 #define TG4_XML_GEOMETRY_GENERATOR_H
15 #include "TG4Verbose.h"
16 #include "TG4Globals.h"
19 #include <g4std/fstream>
21 class TG4VXMLConvertor;
23 class G4LogicalVolume;
25 class TG4XMLGeometryGenerator : public TG4Verbose
28 TG4XMLGeometryGenerator();
30 // TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
31 virtual ~TG4XMLGeometryGenerator();
33 // static access method
34 static TG4XMLGeometryGenerator* Instance();
37 void GenerateMaterials(const G4String& version, const G4String& date,
38 const G4String& author, const G4String dtdVersion,
40 void GenerateSection(const G4String& name, const G4String& version,
41 const G4String& date, const G4String& author,
42 const G4String& topVolume, G4LogicalVolume* lv);
43 void OpenFile(G4String filePath);
47 TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
50 TG4XMLGeometryGenerator& operator=(const TG4XMLGeometryGenerator& right);
54 void CutName(G4String& name) const;
55 void ProcessLogicalVolume(G4LogicalVolume* lv);
56 void ProcessMaterials(G4LogicalVolume* lv);
57 void ProcessSolids(G4LogicalVolume* lv);
58 void ProcessRotations(G4LogicalVolume* lv);
59 void ClearMaterialNames();
60 void ClearVolumeNames();
62 // static data members
63 static TG4XMLGeometryGenerator* fgInstance; //this instance
66 TG4VXMLConvertor* fConvertor; //interface to XML convertor
67 G4std::ofstream fOutFile; //output file
68 TG4StringSet fMaterialNames; //set of names of materials
69 TG4StringSet fVolumeNames; //set of names of solids
74 inline TG4XMLGeometryGenerator* TG4XMLGeometryGenerator::Instance()
75 { return fgInstance; }
77 #endif //TG4_GEOMETRY_XML_MANAGER_H