]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TGeant4/TG4XMLGeometryGenerator.h
applied corrections of first implementation; separated materials from section (added...
[u/mrichter/AliRoot.git] / TGeant4 / TG4XMLGeometryGenerator.h
CommitLineData
240601e9 1// $Id$
2// Category: geometry
3// by I. Hrivnacova, 27.07.2000
4//
5// Singleton class for generation of geometry data files in XML,
6// the XML format is independent from G4 geometry
7// object model.
8
9#ifndef TG4_XML_GEOMETRY_GENERATOR_H
10#define TG4_XML_GEOMETRY_GENERATOR_H
11
12#include <globals.hh>
13#include <g4std/fstream>
14
15class TG4VXMLConvertor;
16
17class G4LogicalVolume;
18
19class TG4XMLGeometryGenerator
20{
21 public:
22 TG4XMLGeometryGenerator();
23 // --> protected
24 // TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
25 virtual ~TG4XMLGeometryGenerator();
26
27 // static access method
28 static TG4XMLGeometryGenerator* Instance();
29
30 // methods
31 void GenerateSection(const G4String& name, const G4String& version,
32 const G4String& date, const G4String& author,
33 const G4String& topVolume, G4LogicalVolume* lv);
34 void OpenFile(G4String filePath);
35 void CloseFile();
36
37 protected:
38 TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
39
40 // operators
41 TG4XMLGeometryGenerator& operator=(const TG4XMLGeometryGenerator& right);
42
43 private:
44 // methods
45 void ProcessLogicalVolume(G4LogicalVolume* lv);
46 void ProcessMaterials(G4LogicalVolume* lv);
47 void ProcessSolids(G4LogicalVolume* lv);
48
49 // static data members
50 static TG4XMLGeometryGenerator* fgInstance; //this instance
51
52 // data members
53 TG4VXMLConvertor* fConvertor; //interface to XML convertor
54 G4std::ofstream fOutFile; //output file
55};
56
57
58// inline methods
59inline TG4XMLGeometryGenerator* TG4XMLGeometryGenerator::Instance()
60{ return fgInstance; }
61
62#endif //TG4_GEOMETRY_XML_MANAGER_H
63