Adjusting polynomial non-linearity fits for detector gain
 
As demonstrated in our linearity tests, non-linearity measured as a function of observed photons (rather than adu) seems to be constant for a given detector+amplifier combination.
 
How can one then convert a non-linearity correction derived for one gain, to an appropriate form for another gain.
 
In the plots presented on these pages we have parametrised non-linearity as
 
Nt/Nm = P(Nm) = a0 + a1  Nm + a2 Nm 2 + ...
 
where Nt are "true" or linear counts, and Nm are "measured" or non-linear counts.
 
If we work in photons rather than adu, then we can get a fit like
 
pt/pm = P'(pm) = a'0 + a'1 pm + a'2 pm 2 + ...
 
As photons and adu are related by the gain  pm = g Nm (which we assume is a constant - that is the non-linearity is small), we can derive the coefficients for  the polynomial P from P', given the non-linearity is the same at equivalent illumination levels, P(Nm)  = P'(pm), and therefore
 
a0 + a1 Nm + a2 Nm 2 + ... = a'0 + a'1 g Nm + a'2. g 2 Nm 2 + ...
            =>
a0 = a'0
a1 = a'1 g
a2 = a'2. g 2
 
 
I wrote a quick-and-dirty perl script to do this conversion from a0,a1,a2, ... to  a0,ga1,,g2a2 ...
A listing of polyfudge.pl follows
 
#!/usr/bin/perl
###############################################################################
# Given a set of polynomial coeffs
#      P(x) = a0 + a1x + a2*x^2 ...
#
# and a fudge factor g
#
# print out the coefficients for P'(x) = P(g*x) = a0 + a1*g * x + a2*g^2 * x^2 + ....
use diagnostics;
{
   $fudge=shift(@ARGV);
   $coeff=shift(@ARGV);
  
   $g = 1;
   $comma = "";
   foreach $i ( split ',', $coeff ) {
      $t = $i*$g;
      print "$comma$t";
      $g = $g*$fudge;
      if ($comma eq "") { $comma = ","; }
   }
   print "\n";
}
 
which can be used in anger as follows - suppose we want to convert the EEV photon fit for use on EEV2+AAO2+FAST data which has a gain of 2.80e/adu. Then provide as arguments to the script the gain (g=2.80), and the polynomial coefficients as a list of coefficients separated by commas (no spaces), as follows
 
% polyfudge.pl 2.80 1,-3.45119255147154e-07,5.40215125523544e-13
 
which prints out the result
1,-9.66333914412031e-07,4.23528658410458e-12
 
 
Page last updated: 25 June 2007.