]>
Commit | Line | Data |
---|---|---|
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 | ||
28 | 1) 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 | ||
43 | 1.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 | ||
62 | 1.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 | ||
80 | 1.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 | ||
132 | 1.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 | ||
174 | 1.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 | ||
183 | 1.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 | ||
194 | 1.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 | ||
210 | 1.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 | ||
236 | 1.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 | ||
259 | 1.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 | ||
287 | 1.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 | ||
314 | 1.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 | ||
385 | 1.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 | ||
407 | 1.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 | ||
437 | 1.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 | ||
456 | 1.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 | ||
472 | 1.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 | ||
486 | 1.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 | ||
505 | 1.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 | ||
532 | 1.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 | ||
571 | 2) 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 | ||
578 | 2.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 | ||
615 | 2.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 | ||
630 | 2.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 | ||
657 | 2.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 | ||
694 | 2.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 | |
740 | with 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 |