astro.fits
Class DarkMaster

java.lang.Object
  extended by util.PropertyContainer
      extended by util.PropertyResources
          extended by util.PropertyBundles
              extended by astro.fits.ReductionMaster
                  extended by astro.fits.DarkMaster
All Implemented Interfaces:
Cloneable, ExitCleaning, Initializable, LocalizedSupplying, Preserving, PropertySupplying, ResourceSupplying

public class DarkMaster
extends ReductionMaster
implements Preserving

We generate master darks out of a dark block, normally done straight after the bias blocks (before on dawn). After overscan correction, the closest master bias is subtracted from all darks. The darks are normalized by their exposure time and a min/max average is constructed, throwing away the highest ADU, but keeping all others (crude cosmic correction). This dark current is then called the master.


Nested Class Summary
static class DarkMaster.All
          Does all until the very first day of observation.
static class DarkMaster.First
          We create a single dark bias from the first dark block found.
static class DarkMaster.MasterDark
          Additionally, we record the dark current maximum plus the acheived S/N for proper decision wether dark current subtraction is feasible.
 
Nested classes/interfaces inherited from class astro.fits.ReductionMaster
ReductionMaster.ImageBlock, ReductionMaster.ImageInfo, ReductionMaster.Interpolate, ReductionMaster.Listing, ReductionMaster.MasterFits
 
Nested classes/interfaces inherited from class util.PropertyResources
PropertyResources.URLResource
 
Field Summary
private  NavigableMap<Date,DarkMaster.MasterDark> darklookup
          A mapping of center-time-of-block to compressed master bias file.
private static boolean DEBUG
           
private static double DEFALLOWSPANAMBTEMP
          The maximum spread in det temps.
private static double DEFALLOWSPANCCDTEMP
          The maximum spread in det temps.
private static long DEFALLOWSPANTIME
          The maximum spread in dark observations.
private static String DEFBESTRULES
          How we interpolate.
private static String DEFBESTSPANS
          For each rule, we must exceed this value in the master difference.
private static String DEFDARKBIASPURGE
          The cards to remove from the subtracted bias.
private static int DEFDARKCOUNTMIN
          The default minimum number of useable bias .
private static boolean DEFDARKDUMPHI
          We dump the highest ADU, may be a cosmic.
private static boolean DEFDARKDUMPLO
          We donot dump the lowest ADU.
private static double DEFDARKMINEXPOSE
          The minimum exposure time for a dark to be considerable.
private static double DEFDARKTREND
          A trend may only be called a trend, if ADU difference exceeds this.
private static String DEFDARKWEIGHT
          The cards used for weighed averages.
private static String DEFMAXDARK
          The default ADU-values for the statistic test.
private static String DEFMINDARK
          The default ADU-values for the statistic test.
private static String DEFOVERSCANCARDS
          The cards used from the overscan.
private static String DEFSERIALIZE
          The default serialization file.
private  List<ReductionMaster.ImageBlock> done
          The list of image blocks already reduced.
static String KEY_DARKBIASPURGE
          The cards to be purged from the subtracted bias.
static String KEY_DARKCOUNTMIN
          The minimum number of useable darks to remain in a block.
static String KEY_DARKDUMPHI
          Trash the highest ADU (cosmic)?
static String KEY_DARKDUMPLO
          Trash the lowest ADU?
static String KEY_DARKMINEXPOSE
          The minimum exposure time of useable darks, higher than read-out time
static String KEY_DARKPURGEAMP
          The cards to be purged from the constructed extensions.
static String KEY_DARKTREND
          A drift in the bias is present, if this ADU difference is exceeded.
static String KEY_DARKWEIGHT
          In constructing a intermediate master, keep this keys as weighed av.
static String KEY_OVERSCANCARDS
          The cards used from the overscan.
static String KEY_SERIALIZE
          On restarts, these are the image blocks we have already checked.
private  BiasMaster masterbias
          We need a master bias to allow the extraction of the bias.
 
Fields inherited from class astro.fits.ReductionMaster
ADUSEPARATOR, DEFLOCALNFS, FIRSTNIGHT, gain, INPOL, INPOLREM, IPOLANTE, IPOLANTEREM, IPOLBASE, IPOLBASEREM, IPOLDRFT, IPOLDRFTREM, IPOLPOST, IPOLPOSTREM, IPOLTIME, IPOLTIMEREM, KEY_ALLOWSPANAMBTEMP, KEY_ALLOWSPANCCDTEMP, KEY_ALLOWSPANTIME, KEY_AMBTEMP, KEY_AMPLIFIERS, KEY_AVCARDS, KEY_BESTRULES, KEY_BESTSPANS, KEY_CCDTEMP, KEY_COPYCARDS, KEY_DEROTSEPARATE, KEY_EQUALCARDS, KEY_EXTCARDORDER, KEY_EXTRAPOLATE, KEY_FILTERAWAREADU, KEY_FILTERSEPARATE, KEY_FIRSTCARDS, KEY_FITSSETBRIDGE, KEY_GAIN, KEY_GENERATECARDS, KEY_IMCOPY, KEY_IMCOPYFLAG, KEY_INTRINSIC, KEY_LASTCARDS, KEY_LOCALFITS, KEY_LOCALNFS, KEY_LOCALTMP, KEY_MASTERHEAD, KEY_MAXCARDS, KEY_MAXEXPOSURETIME, KEY_MEDIANCARDS, KEY_MINCARDS, KEY_OBSDB, KEY_OVERSCAN, KEY_PRIMCARDORDER, KEY_QUADRANTS, KEY_QUADRANTSIZE, KEY_READNOISE, KEY_REDUCED, KEY_ROTTOLERANCE, KEY_SET, KEY_SITE, KEY_STRICTADU, KEY_TELESCOPE, PREFIX_ADUMAX, PREFIX_ADUMIN, PREFIX_AMPCARDS, readnoise
 
Fields inherited from class util.PropertyBundles
KEY_LOCALECOUNTRY, KEY_LOCALELANGUAGE, KEY_RESOURCEBUNDLES
 
Fields inherited from class util.PropertyResources
KEY_NOINITONCREATE, localurl, locate, POSTFIX_DIR, POSTFIX_EXT, POSTFIX_FILE, POSTFIX_LIST, POSTFIX_URL, urlset
 
Fields inherited from class util.PropertyContainer
KEY_LISTSEPARATOR, KEY_MAPKEYVALUECHAR, KEY_MAPSEPARATOR
 
Fields inherited from interface util.ResourceSupplying
KEY_URLRESOURCES, KEY_URLUSECONFIG, KEY_URLUSECURRENT, KEY_URLUSEHOME
 
Fields inherited from interface util.PropertySupplying
CONFIG, KEY_CLASS
 
Constructor Summary
DarkMaster(Map<String,String> prop)
           
 
Method Summary
private  DarkMaster.MasterDark createMasterDark(ReductionMaster.ImageBlock dark, nom.tam.fits.Fits masterbias, SettableBoolean recover)
          We create a master dark from a dark observing block.
 void exit()
          On exit, we save all treated bias blocks.
 nom.tam.fits.Fits getBestDark(ReductionMaster.ImageInfo ii)
          We return the best dark that should be used for the image in this image info.
 File getClosestDarkFile(Date d)
          We return the master dark file that is closest to the given date in question.
private  ReductionMaster.MasterFits getClosestDarkMaster(Date d)
          Returns the master fits that is pointing closest to the given date in question.
 File[] getEnclosingDarkFile(Date d)
          We return the to master dark that are closest before and after this date.
private  ReductionMaster.MasterFits[] getEnclosingDarkMaster(Date d)
          We return the to master fits that are closest before and after this date.
 void init()
          On init, we restore the list of all treated bias blocks.
 boolean preserve()
          On preserving, we try to store the already treated image blocks.
private  int reduceNight(Date now)
          We scan the given night, first get all observing blocks, secondly check if they are present in our done list.
 boolean restore()
          On restoring, we try to read the already treated image blocks.
protected  void setBiasMaster(BiasMaster bm)
          We set the helper application that deals with bias fits.
static ObserveSql.Types typeOf()
           
 
Methods inherited from class astro.fits.ReductionMaster
addAverageCards, addEqualCards, addGeneratorCards, addMaximumCards, addMedianCards, addMinimumCards, addSingleCards, aduFailure, aduStatistic, allTransferred, alreadyTested, checkAmbTempSpan, checkDetTempSpan, compress, crosstalkCorrect, existing, existingFits, getAduConstraints, getHeaderValueStatistic, getMasterCards, getMasterCardsFromPrimary, getMidnight, getReducedParentDir, getTemporalFits, getUncompressed, intermediate, markTested, merge, merge, overscanCorrect, primaryHDU, readPrimaryCards, removeUncompressed, restoreMasterFits, scanNight, secondaryHDU, skipToHDU, uncompress, uncompressEventually
 
Methods inherited from class util.PropertyBundles
clone, getLocalized, getLocalized, getLocalizedString, getLocalizedString, loadResource
 
Methods inherited from class util.PropertyResources
createFrom, createFrom, createFrom, getApplet, getAsResources, getLocalClassLoader, getPropertiesToKey, getPropertiesToKey, getResource, getResourceAsStream, getResourceFromKey, getResources, keyCreate, keyCreate, reload, setApplet
 
Methods inherited from class util.PropertyContainer
augment, augment, augment, defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsEnums, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, isNew, parseObject, reload, removeProperty, rescanned, setObject, setProperties, setProperty, stringProperties, toString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface util.ResourceSupplying
getResource, getResourceAsStream, getResources
 
Methods inherited from interface util.PropertySupplying
defaultBoolean, defaultChar, defaultDouble, defaultFloat, defaultInt, defaultLong, defaultObject, defaultObject, defaultProperties, defaultProperty, getAsBoolean, getAsChar, getAsDouble, getAsFloat, getAsInt, getAsList, getAsLong, getAsMap, getAsObject, getAsObject, getProperties, getProperty, has, parseObject, removeProperty, setObject, setProperty, stringProperties
 

Field Detail

DEBUG

private static final boolean DEBUG
See Also:
Constant Field Values

KEY_SERIALIZE

public static final String KEY_SERIALIZE
On restarts, these are the image blocks we have already checked.

See Also:
Constant Field Values

KEY_DARKTREND

public static final String KEY_DARKTREND
A drift in the bias is present, if this ADU difference is exceeded.

See Also:
Constant Field Values

KEY_DARKWEIGHT

public static final String KEY_DARKWEIGHT
In constructing a intermediate master, keep this keys as weighed av.

See Also:
Constant Field Values

KEY_DARKCOUNTMIN

public static final String KEY_DARKCOUNTMIN
The minimum number of useable darks to remain in a block.

See Also:
Constant Field Values

KEY_DARKMINEXPOSE

public static final String KEY_DARKMINEXPOSE
The minimum exposure time of useable darks, higher than read-out time

See Also:
Constant Field Values

KEY_DARKDUMPHI

public static final String KEY_DARKDUMPHI
Trash the highest ADU (cosmic)?

See Also:
Constant Field Values

KEY_DARKDUMPLO

public static final String KEY_DARKDUMPLO
Trash the lowest ADU?

See Also:
Constant Field Values

KEY_OVERSCANCARDS

public static final String KEY_OVERSCANCARDS
The cards used from the overscan.

See Also:
Constant Field Values

KEY_DARKPURGEAMP

public static final String KEY_DARKPURGEAMP
The cards to be purged from the constructed extensions.

See Also:
Constant Field Values

KEY_DARKBIASPURGE

public static final String KEY_DARKBIASPURGE
The cards to be purged from the subtracted bias.

See Also:
Constant Field Values

DEFSERIALIZE

private static final String DEFSERIALIZE
The default serialization file.

See Also:
Constant Field Values

DEFDARKCOUNTMIN

private static final int DEFDARKCOUNTMIN
The default minimum number of useable bias .

See Also:
Constant Field Values

DEFALLOWSPANTIME

private static final long DEFALLOWSPANTIME
The maximum spread in dark observations.

See Also:
Constant Field Values

DEFALLOWSPANCCDTEMP

private static final double DEFALLOWSPANCCDTEMP
The maximum spread in det temps.

See Also:
Constant Field Values

DEFALLOWSPANAMBTEMP

private static final double DEFALLOWSPANAMBTEMP
The maximum spread in det temps.

See Also:
Constant Field Values

DEFMINDARK

private static final String DEFMINDARK
The default ADU-values for the statistic test.

See Also:
Constant Field Values

DEFMAXDARK

private static final String DEFMAXDARK
The default ADU-values for the statistic test.

See Also:
Constant Field Values

DEFBESTRULES

private static final String DEFBESTRULES
How we interpolate.

See Also:
Constant Field Values

DEFBESTSPANS

private static final String DEFBESTSPANS
For each rule, we must exceed this value in the master difference.

See Also:
Constant Field Values

DEFDARKTREND

private static final double DEFDARKTREND
A trend may only be called a trend, if ADU difference exceeds this.

See Also:
Constant Field Values

DEFDARKDUMPHI

private static final boolean DEFDARKDUMPHI
We dump the highest ADU, may be a cosmic.

See Also:
Constant Field Values

DEFDARKDUMPLO

private static final boolean DEFDARKDUMPLO
We donot dump the lowest ADU.

See Also:
Constant Field Values

DEFDARKMINEXPOSE

private static final double DEFDARKMINEXPOSE
The minimum exposure time for a dark to be considerable.

See Also:
Constant Field Values

DEFOVERSCANCARDS

private static final String DEFOVERSCANCARDS
The cards used from the overscan.

See Also:
Constant Field Values

DEFDARKWEIGHT

private static final String DEFDARKWEIGHT
The cards used for weighed averages.

See Also:
Constant Field Values

DEFDARKBIASPURGE

private static final String DEFDARKBIASPURGE
The cards to remove from the subtracted bias.

See Also:
Constant Field Values

masterbias

private BiasMaster masterbias
We need a master bias to allow the extraction of the bias.


done

private List<ReductionMaster.ImageBlock> done
The list of image blocks already reduced.


darklookup

private NavigableMap<Date,DarkMaster.MasterDark> darklookup
A mapping of center-time-of-block to compressed master bias file.

Constructor Detail

DarkMaster

public DarkMaster(Map<String,String> prop)
Method Detail

typeOf

public static final ObserveSql.Types typeOf()

init

public void init()
On init, we restore the list of all treated bias blocks.

Specified by:
init in interface Initializable
Overrides:
init in class ReductionMaster

exit

public void exit()
On exit, we save all treated bias blocks.

Specified by:
exit in interface ExitCleaning

preserve

public boolean preserve()
On preserving, we try to store the already treated image blocks.

Specified by:
preserve in interface Preserving
Returns:
false, if preserving the current state was not possible

restore

public boolean restore()
On restoring, we try to read the already treated image blocks.

Specified by:
restore in interface Preserving
Returns:
False, if restoring the value was not possible.

setBiasMaster

protected void setBiasMaster(BiasMaster bm)
We set the helper application that deals with bias fits.


getClosestDarkMaster

private ReductionMaster.MasterFits getClosestDarkMaster(Date d)
Returns the master fits that is pointing closest to the given date in question.


getEnclosingDarkMaster

private ReductionMaster.MasterFits[] getEnclosingDarkMaster(Date d)
We return the to master fits that are closest before and after this date. These two dark could then be used to interpolate to the 'best' dark.

Returns:
Null array if none found, otherwise always an array of size two, may have zero on 0/1.

getClosestDarkFile

public File getClosestDarkFile(Date d)
We return the master dark file that is closest to the given date in question.


getEnclosingDarkFile

public File[] getEnclosingDarkFile(Date d)
We return the to master dark that are closest before and after this date. These two dark could then be used to interpolate to the 'best' dark.

Returns:
Null array if none found, otherwise always an array of size two, may have zero on 0/1.

getBestDark

public nom.tam.fits.Fits getBestDark(ReductionMaster.ImageInfo ii)
                              throws IOException,
                                     nom.tam.fits.FitsException
We return the best dark that should be used for the image in this image info. The Fits object is constructed from the two enclosing dark, sacling according to the rules specified in ReductionMaster.KEY_BESTRULES.

Throws:
IOException
nom.tam.fits.FitsException

reduceNight

private int reduceNight(Date now)
                 throws IOException,
                        nom.tam.fits.FitsException,
                        SQLException
We scan the given night, first get all observing blocks, secondly check if they are present in our done list. If not, we process them, mark them as done in the list and store the final master in the lookup table.

Returns:
Number of new master bias generated.
Throws:
IOException
nom.tam.fits.FitsException
SQLException

createMasterDark

private DarkMaster.MasterDark createMasterDark(ReductionMaster.ImageBlock dark,
                                               nom.tam.fits.Fits masterbias,
                                               SettableBoolean recover)
                                        throws IOException,
                                               nom.tam.fits.FitsException
We create a master dark from a dark observing block. Always creates a master dark if all requirements are met.

Throws:
IOException
nom.tam.fits.FitsException