25.3. Moving Detectors
Table of Contents
Rotation
In time dependent simulations you will often need detectors that move around the object while the sources and materials stay fixed. In GATE this motion is handled by time dependent transformations that are attached to volumes. The detector volume keeps the same local geometry, for example the shape and internal structure of a gamma camera head, but its position and orientation in the global world changes as a function of simulation time.
Rotation is the most common motion for imaging scanners. SPECT systems rotate a gamma camera around the patient, and CT scanners rotate the x ray source and detector around the isocenter. In GATE you implement this as a rotation that depends on time. Conceptually, at each time $t$ the detector has a rotation matrix $R(t)$ that defines how the local detector axes are oriented in the world.
A simple rotation that is often used in medical imaging is a uniform rotation at constant angular speed. If the detector rotates around the $z$ axis, and you want it to complete one full revolution in a duration $T$, then the rotation angle $\theta(t)$ at time $t$ is
$$
\theta(t) = 2 \pi \frac{t}{T}.
$$
For a uniform rotation over a time interval $[0, T]$, the rotation angle as a function of time is
$$
\theta(t) = \omega t, \quad \omega = \frac{2\pi}{T},
$$
where $\omega$ is the angular velocity in radians per second.
In practice you specify this rotation in your simulation configuration. In OpenGATE this is often done by assigning a time dependent transformation object to the detector volume. The transformation combines a rotation and optionally a translation. For a pure rotation around one axis, you only change the angle parameter with time and keep the rotation axis fixed. If your scanner uses multiple detector heads, you can apply the same time law to each head with a constant offset angle, for example one head at $\theta(t)$ and another at $\theta(t) + \pi$ to maintain opposite positions.
A useful way to think about rotational motion is in terms of projection angles. For SPECT or CT you often want projections at a set of discrete angles. In a time based simulation this corresponds to dividing the acquisition duration into equal time intervals, each interval associated with one angle. If the total acquisition time is $T$ and you want $N$ projections, each projection lasts $\Delta t = T / N$. Over each interval the detector angle can either be kept constant, for a step and shoot model, or change linearly, for continuous rotation. In a continuous model events produced at different times within a single interval correspond to slightly different angles. This is realistic for systems that acquire counts while rotating.
For more complex trajectories you can define $\theta(t)$ with a different function. You might want the detector to accelerate and decelerate, pause at certain angles, or oscillate over a limited angular range. As long as you define a consistent function for the rotation angle, GATE will propagate particles according to the actual detector pose at the event time. The rest of the physics, such as interactions and scoring, does not change. Only the geometry transform that maps between local detector coordinates and world coordinates changes with time.
When you combine rotation with internal detector identifiers, such as crystal index or module index, it is important to remember that the IDs stay attached to the local geometry, not to the world position. For example, crystal 0 of a ring will always be crystal 0, even though its $x, y, z$ coordinates in the world vary with time. This is the basis of building sinograms in PET and projection images in SPECT and CT, where each detector element contributes data from many different spatial positions because of its rotation.
Translation
Translation of detectors is the second common form of motion. Instead of changing the orientation, you change the detector position in the world while keeping the orientation fixed, or you combine both. Translational motion is used to simulate linear scanning, for example a flat panel moving along a patient, table motion through a CT gantry, or detector heads that move closer to or farther from the patient.
Mathematically, translation is described by a time dependent position vector $\mathbf{r}(t) = (x(t), y(t), z(t))$ that replaces the usual constant position. A simple and frequent case is motion at constant speed along one axis. If the detector starts at position $\mathbf{r}_0$ and moves in the direction of the unit vector $\hat{\mathbf{u}}$ with constant speed $v$, then the position at time $t$ is given by
$$
\mathbf{r}(t) = \mathbf{r}_0 + v t \, \hat{\mathbf{u}}.
$$
For a detector that moves linearly at constant speed $v$ along direction $\hat{\mathbf{u}}$, starting at position $\mathbf{r}_0$, the detector position at time $t$ is
$$
\mathbf{r}(t) = \mathbf{r}_0 + v t \, \hat{\mathbf{u}}.
$$
This form is the basis for uniform translational motion in simulations.
In your GATE configuration you express this by attaching a translation time law to the volume. The simulation kernel then computes the correct detector position whenever a particle interacts with it. If you want to simulate a finite scan length, you choose a total distance $L$ and a scan duration $T$. The required speed is then $v = L / T$, and the position can be written as
$$
\mathbf{r}(t) = \mathbf{r}_0 + \frac{L}{T} t \, \hat{\mathbf{u}},
$$
for $0 \leq t \leq T$. Outside this interval you can keep the detector fixed at the start or end position, depending on your acquisition protocol.
Translations are especially useful in simulations that mimic clinical motion management. A common example is the longitudinal motion of the patient table through a CT scanner. In this case the detector and x ray source may rotate while the table translates. You then define both a rotational law for the gantry and a translational law for the patient volume. Similarly, in PET or SPECT you can simulate bed motion to extend the axial field of view by translating the patient in steps or continuously.
In imaging simulations that use translations to build up coverage, you typically link specific time intervals to specific positions, just as you did for rotation and angles. For step and shoot motion, the detector remains at a fixed position during each interval, and you then shift to the next position instantaneously between intervals. For continuous motion, the detector position changes smoothly while data are collected, which is more realistic for modern helical CT or continuous table motion PET.
When rotation and translation are combined, which is often the case in realistic scanners, the full transformation at time $t$ consists of a rotation matrix $R(t)$ and a translation vector $\mathbf{r}(t)$. The detector local point with coordinates $\mathbf{x}_{\text{local}}$ is located in the world at
$$
\mathbf{x}_{\text{world}}(t) = R(t) \, \mathbf{x}_{\text{local}} + \mathbf{r}(t).
$$
The general time dependent transformation for a moving detector combines rotation and translation,
$$
\mathbf{x}_{\text{world}}(t) = R(t) \, \mathbf{x}_{\text{local}} + \mathbf{r}(t),
$$
where $R(t)$ is a rotation matrix and $\mathbf{r}(t)$ is a translation vector.
This formula is what the simulation engine effectively uses when it propagates particles and checks for intersections with volumes. As with pure rotation, the structure of the detector and its readout scheme do not change. Only the mapping between local indices and world positions is time dependent.
In practice, when you design a time dependent simulation with moving detectors, you choose motion laws that match the intended acquisition. You then make sure that the total simulation time, the temporal profiles of source activity, and the motion definitions are consistent. Once this is done, you can analyze the resulting data by grouping events according to time, which corresponds to different positions or angles of the detectors, and then reconstruct images or dose distributions that reflect the full time dependent motion.
Views: 10
KAHIBARO