KAHIBARO
Discord Login Register

46.5. Changing Shield Thickness

Understanding Shield Thickness in Simulation

In a radiation shielding simulation with GATE, the shield thickness is a controllable geometric parameter that directly affects how many photons are transmitted. In this chapter you focus on how to represent thickness in your geometry, how to change it in your Python script, and how to vary it systematically to study attenuation.

You already know how to create a source and a shield from earlier sections of this practical example. Here you will only adjust the size of the shield in the beam direction and reuse the rest of the setup.

Thickness as a Geometry Parameter

In GATE, the shield is typically implemented as a simple solid, for example a box volume. For a mono‑directional gamma beam, you usually orient the box so that one dimension is along the beam axis. That dimension is then interpreted as the shield thickness.

If your beam travels along the positive $z$ axis, a natural choice is:

In Geant4 and GATE, box sizes are given as half lengths. So if you want a thickness $t$ along $z$, you must set the half length to $t/2$. For example, a 5 cm thick lead plate centered at the origin has $z$ half length of $2.5\ \text{cm}$.

In GATE box geometry, the size you provide for each axis is the half length.
Required shield thickness $t$ along the beam axis:
Half length to set in the simulation: $t/2$.

This convention is a common source of confusion. Always check whether you are specifying total length or half length when you change thickness.

Implementing Thickness Changes in Python

In an OpenGATE Python simulation, you typically create the shield as a volume with a defined size. A simplified pattern for a box shield aligned with the $z$ axis is:

python
import opengate as gate
from opengate.units import mm
sim = gate.Simulation()
# ... world, source, physics, and actors already defined ...
shield = sim.add_volume("Box", "shield")
shield.mother = "world"
shield.size = [50 * mm, 50 * mm, 10 * mm]  # half lengths in x, y, z
shield.translation = [0 * mm, 0 * mm, 0 * mm]
shield.material = "G4_Pb"

Here, the shield thickness along $z$ is $2 \times 10\ \text{mm} = 20\ \text{mm}$, that is 2 cm of lead. To change the thickness, you only adjust the third component of size.

To make this flexible and easy to modify, it is better to define a variable for the total thickness and compute the half length:

python
shield_thickness = 20 * mm            # total thickness along z
half_thickness = shield_thickness / 2
shield.size = [50 * mm, 50 * mm, half_thickness]

Now you can change shield_thickness in one place and the geometry updates accordingly. This is especially helpful when you run multiple simulations with different thickness values.

Avoiding Unit and Position Mistakes

Since you work with multiple thickness values, it is important to be strict about units and placement.

First, always multiply by the correct unit when you define shield_thickness. If you intend 2 cm of lead, use:

python
shield_thickness = 2.0 * cm

and not 2.0 * mm.

Second, confirm that the shield is actually intersected by the beam. For a collimated beam along $+z$, centered at $x = y = 0$, a shield at the origin with translation [0, 0, 0] is fine. If you move the shield away from the origin, you must account for its half thickness so that the beam crosses material, for example:

python
shield.translation = [0 * mm, 0 * mm, 50 * mm]  # center position

If the beam source is at negative $z$ and the detector is at positive $z$, you can place the shield between them and then vary thickness without changing its center.

A simple consistency check is to visualize the geometry after changing thickness and verify that the beam path crosses the shield volume completely.

Systematic Studies with Multiple Thicknesses

To study attenuation, you typically simulate the same source and detector setup for several shield thickness values and record the transmitted photon counts. The easiest way to do this is to loop over a list of thicknesses and run one simulation per value.

A simple pattern is:

python
import numpy as np
from opengate.units import mm, cm
thickness_values = [0 * mm, 5 * mm, 10 * mm, 20 * mm, 30 * mm]
for t in thickness_values:
    sim = gate.Simulation()
    # configure world, source, physics, detector, actors ...
    shield = sim.add_volume("Box", "shield")
    shield.mother = "world"
    shield_thickness = t
    half_thickness = shield_thickness / 2
    shield.size = [50 * mm, 50 * mm, half_thickness]
    shield.translation = [0 * mm, 0 * mm, 0 * mm]
    shield.material = "G4_Pb"
    # set output directory or file name that encodes the thickness
    sim.output_dir = f"results_thickness_{int(t / mm)}mm"
    sim.run()

For a more advanced setup, you might keep a common base configuration and only change the thickness and output directory. The important points are:

You do not change the source definition, the detector, or the scoring actor between runs, only the shield thickness. You label your output clearly so you can later relate transmitted counts to each thickness.

Once the simulations are finished, you will use the recorded number of transmitted photons to compute transmission and attenuation as a function of thickness. That analysis is covered in later sections of this practical example. Here the focus is to ensure that varying thickness in your geometry is well controlled and reproducible.

Relating Thickness to Attenuation

Although the detailed formulas are discussed in the chapter about attenuation, it is helpful to remember the basic exponential behavior. For a narrow gamma beam in a homogeneous material, the transmitted intensity $I$ as a function of thickness $x$ is:

$$
I(x) = I_0 \, e^{-\mu x},
$$

where $I_0$ is the unshielded intensity and $\mu$ is the linear attenuation coefficient of the material.

By changing the shield thickness in your simulation and measuring the transmitted intensity, you obtain pairs $(x, I(x))$. These data points will later allow you to compute transmission $T(x) = I(x) / I_0$ and compare your Monte Carlo results with the analytical exponential law.

Transmission through a homogeneous shield of thickness $x$ behaves approximately as
$$T(x) = \frac{I(x)}{I_0} = e^{-\mu x}.$$
Accurate thickness definition in your geometry is essential when comparing GATE results with this analytical model.

As long as you control the thickness parameter precisely and keep all other conditions fixed, your radiation shielding simulations will give you a clear picture of how material thickness reduces the photon fluence.

Views: 11

Comments

Please login to add a comment.

Don't have an account? Register now!