Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4GDMLWriteSolids.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4GDMLWriteSolids
27//
28// Class description:
29//
30// GDML class for writing solids.
31
32// Author: Zoltan Torzsok, November 2007
33// --------------------------------------------------------------------
34#ifndef G4GDMLWRITESOLIDS_HH
35#define G4GDMLWRITESOLIDS_HH 1
36
37#include "G4Types.hh"
38
40#include "G4MultiUnion.hh"
41
42class G4BooleanSolid;
43class G4ScaledSolid;
44class G4Box;
45class G4Cons;
47class G4Ellipsoid;
49class G4ExtrudedSolid;
50class G4Hype;
51class G4Orb;
52class G4Para;
53class G4Paraboloid;
54class G4Polycone;
56class G4Polyhedra;
57class G4Sphere;
59class G4Tet;
60class G4Torus;
61class G4GenericTrap;
62class G4Trap;
63class G4Trd;
64class G4Tubs;
65class G4CutTubs;
66class G4TwistedBox;
67class G4TwistedTrap;
68class G4TwistedTrd;
69class G4TwistedTubs;
70class G4VSolid;
72
74{
75 class G4ThreeVectorCompare
76 {
77 public:
78
79 G4bool operator()(const G4ThreeVector& t1, const G4ThreeVector& t2) const
80 {
81 if(t1.x() < t2.x())
82 return true;
83
84 if(t1.y() < t2.y())
85 return true;
86
87 if(t1.z() < t2.z())
88 return true;
89
90 return false;
91 }
92 };
93
94 public:
95
96 virtual void AddSolid(const G4VSolid* const);
97 virtual void SolidsWrite(xercesc::DOMElement*);
98
99 protected:
100
102 virtual ~G4GDMLWriteSolids();
103
104 void MultiUnionWrite(xercesc::DOMElement* solElement,
105 const G4MultiUnion* const);
106 void BooleanWrite(xercesc::DOMElement*, const G4BooleanSolid* const);
107 void ScaledWrite(xercesc::DOMElement*, const G4ScaledSolid* const);
108 void BoxWrite(xercesc::DOMElement*, const G4Box* const);
109 void ConeWrite(xercesc::DOMElement*, const G4Cons* const);
110 void ElconeWrite(xercesc::DOMElement*, const G4EllipticalCone* const);
111 void EllipsoidWrite(xercesc::DOMElement*, const G4Ellipsoid* const);
112 void EltubeWrite(xercesc::DOMElement*, const G4EllipticalTube* const);
113 void XtruWrite(xercesc::DOMElement*, const G4ExtrudedSolid* const);
114 void HypeWrite(xercesc::DOMElement*, const G4Hype* const);
115 void OrbWrite(xercesc::DOMElement*, const G4Orb* const);
116 void ParaWrite(xercesc::DOMElement*, const G4Para* const);
117 void ParaboloidWrite(xercesc::DOMElement*, const G4Paraboloid* const);
118 void PolyconeWrite(xercesc::DOMElement*, const G4Polycone* const);
119 void GenericPolyconeWrite(xercesc::DOMElement*,
120 const G4GenericPolycone* const);
121 void PolyhedraWrite(xercesc::DOMElement*, const G4Polyhedra* const);
122 void SphereWrite(xercesc::DOMElement*, const G4Sphere* const);
123 void TessellatedWrite(xercesc::DOMElement*,
124 const G4TessellatedSolid* const);
125 void TetWrite(xercesc::DOMElement*, const G4Tet* const);
126 void TorusWrite(xercesc::DOMElement*, const G4Torus* const);
127 void GenTrapWrite(xercesc::DOMElement*, const G4GenericTrap* const);
128 void TrapWrite(xercesc::DOMElement*, const G4Trap* const);
129 void TrdWrite(xercesc::DOMElement*, const G4Trd* const);
130 void TubeWrite(xercesc::DOMElement*, const G4Tubs* const);
131 void CutTubeWrite(xercesc::DOMElement*, const G4CutTubs* const);
132 void TwistedboxWrite(xercesc::DOMElement*, const G4TwistedBox* const);
133 void TwistedtrapWrite(xercesc::DOMElement*, const G4TwistedTrap* const);
134 void TwistedtrdWrite(xercesc::DOMElement*, const G4TwistedTrd* const);
135 void TwistedtubsWrite(xercesc::DOMElement*, const G4TwistedTubs* const);
136 void ZplaneWrite(xercesc::DOMElement*, const G4double&, const G4double&,
137 const G4double&);
138 void RZPointWrite(xercesc::DOMElement*, const G4double&, const G4double&);
139 void OpticalSurfaceWrite(xercesc::DOMElement*,
140 const G4OpticalSurface* const);
141 void PropertyWrite(xercesc::DOMElement*, const G4OpticalSurface* const);
142
143 protected:
144
145 std::vector<const G4VSolid*> solidList;
146 xercesc::DOMElement* solidsElement = nullptr;
147 static const G4int maxTransforms = 8; // Constant for limiting the number
148 // of displacements/reflections
149 // applied to a single solid
150};
151
152#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
double z() const
double x() const
double y() const
Definition: G4Box.hh:56
Definition: G4Cons.hh:78
void TwistedtrdWrite(xercesc::DOMElement *, const G4TwistedTrd *const)
void TorusWrite(xercesc::DOMElement *, const G4Torus *const)
void RZPointWrite(xercesc::DOMElement *, const G4double &, const G4double &)
void TetWrite(xercesc::DOMElement *, const G4Tet *const)
void TrapWrite(xercesc::DOMElement *, const G4Trap *const)
void HypeWrite(xercesc::DOMElement *, const G4Hype *const)
void TwistedtrapWrite(xercesc::DOMElement *, const G4TwistedTrap *const)
void ScaledWrite(xercesc::DOMElement *, const G4ScaledSolid *const)
void MultiUnionWrite(xercesc::DOMElement *solElement, const G4MultiUnion *const)
virtual void AddSolid(const G4VSolid *const)
void PolyhedraWrite(xercesc::DOMElement *, const G4Polyhedra *const)
void TessellatedWrite(xercesc::DOMElement *, const G4TessellatedSolid *const)
void GenTrapWrite(xercesc::DOMElement *, const G4GenericTrap *const)
void TwistedboxWrite(xercesc::DOMElement *, const G4TwistedBox *const)
void TubeWrite(xercesc::DOMElement *, const G4Tubs *const)
void ParaboloidWrite(xercesc::DOMElement *, const G4Paraboloid *const)
std::vector< const G4VSolid * > solidList
void SphereWrite(xercesc::DOMElement *, const G4Sphere *const)
void BoxWrite(xercesc::DOMElement *, const G4Box *const)
void OrbWrite(xercesc::DOMElement *, const G4Orb *const)
void TwistedtubsWrite(xercesc::DOMElement *, const G4TwistedTubs *const)
void EltubeWrite(xercesc::DOMElement *, const G4EllipticalTube *const)
void BooleanWrite(xercesc::DOMElement *, const G4BooleanSolid *const)
void ElconeWrite(xercesc::DOMElement *, const G4EllipticalCone *const)
void ConeWrite(xercesc::DOMElement *, const G4Cons *const)
void GenericPolyconeWrite(xercesc::DOMElement *, const G4GenericPolycone *const)
virtual void SolidsWrite(xercesc::DOMElement *)
xercesc::DOMElement * solidsElement
virtual ~G4GDMLWriteSolids()
static const G4int maxTransforms
void CutTubeWrite(xercesc::DOMElement *, const G4CutTubs *const)
void EllipsoidWrite(xercesc::DOMElement *, const G4Ellipsoid *const)
void PolyconeWrite(xercesc::DOMElement *, const G4Polycone *const)
void ParaWrite(xercesc::DOMElement *, const G4Para *const)
void PropertyWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
void TrdWrite(xercesc::DOMElement *, const G4Trd *const)
void XtruWrite(xercesc::DOMElement *, const G4ExtrudedSolid *const)
void OpticalSurfaceWrite(xercesc::DOMElement *, const G4OpticalSurface *const)
void ZplaneWrite(xercesc::DOMElement *, const G4double &, const G4double &, const G4double &)
Definition: G4Hype.hh:69
Definition: G4Orb.hh:56
Definition: G4Para.hh:79
Definition: G4Tet.hh:56
Definition: G4Trd.hh:63
Definition: G4Tubs.hh:75