Greetings,
We discovered a mismatch between the LUT generated by CASToR in castor-recon and Gate detector center position for a scanner defined as a Cylindrical Pet with DOI layer. After some investigation, the mismatch was shown to be mostly radial and due to an "error" in defining the scanner layer radius.
From our understanding, Gate defines a detector position relative to the detector center while CASToR defines it, at least temporally, relative to its front face. While they can be made equivalent, the current conversion of Gate "layer translation" to "scanner layer radius" seems to be at fault. Currently, the layer translation, defined in Gate relative to the center of its Parent, is applied directly to the "layer front face radius" which is not equivalent.
Following this email, we propose a solution which work for our case. However, it is not perfect. For example, one of its limitation, if my understanding is correct, is that it assume that the face of the first DOI layer correspond to "block_pos_{X/Y}" which is "near enough" but not exactly true most of the time.
Best,
Maxime Toussaint
In src/management/gDataConversionUtilities.cc
-
if ( l == 0)
-
{
-
vec_scanner_radius.push_back( toString(scanner_radius) );
-
}
-
else
-
{
-
vec_scanner_radius.push_back( toString(stod(vec_scanner_radius[l-1]) + layers_size_depth[l-1]) );
-
}
- vec_scanner_radius.push_back( toString(scanner_radius+layers_positions[l][0]) );