Useful Extentions to the AgML language

The purpose of this blog is to start documenting some (potentially) useful extentions to the AgML language.  At present we are constrained by backwards compatability issues with starsim/geant3... if it's not in geant3 we can't make use of it.  Once we migrate fully to ROOT and virtual Monte Carlo, we will be able to take advantage of the full functionality of TGeo geometry classes.

0. A flag to indicate backwards compatability with starsim is required... probably use the CDE block.  If present, limit names to four characters, disallow extentions listed below, etc...

<CDE> ... </CDE> 

1. Extrusion shapes

     Described by a set of vertices, and the x, y center of each z slice, and a scale at each z.

<Shape type="Xtru" nz="NZ" xcenter="{...}" ycenter="{...}" zslice="{...}" scale="{...}"
       nvert="NVERT" xvert="{...}" yvert="{...}" zvert="{...}"  />

     Could not be emulated in AgSTAR

2. Composite shapes

<Shape type="Composite" name="MyShape" operation="Add">
       <Shape type="Tube" rmin="0" rmax="10" dz="20" name="Tube1" />
       <Shape type="Tube" rmin="0" rmax="20" dz="10" name="Tube2" />
       <Placement shape="Tube1" x="-10" />
       <Placement shape="Tube2" y="+10"  >
           <Rotation alphaz="10" />
       </Placement>
</Shape>

    Could be emulated in AgSTAR using multiple volumes and "MANY" flag, at least for the addition operation.

3. Containers and Assemblies

<Container name="NAME" comment="A virtual volume whose material must be left unspecified (inherits from mother)">
...
</Container>
<Assembly name="NAME" comment="A virtual volume with no shape, attributes or medium">
...
</Assembly>

    Both can be emulated in AgSTAR.