<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
</div>
<span>Greetings,<br>
</span>
<div><br>
</div>
<div>I was curious about your discovery and started to check it out. I am not totally sure but I think there is something else in this bug.<br>
</div>
<div><br>
</div>
<div>The tool castor-GATERootToCastor only require a projector object when evaluating attenuation coefficients. Since these coefficients are independent of TOF, the projector should not need TOF information. Worse, if the projector use the TOF information,
 the attenuation coefficients will be evaluated from a portion of the LOR which does not fit the reality. However, my previous statement might not be true for on-the-fly system matrix computing. I will leave it to more knowledgeable peers to confirm or infirm
 that part. <br>
</div>
<div><br>
</div>
<div>In short, my understanding is that TOF should be disabled for the tools castor-GATERootToCastor when evaluating attenuation coefficients (Using the SetIgnoreTOFFlag method, most likely) which should remove the error you observed.<br>
</div>
<div><br>
</div>
<div>On that note, I also like the idea that the variable m_TOFMeasurementRangeInPs can be user/scanner defined. While the current approach defined in castor-GATERootToCastor, which is data dependent(1), is efficient, it is true that we sometime want to fix
 that value for comparison or whatnot.<br>
</div>
<div><br>
</div>
<div>Have a nice day,<br>
</div>
<div>Maxime   <br>
</div>
<div><br>
</div>
<div>(1) ((iDataFilePET*)Out_data_file)->SetTOFMeasurementRangeInPs(dt_max - dt_min);<br>
</div>
<div><br>
</div>
<span></span>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div id="appendonsend"></div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size: 11pt;" data-ogsc=""><b>De :</b> Castor-users <castor-users-bounces@lists.castor-project.org> de la part de Grahe, Jan <jan.grahe@pmi.rwth-aachen.de><br>
<b>Envoyé :</b> 23 janvier 2020 07:34<br>
<b>À :</b> castor-users@lists.castor-project.org <castor-users@lists.castor-project.org><br>
<b>Objet :</b> [Castor-users] Bug toolkits/castor-GATERootToCastor.cc</font>
<div> </div>
</div>
<div lang="EN-US">
<div class="x_WordSection1">
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Dear CASToR developers,</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
I tried converting a PET list-mode generated by GATE into the CASToR format using the castor-GATERootToCastor toolkit and obtained an error:
</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
“….</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
sScannerManager::Initialize() -> From scanner PET_PHILIPS_VEREOS</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
iScannerPET::Initialize() -> Initialize remaining stuff for scanner to be ready</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
oProjectorManager::Initialize() -> Initialize projectors and projection lines</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
  --> Use TOF projector for listmode data</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
***** vProjector::CheckParameters() -> Inconsistent TOF related parameters !</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
***** oProjectorManager::ParseOptionsAndInitializeProjectors() -> A problem occurred while checking forward projector parameters !</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
***** oProjectorManager::Initialize() -> A problem occurred while parsing projector options and initializing it !”</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Turns out, that the variable <i>m_TOFMeasurementRangeInMm</i> has a value of “-0.1498962” in the
<i>oProjectorManager</i>, which caused the error in the <i>vProjector::CheckParameters()</i>. This variable is obtained from the
<i>vDataFile* Out_data_file</i> using the method <i>GetTOFMeasurementRangeInPs().</i> The datafile is initialized in the castor-GATERootToCastor.cc file and handed to the
<i>p_ProjectManager</i> using the <i>SetDataFile()</i> method. However, the m_<i>TOFMeasurementRangeInPs</i> variable is set to -1 in the constructor and not set in the
<i>castor-GATERootToCastor</i> toolkit before the <i>oProjectorManager</i> requires this variable to be set when calling it’s
<i>Initialize() </i>function. </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Therefore, to use the toolkit with TOF right now I added the red line in the toolkit (the block is approx. at line ~970 of the document):</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
“….</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
// Set ToF</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
      if(tof_reso>=0)</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
      {</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
        ((iDataFilePET*)Out_data_file)->SetTOFInfoFlag();</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
        ((iDataFilePET*)Out_data_file)->SetTOFResolutionInPs(tof_reso);</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
        <span style="color: red;">((iDataFilePET*)Out_data_file)->SetTOFMeasurementRangeInPs(myScannersTOFrange);</span></p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
      }</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
”</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
This seems to solve the problem, but only with the <u>general coincidence time window of the scanner</u> instead of the longest coincidence time of all events in your datafile. Not sure if that is correct or a factor of e.g. 2 has to be applied. If there is
 no problem with that, you could fix this bug generally by getting the coincidence time window of the scanner and then later update it to the real variable when all the events have been processed.</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
As this only happens in version 3.0, can I still reconstruct images with CASToR 3.0 using datafiles generated with the CASToR 2.0 framework?</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Thanks and I hope this helps!</p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
Jan </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
<p class="x_MsoNormal" style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;">
 </p>
</div>
</div>
</body>
</html>