Geant4 11.2.2
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()) { return true; }
82 if(t1.x() > t2.x()) { return false; }
83
84 if(t1.y() < t2.y()) { return true; }
85 if(t1.y() > t2.y()) { return false; }
86
87 if(t1.z() < t2.z()) { return true; }
88
89 return false;
90 }
91 };
92
93 public:
94
95 virtual void AddSolid(const G4VSolid* const);
96 virtual void SolidsWrite(xercesc::DOMElement*);
97
98 protected:
99
101 virtual ~G4GDMLWriteSolids();
102
103 void MultiUnionWrite(xercesc::DOMElement* solElement,
104 const G4MultiUnion* const);
105 void BooleanWrite(xercesc::DOMElement*, const G4BooleanSolid* const);
106 void ScaledWrite(xercesc::DOMElement*, const G4ScaledSolid* const);
107 void BoxWrite(xercesc::DOMElement*, const G4Box* const);
108 void ConeWrite(xercesc::DOMElement*, const G4Cons* const);
109 void ElconeWrite(xercesc::DOMElement*, const G4EllipticalCone* const);
110 void EllipsoidWrite(xercesc::DOMElement*, const G4Ellipsoid* const);
111 void EltubeWrite(xercesc::DOMElement*, const G4EllipticalTube* const);
112 void XtruWrite(xercesc::DOMElement*, const G4ExtrudedSolid* const);
113 void HypeWrite(xercesc::DOMElement*, const G4Hype* const);
114 void OrbWrite(xercesc::DOMElement*, const G4Orb* const);
115 void ParaWrite(xercesc::DOMElement*, const G4Para* const);
116 void ParaboloidWrite(xercesc::DOMElement*, const G4Paraboloid* const);
117 void PolyconeWrite(xercesc::DOMElement*, const G4Polycone* const);
118 void GenericPolyconeWrite(xercesc::DOMElement*,
119 const G4GenericPolycone* const);
120 void PolyhedraWrite(xercesc::DOMElement*, const G4Polyhedra* const);
121 void SphereWrite(xercesc::DOMElement*, const G4Sphere* const);
122 void TessellatedWrite(xercesc::DOMElement*,
123 const G4TessellatedSolid* const);
124 void TetWrite(xercesc::DOMElement*, const G4Tet* const);
125 void TorusWrite(xercesc::DOMElement*, const G4Torus* const);
126 void GenTrapWrite(xercesc::DOMElement*, const G4GenericTrap* const);
127 void TrapWrite(xercesc::DOMElement*, const G4Trap* const);
128 void TrdWrite(xercesc::DOMElement*, const G4Trd* const);
129 void TubeWrite(xercesc::DOMElement*, const G4Tubs* const);
130 void CutTubeWrite(xercesc::DOMElement*, const G4CutTubs* const);
131 void TwistedboxWrite(xercesc::DOMElement*, const G4TwistedBox* const);
132 void TwistedtrapWrite(xercesc::DOMElement*, const G4TwistedTrap* const);
133 void TwistedtrdWrite(xercesc::DOMElement*, const G4TwistedTrd* const);
134 void TwistedtubsWrite(xercesc::DOMElement*, const G4TwistedTubs* const);
135 void ZplaneWrite(xercesc::DOMElement*, const G4double&, const G4double&,
136 const G4double&);
137 void RZPointWrite(xercesc::DOMElement*, const G4double&, const G4double&);
138 void OpticalSurfaceWrite(xercesc::DOMElement*,
139 const G4OpticalSurface* const);
140 void PropertyWrite(xercesc::DOMElement*, const G4OpticalSurface* const);
141
142 protected:
143
144 std::vector<const G4VSolid*> solidList;
145 xercesc::DOMElement* solidsElement = nullptr;
146 static const G4int maxTransforms = 8; // Constant for limiting the number
147 // of displacements/reflections
148 // applied to a single solid
149};
150
151#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
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
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 G4Orb.hh:56
Definition G4Tet.hh:56
Definition G4Trd.hh:63