Optimum Bias Setting for MIPS Ge Detectors

Principal: dmkelly
Deputy: eyoung
Data Monkey(s): Read noise and dark current monkeys, plus consultation from Karl and John
Priority: Necessary
Downlink Priority: Normal
Analysis Time: 72h
Last Updated:


Objective

Determine the best detector bias for each MIPS Ge array

Description

Four performance criteria, (responsivity, dark current, read noise, and stim repeatability) will be checked as a function of bias. A total of five bias settings will be tested at 70um and 160um.

Data Collected

For each bias setting (5 at 70um, 5 at 160um):
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,6,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,7,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,8,"NO_COADD",9,50,"MIPS"'

Here is the full AOR:

mips_mobs_phot
sendcmd mips_scanpos_102
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEGERSTCON '10,127,4,"MIPS"'
sendcmd CESCANCON '"CHOP","REV",0,2048,2048,0,511,"MIPS"'
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,0,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,1,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,2,"NO_COADD",9,50,"MIPS"'
# set the 70um bias to 45 mV (44.6) and perform a 70um thermal anneal
sendcmd CELDHTGIF '3,0x93,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE70","MIPS"'

# Move to the 160um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 70um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 45 mV, V160bias = 30 mV

mips_mobs_phot
sendcmd mips_scanpos_104
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,3,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,4,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,5,"NO_COADD",9,50,"MIPS"'
# set the 160um bias to 35 mV (35.2) and perform a 160um thermal anneal
sendcmd CELDHTGIF '20,0x90,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE160","MIPS"'

# Move to the 70um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 160um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 45 mV, V160bias = 35 mV

mips_mobs_phot
sendcmd mips_scanpos_102
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEGERSTCON '10,127,4,"MIPS"'
sendcmd CESCANCON '"CHOP","REV",0,2048,2048,0,511,"MIPS"'
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,6,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,7,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,8,"NO_COADD",9,50,"MIPS"'
# set the 70um bias to 50 mV (49.2) and perform a 70um thermal anneal
sendcmd CELDHTGIF '3,0x95,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE70","MIPS"'

# Move to the 160um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 70um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 50 mV, V160bias = 35 mV

mips_mobs_phot
sendcmd mips_scanpos_104
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,9,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,10,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,11,"NO_COADD",9,50,"MIPS"'
# set the 160um bias to 15 mV (16.4) and perform a 160um thermal anneal
sendcmd CELDHTGIF '20,0x88,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE160","MIPS"'


# Move to the 70um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 160um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 50 mV, V160bias = 15 mV

mips_mobs_phot
sendcmd mips_scanpos_102
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEGERSTCON '10,127,4,"MIPS"'
sendcmd CESCANCON '"CHOP","REV",0,2048,2048,0,511,"MIPS"'
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,12,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,13,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,14,"NO_COADD",9,50,"MIPS"'
# set the 70um bias to 30 mV (30.5) and perform a 70um thermal anneal
sendcmd CELDHTGIF '3,0x8D,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE70","MIPS"'

# Move to the 160um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 70um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 30 mV, V160bias = 15 mV

mips_mobs_phot
sendcmd mips_scanpos_104
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,15,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,16,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,17,"NO_COADD",9,50,"MIPS"'
# set the 160um bias to 20 mV (21.1) and perform a 160um thermal anneal
sendcmd CELDHTGIF '20,0x8A,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE160","MIPS"'


# Move to the 70um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 160um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 30 mV, V160bias = 20 mV

mips_mobs_phot
sendcmd mips_scanpos_102
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEGERSTCON '10,127,4,"MIPS"'
sendcmd CESCANCON '"CHOP","REV",0,2048,2048,18,511,"MIPS"'
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,0,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,19,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,20,"NO_COADD",9,50,"MIPS"'
# set the 70um bias to 35 mV (35.2) and perform a 70um thermal anneal
sendcmd CELDHTGIF '3,0x8F,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE70","MIPS"'

# Move to the 160um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 70um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 35 mV, V160bias = 20 mV

mips_mobs_phot
sendcmd mips_scanpos_104
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,21,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,22,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,23,"NO_COADD",9,50,"MIPS"'
# set the 160um bias to 25 mV (25.8) and perform a 160um thermal anneal
sendcmd CELDHTGIF '20,0x8C,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE160","MIPS"'


# Move to the 70um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 160um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 35 mV, V160bias = 25 mV

mips_mobs_phot
sendcmd mips_scanpos_102
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEGERSTCON '10,127,4,"MIPS"'
sendcmd CESCANCON '"CHOP","REV",0,2048,2048,24,511,"MIPS"'
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,0,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,25,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,26,"NO_COADD",9,50,"MIPS"'
# set the 70um bias to 40 mV (39.9) and perform a 70um thermal anneal
sendcmd CELDHTGIF '3,0x91,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE70","MIPS"'

# Move to the 160um primary dark position and collect dark current
# and read noise data.  Also do stim flashes on the 70um array since
# those data might prove useful, if somewhat compromised.
# V70bias = 40 mV, V160bias = 25 mV

mips_mobs_phot
sendcmd mips_scanpos_104
# collect stim repeatability data, stim cycle of 6, 10s DCEs, 47 flashes 
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,27,"NO_COADD",9,1,"MIPS"'
sendcmd CEGESTIM '"AUTO",6,"BON","BON","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,28,"NO_COADD",9,277,"MIPS"'
# collect 50 10s DCEs of read noise data
sendcmd CEGESTIM '"AUTO",63,"BOTHOFF","BOTHOFF","BOTHOFF",10,10,"MIPS"'
sendcmd CEMIPSUR  'AORID_upper,AORID_lower,29,"NO_COADD",9,50,"MIPS"'
# set the 160um bias to 30 mV (30.5) and perform a 160um thermal anneal
sendcmd CELDHTGIF '20,0x8E,"MIPS"'
mips_backto_mobs
sendcmd CEGEANNEAL '"HEAT","GE160","MIPS"'

# Wait for 10m before using the 160um array for science observations.

Data Reformatting Requirements

Array Data Desired:

70um and 160um Arrays

Data Reformatting Option:

Special Instructions:
From each pair of 1 DCE and 277 DCE exposures, a single FITS file should be produced including all 278 files. A single FITS file should be produced from each 50 DCE exposure. These two sets of exposures will be repeated ten times, so we should get 20 FITS files for each array.

Task Dependencies


Calibration Dependencies


Output and Deliverable Products

1) Median stim brightness, averaged over all 47 stim flashes, tabulated
   and plotted as a function of array bias
2) Stim repeatability, determined by using the odd-numbered flashes to
   calibrate the even flashes, reported and plotted as a function of bias
3) Stim-calibrated dark level, tabulated and plotted as a function of bias
4) Read noise, tabulated and plotted as a function of bias
5) A report listing the optimum bias voltage for each array, along with an
   explanation of how the input criteria led to this selection

Data Analysis

Step by step analysis:
1) Run all data through "mips_sloper -a flight_ce# -l filename" and 
   "mips_caler -d filebase"   Include the illumination correction 
   (do not use the -i flag and make sure that the IC is enabled in 
   Pipeline/Cal/PreFlight/mips_caler.param).
2) Tabulate and plot the instantaneous stim flash brightnesses from 
   mips_caler as a function of stim flash number (47 flashes), with 
   different plot symbols for the five different biases.  The IDL
   routine for doing this is   mips246_stimcal, ymin=xx, ymax=xx.  
   This routine also calculates a mean and standard deviation for 
   the stim flashes.  In addition, it calibrates odd flashes with 
   evens and gives the standard deviation of the stim-calibrated 
   flashes.  It looks for all .cal.fits files in the current 
   directory and processes them.  It uses a different plot symbol 
   for each.  It is possible that we will get useful data when the 
   other array is prime, so all 10 data sets should be reduced for 
   each array.  The variables numstims and firstStimOffset need to 
   be set properly in the .pro file before using this tool.
3) Use the tool   mips246_darkcal,'filebase',ymin=xx,ymax=xx,skip=xx
   for calculating stim-calibrated dark levels.  This tools works
   from .cal.fits files.  The output values are stim-normalized and
   so will likely have values less than 1.  "skip" is the number of
   DCEs to ignore after a stim flash when calculating dark levels.
   It is best to let that keyword default to 0 initially and then
   set the keyword appropriately on a second pass, based on the
   latent behavior observed in the output plot.  The mean brightnesses
   calculated by this routine are stim-normalized, so they need to 
   be multiplied by the stim brightness values from mips246_stimcal
   to get dark values.  Several keywords need to be set appropriately
   in the .pro file before performing the analysis.  These include:
   calcycle, numstims, firstStimOffset.
4) Use get_rdnoise, n_dce_rej=10, 'filebase' to calculate the Ge read 
   noise.  Reference noise levels for the nominal biases can be found 
   in the cookbook for mips-226. 
5) Plot stim brightness, dark current, read noise, and stim repeatability
   versus detector bias
6) Use a TBD method to combine the above results into a figure of merit
   for determining the optimum bias setting for each array

Software Requirements

mips_sloper
mips_caler for determining stim brightnesses
mips246_darkcal.pro for determining 
the dark current levels
mips246_stimcal.pro for determining 
the stim repeatability, using odd flashes to calibrate even flashes
get_rdnoise.pro for determining 
the read noise

Actions Following Analysis

Determine the optimum bias voltages and apply them for use in future campaigns by making changes to irs-mips_pconst_ier.

Failure Modes and Responses

Examine the commanding, make appropriate fixes, and run the test again. In the meantime, continue to use the bias voltages that we determined from ground testing. In addition to this test, we will pay attention to the quality of all IOC data to see if there is reason to reduce the detector biases.

Additional Notes

All data taken in this test are collected within 10s of minutes after a thermal anneal. This greatly lessens our susceptibility to cosmic ray effects, which might prove to be the most important consideration in choosing a bias voltage. As a result, it is important to look at other IOC data in addition to the data from this test in choosing the optimum bias voltages.