Possible problem with geom creation for Cylindrical Pet scanner with DOI layer


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.

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]) );

Hi Maxime,

Thank you for the work. There was indeed mismatches with the positioning in the layers. Additionally, even with a single layer the code assumes that the rsector face corresponds to the detector faces, which is not necessarily true. I made some quick fixes (code in attached), which should correct the issue. They will be included in the next code update.

Many thanks,
Thibaut M.

castor_v2.0.3.zip (2.45 MB)