Eval15 pointspread
A simulation (simulate>0) will
result in a set of slices containing the number of (simulated) impacts.
A pointspreadfunction will be applied to these impacts if
pointspreadtype<>none.
There is one pointspreadfunction available:
pointspreadtype lorentz.
Lorentz function
The contribution of a specific pixel to the surrounding pixels at distance
d (in pixels) is:
       1           G
 f =  ———— * ————————————————
      4*π     (d2+(0.5*G)2)1.5
where G is a constant depending on the
detector and pixelsize. The value of G can be set with
pointspreadgamma. A
typical KappaCCD value for G=0.8
Implementation
The Lorentz function has to be applied on all simulated pixels to
all pointspreaded pixels. This is an expensive process. It involves the
summation of
(Nh*Nv)*(Nh*Nv)*Nr
evaluations of the lorentz function times
the simulated intensity. Nh and Nv are the number
of horizontal and vertical
pixels, Nr is the number of frames. With typical numbers
Nh=21, Nv=21, Nr=5 the number of
evaluations for one reflection is 972405.
Integral
The lorentz function should be evaluated as in integral over the whole
pixel. Take for instance the central pixel. The lorentz function
for d=0 is 0.995. But one pixel further away
is drops to 0.05. It is wrong to assume that the contribution to one
pixel depends only on the value of the lorentzfunction of the centre of
that pixel.
In Eval15, the lorentz function is integrated over the whole
pixel using
       1               2*x*y/G
 f =  ———— * atan( ——————————————————— )
      2*π          (x2+y2+(0.5*G)2)0.5
at the four corners of the pixel x,y,
The final value of the LorentFactor =
f(x+½,y+½) +
f(x-½,y-½) -
f(x-½,y+½) -
f(x+½,y-½)
Table lookup
To speed things up, the evaluation of the Lorentz function is done
with a table lookup. If the data are contained in a box with
dimensions Nh, Nv and Nr,
the horizontal distance between any two pixels
varies from -Nh to Nh, but only the positive side of
this range has to be evaluated. A similar argument holds for the vertical
direction. So a table has to be build from 0 to Nh
and from 0 to Nv.
Here is an example with
G=0.8, p=0.11,
Nh=21 and Nv=21. Note, the nubers have been multiplied
by 1.000.000 for clarity.
     7     7     7     7     7     6     6     6     6     5     5     5     5     4     4     4     3     3     3     3     3     2
     8     8     8     8     8     7     7     7     6     6     6     5     5     5     4     4     4     4     3     3     3     3
     9     9     9     9     9     8     8     8     7     7     6     6     6     5     5     4     4     4     4     3     3     3
    11    11    11    10    10    10     9     9     8     8     7     7     6     6     5     5     5     4     4     4     3     3
    13    13    13    12    12    11    11    10    10     9     8     8     7     6     6     5     5     5     4     4     4     3
    16    15    15    15    14    14    13    12    11    10     9     9     8     7     7     6     5     5     5     4     4     3
    19    19    18    18    17    16    15    14    13    12    11    10     9     8     7     7     6     5     5     4     4     4
    23    23    23    22    21    19    18    17    15    14    13    11    10     9     8     7     7     6     5     5     4     4
    29    29    28    27    25    24    22    20    18    16    14    13    12    10     9     8     7     6     6     5     5     4
    37    36    35    34    31    29    26    24    21    19    17    15    13    12    10     9     8     7     6     6     5     5
    48    47    46    43    40    36    32    29    25    22    19    17    15    13    11    10     9     8     7     6     5     5
    64    63    60    56    51    46    40    35    30    26    23    19    17    14    13    11     9     8     7     6     6     5
    87    86    81    75    67    58    50    43    36    31    26    22    19    16    14    12    10     9     8     7     6     5
   125   122   114   102    89    76    64    53    44    36    30    25    21    18    15    13    11    10     8     7     6     6
   186   180   165   144   122   100    81    66    53    43    35    29    24    20    17    14    12    10     9     8     7     6
   296   284   252   211   170   134   104    81    64    50    40    32    26    22    18    15    13    11     9     8     7     6
   512   482   409   322   243   180   134   100    76    58    46    36    29    24    19    16    14    11    10     8     7     6
  1002   914   716   512   353   243   170   122    89    67    51    40    31    25    21    17    14    12    10     9     8     7
  2385  2035  1371   839   512   322   211   144   102    75    56    43    34    27    22    18    15    12    10     9     8     7
  8121  5818  2856  1371   716   409   252   165   114    81    60    46    35    28    23    18    15    13    11     9     8     7
 62659 23740  5818  2035   914   482   284   180   122    86    63    47    36    29    23    19    15    13    11     9     8     7
421517 62659  8121  2385  1002   512   296   186   125    87    64    48    37    29    23    19    16    13    11     9     8     7
The lower left point of this table (0.421517) corresponds to the central
pixel, the lower right point (0.000007) is the contribution at a horizontal
distance of 21 pixels.
(This table will be displayed on the screen if
output simulate=debug)
Threshold
For a further speedup, you may specify a threshold using
pointspreadthreshold.
To apply the pointspread of a specific pixel with Intensity to all
the surrounding pixels, the program used the following algorithm:
 - set vertical pixel to 0
 
 - set horizontal pixel to 0
  
   - step right until out of range
   
 - set horizontal pixel to -1
   
 - step left until out of range
  
 
  - increase vertical and repeat from step 2 until vertical is out of range
 
 - set vertical pixel to -1
 
 - set horizontal pixel to 0
  
   - step right until out of range
   
 - set horizontal pixel to -1
   
 - step left until out of range
  
 
  - decrease vertical and repeat from step 2 until vertical is out of range
 
The horizontal step phases are continued as long as
Intensity*LorentzFactor is larger
than pointspreadthreshold
(default=0.0) and the 'surrounding pixel' is within box limits.
Eval15
Eval15 commands