]> git.uio.no Git - u/mrichter/AliRoot.git/blob - TGeant4/TG4XMLConvertor.h
added methods: Open/CloseMaterials(), WriteRotation(), Increase/DecreaseIndention...
[u/mrichter/AliRoot.git] / TGeant4 / TG4XMLConvertor.h
1 // $Id$
2 // Category: geometry
3 // by I. Hrivnacova, 27.07.2000 
4 //
5 // XML convertor that converts G4 basic geometry objects 
6 // to XML defined by AGDD.dtd
7 // (ATLAS Generic Detector Description)
8
9 #ifndef TG4_XML_CONVERTOR_H
10 #define TG4_XML_CONVERTOR_H
11
12 #include "TG4VXMLConvertor.h"
13 #include "TG4Globals.h"
14
15 #include <globals.hh>
16 #include <g4std/fstream>
17
18 class G4Material;
19 class G4VSolid;
20 class G4LogicalVolume;
21 class G4Box;
22 class G4Tubs;
23 class G4Trd;
24
25 class TG4XMLConvertor : public TG4VXMLConvertor
26 {
27   public:
28     TG4XMLConvertor(G4std::ofstream& outFile);
29     virtual ~TG4XMLConvertor();
30
31     // methods
32     virtual void OpenMaterials(const G4String& version, const G4String& date, 
33             const G4String& author, const G4String dtdVersion);
34     virtual void OpenSection(const G4String& name, const G4String& version,
35             const G4String& date, const G4String& author,
36             const G4String& topVolume);
37     virtual void OpenComposition(const G4String& name);
38     virtual void CloseMaterials();
39     virtual void CloseSection();
40     virtual void CloseComposition();
41
42     virtual void WriteMaterial(const G4Material* material); 
43     virtual void WriteSolid(const G4VSolid* solid, G4String materialName); 
44     virtual void WriteRotation(const G4RotationMatrix* rotation); 
45     virtual void WritePosition(G4String solidName, G4ThreeVector position); 
46     virtual void WritePositionWithRotation(
47                                G4String solidName, G4ThreeVector position,
48                                const G4RotationMatrix* rotation); 
49     virtual void WriteEmptyLine();
50     virtual void IncreaseIndention();
51     virtual void DecreaseIndention();
52
53   private:
54     //methods
55     void CutName(G4String& name) const;
56     void CutName(G4String& name, G4int size) const;
57     void PutName(G4String& element, G4String name, G4String templ) const;
58     void WriteBox (const G4Box*  box,  G4String materialName); 
59     void WriteTubs(const G4Tubs* tubs, G4String materialName); 
60     void WriteTrd (const G4Trd*  trd,  G4String materialName); 
61   
62     // static data members
63     static const G4int fgkMaxVolumeNameLength;
64     static const G4int fgkMaxMaterialNameLength;
65
66     // data members
67     G4std::ofstream&  fOutFile;          //output file
68     TG4StringSet      fMaterialNames;    //set of names of materials 
69     TG4StringSet      fSolidNames;       //set of names of solids
70     TG4RotationMatrixVector  fRotations; // vector of rot matrices
71     const G4String    fBasicIndention;   //basic indention 
72     G4String          fIndention;        //indention string
73 };
74
75 #endif //TG4_XML_CONVERTOR_H
76