3 // by I. Hrivnacova, 27.07.2000
5 // XML convertor that converts G4 basic geometry objects
6 // to XML defined by AGDD.dtd
7 // (ATLAS Generic Detector Description)
9 #ifndef TG4_XML_CONVERTOR_H
10 #define TG4_XML_CONVERTOR_H
12 #include "TG4VXMLConvertor.h"
13 #include "TG4Globals.h"
16 #include <g4std/fstream>
20 class G4LogicalVolume;
25 class TG4XMLConvertor : public TG4VXMLConvertor
28 TG4XMLConvertor(G4std::ofstream& outFile);
29 virtual ~TG4XMLConvertor();
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();
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();
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);
62 // static data members
63 static const G4int fgkMaxVolumeNameLength;
64 static const G4int fgkMaxMaterialNameLength;
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
75 #endif //TG4_XML_CONVERTOR_H