KAHIBARO
Discord Login Register

7.2. Repeated Volumes

Table of Contents

Repetition

Repeated volumes let you define a single logical object and place many identical copies of it automatically. In GATE this is essential for building realistic scanners without writing hundreds or thousands of individual volume definitions by hand.

Conceptually, you start from a reference volume, for example a single crystal, pixel, or module. You give it a size, a material, and a parent volume, exactly as for any other geometry object. Instead of creating a new volume and specifying a different position for each copy, you define a repetition pattern that tells GATE how many copies you want and how they should be arranged inside the parent.

At the Geant4 level, repeated geometry can be built using parameterised placements, replicas, or regular structures. OpenGATE provides a higher level description so you rarely need to interact directly with the underlying Geant4 classes. You specify repetition through configuration parameters of a volume, not by writing low level C++ code.

The most common repetition patterns in medical physics simulations are regular linear arrays and ring arrangements. In a linear array, copies are placed at equally spaced positions along one or more coordinate axes. In a ring, copies are distributed uniformly in angle around a circle in the transverse plane. Both patterns can be combined hierarchically, for example a ring of modules where each module itself contains a 2D array of crystals.

A key idea is that the volume you repeat is usually at the lowest repeating level. Instead of repeating a large, complex hierarchy, you define that hierarchy once, then repeat the smallest building block inside a slightly larger parent. This keeps the geometry structure readable and makes it easier to debug.

In practice you configure repetition by specifying how many copies you want in each direction, and the spacing between them, or the total span that the copies should fill. For a 1D array along the $x$ axis you define a number of elements and either a pitch (center to center distance) or a total length to be covered. For a 2D array you do the same along two axes. GATE then computes the center position of each copy automatically.

It is important to remember that repeated volumes live inside a single parent volume. Their positions are always defined in the coordinate system of that parent, not in the world coordinate system. If the parent itself is rotated or translated, all of its children, including all repeated copies, move together. This is how you can build a module once, place it around a ring many times, and still have correctly positioned and oriented crystals inside every module.

Repeated volumes must still respect geometry rules. Copies must fit completely inside their parent volume and should not overlap other unrelated volumes. When you choose a pitch that is too small relative to the child size, copies will overlap. Visualization is very helpful for checking that a repetition pattern produces the arrangement you expect. When you see unexpected overlaps, adjust the pitch or the number of copies until the layout is physically valid.

For many applications you will use repetition repeatedly, at several levels, to create a hierarchical structure. For example, you can build a cube of voxels by repeating a basic voxel along three axes inside a parent volume that represents the whole phantom. The advantage of this method is that once the pattern is correct, you can change global properties, such as the number of voxels or their size, by modifying only a few parameters at the parent or at the repeated child level, rather than editing each individual object.

Repeated volumes also improve performance compared to manually creating thousands of separate volumes. Geant4 is optimized to handle regular repeated structures efficiently. When you rely on repetition patterns, navigation through the geometry can use mathematical formulas instead of searching through a large, flat list of independent objects. This can significantly reduce simulation time in detectors with many elements.

Finally, repetition is particularly powerful when combined with parameterized configuration. Instead of writing hard coded coordinates, you compute pitches and counts from high level scanner parameters, such as field of view and required spatial resolution. This approach is discussed in more detail when you learn about reusable geometry functions and parameterized geometry, but the main idea is that repeated volumes form the backbone of such modular designs.

Important: Repeated volumes must be completely contained inside their parent, must not overlap each other, and their positions are expressed in the parent coordinate system. Always check your repetition pitch and number of copies to avoid invalid geometries.

Detector arrays

Detector arrays are one of the main reasons to use repeated volumes in GATE. A detector array is simply a regular arrangement of identical sensitive elements, such as scintillation crystals, semiconductor pixels, or photodetector channels. In scanners used for PET, SPECT, CT, and many dedicated gamma cameras, the bulk of the geometry is a set of arrays at different hierarchical levels.

At the lowest level, you typically define a single detector element. This might be one crystal in a PET scanner or one pixel in a flat panel detector. You assign its size, material, and a parent volume, often a block or module housing. You then declare that this element is repeated to form a 1D or 2D detector array inside the parent.

A one dimensional detector array is useful for building linear detectors, such as the rows of elements in a CT detector arc, or for forming one dimension of a larger two dimensional grid. You specify how many elements you want along a particular axis and a pitch that accounts for both the element size and any gap between elements. The pitch determines the center to center distance between neighboring elements, and must be at least as large as the element size along that axis if you want to avoid overlaps.

Two dimensional arrays are the most common configuration in gamma cameras and PET detector blocks. In this case you define the number of elements in $x$ and $y$, and the corresponding pitches. The elements then form a regular grid that covers a rectangular area. By adjusting the number of elements and the pitch you can match the desired field of view and spatial sampling of your detector without changing the individual element geometry.

Detector arrays can be combined hierarchically. For example, a PET scanner can be built starting from a 2D array of crystals inside a block, then arranging multiple blocks in a ring around the field of view. In GATE you would first define the crystal array within a block using repetition, then define a ring repetition of blocks around the scanner axis. This hierarchy keeps the logical structure of the detector clear and lets you modify each level independently.

A useful way to think about detector arrays is as a mapping between physical space and detector channel indices. Each repeated element can be associated with one or more identifiers such as a crystal ID, a block ID, or a ring ID. Digitizers, singles, and coincidence sorting will refer to these identifiers when describing where events happened. Even though the geometry is created through repetition, GATE keeps track of each physical element as a separate volume with its own index within the array. This is essential for building realistic detector response models.

When designing detector arrays you should consider both geometric and performance aspects. Geometrically, you want full coverage of the sensitive area with minimal dead space, and no overlaps. From a performance point of view, a fine array with many small elements increases spatial resolution, but also increases the total number of volumes that Geant4 must manage. Repetition makes large arrays feasible, but extremely fine discretizations can still slow down navigation. Choosing element sizes and array dimensions that are realistic and efficient is part of good detector design.

In practice you will often compute array parameters from desired global properties. For instance, if you know the total detector width and the crystal width, you can derive how many crystals fit and what pitch to use to include a small gap. Conversely, if you have a fixed number of elements and want a specific total width, you can calculate the pitch as total width divided by the number of elements. Expressing these relationships directly in your simulation script helps keep the array definitions consistent when you change high level scanner requirements.

Visualizer tools are extremely helpful for verifying detector arrays. By enabling geometry visualization and zooming into a detector module, you can confirm that crystals are correctly aligned, that gaps match expectations, and that edges of the array line up with other parts of the scanner. If detector elements appear to overlap or if there are unexpected voids, you can revise the pitch or number of elements and rerun the visualization before starting long simulations.

Detector arrays built from repeated volumes are the foundation for realistic modeling of scanner performance. All later steps, including hits, digitization, singles, and coincidences, depend on the underlying geometry of these arrays. Once you are comfortable defining simple arrays, you can extend the same approach to more complex configurations, such as staggered rows, multiple layers of detectors, or curved arrays that follow noncylindrical surfaces.

Views: 11

Comments

Please login to add a comment.

Don't have an account? Register now!