Greetings,
Disclaimer: To the best of my knowledge, the following only affect scanner with detector’ orientation that have a non-zero Z component and if the multiSiddon projector is used.
In that specific cases, I believe that the multiSiddon projector currently has a bug, as shown in [1]. However, it is already indirectly hinted in CASToR documentation that a scanner axial axis are assumed to be the z-axis (and also stated in [2]). Also, most scanner are a discretization of a cylinder which make that restriction almost trivial to deal with (helmet-type PET scanner would be an exception).
Thus, I have two suggestions:
- Explicitly mention in the CASToR documentation that scanner axial axis are assumed to be in the z-axis.
- This just to warn user that some functionality might break if this is not respected. While the code might be general enough that it is not really the case, the documentation hints as such and it simplify a couple of things if we can make that assumption.
- For the multiSiddon projector, I would propose that either…
a) Explicitly mention in the CASToR documentation that non-null z component for detector’ orientation is currently not supported for the multiSiddon projector and simplify the multiSiddon code by removing the uZ.
- While it is not supported, the computation using uZ is a waste.
b) Change the creation of the detector’ axes such that they are orthonormal.
- I have a proposition that I can commit for review, if desired.
While not supporting uZ =/= 0.0 would remove some computations, it seems nice to be able to be a little more general. However, I do not know if it is currently worth it.
Bests,
Maxime Toussaint
[1] In CASToR v3.1.1, the detector axise are defined as:
depth = [uX sqrt(1 - uZ^2), uY sqrt(1 - uZ^2), uZ]
trans = [uY, -uX, 0.0]
axial = [uX uZ, uY uZ, sqrt(1 - uZ^2)]
with dettectorOrientation = [uX, uY, uZ]
From there, we can show that ||depth|| = (…) = uX^2 + uY^2 + uZ^2 - uX^2 uZ^2 - uY^2 uZ^2 = 1.0 - uX^2 uZ^2 - uY^2 uZ^2. Thus, ||depth|| =/= 1 if uZ =/= 0.
We can also show that depth and axial are not orthogonal if uZ =/= 0.0.
[2] Possible problem with multiSiddon projector random sampling