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;
31 class TG4XMLConvertor : public TG4VXMLConvertor
34 TG4XMLConvertor(G4std::ofstream& outFile);
35 virtual ~TG4XMLConvertor();
38 virtual void OpenMaterials(const G4String& version, const G4String& date,
39 const G4String& author, const G4String dtdVersion);
40 virtual void OpenSection(const G4String& name, const G4String& version,
41 const G4String& date, const G4String& author,
42 const G4String& topVolume);
43 virtual void OpenComposition(const G4String& name);
44 virtual void CloseMaterials();
45 virtual void CloseSection();
46 virtual void CloseComposition();
48 virtual void WriteMaterial(const G4Material* material);
49 virtual void WriteSolid(G4String lvName, const G4VSolid* solid,
50 G4String materialName);
51 virtual void WriteRotation(const G4RotationMatrix* rotation);
52 virtual void WritePosition(G4String lvName, G4ThreeVector position);
53 virtual void WritePositionWithRotation(
54 G4String lvName, G4ThreeVector position,
55 const G4RotationMatrix* rotation);
56 virtual void WriteReplica(G4String lvName, G4PVReplica* pvr);
57 virtual void WriteEmptyLine();
58 virtual void IncreaseIndention();
59 virtual void DecreaseIndention();
63 void CutName(G4String& name) const;
64 void CutName(G4String& name, G4int size) const;
65 void PutName(G4String& element, G4String name, G4String templ) const;
68 void WriteBox (G4String lvName, const G4Box* box, G4String materialName);
69 void WriteTubs(G4String lvName, const G4Tubs* tubs, G4String materialName);
70 void WriteCons(G4String lvName, const G4Cons* cons, G4String materialName);
71 void WriteTrd (G4String lvName, const G4Trd* trd, G4String materialName);
72 void WriteTrap(G4String lvName, const G4Trap* trap, G4String materialName);
73 void WritePara(G4String lvName, const G4Para* para, G4String materialName);
74 void WritePolycone(G4String lvName, const G4Polycone* polycone,
75 G4String materialName);
76 void WritePolyhedra(G4String lvName, const G4Polyhedra* polyhedra,
77 G4String materialName);
79 // static data members
80 static const G4int fgkMaxVolumeNameLength; //maximal volume name length
81 static const G4int fgkMaxMaterialNameLength;//maximal material name length
84 G4std::ofstream& fOutFile; //output file
85 const G4String fkBasicIndention; //basic indention
86 G4String fIndention; //indention string
87 G4int fRotationCounter; //counter of rotations
88 TG4RotationMatrixVector fRotations; // vector of rot matrices
91 #endif //TG4_XML_CONVERTOR_H