Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGDMLWrite.h
Go to the documentation of this file.
1// @(#)root/gdml:$Id$
2// Author: Anton Pytel 15/9/2011
3
4/*************************************************************************
5 * Copyright (C) 1995-2011, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TGDMLWRITE
13#define ROOT_TGDMLWRITE
14
15#include "TGeoMatrix.h"
16#include "TGeoElement.h"
17#include "TXMLEngine.h"
18#include "TGeoVolume.h"
19#include "TGeoParaboloid.h"
20#include "TGeoSphere.h"
21#include "TGeoArb8.h"
22#include "TGeoCone.h"
23#include "TGeoPara.h"
24#include "TGeoTrd1.h"
25#include "TGeoTrd2.h"
26#include "TGeoTube.h"
27#include "TGeoPcon.h"
28#include "TGeoTorus.h"
29#include "TGeoPgon.h"
30#include "TGeoXtru.h"
31#include "TGeoEltu.h"
32#include "TGeoHype.h"
33#include "TGeoBoolNode.h"
34#include "TGeoCompositeShape.h"
35#include "TGeoScaledShape.h"
36#include "TGeoTessellated.h"
37#include "TGeoManager.h"
38#include "TGDMLMatrix.h"
39
40#include <map>
41#include <set>
42#include <iostream>
43
44////////////////////////////////////////////////////////////////////////////
45// //
46// TGDMLWrite - Class for exporting geometries From ROOT's gGeoManager //
47// (instance of TGeoManager class) To GDML file. More about GDML //
48// see http://gdml.web.cern.ch. //
49// //
50////////////////////////////////////////////////////////////////////////////
51
53class TGeoSkinSurface;
55
56class TGDMLWrite : public TObject {
57public:
58 TGDMLWrite();
59 ~TGDMLWrite() override;
60
61 static void StartGDMLWriting(TGeoManager *geomanager, const char *filename, TString option)
62 {
63 // static function -
64 // options:
65 // g - set by default - geant4 compatibility
66 // f,n - if none of this two is set then naming convention is
67 // with incremental suffix, if "f" then suffix is pointer
68 // if "n" then there is no suffix, but uniqness of names
69 // is not secured.
71 writer->WriteGDMLfile(geomanager, filename, option);
72 delete writer;
73 }
74 // wrapper of all main methods for extraction
75 void WriteGDMLfile(TGeoManager *geomanager, const char *filename = "test.gdml", TString option = "");
76 // Wrapper to only selectively write one branch of the volume hierarchy to file
77 void
78 WriteGDMLfile(TGeoManager *geomanager, TGeoNode *top_node, const char *filename = "test.gdml", TString option = "");
79
81 void SetNamingSpeed(ENamingType naming);
82 // Ignore dummy material instance, which causes trouble reading GDML in Geant4
84 void SetG4Compatibility(Bool_t G4Compatible) { fgG4Compatibility = G4Compatible; };
85
86private:
87 struct Xyz {
91 };
92
93 typedef std::set<const TGeoOpticalSurface *> SurfaceList;
94 typedef std::set<const TGeoVolume *> VolList;
95 typedef std::set<const TGeoNode *> NodeList;
96 typedef std::map<TString, Bool_t> NameList;
97 typedef std::map<TString, TString> NameListS;
98 typedef std::map<TString, Int_t> NameListI;
99 typedef std::map<TString, Float_t> NameListF;
100 struct StructLst {
102 }; // to store pointers
103 struct NameLst {
104 NameListS fLst; // to map pointers with names
105 NameListI fLstIter; // to store all the iterators for repeating names
106 };
107
108 // General lists
109 StructLst *fIsotopeList; // list of isotopes
110 StructLst *fElementList; // list of elements
111 StructLst *fAccPatt; // list of accepted patterns for division
112 StructLst *fRejShape; // list of rejected shapes
113 SurfaceList fSurfaceList; // list of optical surfaces
114 VolList fVolumeList; // list of volumes
115 NodeList fNodeList; // list of placed volumes
116
117 NameLst *fNameList; // list of names (pointer mapped)
118
119 // Data members
120 static TGDMLWrite *fgGDMLWrite; // pointer to gdml writer
121 Int_t fgNamingSpeed; // input option for volume and solid naming
122 Int_t fIgnoreDummyMaterial; // Flag to ignore TGeo's dummy material
123 Bool_t fgG4Compatibility; // input option for Geant4 compatibility
124 XMLDocPointer_t fGdmlFile; // pointer storing xml file
125 TString fDefault_lunit; // Default unit of length (depends on ROOT unit system)
126 TString fTopVolumeName; // name of top volume
127 TGeoVolume *fTopVolume = nullptr; // top volume of the tree being written
128 TXMLEngine *fGdmlE; // xml engine pointer
129
130 XMLNodePointer_t fDefineNode; // main <define> node...
131 XMLNodePointer_t fMaterialsNode; // main <materials> node...
132 XMLNodePointer_t fSolidsNode; // main <solids> node...
133 XMLNodePointer_t fStructureNode; // main <structure> node...
134 Int_t fVolCnt; // count of volumes
135 Int_t fPhysVolCnt; // count of physical volumes
136 UInt_t fActNameErr; // count of name errors
137 UInt_t fSolCnt; // count of name solids
138 UInt_t fFltPrecision; //! floating point precision when writing
139
140 static const UInt_t fgkProcBit = BIT(14); // 14th bit is set when solid is processed
141 static const UInt_t fgkProcBitVol = BIT(19); // 19th bit is set when volume is processed
142 static const UInt_t fgkMaxNameErr = 5; // maximum number of errors for naming
143
144 // I. Methods processing the gGeoManager geometry object structure
145 // 1. Main methods to extract everything from ROOT gGeoManager
146 XMLNodePointer_t ExtractMaterials(TList *materialsLst); // result <materials>...
147 TString ExtractSolid(TGeoShape *volShape); // adds <shape> to <solids>
148 void ExtractVolumes(TGeoNode *topNode); // result <volume> node... + corresp. shape
149 void ExtractMatrices(TObjArray *matrices); // adds <matrix> to <define>
150 void ExtractConstants(TGeoManager *geom); // adds <constant> to <define>
151 void ExtractOpticalSurfaces(TObjArray *surfaces); // adds <opticalsurface> to <solids>
152 void ExtractSkinSurfaces(TObjArray *surfaces); // adds <skinsurface> to <structure>
153 void ExtractBorderSurfaces(TObjArray *surfaces); // adds <bordersurface> to <structure>
154
155 // Combined implementation to extract GDML information from the geometry tree
156 void WriteGDMLfile(TGeoManager *geomanager, TGeoNode *top_node, TList *materialsLst, const char *filename,
158
159 // 1.1 Materials sub methods - creating Nodes
160 XMLNodePointer_t CreateAtomN(Double_t atom, const char *unit = "g/mole");
161 XMLNodePointer_t CreateDN(Double_t density, const char *unit = "g/cm3");
162 XMLNodePointer_t CreateFractionN(Double_t percentage, const char *refName);
164
165 XMLNodePointer_t CreateIsotopN(TGeoIsotope *isotope, const char *name);
166 XMLNodePointer_t CreateElementN(TGeoElement *element, XMLNodePointer_t materials, const char *name);
169
170 // 1.2 Solids sub methods
173
201
203
204 // 1.3 Volume sub methods
205 XMLNodePointer_t CreatePhysVolN(const char *name, Int_t copyno, const char *volref, const char *posref,
206 const char *rotref, XMLNodePointer_t scaleN);
207 XMLNodePointer_t CreateDivisionN(Double_t offset, Double_t width, Int_t number, const char *axis, const char *unit,
208 const char *volref);
209
210 XMLNodePointer_t CreateSetupN(const char *topVolName, const char *name = "default", const char *version = "1.0");
211 XMLNodePointer_t StartVolumeN(const char *name, const char *solid, const char *material);
213
214 // II. Utility methods
215 Xyz GetXYZangles(const Double_t *rotationMatrix);
216 // nodes to create position, rotation and similar types first-position/rotation...
217 XMLNodePointer_t CreatePositionN(const char *name, Xyz position, const char *type, const char *unit);
219 CreateRotationN(const char *name, Xyz rotation, const char *type = "rotation", const char *unit = "deg");
222 TGeoCompositeShape *CreateFakeCtub(TGeoCtub *geoShape); // create fake cut tube as intersection
223
224 // check name (2nd parameter) whether it is in the list (1st parameter)
225 Bool_t IsInList(NameList list, TString name2check);
226 TString GenName(TString oldname);
227 TString GenName(TString oldname, TString objPointer);
228 Bool_t CanProcess(TObject *pointer);
229 TString GetPattAxis(Int_t divAxis, const char *pattName, TString &unit);
230 Bool_t IsNullParam(Double_t parValue, TString parName, TString objName);
231 void UnsetTemporaryBits(TGeoManager *geoMng);
233 void SetFltPrecision(UInt_t prec) { fFltPrecision = prec; }
234
235 ////////////////////////////////////////////////////////////////////////////////
236 //
237 // Backwards compatibility for old DD4hep version (to be removed in the future)
238 //
239 ////////////////////////////////////////////////////////////////////////////////
240public:
241 // Backwards compatibility (to be removed in the future): Wrapper to only selectively write one branch
242 void
243 WriteGDMLfile(TGeoManager *geomanager, TGeoVolume *top_vol, const char *filename = "test.gdml", TString option = "");
244
245private:
246 // Backwards compatibility (to be removed in the future): Combined implementation to extract GDML information from
247 // the geometry tree
248 void WriteGDMLfile(TGeoManager *geomanager, TGeoVolume *top_vol, TList *materialsLst, const char *filename,
250 void ExtractVolumes(TGeoVolume *topVolume); // result <volume> node... + corresp. shape
251
252 ClassDefOverride(TGDMLWrite, 0) // imports GDML using DOM and binds it to ROOT
253};
254
255#endif /* ROOT_TGDMLWRITE */
#define BIT(n)
Definition Rtypes.h:85
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t atom
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t width
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t property
char name[80]
Definition TGX11.cxx:110
void * XMLNodePointer_t
Definition TXMLEngine.h:17
void * XMLDocPointer_t
Definition TXMLEngine.h:20
This class is used in the process of reading and writing the GDML "matrix" tag.
Definition TGDMLMatrix.h:33
This class contains implementation of converting ROOT's gGeoManager geometry to GDML file.
Definition TGDMLWrite.h:56
XMLNodePointer_t fSolidsNode
Definition TGDMLWrite.h:132
StructLst * fElementList
Definition TGDMLWrite.h:110
void UnsetTemporaryBits(TGeoManager *geoMng)
Unsetting bits that were changed in gGeoManager during export so that export can be run more times wi...
std::map< TString, Bool_t > NameList
Definition TGDMLWrite.h:96
TString fTopVolumeName
Definition TGDMLWrite.h:126
XMLNodePointer_t CreateDivisionN(Double_t offset, Double_t width, Int_t number, const char *axis, const char *unit, const char *volref)
Creates "divisionvol" node for GDML.
static const UInt_t fgkProcBitVol
Definition TGDMLWrite.h:141
XMLNodePointer_t CreatePolyconeN(TGeoPcon *geoShape)
Creates "polycone" node for GDML.
XMLNodePointer_t CreateFractionN(Double_t percentage, const char *refName)
Creates "fraction" node for GDML.
void ExtractMatrices(TObjArray *matrices)
Method exporting GDML matrices.
XMLDocPointer_t fGdmlFile
Definition TGDMLWrite.h:124
SurfaceList fSurfaceList
Definition TGDMLWrite.h:113
UInt_t GetFltPrecision() const
Definition TGDMLWrite.h:232
void SetG4Compatibility(Bool_t G4Compatible)
Definition TGDMLWrite.h:84
XMLNodePointer_t CreateParaboloidN(TGeoParaboloid *geoShape)
Creates "paraboloid" node for GDML.
TGeoCompositeShape * CreateFakeCtub(TGeoCtub *geoShape)
Method creating cutTube as an intersection of tube and two boxes.
TGDMLWrite()
Default constructor.
Int_t fIgnoreDummyMaterial
Definition TGDMLWrite.h:122
XMLNodePointer_t CreateBoxN(TGeoBBox *geoShape)
Creates "box" node for GDML.
std::map< TString, Float_t > NameListF
Definition TGDMLWrite.h:99
XMLNodePointer_t CreateMaterialN(TGeoMaterial *material, TString mname)
Creates "material" node for GDML.
VolList fVolumeList
Definition TGDMLWrite.h:114
XMLNodePointer_t CreateSphereN(TGeoSphere *geoShape)
Creates "sphere" node for GDML.
XMLNodePointer_t CreateTwistedTrapN(TGeoGtra *geoShape)
Creates "twistedtrap" node for GDML.
TXMLEngine * fGdmlE
Definition TGDMLWrite.h:128
XMLNodePointer_t CreateZplaneN(Double_t z, Double_t rmin, Double_t rmax)
Creates "zplane" node for GDML.
static const UInt_t fgkMaxNameErr
Definition TGDMLWrite.h:142
Bool_t IsNullParam(Double_t parValue, TString parName, TString objName)
Check for null parameter to skip the NULL objects.
static TGDMLWrite * fgGDMLWrite
Definition TGDMLWrite.h:120
TString ExtractSolid(TGeoShape *volShape)
Method creating solid to xml file and returning its name.
XMLNodePointer_t CreateHypeN(TGeoHype *geoShape)
Creates "hype" node for GDML.
XMLNodePointer_t CreateElConeN(TGeoScaledShape *geoShape)
Creates "elcone" (elliptical cone) node for GDML this is a special case, because elliptical cone is n...
XMLNodePointer_t CreateConstantN(const char *name, Double_t value)
Creates "constant" kind of node for GDML.
XMLNodePointer_t CreateMatrixN(TGDMLMatrix const *matrix)
Creates "matrix" kind of node for GDML.
std::set< const TGeoOpticalSurface * > SurfaceList
Definition TGDMLWrite.h:93
XMLNodePointer_t CreateOpticalSurfaceN(TGeoOpticalSurface *geoSurf)
Creates "opticalsurface" node for GDML.
StructLst * fRejShape
Definition TGDMLWrite.h:112
UInt_t fSolCnt
Definition TGDMLWrite.h:137
Bool_t fgG4Compatibility
Definition TGDMLWrite.h:123
XMLNodePointer_t CreateMixtureN(TGeoMixture *mixture, XMLNodePointer_t materials, TString mname)
Creates "material" node for GDML with references to other sub elements.
std::map< TString, Int_t > NameListI
Definition TGDMLWrite.h:98
void ExtractBorderSurfaces(TObjArray *surfaces)
Method exporting border surfaces.
static const UInt_t fgkProcBit
floating point precision when writing
Definition TGDMLWrite.h:140
Bool_t CanProcess(TObject *pointer)
Method which tests whether solids can be processed.
UInt_t fActNameErr
Definition TGDMLWrite.h:136
std::set< const TGeoNode * > NodeList
Definition TGDMLWrite.h:95
XMLNodePointer_t CreatePolyhedraN(TGeoPgon *geoShape)
Creates "polyhedra" node for GDML.
void WriteGDMLfile(TGeoManager *geomanager, const char *filename="test.gdml", TString option="")
XMLNodePointer_t CreateRotationN(const char *name, Xyz rotation, const char *type="rotation", const char *unit="deg")
Creates "rotation" kind of node for GDML.
NodeList fNodeList
Definition TGDMLWrite.h:115
@ kwithoutSufixNotUniq
Definition TGDMLWrite.h:80
@ kelegantButSlow
Definition TGDMLWrite.h:80
@ kfastButUglySufix
Definition TGDMLWrite.h:80
XMLNodePointer_t CreatePropertyN(TNamed const &property)
Creates "property" node for GDML.
XMLNodePointer_t CreateElementN(TGeoElement *element, XMLNodePointer_t materials, const char *name)
Creates "element" node for GDML element node and attribute.
XMLNodePointer_t CreateConeN(TGeoConeSeg *geoShape)
Creates "cone" node for GDML from TGeoConeSeg object.
XMLNodePointer_t CreateSkinSurfaceN(TGeoSkinSurface *geoSurf)
Creates "skinsurface" node for GDML.
XMLNodePointer_t CreateTessellatedN(TGeoTessellated *geoShape)
Creates "tessellated" (tessellated shape) node for GDML.
XMLNodePointer_t CreateCutTubeN(TGeoCtub *geoShape)
Creates "cutTube" node for GDML.
XMLNodePointer_t fStructureNode
Definition TGDMLWrite.h:133
void ExtractSkinSurfaces(TObjArray *surfaces)
Method exporting skin surfaces.
XMLNodePointer_t fDefineNode
Definition TGDMLWrite.h:130
XMLNodePointer_t CreateTorusN(TGeoTorus *geoShape)
Creates "torus" node for GDML.
Int_t fgNamingSpeed
Definition TGDMLWrite.h:121
TGeoVolume * fTopVolume
Definition TGDMLWrite.h:127
XMLNodePointer_t CreatePositionN(const char *name, Xyz position, const char *type, const char *unit)
Creates "position" kind of node for GDML.
Int_t fVolCnt
Definition TGDMLWrite.h:134
XMLNodePointer_t ExtractMaterials(TList *materialsLst)
Method exporting materials.
XMLNodePointer_t fMaterialsNode
Definition TGDMLWrite.h:131
std::set< const TGeoVolume * > VolList
Definition TGDMLWrite.h:94
void ExtractOpticalSurfaces(TObjArray *surfaces)
Method exporting optical surfaces.
XMLNodePointer_t CreateDN(Double_t density, const char *unit="g/cm3")
Creates "D" density node for GDML.
void ExtractConstants(TGeoManager *geom)
Method exporting GDML matrices.
XMLNodePointer_t CreateArb8N(TGeoArb8 *geoShape)
Creates "arb8" node for GDML.
void SetFltPrecision(UInt_t prec)
Definition TGDMLWrite.h:233
XMLNodePointer_t StartVolumeN(const char *name, const char *solid, const char *material)
Creates "volume" node for GDML.
void SetNamingSpeed(ENamingType naming)
Set convention of naming solids and volumes.
TString GetPattAxis(Int_t divAxis, const char *pattName, TString &unit)
Method that retrieves axis and unit along which object is divided.
TString GenName(TString oldname)
NCNAME basic restrictions Replace "$" character with empty character etc.
XMLNodePointer_t CreateXtrusionN(TGeoXtru *geoShape)
Creates "xtru" node for GDML.
XMLNodePointer_t CreatePhysVolN(const char *name, Int_t copyno, const char *volref, const char *posref, const char *rotref, XMLNodePointer_t scaleN)
Creates "physvol" node for GDML.
Bool_t IsInList(NameList list, TString name2check)
Checks whether name2check is in (NameList) list.
XMLNodePointer_t StartAssemblyN(const char *name)
Creates "assembly" node for GDML.
TString fDefault_lunit
Definition TGDMLWrite.h:125
void SetIgnoreDummyMaterial(bool value)
Ignore dummy material instance, which causes trouble reading GDML in Geant4.
Int_t fPhysVolCnt
Definition TGDMLWrite.h:135
~TGDMLWrite() override
Destructor.
XMLNodePointer_t CreateParaN(TGeoPara *geoShape)
Creates "para" node for GDML.
XMLNodePointer_t CreateSetupN(const char *topVolName, const char *name="default", const char *version="1.0")
Creates "setup" node for GDML.
XMLNodePointer_t CreateTrapN(TGeoTrap *geoShape)
Creates "trap" node for GDML.
Xyz GetXYZangles(const Double_t *rotationMatrix)
Retrieves X Y Z angles from rotation matrix.
UInt_t fFltPrecision
Definition TGDMLWrite.h:138
XMLNodePointer_t CreateTubeN(TGeoTubeSeg *geoShape)
Creates "tube" node for GDML from object TGeoTubeSeg.
XMLNodePointer_t CreateBorderSurfaceN(TGeoBorderSurface *geoSurf)
Creates "bordersurface" node for GDML.
XMLNodePointer_t CreateAtomN(Double_t atom, const char *unit="g/mole")
Creates "atom" node for GDML.
StructLst * fIsotopeList
Definition TGDMLWrite.h:109
static void StartGDMLWriting(TGeoManager *geomanager, const char *filename, TString option)
Definition TGDMLWrite.h:61
StructLst * fAccPatt
Definition TGDMLWrite.h:111
XMLNodePointer_t CreateEltubeN(TGeoEltu *geoShape)
Creates "eltube" node for GDML.
void ExtractVolumes(TGeoNode *topNode)
Method extracting geometry structure recursively.
XMLNodePointer_t CreateEllipsoidN(TGeoCompositeShape *geoShape, TString elName)
Creates "ellipsoid" node for GDML this is a special case, because ellipsoid is not defined in ROOT so...
XMLNodePointer_t CreateIsotopN(TGeoIsotope *isotope, const char *name)
Creates "isotope" node for GDML.
XMLNodePointer_t CreateCommonBoolN(TGeoCompositeShape *geoShape)
Creates common part of union intersection and subtraction nodes.
XMLNodePointer_t CreateTrdN(TGeoTrd1 *geoShape)
Creates "trd" node for GDML from object TGeoTrd1.
XMLNodePointer_t CreateScaledN(TGeoScaledShape *geoShape)
Creates a scaled node for GDML.
std::map< TString, TString > NameListS
Definition TGDMLWrite.h:97
NameLst * fNameList
Definition TGDMLWrite.h:117
XMLNodePointer_t ChooseObject(TGeoShape *geoShape)
Chooses the object and method that should be used for processing object.
An arbitrary trapezoid with less than 8 vertices standing on two parallel planes perpendicular to Z a...
Definition TGeoArb8.h:17
Box class.
Definition TGeoBBox.h:17
Composite shapes are Boolean combinations of two or more shape components.
A cone segment is a cone having a range in phi.
Definition TGeoCone.h:99
The cones are defined by 5 parameters:
Definition TGeoCone.h:17
The cut tubes constructor has the form:
Definition TGeoTube.h:173
Base class for chemical elements.
Definition TGeoElement.h:36
An elliptical tube is defined by the two semi-axes A and B.
Definition TGeoEltu.h:17
A twisted trapezoid.
Definition TGeoArb8.h:149
A hyperboloid is represented as a solid limited by two planes perpendicular to the Z axis (top and bo...
Definition TGeoHype.h:17
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
Base class describing materials.
Mixtures of elements.
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
Definition TGeoNode.h:39
This is a wrapper class to G4OpticalSurface.
Parallelepiped class.
Definition TGeoPara.h:17
A paraboloid is defined by the revolution surface generated by a parabola and is bounded by two plane...
A polycone is represented by a sequence of tubes/cones, glued together at defined Z planes.
Definition TGeoPcon.h:17
Polygons are defined in the same way as polycones, the difference being just that the segments betwee...
Definition TGeoPgon.h:20
A shape scaled by a TGeoScale transformation.
Base abstract class for all shapes.
Definition TGeoShape.h:25
TGeoSphere are not just balls having internal and external radii, but sectors of a sphere having defi...
Definition TGeoSphere.h:17
Tessellated solid class.
The torus is defined by its axial radius, its inner and outer radius.
Definition TGeoTorus.h:17
A general trapezoid.
Definition TGeoArb8.h:96
A trapezoid with only X varying with Z.
Definition TGeoTrd1.h:17
A trapezoid with only X varying with Z.
Definition TGeoTrd2.h:17
A tube segment is a tube having a range in phi.
Definition TGeoTube.h:94
Cylindrical tube class.
Definition TGeoTube.h:17
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
A TGeoXtru shape is represented by the extrusion of an arbitrary polygon with fixed outline between s...
Definition TGeoXtru.h:22
A doubly linked list.
Definition TList.h:38
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139