]> git.uio.no Git - u/mrichter/AliRoot.git/blame - AliGeant4/doc/AliDD.dtd
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / AliGeant4 / doc / AliDD.dtd
CommitLineData
2c2d6eab 1<?xml encoding="US-ASCII"?>
2
3
4<!-- AGDD: Extended ATLAS Generic Detector Description
5 =================================================
6
7 This dtd definition file contains ATLAS generic detector
8 description *with extensions* required for automatic
9 generation of XML files from Geant4 geometry.
10
11 Version: 4
12 Release: 2
13 Date : March 9, 2000
14
15 o This (backward compatible) release version has a new solid
16 implemented: the pcone (see documentation for details).
17 o New attribute 'origin' added to the stack elements.
18
19
20 Version: 4
21 Date : Februari 7, 2000
22
23 This dtd definition file defines the syntax for the
24 Atlas Generic Detector Description xml geometry files.
25 Documentation of the elements is given here-under.
26
27
281) General structure of a detector description
29 ===========================================
30
31 o The AGDD element is the main container where all detector description information is
32 maintained and managed.
33
34 o Currently one may find within the AGDD element :
35 o materials : definition of a set of materials
36 o section : definition of a section (ie. the main division of the detector)
37
38 o The DTD provides a main version id. This corresponds to a
39 constraint (named DTD_version). All "materials", "sections" and the overall "AGDD"
40 element must individually specify in their attributes a matching DTD_version
41 value. (eg. DTD_version="v4")
42
431.1) Materials
44===============
45
46 o Materials can be elements or composites.
47 o elements are identified using a long name. Attributes are
48
49 symbol : the conventional symbol name
50 z : mean number of protons
51 aweight : atomic weight
52 density : density (g/mole)
53 o composites are identified using a long name and provide a density (g/mole). They are made
54 of a set of addmaterial elements, each providing
55
56 material : an IDREF towards an already defined material or element
57 fractionmass : a percentage of this material in the composite
58 (use for both materials and elements).
59 natoms : the number of atoms of this element in the composite.
60 (use for elements only)
61
621.2) Sections
63==============
64
65 A section forms the basic sub-division of the entire detector. It
66 holds the implementation of the geometry for this particular piece
67 of detector. A section is primarily made of "volume" elements but
68 also may receive a set of named and typed parameter blocks (used to specify
69 constants).
70
71 Attributes of section are :
72
73 name : (short) unique name to identify the section
74 version : internal version of the section
75 date : last modification date
76 author : last modification author
77 top_volume : envelope volume corresponding to the
78 section
79
801.3) Parameters
81===============
82
83 Parameters are named and typed values. Possible types are :
84
85 real : a scalar value
86 string : a text string
87 reference : an IDREF to a parameter block.
88
89 real_array : an array of values
90 string_vector : a vector of text strings
91 reference_vector : a vector of IDREFs to parameter blocks.
92
93 Parameters must be defined within named "parameter blocks" which in
94 turn can be referenced by any volume. Parameter blocks are defined
95 within sections.
96
97 All scalar parameter get their value in the attribute named "value";
98 array parameters get their array of values within the single
99 attribute named "values"; vector parameters get their values as a
100 set of member elements.
101
102 It is required to specify a semantics for the values using a "unit"
103 attribute (available for both scalar and arrays). Current possible
104 units are:
105
106 m cm mm for lengths
107 degree radian mrad for angles
108 percent for fractions
109
110 or simply
111
112 none
113
114
115 some examples are:
116
117 <real name="chamber_width" value="12.56" unit="mm" />
118 <string name="chamber_type" value="RPC" />
119
120 <real_array name="ratios" unit="percent" values="10 15 27 33" />
121
122 <string_vector name="authors">
123 <string_data value="Christian Arnault"/>
124 <string_data value="Stan Bentvelsen"/>
125 <string_data value="Jean-Francois Laporte"/>
126 <string_data value="Steven Goldfarb"/>
127 <string_data value="Marc Virchaux"/>
128 <string_data value="Christopher Lester"/>
129 </string_vector>
130
131
1321.4) Volumes
133============
134
135 The 'volume' is a generic name for a geometric object. Effective
136 volume are organized as a hierarchy of types.
137
138 1) solid volume (have a "material" and may be "sensitive"))
139 |-> box
140 |-> tubs
141 |-> trd
142 +-> cons
143
144 2) composition (build a logical composition)
145
146 4) boolean volume
147 |-> union
148 |-> intersection
149 +-> subtraction
150
151 5) stack (pile up other volumes)
152 |-> stackX
153 |-> stackY
154 +-> stackZ
155
156 All kinds of volumes have at least the following attribute:
157
158 name : their identifier
159 parameters : an IDREF to a parameter block.
160
161 Parameter blocks are meant to describe non-geometrical information
162 or geometrical details that cannot or should not be described using
163 the generic model.
164
165 For example, the inner-structure of the SCT cristals contain
166 information about the strip-pitch, etc. The use and content of these
167 parameters is left free.
168
169 A volume in itself is not positioned. Rather, compositions, boolean
170 volumes or stacks combine "position" elements which role is to
171 position a volume (see paragraph on positions)
172
173
1741.4.1) Solid volume:
175====================
176
177 A basic geometry unit; Specized types provide for specific shapes
178 (boxes, tube sections, trapezoids and cone sections). A solid
179 references a material, and may be declared as "sensitive" (which
180 opens the not-yet-implemented capability of producing hits).
181
182
1831.4.1.1) Box (element tag "box") :
184
185 A Box is a cuboid of given total lengths X,Y and Z. The Box is
186 centred on the origin with sides parallel to the x/y/z axes.
187
188 NB: Note the factor two difference in the dimensions wrt the 'Geant4 - Box'
189
190 Its dimensions are given by :
191
192 X_Y_Z="X Y Z"
193
1941.4.1.2) Trapezoid (element tag "trd") :
195
196 A Trd is a trapezoid with the x and y dimensions varying along z. Its
197 dimensions are given by
198
199 Xmp_Ymp_Z="Xm Xp Ym Yp Z"
200
201 with:
202 Xm Length along x at the surface positioned at -Z/2
203 Xp Length along x at the surface positioned at +Z/2
204 Ym Length along y at the surface positioned at -Z/2
205 Yp Length along y at the surface positioned at +Z/2
206 Z Length along z axis
207
208 NB: Note the factor two difference in the dimensions wrt the 'Geant4 - trd'
209
2101.4.1.3) Tube segment (element tag "tubs")
211
212 A tube or tube segment with curved sides parallel to the z-axis.
213 The tube has a specified total-length along the z axis, about which
214 it is centred, and a given minimum and maximum radius. A minimum
215 radius of 0 signifies a filled tube / cylinder. The tube segment is
216 specified by starting and delta angles for phi, with 0 being the +x
217 axis, PI/2 the +y axis. A delta angle of 2PI signifies a complete,
218 unsegmented tube/cylinder. The origin is centered in the middle of
219 the tube.
220
221 Its dimensions are given by
222
223 Rio_Z="Ri Ro Z"
224 profile="PhiS dPhi" (defaulted to "0 360")
225
226 with
227
228 Ri Inner radius
229 Ro Outer radius
230 Z Total length in Z
231 PhiS Starting angle phi
232 dPhi Delta angle phi
233
234 NB: Note the factor two difference in the length wrt the 'Geant4 - tubs'
235
2361.4.1.4) Cone segment (element tag "cons")
237
238 A cons is, in the general case, a Phi segment of a cone, with length
239 Z, inner and outer radii specified at -Z/2 and +Z/2. The Phi segment
240 is described by a starting Phi angle, and the +dPhi delta angle for
241 the shape.
242
243 Its dimensions are given by
244
245 Rio1_Rio2_Z="Ri1 Ro1 Ri2 Ro2 Z"
246 profile="PhiS dPhi" (defaulted to "0 360")
247
248 with :
249
250 Ri1 inside radius at -Z/2
251 Ri2 inside radius at +Z/2
252 Ro1 outside radius at -Z/2
253 Ro2 outside radius at +Z/2
254 Z half length in z
255 PhiS Starting angle phi
256 dPhi Delta angle phi
257
258
2591.4.1.5) Polycone segment (element tag "pcon" )
260
261 A pcon is, in the general case, a Phi segment of a polycone. The
262 polycone is build from a series of consecutive cones.
263
264 The phi-segment is given by the attribute
265
266 profile="PhiS dPhi" (defaulted to "0 360")
267
268 with :
269
270 PhiS Starting angle phi
271 dPhi Delta angle phi
272
273 The edges of the plycone are given by a series of XML element 'polyplane',
274 which are children of 'pcon'. The 'polyplane' dimensions are given
275 by the attribute:
276
277 Rio_Z="Ri Ro Z"
278
279 with :
280
281 Ri inside radius at point Z
282 Ro inside radius at point Z
283 Z position z
284
285
286
2871.4.2) Composition
288==================
289
290 Construct a new volume which consists of positioning several volumes
291 (defined elsewhere in AGDD) placed at various places w.r.t the
292 reference frame of this new entity.
293
294 The positioning of volumes proceeds via position elements:
295
296 posXYZ
297 posRPhiZ
298 mposR
299 mposPhi
300 mposX
301 mposY
302 mposZ
303
304 Volume are positionned according to the coordinates specified in the
305 above positionning elements w.r.t the implicit coordinate system of
306 the composition (which defines the reference)..
307
308 In general, there is a priori no defined volume corresponding to
309 this entity i.e. it is a juxtaposition of volumes. Its envelope has
310 to be computed from the juxtaposed volumes. However one can force
311 this envelope to be one specific (elswhere defined) volume. Then
312 all positioned volume will be placed into this "envelope" volume.
313
3141.4.3) Stacks
315=============
316
317 Constructs a new volume which consists of several other volumes
318 piled up along one given axis.
319
320 Stacks may be defined along
321 the X axis (element tag "stackX")
322 the Y axis (element tag "stackY")
323 the Z axis (element tag "stackZ")
324
325 The positioning of volumes proceeds via elements:
326
327 axisPos : a single volume is added to the pile. A
328 rotation (one angle) along the same axis as well as
329 a transverse displacement may also be specified.
330
331 axisMPos : a multiple position of a given volume. A
332 rotation (one angle) along the same axis as well as
333 a transverse displacement (both applicable to all copies)
334 may also be specified.
335
336 Offsets along the stack axis can be specified either using
337
338 a shift : distance between the coordinate origin of the stack and the
339 coordinate origin of the first stacked volume, or between
340 the coordinate origin of the previously stacked volume and the
341 coordinate origin of the first stacked volume.
342
343 a gap : distance between the coordinate origin of the stack and the
344 lowest dimension of the first stacked volume, or between the
345 highest dimension of the previously stacked volume and the
346 lowest dimension of the first stacked volume.
347
348
349 Coordinate system: The coordinate system of the stack can be
350 defined in two ways, that are selected by
351 the attribute 'center'.
352
353 origin="atStart" (default)
354 The coordinate-system of the stack is defined before
355 any volumes are positioned in the stack, and
356 it is fixed (i.e. independent of the contents
357 of the stack).
358 For example, in the absence of the gap0 or
359 shift0 attributes, the origin of the
360 coordinate system coincides with the edge of
361 the stack.
362
363 origin="atCenter" After the stack is build an additional shift
364 along the direction axis is applied to the
365 coordinate system of the stack, such that it
366 lies in the center of the stack (including
367 gaps). The 'center' is defined as the
368 geometric middle between two planes
369 perpendicular to the direction axis, with the
370 planes just touching the extreme edges of the
371 stack (which include gaps). Note that the
372 coordinate system always lies on the direction
373 axis, and does not change in the perpendicular
374 direction.
375 To avoid ambiguities when gap0 is smaller than zero:
376 Define point A at the "stack start" (from which gap0 is
377 measured), and define the last physical part of the stack
378 as B. The center of the stack is then defined at
379 position (A+B)/2.
380 In the simple case of zero gap0
381 and shift0, the coordinate sytem is shifted to
382 the center of the stack of volumes.
383
384
3851.4.4) Boolean volumes (union, intersection and subtraction)
386============================================================
387
388 union : Union of several volumes
389
390 intersection : Intersection of several volumes
391
392 subtraction : Subtraction of several volumes. All the volumes
393 (but the first) are substracted from the first
394
395 The positioning of volumes within boolean operation can only be
396 done via single positioners, say:
397
398 posXYZ
399 posRPhiZ
400
401 Note that it is required that the materials of the boolean volumes
402 are identical. This is however not checked (or forced) within the
403 XML syntax, and is left to the responsibility of the user (and the
404 application).
405
406
4071.5) Positioning of volumes
408===========================
409
410 Each volume (Solid volumes, compositions, unions, etc) are
411 positioned relatively to other volumes using the "position"
412 elements. A given volume may referenced (through its name) in
413 several position operations.
414
415 Position operators are organized as a hierarchy of types as follows
416
417 Single positions
418 | posXYZ
419 | posRPhiZ
420 Multiple positions
421 | mposR
422 | mposPhi
423 | mposX
424 | mposY
425 | mposZ
426 Axis positions
427 | axisPos
428 | axisMPos
429
430 o Single positions can be used in compositions or boolean volumes
431
432 o Multiple positions can only be used in compositions
433
434 o Axis positions can only be used in stacks
435
436
4371.5.1) Common properties
438
439
440 All positioning operators share some properties :
441
442 attributes :
443
444 volume : the volume they are positioning.
445 units : the units used to specify the coordinates.
446
447 member elements :
448
449 identifiers : a set of identifier specifications (see paragraph on
450 identifiers for details)
451
452
453 Single positions and Multiple positions may provide a local rotation (specified as
454 three angles around X, Y and Z)
455
4561.5.1.1) posXYZ
457
458
459 posXYZ: single positioning of a 'generic' volume, in carthesians
460 coordinates.
461 The coordinate system is implicitly defined by the
462 posXYZ (take a coordinate system, and place the volume in
463 it with a given set of coordinates and rotations)
464
465 specific attributes:
466
467 X_Y_Z : X, Y and Z coordinates of the volume inside the
468 coordinate system
469
470 The volume is rotated before it is placed.
471
4721.5.1.2) posRPhiZ
473
474
475 posRPhiZ: single positioning of a 'generic' volume, in cylindrical
476 coordinates.
477
478 specific attributes:
479
480 R_Phi_Z : Radius, Phi (wrt the X-axis) and Z of the volume (default is 0 0 0).
481 S : Move along the "ortho-radial" coordinate S
482 before placing the object (default is 0).
483
484 The volume is rotated before it is placed.
485
4861.5.1.3) mposPhi
487
488
489 mposPhi: multiple positioning of a 'generic' volume, around the
490 Z-axis at a given radius R, with incremental values of phi.
491
492 specific attributes:
493
494 specific attributes:
495
496 ncopy : Number of volumes to be placed
497 Phi0 : Start value of phi (wrt the x-axis).
498 dPhi : If given: incremental value of phi
499 If absent: incremental value of phi is set
500 to 2*PI/ncopy
501 R_Z : Radius R and Z-coordinate
502 S : Move along the "ortho-radial" coordinate S
503 before placing the objects (default is 0).
504
5051.5.1.4) mposR/X/Y/Z
506
507
508 mposR, mposX, mposY, mposZ: multiple positioning of volumes along
509 the R, X, Y, Z directions respectively.
510
511 mposR: positioning along the radius R with fixed (Z,phi).
512 mposX: positioning along the X-axis with fixed (R,phi).
513 mposY: positioning along the Y-axis with fixed (R,phi).
514 mposZ: positioning along the Z-axis with fixed (R,phi).
515
516 ncopy : Number of volumes to be placed
517 R0,X0,Y0,Z0: Starting values in R,X,Y,Z
518 dR,DX,DY,dZ: Increment values in R,X,Y,Z
519 Z_Phi : transverse displacement for mposR
520 R_Phi : transverse displacement for mposZ
521 X_Y : transverse displacement for mposZ (alternate for R_Phi)
522 Y_Z : transverse displacement for mposX
523 Z_X : transverse displacement for mposY
524 S : Move along the "ortho-radial" coordinate S
525 before placing the objects.
526
527 Note that the origin of the coordinate system is implicitly
528 defined in the 'transverse' direction by the Z_Phi, R_phi, X_Y, Y_Z or Z_X
529 attributes. In the positioning-direction it is defined by the
530 attributes R0, X0, Y0 or Z0.
531
5321.6) Identifiers
533================
534
535 Identifiers provide for a generalized identification scheme of
536 positioned volumes in the detector. Identifier are specified as
537 member elements attached to any position operator.
538
539 Generally, an identifier is composed of a set of numbers such as
540
541 /1/3/4/5/1/34
542
543 The meaning of each field is conventional and reflects the local
544 hierarchy of volumes.
545
546 The identifier elements permit to freely specify which field(s)
547 will be affected by the positioning operation. When single
548 positioning is used, a single value of one or several fields will
549 be affected by the operation. When a multiple positioning
550 operation is considered, one or several fields will be iteratively
551 affected. In this case, it is possible to follow the iteration by
552 specifying a first value and a step used to compute iterated field
553 values.
554
555 Attributes :
556
557 field : a symbolic name characterizing the affected field. Legal names
558 should be conventionally specified. Currently three symbols have
559 been introduced :
560
561 layer (typically R in barrels and Z in end-caps)
562 ring (typically Z in barrels and R in end-caps)
563 sector (typically Phi)
564
565 value the exact value to be entered in single positioning or
566 the first value in multiple positiong.
567
568 step only used in multi-positioning.
569
570
5712) Some examples showing typical usage of different elements
572============================================================
573
574 (note that these examples are generally extracted from more
575 complete definitions. Therefore they are not expected to be
576 complete and compilable, since some references may not be shown)
577
5782.1) Using compositions and identifiers
579
580
581<composition name="MU_Stat_BML1">
582 <posXYZ volume="MU_BML1_RPC1" X_Y_Z=" 0 0 0"> <layer value=" 1" /> </posXYZ>
583 <posXYZ volume="MU_BML1_MDT1" X_Y_Z="130. 0 0"> <layer value=" 2" /> </posXYZ>
584 <posXYZ volume="MU_BML1_SPA1" X_Y_Z="336.98 -1700. 0"> <layer value=" 3" /> </posXYZ>
585 <posXYZ volume="MU_BML1_SPA1" X_Y_Z="336.98 0 0"> <layer value="13" /> </posXYZ>
586 <posXYZ volume="MU_BML1_SPA1" X_Y_Z="336.98 1700. 0"> <layer value="23" /> </posXYZ>
587 <posXYZ volume="MU_BML1_MDT2" X_Y_Z="543.96 0 0"> <layer value=" 4" /> </posXYZ>
588 <posXYZ volume="MU_BML1_RPC1" X_Y_Z="673.96 0 0"> <layer value=" 5" /> </posXYZ>
589</composition>
590
591<composition name="MU_Barrel">
592 <mposPhi volume="MU_Stat_BML1" ncopy="8" R_Z="6730.54 150.">
593 <ring value="1" step="1" />
594 <sector value="1" />
595 </mposPhi>
596 <mposPhi volume="MU_Stat_BML1" ncopy="8" R_Z="6730.54 1610.">
597 <ring value="1" step="1" />
598 <sector value="2" />
599 </mposPhi>
600 <mposPhi volume="MU_Stat_BML1" ncopy="8" R_Z="6730.54 3070.">
601 <ring value="1" step="1" />
602 <sector value="3" />
603 </mposPhi>
604 <mposPhi volume="MU_Stat_BML1" ncopy="5" R_Z="6730.54 4530." dPhi="45.">
605 <ring value="1" step="1" />
606 <sector value="4" />
607 </mposPhi>
608 <posRPhiZ volume="MU_Stat_BML1" R_Phi_Z="6730.54 270. 4530.">
609 <ring value="1" step="1" />
610 <sector value="7" />
611 </posRPhiZ>
612</composition>
613
614
6152.2) Using parameters
616
617
618<box name="MU_BML1_MDT1" X_Y_Z="96.96 3580. 1440." material="Air">
619 <real name="layers" value="3" unit="none" comment="number of layers" />
620 <real name="radiative_thickness" value="0.80" unit="cm" comment="total radiative thickness" />
621 <real_array name="dimensions" values="30. 55.98 81.96" unit="cm" />
622 <real_array name="z_positions" values="30. 14.60 96.96" unit="cm" comment="z positions of layers" />
623 <real_array name="x_positions" values="15. 30. 15." unit="cm" comment="x positions of first tube of each layer" />
624</box>
625
626<box name="MU_BML1_RPC1" X_Y_Z="100. 3440. 1440." material="Honeycomb">
627 <reference value="inner_RPC_1" />
628</box>
629
6302.3) Parameter complete syntax
631
632<real name="..." comment="..." value="..." unit="..."/>
633<string name="..." comment="..." value="..." />
634
635<reference name="..." comment="..." value="..." />
636 (refers to a named parameter block)
637
638<real_array name="..." comment="..." values="... ... ..." unit="..."/>
639
640<string_vector name="..." comment="...">
641 <string_data value="..." />
642 <string_data value="..." />
643 <string_data value="..." />
644</string_vector>
645
646<reference_vector name="..." comment="...">
647 <reference_data value="..." />
648 <reference_data value="..." />
649 <reference_data value="..." />
650</reference_vector>
651
652<parameters name="..." type="...">
653 <real ..../>
654 etc...
655</parameters>
656
6572.4) Using Axis compositions
658
659
660<stackX name="MU_RPC1_LongStrips">
661 <axisMPos volume="MU_RPC1_LongStrip" ncopy="96" gap0="2.6" shift="30.8"/>
662</stackX>
663
664<stackZ name="MU_RPC1_TranStrips">
665 <axisMPos volume="MU_RPC1_TranStrip" ncopy="32" gap0="1.0" shift="30.0"/>
666</stackZ>
667
668<composition name="MU_RPC1_LongStripPanel">
669 <posXYZ volume="MU_RPC1_StripPanel" />
670 <posXYZ volume="MU_RPC1_LongStrips" X_Y_Z="0 -1.48 0" />
671</composition>
672
673<composition name="MU_RPC1_TranStripPanel">
674 <posXYZ volume="MU_RPC1_StripPanel" />
675 <posXYZ volume="MU_RPC1_TranStrips" X_Y_Z="0 1.48 0" />
676</composition>
677
678<stackY name="MU_RPC1_LowerActive">
679 <axisPos volume="MU_RPC1_TranStripPanel" />
680 <axisPos volume="MU_RPC1_Bakelite" />
681 <axisPos volume="MU_RPC1_GasGap" />
682 <axisPos volume="MU_RPC1_Bakelite" />
683 <axisPos volume="MU_RPC1_LongStripPanel" />
684</stackY>
685
686<stackY name="MU_RPC1_UpperActive">
687 <axisPos volume="MU_RPC1_TranStripPanel" />
688 <axisPos volume="MU_RPC1_Bakelite" />
689 <axisPos volume="MU_RPC1_GasGap" />
690 <axisPos volume="MU_RPC1_Bakelite" />
691 <axisPos volume="MU_RPC1_LongStripPanel" />
692</stackY>
693
6942.5) Using the polycone:
695
696<pcon name="TEST_polycone" material="Air">
697 <polyplane Rio_Z="0 10 0" />
698 <polyplane Rio_Z="2 20 10" />
699 <polyplane Rio_Z="0 10 50" />
700</pcon>
701
702
703(end of the documentation) -->
704
705
706
707<!ENTITY % DTD_constraint 'DTD_version ( v4 ) #REQUIRED'>
708
709<!ELEMENT AGDD ( materials | section )+>
710<!ATTLIST AGDD
711 %DTD_constraint;>
712
713
714<!ELEMENT section ( box | trd | tubs | cons | pcon | phedra | trap |
715 union | intersection | subtraction |
716 composition |
717 stackX | stackY | stackZ |
718 parameters )+>
719
720<!ATTLIST section
721 name CDATA #REQUIRED
722 version CDATA #REQUIRED
723 date CDATA #REQUIRED
724 author CDATA #REQUIRED
725 top_volume IDREF #REQUIRED
726 %DTD_constraint;>
727
728<!ENTITY % units 'unit_length ( mm | m ) "mm"
729 unit_angle ( deg | mrad ) "deg"'>
730
731<!ELEMENT identifier EMPTY>
732
733<!ATTLIST identifier field CDATA #REQUIRED
734 value CDATA "0"
735 step CDATA "0">
736
737<!--
738
739 The "layer", "ring" and "sector" entities are short cuts for identifiers
740with corresponding field names.
741
742-->
743
744<!ELEMENT layer EMPTY>
745
746<!ATTLIST layer field (layer) "layer"
747 value CDATA "0"
748 step CDATA "0">
749
750<!ELEMENT ring EMPTY>
751
752<!ATTLIST ring field (ring) "ring"
753 value CDATA "0"
754 step CDATA "0">
755
756<!ELEMENT sector EMPTY>
757
758<!ATTLIST sector field (sector) "sector"
759 value CDATA "0"
760 step CDATA "0">
761
762<!ENTITY % any_identifier 'layer | ring | sector | identifier'>
763
764<!ENTITY % volume_properties 'name ID #REQUIRED
765 parameters IDREF #IMPLIED'>
766
767<!ENTITY % solid_properties '%volume_properties;
768 material IDREF #REQUIRED
769 sensitive ( true | false ) "false"'>
770
771<!ELEMENT box EMPTY >
772<!ATTLIST box
773 X_Y_Z CDATA #REQUIRED
774 %solid_properties;
775 %units;>
776
777<!ELEMENT trd EMPTY >
778<!ATTLIST trd
779 Xmp_Ymp_Z CDATA #REQUIRED
780 inclination CDATA "0 0"
781 %solid_properties;
782 %units;>
783
784<!ELEMENT trap EMPTY >
785<!ATTLIST trap
786 Xmumdpupd_Ymp_Z CDATA #REQUIRED
787 inclination CDATA "0 0"
788 declination CDATA "0 0"
789 %solid_properties;
790 %units;>
791
792<!ELEMENT tubs EMPTY >
793<!ATTLIST tubs
794 Rio_Z CDATA #REQUIRED
795 profile CDATA "0 360"
796 %solid_properties;
797 %units;>
798
799<!ELEMENT cons EMPTY >
800<!ATTLIST cons
801 Rio1_Rio2_Z CDATA #REQUIRED
802 profile CDATA "0 360"
803 %solid_properties;
804 %units;>
805
806<!ELEMENT pcon (polyplane+)>
807<!ATTLIST pcon
808 profile CDATA "0 360"
809 %solid_properties;
810 %units;>
811
812<!ELEMENT polyplane EMPTY >
813<!ATTLIST polyplane
814 Rio_Z CDATA #REQUIRED>
815
816<!ELEMENT phedra EMPTY>
817<!ATTLIST phedra
818 sides CDATA #REQUIRED
819 Ris CDATA #REQUIRED
820 Ros CDATA #REQUIRED
821 Zs CDATA #REQUIRED
822 profile CDATA "0 360"
823 %solid_properties;
824 %units;>
825
826<!ENTITY % any_position ' posXYZ | posRPhiZ | mposR | mposPhi | mposX | mposY | mposZ | rot | transform '>
827
828<!ELEMENT composition ( %any_position; )+ >
829<!ATTLIST composition
830 %volume_properties;
831 envelope IDREF #IMPLIED>
832
833<!ENTITY % any_relative_position ' axisPos | axisMPos '>
834
835<!ELEMENT stackX ( %any_relative_position; )+ >
836<!ATTLIST stackX
837 origin (atStart|atCenter) "atStart"
838 %volume_properties;>
839
840<!ELEMENT stackY ( %any_relative_position; )+ >
841<!ATTLIST stackY
842 origin (atStart|atCenter) "atStart"
843 %volume_properties;>
844
845<!ELEMENT stackZ ( %any_relative_position; )+ >
846<!ATTLIST stackZ
847 origin (atStart|atCenter) "atStart"
848 %volume_properties;>
849
850<!ENTITY % any_single_position ' posXYZ | posRPhiZ | rot | transform '>
851
852<!ELEMENT union ( %any_single_position; )+ >
853<!ATTLIST union
854 %volume_properties;>
855
856<!ELEMENT intersection ( %any_single_position; )+ >
857<!ATTLIST intersection
858 %volume_properties;>
859
860<!ELEMENT subtraction ( %any_single_position; )+ >
861<!ATTLIST subtraction
862 %volume_properties;>
863
864<!ENTITY % any_parameter 'real | string | reference |
865 real_array | string_vector | reference_vector'>
866
867<!ELEMENT parameters ( %any_parameter; )* >
868<!ATTLIST parameters
869 name ID #REQUIRED
870 type CDATA #REQUIRED>
871
872<!ENTITY % parameter_properties 'name CDATA #IMPLIED
873 comment CDATA #IMPLIED'>
874
875<!ELEMENT real EMPTY>
876<!ATTLIST real
877 %parameter_properties;
878 value CDATA #REQUIRED
879 unit ( m | cm | mm |
880 degree | radian | mrad |
881 percent | none ) #REQUIRED>
882
883<!ELEMENT string EMPTY>
884<!ATTLIST string
885 %parameter_properties;
886 value CDATA #REQUIRED>
887
888<!ELEMENT reference EMPTY>
889<!ATTLIST reference
890 %parameter_properties;
891 value IDREF #REQUIRED>
892
893
894<!ELEMENT string_data EMPTY>
895<!ATTLIST string_data
896 value CDATA #REQUIRED>
897
898<!ELEMENT reference_data EMPTY>
899<!ATTLIST reference_data
900 value IDREF #REQUIRED>
901
902<!ELEMENT real_array EMPTY >
903<!ATTLIST real_array
904 %parameter_properties;
905 values CDATA #REQUIRED
906 unit ( m | cm | mm |
907 degree | radian | mrad |
908 percent | none ) #REQUIRED>
909
910<!ELEMENT string_vector ( string_data )+ >
911<!ATTLIST string_vector
912 %parameter_properties;>
913
914<!ELEMENT reference_vector ( reference_data )+ >
915<!ATTLIST reference_vector
916 %parameter_properties;>
917
918<!ENTITY % position_properties 'volume IDREF #REQUIRED
919 rot CDATA "0 0 0"
920 S CDATA "0"
921 %units; '>
922
923<!ELEMENT posXYZ ( %any_identifier; )* >
924<!ATTLIST posXYZ
925 X_Y_Z CDATA "0 0 0"
926 %position_properties;>
927
928<!ELEMENT posRPhiZ ( %any_identifier; )* >
929<!ATTLIST posRPhiZ
930 R_Phi_Z CDATA "0 0 0"
931 S CDATA "0"
932 %position_properties;>
933
934<!ELEMENT mposPhi ( %any_identifier; )* >
935<!ATTLIST mposPhi
936 ncopy CDATA #REQUIRED
937 Phi0 CDATA "0"
938 dPhi CDATA #IMPLIED
939 R_Z CDATA "0 0"
940 S CDATA "0"
941 %position_properties;>
942
943<!ELEMENT mposR ( %any_identifier; )* >
944<!ATTLIST mposR
945 ncopy CDATA #REQUIRED
946 R0 CDATA "0"
947 dR CDATA #REQUIRED
948 Z_Phi CDATA "0 0"
949 S CDATA "0"
950 %position_properties;>
951
952<!ELEMENT mposX ( %any_identifier; )* >
953<!ATTLIST mposX
954 ncopy CDATA #REQUIRED
955 X0 CDATA "0"
956 dX CDATA #REQUIRED
957 Y_Z CDATA "0 0"
958 S CDATA "0"
959 %position_properties;>
960
961<!ELEMENT mposY ( %any_identifier; )* >
962<!ATTLIST mposY
963 ncopy CDATA #REQUIRED
964 Y0 CDATA "0"
965 dY CDATA #REQUIRED
966 Z_X CDATA "0 0"
967 S CDATA "0"
968 %position_properties;>
969
970<!ELEMENT mposZ ( %any_identifier; )* >
971<!ATTLIST mposZ
972 ncopy CDATA #REQUIRED
973 Z0 CDATA "0"
974 dZ CDATA #REQUIRED
975 R_Phi CDATA "0 0"
976 X_Y CDATA "0 0"
977 S CDATA "0"
978 %position_properties;>
979
980<!ELEMENT rot ( %any_position; )+ >
981<!ATTLIST rot
982 matrix CDATA "1 0 0 0 1 0 0 0 1"
983 %position_properties; >
984
985<!ELEMENT transform ( %any_position; )+ >
986<!ATTLIST transform
987 rot CDATA "1 0 0 0 1 0 0 0 1"
988 pos CDATA "0 0 0"
989 %position_properties; >
990
991<!ENTITY % relative_position_properties 'volume IDREF #REQUIRED
992 dX CDATA "0"
993 dY CDATA "0"
994 dZ CDATA "0"
995 rotation CDATA "0"
996 %units; '>
997
998<!ELEMENT axisPos ( %any_identifier; )* >
999<!ATTLIST axisPos
1000 shift CDATA "0"
1001 gap CDATA "0"
1002 %relative_position_properties;>
1003
1004<!ELEMENT axisMPos ( %any_identifier; )* >
1005<!ATTLIST axisMPos
1006 ncopy CDATA #REQUIRED
1007 shift0 CDATA "0"
1008 gap0 CDATA "0"
1009 shift CDATA "0"
1010 gap CDATA "0"
1011 %relative_position_properties;>
1012
1013<!ELEMENT materials ( element | composite )+>
1014<!ATTLIST materials
1015 version CDATA #REQUIRED
1016 date CDATA #REQUIRED
1017 author CDATA #REQUIRED
1018 %DTD_constraint;>
1019
1020
1021<!ELEMENT element EMPTY>
1022<!ATTLIST element
1023 symbol CDATA #IMPLIED
1024 name ID #REQUIRED
1025 z CDATA #REQUIRED
1026 aweight CDATA #REQUIRED
1027 density CDATA #IMPLIED>
1028
1029<!ELEMENT composite ( addmaterial )+>
1030<!ATTLIST composite
1031 name ID #REQUIRED
1032 density CDATA #REQUIRED>
1033
1034<!ELEMENT addmaterial ( fractionmass | natoms ) >
1035<!ATTLIST addmaterial
1036 material IDREF #REQUIRED
1037>
1038
1039<!ELEMENT fractionmass EMPTY>
1040<!ATTLIST fractionmass
1041 fraction CDATA #REQUIRED
1042>
1043
1044<!ELEMENT natoms EMPTY>
1045<!ATTLIST natoms
1046 n CDATA #REQUIRED
1047>
1048
1049
1050
1051
1052
1053