ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4GDMLWriteSolids.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4GDMLWriteSolids.hh
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 //
27 //
28 //
29 // class G4GDMLWriteSolids
30 //
31 // Class description:
32 //
33 // GDML class for writing solids.
34 
35 // History:
36 // - Created. Zoltan Torzsok, November 2007
37 // -------------------------------------------------------------------------
38 
39 #ifndef _G4GDMLWRITESOLIDS_INCLUDED_
40 #define _G4GDMLWRITESOLIDS_INCLUDED_
41 
42 #include "G4Types.hh"
43 
44 #include "G4GDMLWriteMaterials.hh"
45 #include "G4MultiUnion.hh"
46 
47 class G4BooleanSolid;
48 class G4ScaledSolid;
49 class G4Box;
50 class G4Cons;
51 class G4EllipticalCone;
52 class G4Ellipsoid;
53 class G4EllipticalTube;
54 class G4ExtrudedSolid;
55 class G4Hype;
56 class G4Orb;
57 class G4Para;
58 class G4Paraboloid;
59 class G4Polycone;
60 class G4GenericPolycone;
61 class G4Polyhedra;
62 class G4Sphere;
63 class G4TessellatedSolid;
64 class G4Tet;
65 class G4Torus;
66 class G4GenericTrap;
67 class G4Trap;
68 class G4Trd;
69 class G4Tubs;
70 class G4CutTubs;
71 class G4TwistedBox;
72 class G4TwistedTrap;
73 class G4TwistedTrd;
74 class G4TwistedTubs;
75 class G4VSolid;
76 class G4OpticalSurface;
77 
79 {
81  {
82  public:
83 
85  {
86  if(t1.x() < t2.x())
87  return true;
88 
89  if(t1.y() < t2.y())
90  return true;
91 
92  if(t1.z() < t2.z())
93  return true;
94 
95  return false;
96  }
97  };
98 
99  public:
100 
101  virtual void AddSolid(const G4VSolid* const);
102  virtual void SolidsWrite(xercesc::DOMElement*);
103 
104  protected:
105 
107  virtual ~G4GDMLWriteSolids();
108 
109  void MultiUnionWrite(xercesc::DOMElement* solElement, const G4MultiUnion* const);
110  void BooleanWrite(xercesc::DOMElement*, const G4BooleanSolid* const);
111  void ScaledWrite(xercesc::DOMElement*, const G4ScaledSolid* const);
112  void BoxWrite(xercesc::DOMElement*, const G4Box* const);
113  void ConeWrite(xercesc::DOMElement*, const G4Cons* const);
114  void ElconeWrite(xercesc::DOMElement*, const G4EllipticalCone* const);
115  void EllipsoidWrite(xercesc::DOMElement*, const G4Ellipsoid* const);
116  void EltubeWrite(xercesc::DOMElement*, const G4EllipticalTube* const);
117  void XtruWrite(xercesc::DOMElement*, const G4ExtrudedSolid* const);
118  void HypeWrite(xercesc::DOMElement*, const G4Hype* const);
119  void OrbWrite(xercesc::DOMElement*, const G4Orb* const);
120  void ParaWrite(xercesc::DOMElement*, const G4Para* const);
121  void ParaboloidWrite(xercesc::DOMElement*, const G4Paraboloid* const);
122  void PolyconeWrite(xercesc::DOMElement*, const G4Polycone* const);
123  void GenericPolyconeWrite(xercesc::DOMElement*, const G4GenericPolycone* const);
124  void PolyhedraWrite(xercesc::DOMElement*, const G4Polyhedra* const);
125  void SphereWrite(xercesc::DOMElement*, const G4Sphere* const);
126  void TessellatedWrite(xercesc::DOMElement*, const G4TessellatedSolid* const);
127  void TetWrite(xercesc::DOMElement*, const G4Tet* const);
128  void TorusWrite(xercesc::DOMElement*, const G4Torus* const);
129  void GenTrapWrite(xercesc::DOMElement*, const G4GenericTrap* const);
130  void TrapWrite(xercesc::DOMElement*, const G4Trap* const);
131  void TrdWrite(xercesc::DOMElement*, const G4Trd* const);
132  void TubeWrite(xercesc::DOMElement*, const G4Tubs* const);
133  void CutTubeWrite(xercesc::DOMElement*, const G4CutTubs* const);
134  void TwistedboxWrite(xercesc::DOMElement*, const G4TwistedBox* const);
135  void TwistedtrapWrite(xercesc::DOMElement*, const G4TwistedTrap* const);
136  void TwistedtrdWrite(xercesc::DOMElement*, const G4TwistedTrd* const);
137  void TwistedtubsWrite(xercesc::DOMElement*, const G4TwistedTubs* const);
138  void ZplaneWrite(xercesc::DOMElement*, const G4double&,
139  const G4double&, const G4double&);
140  void RZPointWrite(xercesc::DOMElement*, const G4double&,const G4double&);
141  void OpticalSurfaceWrite(xercesc::DOMElement*,
142  const G4OpticalSurface* const);
143  void PropertyWrite(xercesc::DOMElement*, const G4OpticalSurface* const);
144 
145 
146  protected:
147 
148  std::vector<const G4VSolid*> solidList;
149  xercesc::DOMElement* solidsElement;
150  static const G4int maxTransforms = 8; // Constant for limiting the number
151  // of displacements/reflections
152  // applied to a single solid
153 };
154 
155 #endif