132 for (
Int_t i = 0; i < 20; i++)
186 "\x1B[31m Found %d GDML entities missing explicit units, while the default "
187 "units are currently ROOT units [cm, deg]. This can cause unexpected behaviour with respect "
188 "to the GDML schema. To remove this warning, either use explicit units or call the static method "
189 "TGeoManager::SetDefaultUnits(kG4Units) before importing the GDML file \x1B[34m%s \x1B[0m",
204 const char *
name =
gdml->GetNodeName(node);
209 const char *
posistr =
"position";
211 const char *
consstr =
"constant";
212 const char *
varistr =
"variable";
213 const char *
quanstr =
"quantity";
214 const char *
matrstr =
"matrix";
215 const char *
rotastr =
"rotation";
217 const char *
elemstr =
"element";
218 const char *
istpstr =
"isotope";
219 const char *
matestr =
"material";
220 const char *
volustr =
"volume";
221 const char *
assestr =
"assembly";
222 const char *
twtrstr =
"twistedtrap";
223 const char *
cutTstr =
"cutTube";
229 const char *
polystr =
"polycone";
232 const char *
trdstr =
"trd";
233 const char *
sphestr =
"sphere";
234 const char *
orbstr =
"orb";
237 const char *
hedrstr =
"polyhedra";
238 const char *
eltustr =
"eltube";
239 const char *
subtstr =
"subtraction";
241 const char *
parbstr =
"paraboloid";
242 const char *
intestr =
"intersection";
243 const char *
reflstr =
"reflectedSolid";
244 const char *
ssolstr =
"scaledSolid";
245 const char *
ellistr =
"ellipsoid";
246 const char *
elcnstr =
"elcone";
247 const char *
optsstr =
"opticalsurface";
248 const char *
skinstr =
"skinsurface";
249 const char *
bordstr =
"bordersurface";
250 const char *
usrstr =
"userinfo";
251 const char *
tslstr =
"tessellated";
317 int z = (
atom) ? 1 : 0;
392 std::cout <<
"Error: Unsupported GDML Tag Used :" <<
name <<
". Please Check Geometry/Schema." << std::endl;
398 while (
child !=
nullptr) {
467 while (
attr !=
nullptr) {
541 while (
attr !=
nullptr) {
572 while (
attr !=
nullptr) {
606 matrix->SetMatrixAsString(values.c_str());
607 for (
size_t i = 0; i <
valueList.size(); ++i)
628 while (
attr !=
nullptr) {
653 while (
child !=
nullptr) {
656 while (
attr !=
nullptr) {
665 Error(
"OpticalSurfaceProcess",
"Reference matrix %s for optical surface %s not found",
ref.Data(),
688 if (
strcmp(unit,
"mm") == 0) {
690 }
else if (
strcmp(unit,
"millimeter") == 0 ||
strcmp(unit,
"milimeter") == 0) {
692 }
else if (
strcmp(unit,
"cm") == 0) {
694 }
else if (
strcmp(unit,
"centimeter") == 0) {
696 }
else if (
strcmp(unit,
"m") == 0) {
698 }
else if (
strcmp(unit,
"meter") == 0) {
700 }
else if (
strcmp(unit,
"km") == 0) {
702 }
else if (
strcmp(unit,
"kilometer") == 0) {
704 }
else if (
strcmp(unit,
"rad") == 0) {
706 }
else if (
strcmp(unit,
"radian") == 0) {
708 }
else if (
strcmp(unit,
"deg") == 0) {
710 }
else if (
strcmp(unit,
"degree") == 0) {
712 }
else if (
strcmp(unit,
"pi") == 0) {
714 }
else if (
strcmp(unit,
"avogadro") == 0) {
717 Fatal(
"GetScale",
"Unit <%s> not known", unit);
736 if ((unit ==
"mm") || (unit ==
"millimeter") || (unit ==
"milimeter")) {
738 }
else if ((unit ==
"cm") || (unit ==
"centimeter")) {
740 }
else if ((unit ==
"m") || (unit ==
"meter")) {
742 }
else if ((unit ==
"km") || (unit ==
"kilometer")) {
744 }
else if ((unit ==
"rad") || (unit ==
"radian")) {
746 }
else if ((unit ==
"deg") || (unit ==
"degree")) {
748 }
else if ((unit ==
"ev") || (unit ==
"electronvolt")) {
750 }
else if ((unit ==
"kev") || (unit ==
"kiloelectronvolt")) {
752 }
else if ((unit ==
"mev") || (unit ==
"megaelectronvolt")) {
754 }
else if ((unit ==
"gev") || (unit ==
"gigaelectronvolt")) {
756 }
else if (unit ==
"pi") {
758 }
else if (unit ==
"avogadro") {
761 Fatal(
"GetScaleVal",
"Unit <%s> not known",
sunit);
776 while (*end != 0 &&
isspace(*end))
788 std::string expanded;
793 const std::locale &
loc = std::locale::classic();
799 for (; *
p != 0; ++
p) {
800 if (std::isalpha(*
p,
loc) || *
p ==
'_') {
801 const char *
pe =
p + 1;
804 for (; *
pe != 0; ++
pe) {
831 TFormula f(
"TFormula", expanded.c_str());
835 f.SetParameter(it.first.c_str(), it.second);
839 if (std::isnan(val) || std::isinf(val)) {
840 Fatal(
"Value",
"Got bad value %lf from string '%s'", val,
svalue);
864 while (
attr !=
nullptr) {
920 while (
attr !=
nullptr) {
978 while (
attr !=
nullptr) {
1026 while (
attr !=
nullptr) {
1046 while (
attr !=
nullptr) {
1072 }
else if (
gDebug >= 2) {
1073 Info(
"TGDMLParse",
"Re-use existing isotope: %s",
iso->GetName());
1109 while (
attr !=
nullptr) {
1123 while (
child !=
nullptr) {
1131 while (
attr !=
nullptr) {
1151 if (
ele &&
ele->Z() == 0)
1168 while (
attr !=
nullptr) {
1183 while (
child !=
nullptr) {
1191 while (
attr !=
nullptr) {
1211 if (
ele &&
ele->Z() == 0)
1227 while (
attr !=
nullptr) {
1237 }
else if (
tempattr ==
"formula") {
1238 formula =
gdml->GetAttrValue(
attr);
1248 while (
attr !=
nullptr) {
1269 if (
ele &&
ele->Z() == 0)
1274 }
else if (
gDebug >= 2) {
1275 Info(
"TGDMLParse",
"Re-use existing element: %s",
ele->GetName());
1304 static int medid =
mgr->GetListOfMedia()->GetSize() + 1;
1319 name =
gdml->GetAttr(node,
"name");
1325 while (
child !=
nullptr) {
1330 while (
attr !=
nullptr) {
1335 property->SetName(
gdml->GetAttrValue(
attr));
1337 property->SetTitle(
gdml->GetAttrValue(
attr));
1345 Error(
"MatProcess",
"Reference %s for material %s not found",
property->GetTitle(),
1356 while (
attr !=
nullptr) {
1368 while (
attr !=
nullptr) {
1397 Info(
"TGDMLParse",
"Re-use existing material: %s",
mat->GetName());
1420 }
else if (
gDebug >= 2) {
1421 Info(
"TGDMLParse",
"Re-use existing material-element: %s",
mat_ele->GetName());
1427 while (
child !=
nullptr) {
1432 while (
attr !=
nullptr) {
1437 property->SetName(
gdml->GetAttrValue(
attr));
1439 property->SetTitle(
gdml->GetAttrValue(
attr));
1447 Error(
"MatProcess",
"Reference %s for material %s not found",
property->GetTitle(),
1461 while (
attr !=
nullptr) {
1484 while (
attr !=
nullptr) {
1499 while (
attr !=
nullptr) {
1513 name =
gdml->GetAttr(node,
"name");
1524 }
else if (
mat->IsMixture()) {
1527 Info(
"TGDMLParse",
"Re-use existing material-mixture: %s", mix->
GetName());
1529 Fatal(
"TGDMLParse",
"WARNING! Inconsistent material definitions between GDML and TGeoManager");
1549 auto material =
fmatmap.find(
f->first);
1550 if (material !=
fmatmap.end())
1591 }
else if (
gDebug >= 2) {
1592 Info(
"TGDMLParse",
"Re-use existing medium: %s",
med->GetName());
1607 while (
attr !=
nullptr) {
1614 if (
tempattr ==
"surfaceproperty") {
1621 while (
child !=
nullptr) {
1624 while (
attr !=
nullptr) {
1637 Fatal(
"SkinSurfaceProcess",
"Skin surface %s: referenced optical surface %s not defined",
name.Data(),
1653 while (
attr !=
nullptr) {
1660 if (
tempattr ==
"surfaceproperty") {
1668 while (
child !=
nullptr) {
1671 while (
attr !=
nullptr) {
1683 Fatal(
"BorderSurfaceProcess",
"Border surface %s not referencing two nodes",
name.Data());
1686 Fatal(
"BorderSurfaceProcess",
"Border surface %s: referenced optical surface %s not defined",
name.Data(),
1691 Fatal(
"BorderSurfaceProcess",
"Border surface %s: not found nodes %s [%s] or %s [%s]",
name.Data(),
1714 Error(
"GetPosition",
"Position %s not defined",
name);
1733 Error(
"GetRotation",
"Rotation %s not defined",
name);
1752 Error(
"GetScale",
"Scale %s not defined",
name);
1771 Error(
"GetSolid",
"Solid %s not defined",
name);
1790 Error(
"GetVolume",
"Volume %s not defined",
name);
1829 while (
child !=
nullptr) {
1854 printf(
"Medium: %s, Not Yet Defined!\n",
gdml->GetAttr(
child,
"ref"));
1861 name =
gdml->GetAttr(node,
"name");
1883 while (
child !=
nullptr) {
1943 }
else if (
tempattr ==
"position") {
1948 }
else if (
tempattr ==
"positionref") {
1952 Fatal(
"VolProcess",
"Physvol's position %s not found",
reftemp.Data());
1953 }
else if (
tempattr ==
"rotation") {
1958 }
else if (
tempattr ==
"rotationref") {
1962 Fatal(
"VolProcess",
"Physvol's rotation %s not found",
reftemp.Data());
1968 }
else if (
tempattr ==
"scaleref") {
1972 Fatal(
"VolProcess",
"Physvol's scale %s not found",
reftemp.Data());
1988 if (
scl !=
nullptr) {
2039 while (
attr !=
nullptr) {
2100 Fatal(
"VolProcess",
"Cannot divide volume %s", vol->
GetName());
2104 divvol->ReplayCreation(old);
2127 while (
attr !=
nullptr) {
2153 if (
tempattr ==
"replicate_along_axis") {
2159 while (
attr !=
nullptr) {
2173 while (
attr !=
nullptr) {
2186 while (
attr !=
nullptr) {
2237 Fatal(
"VolProcess",
"Cannot divide volume %s", vol->
GetName());
2241 divvol->ReplayCreation(old);
2317 while (
child !=
nullptr) {
2325 Fatal(
"BooSolid",
"First solid %s not found",
reftemp.Data());
2330 Fatal(
"BooSolid",
"Second solid %s not found",
reftemp.Data());
2331 }
else if (
tempattr ==
"position") {
2336 }
else if (
tempattr ==
"positionref") {
2340 Fatal(
"BooSolid",
"Second position %s not found",
reftemp.Data());
2341 }
else if (
tempattr ==
"rotation") {
2346 }
else if (
tempattr ==
"rotationref") {
2350 Fatal(
"BooSolid",
"Second rotation %s not found",
reftemp.Data());
2351 }
else if (
tempattr ==
"firstposition") {
2356 }
else if (
tempattr ==
"firstpositionref") {
2360 Fatal(
"BooSolid",
"First position %s not found",
reftemp.Data());
2361 }
else if (
tempattr ==
"firstrotation") {
2366 }
else if (
tempattr ==
"firstrotationref") {
2370 Fatal(
"BooSolid",
"First rotation %s not found",
reftemp.Data());
2477 while (
child !=
nullptr) {
2494 }
else if (
tempattr ==
"positionref") {
2498 Fatal(
"AssProcess",
"Position %s not found",
reftemp.Data());
2499 }
else if (
tempattr ==
"position") {
2504 }
else if (
tempattr ==
"rotationref") {
2508 Fatal(
"AssProcess",
"Rotation %s not found",
reftemp.Data());
2509 }
else if (
tempattr ==
"rotation") {
2542 const char *
name =
gdml->GetAttr(node,
"name");
2547 while (
child !=
nullptr) {
2578 while (
attr !=
nullptr) {
2639 while (
attr !=
nullptr) {
2725 while (
attr !=
nullptr) {
2764 Info(
"ElCone",
"ERROR! Parameter zcut = %.12g is not set properly, elcone will not be imported.",
z1);
2803 while (
attr !=
nullptr) {
2873 while (
attr !=
nullptr) {
2984 while (
attr !=
nullptr) {
3003 }
else if (
tempattr ==
"startphi") {
3005 }
else if (
tempattr ==
"deltaphi") {
3064 while (
attr !=
nullptr) {
3083 }
else if (
tempattr ==
"startphi") {
3085 }
else if (
tempattr ==
"deltaphi") {
3155 while (
attr !=
nullptr) {
3178 }
else if (
tempattr ==
"startphi") {
3180 }
else if (
tempattr ==
"deltaphi") {
3242 while (
attr !=
nullptr) {
3329 while (
attr !=
nullptr) {
3396 while (
attr !=
nullptr) {
3409 }
else if (
tempattr ==
"startphi") {
3411 }
else if (
tempattr ==
"deltaphi") {
3430 while (
child !=
nullptr) {
3435 Fatal(
"Polycone",
"Found less than 2 planes for polycone %s",
name.Data());
3442 double **table =
new double *[
numplanes];
3444 table[i] =
new double[
cols];
3450 while (
child !=
nullptr) {
3459 while (
attr !=
nullptr) {
3490 poly->DefineSection(
zno, table[
j][2], table[
j][0], table[
j][1]);
3526 while (
attr !=
nullptr) {
3539 }
else if (
tempattr ==
"startphi") {
3541 }
else if (
tempattr ==
"deltaphi") {
3543 }
else if (
tempattr ==
"numsides") {
3563 while (
child !=
nullptr) {
3568 Fatal(
"Polyhedra",
"Found less than 2 planes for polyhedra %s",
name.Data());
3575 double **table =
new double *[
numplanes];
3577 table[i] =
new double[
cols];
3583 while (
child !=
nullptr) {
3591 while (
attr !=
nullptr) {
3624 polyg->DefineSection(
zno, table[
j][2], table[
j][0], table[
j][1]);
3659 while (
attr !=
nullptr) {
3675 }
else if (
tempattr ==
"startphi") {
3677 }
else if (
tempattr ==
"deltaphi") {
3679 }
else if (
tempattr ==
"starttheta") {
3681 }
else if (
tempattr ==
"deltatheta") {
3732 while (
attr !=
nullptr) {
3751 }
else if (
tempattr ==
"startphi") {
3753 }
else if (
tempattr ==
"deltaphi") {
3802 while (
attr !=
nullptr) {
3872 while (
attr !=
nullptr) {
3952 while (
attr !=
nullptr) {
3988 }
else if (
tempattr ==
"phitwist") {
4041 while (
attr !=
nullptr) {
4094 while (
attr !=
nullptr) {
4151 while (
attr !=
nullptr) {
4179 while (
child !=
nullptr) {
4184 }
else if (
tempattr ==
"section") {
4192 Fatal(
"Xtru",
"Invalid number of sections/vertices found forxtru %s",
name.Data());
4203 for (i = 0; i <
nosects; i++) {
4211 while (
child !=
nullptr) {
4218 while (
attr !=
nullptr) {
4245 while (
attr !=
nullptr) {
4251 }
else if (
tempattr ==
"zPosition") {
4255 }
else if (
tempattr ==
"xOffset") {
4259 }
else if (
tempattr ==
"yOffset") {
4263 }
else if (
tempattr ==
"scalingFactor") {
4280 for (
int j = 0;
j <
sect;
j++) {
4287 for (i = 0; i <
nosects; i++) {
4306 while (
attr !=
nullptr) {
4324 if (trans ==
nullptr)
4326 const double *
tr = trans->GetTranslation();
4332 vertices[2] += vertices[0] + vertices[1];
4333 vertices[1] += vertices[0];
4335 tsl->AddFacet(vertices[0], vertices[1], vertices[2]);
4340 vertices[3] += vertices[0] + vertices[1] + vertices[2];
4341 vertices[2] += vertices[0] + vertices[1];
4342 vertices[1] += vertices[0];
4344 tsl->AddFacet(vertices[0], vertices[1], vertices[2], vertices[3]);
4349 while (
child !=
nullptr) {
4356 while (
attr !=
nullptr) {
4363 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4371 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4379 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4394 else if (
tempattr ==
"quadrangular") {
4398 while (
attr !=
nullptr) {
4405 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4413 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4421 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4429 Fatal(
"Tessellated",
"Vertex %s not defined",
vname.Data());
4445 tsl->CloseShape(
false);
4468 while (
attr !=
nullptr) {
4481 while (
child !=
nullptr) {
4499 }
else if (
tempattr ==
"scaleref") {
4503 Fatal(
"ScaledSolid",
"Solid's scale %s not found",
reftemp.Data());
4527 std::cout <<
"WARNING! The reflectedSolid is obsolete! Use scale transformation instead!" << std::endl;
4542 while (
attr !=
nullptr) {
4585 if (atoi(
sx) == -1) {
4588 if (atoi(
sy) == -1) {
4591 if (atoi(
sz) == -1) {
int Int_t
Signed integer 4 bytes (int)
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
winID h TVirtualViewer3D TVirtualGLPainter p
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 char Point_t Rectangle_t WindowAttributes_t Float_t r
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
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 child
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void xpos
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t attr
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void ypos
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
Option_t Option_t TPoint TPoint const char y1
R__EXTERN TGeoManager * gGeoManager
Int_t gDebug
Global variable setting the debug level. Set to 0 to disable, increase it in steps of 1 to increase t...
const_iterator begin() const
const_iterator end() const
This class is used in the process of reading and writing the GDML "matrix" tag.
XMLNodePointer_t Ellipsoid(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, an ellipsoid may be declared.
double Evaluate(const char *evalline)
Takes a string containing a mathematical expression and returns the value of the expression.
TGeoVolume * GDMLReadFile(const char *filename="test.gdml")
Creates the new instance of the XMLEngine called 'gdml', using the filename >> then parses the file a...
XMLNodePointer_t Reflection(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Reflected Solid may be declared when the ReflectedSolid key...
XMLNodePointer_t TopProcess(TXMLEngine *gdml, XMLNodePointer_t node)
In the setup section of the GDML file, the top volume need to be declared.
TGeoVolume * GetVolume(const char *name)
TGeoScale * GetScaleObj(const char *name)
ReflSolidMap freflsolidmap
! Map containing reflection names and the TGDMLRefl for it - containing refl matrix
const char * ParseGDML(TXMLEngine *gdml, XMLNodePointer_t node)
This function recursively moves thru the DOM tree of the GDML file.
XMLNodePointer_t SclProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, rotations can be declared.
XMLNodePointer_t BorderSurfaceProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the structure section of the GDML file, border surfaces can be declared.
XMLNodePointer_t Trd(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Trd may be declared.
const char * fCurrentFile
TGeoRotation * GetRotation(const char *name)
void DefineConstants()
Define constant expressions used.
const char * NameShort(const char *name)
This function looks thru a string for the chars '0x' next to each other, when it finds this,...
XMLNodePointer_t Orb(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, an Orb may be declared.
FileMap ffilemap
! Map containing files parsed during entire parsing, with their world volume name
MatrixMap fmatrices
! Map containing matrices defined in the GDML file
XMLNodePointer_t Hype(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Hype may be declared.
VolMap fvolmap
! Map containing volume names and the TGeoVolume for it
double GetScaleVal(const char *unit)
Throughout the GDML file, a unit can de specified.
std::string fDefault_lunit
XMLNodePointer_t BooSolid(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr, int num)
In the solid section of the GDML file, boolean solids can be declared.
XMLNodePointer_t Para(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Para may be declared.
XMLNodePointer_t Arb8(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, an Arb8 may be declared.
RotMap frotmap
! Map containing rotation names and the TGeoRotation for it
XMLNodePointer_t PosProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, positions can be declared.
ReflVolMap freflvolmap
! Map containing reflected volume names and the solid ref for it
XMLNodePointer_t Sphere(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Sphere may be declared.
ReflectionsMap freflectmap
! Map containing reflection names and the Solid name ir references to
XMLNodePointer_t Trap(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Trap may be declared.
std::map< std::string, double > FracMap
XMLNodePointer_t EleProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLNodePointer_t parentn, Bool_t hasIsotopes, Bool_t hasIsotopesExtended)
When the element keyword is found, this function is called, and the name and values of the element ar...
XMLNodePointer_t Polyhedra(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Polyhedra may be declared.
XMLNodePointer_t Cone(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a cone may be declared.
XMLNodePointer_t ElCone(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, an elliptical cone may be declared.
MatMap fmatmap
! Map containing material names and the TGeoMaterial for it
SclMap fsclmap
! Map containing scale names and the TGeoScale for it
XMLNodePointer_t MatrixProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, matrices These are referenced by other GDML tags,...
XMLNodePointer_t Tessellated(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a tessellated shape may be declared.
IsoMap fisomap
! Map containing isotope names and the TGeoIsotope for it
XMLNodePointer_t IsoProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLNodePointer_t parentn)
In the material section of the GDML file, an isotope may be declared.
PvolMap fpvolmap
! Map containing placed volume names and the TGeoNode for it
double Value(const char *svalue) const
Convert number in string format to double value.
TGeoTranslation * GetPosition(const char *name)
XMLNodePointer_t TwistTrap(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a TwistTrap may be declared.
MedMap fmedmap
! Map containing medium names and the TGeoMedium for it
XMLNodePointer_t Paraboloid(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Paraboloid may be declared.
Int_t SetAxis(const char *axisString)
When using the 'divide' process in the geometry this function sets the variable 'axis' depending on w...
ConstMap fconsts
! Map containing values of constants declared in the file
std::string fDefault_aunit
XMLNodePointer_t QuantityProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, quantities can be declared.
XMLNodePointer_t Polycone(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Polycone may be declared.
XMLNodePointer_t Box(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a box may be declared.
SolMap fsolmap
! Map containing solid names and the TGeoShape for it
EleMap felemap
! Map containing element names and the TGeoElement for it
XMLNodePointer_t Tube(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Tube may be declared.
TString GetScale(const char *unit)
Throughout the GDML file, a unit can de specified.
XMLNodePointer_t AssProcess(TXMLEngine *gdml, XMLNodePointer_t node)
In the structure section of the GDML file, assembly volumes can be declared.
PosMap fposmap
! Map containing position names and the TGeoTranslation for it
TGeoShape * GetSolid(const char *name)
TXMLEngine * fFileEngine[20]
XMLNodePointer_t RotProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, rotations can be declared.
XMLNodePointer_t Torus(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Torus may be declared.
XMLNodePointer_t ConProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the define section of the GDML file, constants can be declared.
XMLNodePointer_t VolProcess(TXMLEngine *gdml, XMLNodePointer_t node)
In the structure section of the GDML file, volumes can be declared.
XMLNodePointer_t OpticalSurfaceProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, optical surfaces can be defined.
XMLNodePointer_t SkinSurfaceProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the structure section of the GDML file, skin surfaces can be declared.
XMLNodePointer_t ElTube(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a ElTube may be declared.
XMLNodePointer_t Xtru(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, an Xtru may be declared.
XMLNodePointer_t MatProcess(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr, int z)
In the materials section of the GDML file, materials can be declared.
XMLNodePointer_t CutTube(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Cut Tube may be declared.
XMLNodePointer_t ScaledSolid(TXMLEngine *gdml, XMLNodePointer_t node, XMLAttrPointer_t attr)
In the solids section of the GDML file, a Scaled Solid may be declared when the scaledSolid keyword i...
MixMap fmixmap
! Map containing mixture names and the TGeoMixture for it
XMLNodePointer_t UsrProcess(TXMLEngine *gdml, XMLNodePointer_t node)
User data to be processed.
This class is a helper class for TGDMLParse.
const char * fNameS
! reflected solid name
TGeoMatrix * fMatrix
! matrix of reflected solid
TGeoMatrix * GetMatrix()
This accessor method returns the matrix.
const char * fSolid
! solid name being reflected
An arbitrary trapezoid with less than 8 vertices standing on two parallel planes perpendicular to Z a...
Base class for Boolean operations between two shapes.
Class describing rotation + translation.
Composite shapes are Boolean combinations of two or more shape components.
A cone segment is a cone having a range in phi.
The cones are defined by 5 parameters:
The cut tubes constructor has the form:
Base class for chemical elements.
An elliptical tube is defined by the two semi-axes A and B.
Matrix class used for computing global transformations Should NOT be used for node definition.
A hyperboloid is represented as a solid limited by two planes perpendicular to the Z axis (top and bo...
Boolean node representing an intersection between two components.
an isotope defined by the atomic number, number of nucleons and atomic weight (g/mole)
The manager class for any TGeo geometry.
void AddSkinSurface(TGeoSkinSurface *surf)
Add skin surface;.
static EDefaultUnits GetDefaultUnits()
void AddGDMLMatrix(TGDMLMatrix *mat)
Add GDML matrix;.
void AddBorderSurface(TGeoBorderSurface *surf)
Add border surface;.
void AddOpticalSurface(TGeoOpticalSurface *optsurf)
Add optical surface;.
Double_t GetProperty(const char *name, Bool_t *error=nullptr) const
Get a user-defined property.
TGeoOpticalSurface * GetOpticalSurface(const char *name) const
Get optical surface with a given name;.
Bool_t AddProperty(const char *property, Double_t value)
Add a user-defined property. Returns true if added, false if existing.
Int_t AddRegion(TGeoRegion *region)
Add a new region of volumes.
Base class describing materials.
bool AddConstProperty(const char *property, const char *ref)
bool AddProperty(const char *property, const char *ref)
Geometrical transformation package.
Media are used to store properties related to tracking and which are useful only when using geometry ...
void AddElement(Double_t a, Double_t z, Double_t weight)
add an element to the mixture using fraction by weight Check if the element is already defined
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
This is a wrapper class to G4OpticalSurface.
static ESurfaceType StringToType(const char *type)
static ESurfaceFinish StringToFinish(const char *finish)
static ESurfaceModel StringToModel(const char *model)
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.
Polygons are defined in the same way as polycones, the difference being just that the segments betwee...
Reference counted extension which has a pointer to and owns a user defined TObject.
Regions are groups of volumes having a common set of user tracking cuts.
Class describing rotations.
Class describing scale transformations.
A shape scaled by a TGeoScale transformation.
Base abstract class for all shapes.
virtual Double_t GetAxisRange(Int_t iaxis, Double_t &xlo, Double_t &xhi) const =0
TGeoSphere are not just balls having internal and external radii, but sectors of a sphere having defi...
Boolean node representing a subtraction.
The torus is defined by its axial radius, its inner and outer radius.
Class describing translations.
const Double_t * GetTranslation() const override
A trapezoid with only X varying with Z.
A tube segment is a tube having a range in phi.
Boolean node representing a union between two components.
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
void SetUserExtension(TGeoExtension *ext)
Connect user-defined extension to the volume.
TGeoMedium * GetMedium() const
virtual TGeoNode * AddNode(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
Int_t GetNdaughters() const
TGeoShape * GetShape() const
virtual TGeoVolume * Divide(const char *divname, Int_t iaxis, Int_t ndiv, Double_t start, Double_t step, Int_t numed=0, Option_t *option="")
Division a la G3.
A TGeoXtru shape is represented by the extrusion of an arbitrary polygon with fixed outline between s...
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
The TNamed class is the base class for all named ROOT classes.
const char * GetName() const override
Returns name of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
TObject * Last() const override
Return the object in the last filled slot. Returns 0 if no entries.
Collectable string class.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
void ToLower()
Change string to lower-case.
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
static constexpr double GeV
static constexpr double us
static constexpr double s
static constexpr double mm
static constexpr double g
static constexpr double km
static constexpr double keV
static constexpr double ns
static constexpr double m
static constexpr double cm
static constexpr double ms
static constexpr double kg
static constexpr double mg
static constexpr double eV
static constexpr double MeV
static constexpr double mg
static constexpr double us
static constexpr double ms
static constexpr double s
static constexpr double mm
static constexpr double MeV
static constexpr double pi
static constexpr double keV
static constexpr double GeV
static constexpr double twopi
static constexpr double rad
static constexpr double kg
static constexpr double cm
static constexpr double m
static constexpr double ns
static constexpr double deg
static constexpr double eV
static constexpr double g
static constexpr double km
constexpr Double_t Na()
Avogadro constant (Avogadro's Number) in .
constexpr Double_t RadToDeg()
Conversion from radian to degree: .
Typedefs used by the geometry group.
void Set(double const &a, double const &b, double const &c)