Skip to content

Commit 902efda

Browse files
authored
Merge pull request #655 from OpenGATE/kochebina-patch-7
Update digitizer_and_detector_modeling.rst
2 parents c2ae546 + a426056 commit 902efda

File tree

1 file changed

+18
-34
lines changed

1 file changed

+18
-34
lines changed

docs/digitizer_and_detector_modeling.rst

Lines changed: 18 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,9 @@ TransferEfficiency: the transfer efficiencies of the light photons in each cryst
829829

830830
QuantumEfficiency: simulates the quantum efficiency for each channel of a photo-detector, which can be a Photo Multiplier Tube (PMT) or an Avalanche Photo Diode (APD).
831831

832+
It is possible also take into account the crosstalk of the scintillation light between neighboring crystals. The percentage of energy that is given to the neighboring crystals is determined by the user. To insert a crosstalk module for corners and for egdes, please use *setXtalkEdgesFraction* and *setXtalkCornersFraction*.
833+
834+
832835
The command lines are illustrated using an example of a phoswich module made of two layers of different crystals. One crystal has a light yield of 27000 photons per MeV (LSO crystal), a transfer efficiency of 28%, and an intrinsic resolution of 8.8%. The other crystal has a light yield of 8500 photons per MeV (LuYAP crystal), a transfer efficiency of 24% and an intrinsic resolution of 5.3%
833836

834837
In the case of a *cylindricalPET* system, the construction of the crystal geometry is truncated for clarity (the truncation is denoted by ...). The *digitizer* command lines are::
@@ -858,13 +861,17 @@ In the case of a *cylindricalPET* system, the construction of the crystal geomet
858861
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setTECoef 0.28
859862
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setLightOutput 27000
860863
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setUniqueQE 0.1
864+
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setXtalkEdgesFraction 0.1
865+
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setXtalkCornersFraction 0.05
861866

862867
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/insert intrinsicResolution
863868
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/intrinsicResolution/setIntrinsicResolution 0.088
864869
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/intrinsicResolution/setEnergyOfReference 511 keV
865870
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/intrinsicResolution/setTECoef 0.24
866871
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/intrinsicResolution/setLightOutput 8500
867872
/gate/digitizerMgr/LuYAPlayer/SinglesDigitizer/Singles/intrinsicResolution/setUniqueQE 0.1
873+
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setXtalkEdgesFraction 0.15
874+
/gate/digitizerMgr/LSOlayer/SinglesDigitizer/Singles/intrinsicResolution/setXtalkCornersFraction 0.1
868875
869876

870877
Note: A complete example of a phoswich module can be in the PET benchmark.
@@ -881,55 +888,32 @@ To set multiple quantum efficiencies using files (*fileName1*, *fileName2*, ...
881888

882889
If the *crystal* volume is a daughter of a *module* volume which is an array of 8 x 8 crystals, the file *fileName1* will contain 64 values of quantum efficiency. If several files are given (in this example two files), the program will choose randomly between theses files for each *module*.
883890

884-
885-
Memory buffers and bandwidth
886-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
887-
888-
To mimic the effect of limited transfer rate, a module models the data loss due to an overflow of a memory buffer, read periodically, following a given reading frequency. This module uses two parameters, the reading frequency :math:`\nu ` and the memory depth :math:`D` . Moreover, two reading methods can be modelled, that is, in an event per event basis (an event is read at each reading clock tick), or in a full buffer reading basic (at each reading clock tick, the whole buffer is emptied out). In the first reading method, the data rate is then limited to :math:`\nu` , while in the second method, the data rate is limited to :math:`D\cdot\nu`. When the size limit is reached, any new pulse is rejected, until the next reading clock tick arrival which frees a part of the buffer. In such a case, a non null buffer depth allows to manage a local rise of the input data flow. To specify a buffer, read at 10 MHz, with a buffer depth of 64 events, in a mode where the whole buffer is read in one clock tick, one can use::
889-
890-
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/insert buffer
891-
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setBufferSize 64 B
892-
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setReadFrequency 10 MHz
893-
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setMode 1
894-
895-
The size of the buffer represents the number of elements, 64 Singles in this example, that the user can store in a buffer. To read the buffer in an event by event basis, one should replace the last line by **setMode = 0.**
896-
897-
898-
899-
900-
Modules to be addapted (NOT YET INCLUDED IN GATE NEW DIGITIZER)
901-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
902-
903-
904-
905891
Crosstalk
906892
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
907893

908894
The crosstalk module simulates the optical and/or electronic crosstalk of the scintillation light between neighboring crystals. Thus, if the input pulse arrives in a crystal array, this module creates pulses around it (in the edge and corner neighbor crystals). The percentage of energy that is given to the neighboring crystals is determined by the user. To insert a crosstalk module that distributes 10% of input pulse energy to the adjacent crystals and 5% to the corner crystals, the following commands can be used::
909895

910-
/gate/digitizer/Singles/insert crosstalk
911-
/gate/digitizer/Singles/crosstalk/chooseCrosstalkVolume crystal
912-
/gate/digitizer/Singles/crosstalk/setEdgesFraction 0.1
913-
/gate/digitizer/Singles/crosstalk/setCornersFraction 0.05
896+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/insert crosstalk
897+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/crosstalk/setEdgesFraction 0.1
898+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/crosstalk/setCornersFraction 0.05
914899

915900
In this example, a pulse is created in each neighbor of the crystal that received the initial pulse. These secondary pulses have 10% (5% for each corner crystals) of the initial energy of the pulse.
916901

917902
**BEWARE:** this module works only for a chosen volume that is an array repeater!!!
918903

919904

920-
Spatial blurring in sinogrmas
921-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
922-
923-
In PET analysis, coincidence events provide the lines of response (LOR) needed for the image reconstruction. Only the two crystal numbers are transferred by the simulation. The determination of these crystal numbers is based on the crystal in which the highest energy has been deposited. Without additional spatial blurring of the crystal, simulation results will always have a better spatial resolution than experimental measurements. This module is only available for the *ecat* system. The spatial blurring is based on a 2D Gaussian function::
924905

925-
# E C A T 7
926-
/gate/output/sinogram/enable
927-
/gate/output/sinogram/RadialBins Your_Sinogram_Radial_Bin_Number
928-
/gate/output/sinogram/setTangCrystalBlurring Your_Value_1 mm
929-
/gate/output/sinogram/setAxialCrystalBlurring Your_Value_2 mm
906+
Memory buffers and bandwidth
907+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
930908

909+
To mimic the effect of limited transfer rate, a module models the data loss due to an overflow of a memory buffer, read periodically, following a given reading frequency. This module uses two parameters, the reading frequency :math:`\nu ` and the memory depth :math:`D` . Moreover, two reading methods can be modelled, that is, in an event per event basis (an event is read at each reading clock tick), or in a full buffer reading basic (at each reading clock tick, the whole buffer is emptied out). In the first reading method, the data rate is then limited to :math:`\nu` , while in the second method, the data rate is limited to :math:`D\cdot\nu`. When the size limit is reached, any new pulse is rejected, until the next reading clock tick arrival which frees a part of the buffer. In such a case, a non null buffer depth allows to manage a local rise of the input data flow. To specify a buffer, read at 10 MHz, with a buffer depth of 64 events, in a mode where the whole buffer is read in one clock tick, one can use::
931910

911+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/insert buffer
912+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setBufferSize 64 B
913+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setReadFrequency 10 MHz
914+
/gate/digitizerMgr/crystal/SinglesDigitizer/Singles/buffer/setMode 1
932915

916+
The size of the buffer represents the number of elements, 64 Singles in this example, that the user can store in a buffer. To read the buffer in an event by event basis, one should replace the last line by **setMode = 0.**
933917

934918

935919
.. _digitizer_multiple_processor_chains-label:

0 commit comments

Comments
 (0)