[gate-users] Fwd: Re: GateSpblurring.cc

Steven Staelens Steven.Staelens at ugent.be
Mon Aug 22 13:44:20 CEST 2005

----- Forwarded message from steven staelens <s.staelens at azu.nl> -----
    Date: Mon, 22 Aug 2005 13:38:19 +0200
    From: steven staelens <s.staelens at azu.nl>
Reply-To: s.staelens at azu.nl
 Subject: Re: GateSpblurring.cc
      To: cwietholt at nhri.org.tw

> In particular I am interested in the following lines:
>   G4double PxNew = G4RandGauss::shoot(Px,m_spresolution/2.35);
>   G4double PyNew = G4RandGauss::shoot(Py,m_spresolution/2.35);
>   G4double PzNew = Pz;
> I think especially in the last line is a small mistake. Isn't it true that Px,
> Py, and Pz are coordinates in the world coordinate system, and thus Pz is
> along the ordinate of the detector coordinates. Of course only when we are
> rotating along the z-axis.

Hi Christian, Hi Mikhail,

This Spblurring function was used 3 years ago for the validation of
SPECT projections using the typical developer macros of that time.  The
detector head was alywas perpendicular to the Z-axis, which is not the
case with your macros.  This clearly highlights the fact that this class
is obiously not general enough, and apparently no one had discovered
that before.  So thank you for pointing this out to the collaboration.

I will answer your 2 specific questions below.

> If this is correct, shouldn't Pz also be blurred
> with the Gaussian function? In my tests I simulated the projection of a point
> source through the pinhole and observed blurring only along the abscissa, and
> no blurring along the ordinate. When I change the line to :
>   G4double PzNew = G4RandGauss::shoot(Pz,m_spresolution/2.35);
> I also observe blurring along the ordinate in the projection image.

OK, I agree this is a fix for your particular issue.

> Second, to be more accurate, shouldn't be Py first rotated
> (Py = (-1)*sin(theta) * Px + cos(theta) * Py;) before the blurring is applied?
> Then PxNew can be equal to Px?

actually in my current Gate development distribution I no longer use
spatial blurring on the global coordinates but I added three more leaves
to the ROOT tree for local position next to the global positions.  In
that way, it is easier to implement a blurrer.  This upgrade is not in
the users distribution however but can be implemented extremely easily
in a few lines: f.i in GateRootDefs and in GateSingleDigi.

The last thing you should add is a pointer to the RotationAxis so that
your blurring class knows which (newly created) local positions to blur,
since I assume you do not always want to blur the DOI.

hope this helps,

best regards,


> I am sorry that I had to bother you with this problem. Usually I try to stay
> with the user support, but in this case, I did not get much response.
> I am looking forward to hearing from you.
> Best Regards,
> Christian Wietholt
> P.S. If you are interested in looking at my results, I could send you an image
> or my macro files.
Dr. S. G. Staelens
UMC Utrecht, Stratenum
Universiteitsweg 100, STR5.203
3584 CG Utrecht, The Netherlands
Phone +31 30 253 88 46
Fax   +31 30 253 90 32
email: s.staelens at azu.nl

----- End forwarded message -----


More information about the Gate-users mailing list