]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4XMLGeometryGenerator.h
moved from geometry to digits+hits; added comment lines separating methods
[u/mrichter/AliRoot.git] / TGeant4 / TG4XMLGeometryGenerator.h
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 "TG4Globals.h"
13
14 #include <globals.hh>
15 #include <g4std/fstream>
16
17 class TG4VXMLConvertor;
18
19 class G4LogicalVolume;
20
21 class TG4XMLGeometryGenerator
22 {
23   public:
24     TG4XMLGeometryGenerator();
25     // --> protected
26     // TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
27     virtual ~TG4XMLGeometryGenerator();
28
29     // static access method
30     static TG4XMLGeometryGenerator* Instance();
31
32     // methods
33     void GenerateMaterials(const G4String& version, const G4String& date,
34             const G4String& author,  const G4String dtdVersion,
35             G4LogicalVolume* lv);
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);
40     void CloseFile();
41
42   protected:
43     TG4XMLGeometryGenerator(const TG4XMLGeometryGenerator& right);
44
45     // operators
46     TG4XMLGeometryGenerator& operator=(const TG4XMLGeometryGenerator& right);
47
48   private:
49     // methods
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();
57
58     // static data members
59     static TG4XMLGeometryGenerator*  fgInstance;     //this instance
60
61     // data members
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
66 };
67
68
69 // inline methods
70 inline TG4XMLGeometryGenerator* TG4XMLGeometryGenerator::Instance()
71 { return fgInstance; }
72
73 #endif //TG4_GEOMETRY_XML_MANAGER_H
74