Adjusting polynomial non-linearity fits for detector gain
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.