def __init__(self): # Get it started super(KECKHIRESRSpectrograph, self).__init__() self.spectrograph = 'keck_hires_red' self.camera = 'HIRES_R' self.detector = [ # Detector 1 B pypeitpar.DetectorPar(dataext = 1, specaxis = 0, # Device is fussed with by the image reader xgap = 0., ygap = 0., ysize = 1., platescale = 0.191, darkcurr = 0.0, saturation = 65535., nonlinear = 0.86, numamplifiers = 1, gain = 0.78, # high gain, low gain 1.9 ronoise = 2.8, suffix = '_01' ), # Detector 2 pypeitpar.DetectorPar(dataext = 2, specaxis = 0, xgap = 0., ygap = 0., ysize = 1., platescale = 0.191, darkcurr = 0.0, saturation = 65535., nonlinear = 0.86, numamplifiers = 1, gain = 0.86, # high gain, low gain 2.2 ronoise = 3.1, suffix = '_02' ), # Detector 3 pypeitpar.DetectorPar(dataext = 3, specaxis = 0, xgap = 0., ygap = 0., ysize = 1., platescale = 0.191, darkcurr = 0.0, saturation = 65535., nonlinear = 0.86, numamplifiers = 1, gain = 0.84, # high gain, low gain 2.2 ronoise = 3.1, suffix = '_03' ), ] self.numhead = 4
def __init__(self): # Get it started super(KeckLRISBSpectrograph, self).__init__() self.spectrograph = 'keck_lris_blue' self.camera = 'LRISb' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 1, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.135, darkcurr = 0.0, saturation = 65535., nonlinear = 0.86, numamplifiers = 2, gain = [1.55, 1.56], ronoise = [3.9, 4.2], datasec = ['',''], oscansec = ['',''], suffix = '_01blue' ), #Detector 2 pypeitpar.DetectorPar( dataext = 2, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.135, darkcurr = 0., saturation = 65535., nonlinear = 0.86, numamplifiers = 2, gain = [1.63, 1.70], ronoise = [3.6, 3.6], datasec = ['',''], oscansec = ['',''], suffix = '_02blue' )] self.numhead = 5 # Uses default timeunit # Uses default primary_hdrext self.sky_file = 'sky_LRISb_600.fits'
def __init__(self): # Get it started super(LBTMODS1RSpectrograph, self).__init__() self.spectrograph = 'lbt_mods1r' self.camera = 'MODS1R' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.123, darkcurr = 0.4, saturation = 65535., nonlinear = 0.99, numamplifiers = 4, gain = [2.38,2.50,2.46,2.81], ronoise = [3.78,4.04,4.74,4.14], #datasec = '[:, 49:8240]', #oscansec = '[:, 8240:]', suffix = '_mods1r' )] self.numhead = 1
def __init__(self): # Get it started super(MagellanFIREEchelleSpectrograph, self).__init__() #TODO Rename this magallen_fire_echelle?? self.spectrograph = 'magellan_fire' self.camera = 'FIRE' self.numhead = 1 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=True, xgap=0., ygap=0., ysize=1., platescale=0.18, darkcurr=0.01, #saturation = 20000., # high gain is 20000 ADU, low gain is 32000 ADU saturation=100000., # This is an arbitrary value. nonlinear=1.0, # high gain mode, low gain is 0.875 numamplifiers=1, gain=1.2, # high gain mode, low gain is 3.8 e-/DN ronoise= 5.0, # for high gain mode and SUTR read modes with exptime ~ 900s datasec='[5:2044,5:2044]', oscansec='[5:2044,:5]' #datasec = '[:,:]', #oscansec = '[:,:]' ) ]
def __init__(self): # Get it started super(MagellanFIRELONGSpectrograph, self).__init__() self.spectrograph = 'magellan_fire_long' self.camera = 'FIRE' self.numhead = 1 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=0, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.15, darkcurr=0.01, saturation= 320000., #32000 for low gain, I set to a higher value to keep data in K-band nonlinear=0.875, numamplifiers=1, gain=3.8, ronoise=6.0, # SUTR readout mode with exposure~600s datasec='[5:2044, 900:1250]', oscansec='[:5, 900:1250]') ]
def __init__(self): # Get it started super(WHTISISRedSpectrograph, self).__init__() self.spectrograph = 'wht_isis_red' self.camera = 'ISISr' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 1, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.22, darkcurr = 0.0, saturation = 65535., nonlinear = 0.76, numamplifiers = 1, gain = 0.98, ronoise = 4.0, datasec = '[:,:]', oscansec = None, suffix = '_red' )] self.numhead = 2
def __init__(self): # Get it started super(ShaneKastRedRetSpectrograph, self).__init__() self.spectrograph = 'shane_kast_red_ret' # WARNING: This is not unique wrt ShaneKastRed... self.camera = 'KASTr' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.774, darkcurr=0.0, saturation= 120000., # JFH adjusted to this level as the flat are otherwise saturated nonlinear=0.76, numamplifiers=1, gain=3.0, ronoise=12.5, datasec='[:,1:1200]', oscansec='[:,1203:1232]', suffix='_red') ] # TODO: Can we change suffix to be unique wrt ShaneKastRed? self.numhead = 1
def __init__(self): # Get it started super(LBTMODS2BSpectrograph, self).__init__() self.spectrograph = 'lbt_mods2b' self.camera = 'MODS2B' self.detector = [ # Detector 1 pypeitpar.DetectorPar(dataext=0, specaxis=1, specflip=True, xgap=0., ygap=0., ysize=1., platescale=0.120, darkcurr=0.5, saturation=65535., nonlinear=0.99, numamplifiers=1, gain=2.0, ronoise=3.7, datasec='[1:8288,1:3088]', oscansec='[8250:,:]', suffix='_mods2b') ] self.numhead = 1
def __init__(self): # Get it started super(ShaneKastRedSpectrograph, self).__init__() self.spectrograph = 'shane_kast_red' self.camera = 'KASTr' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.43, darkcurr = 0.0, saturation = 65535., nonlinear = 0.76, numamplifiers = 2, gain = [1.9, 1.9], ronoise = [3.8, 3.8], datasec = ['[40:102,:]', '[103:347,:]'], oscansec = ['[425:522,:]', '[524:610,:]'], suffix = '_red' )] self.numhead = 1
def __init__(self): # Get it started super(MagellanFIRESpectrograph, self).__init__() self.spectrograph = 'magellan_fire' self.telescope = telescopes.MagellanTelescopePar() self.camera = 'FIRE' self.numhead = 1 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 1, specflip = True, xgap = 0., ygap = 0., ysize = 1., platescale = 0.15, darkcurr = 0.01, saturation = 20000., # high gain mode, low gain is 32000 nonlinear = 1.0, # high gain mode, low gain is 0.875 numamplifiers = 1, gain = 1.2, # high gain mode, low gain is 3.8 e-/DN ronoise = 5.0, # for high gain mode and SUTR read modes with exptime ~ 900s datasec = '[1:2048,1:2048]', oscansec = '[:,:4]' )]
def __init__(self): # TODO: NEED TO CHECK ORIENTATION OF DATASEC AND OSCANSEC ARE # CORRECT!!!! # Get it started super(ShaneKastRedSpectrograph, self).__init__() self.spectrograph = 'shane_kast_red' self.camera = 'KASTr' self.detector = [ # Detector 1 pypeitpar.DetectorPar(dataext=0, specaxis=0, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.43, darkcurr=0.0, saturation=65535., nonlinear=0.76, numamplifiers=2, gain=[1.9, 1.9], ronoise=[3.8, 3.8], datasec=['[:,2:511]', '[:,513:525]'], oscansec=['[:,527:625]', '[:,627:725]'], suffix='_red') ] self.numhead = 1
def __init__(self): # Get it started super(KeckNIRESSpectrograph, self).__init__() self.spectrograph = 'keck_nires' self.telescope = telescopes.KeckTelescopePar() self.camera = 'NIRES' self.numhead = 3 self.detector = [ # Detector 1 pypeitpar.DetectorPar( specaxis=1, specflip=True, xgap=0., ygap=0., ysize=1., platescale=0.15, darkcurr=0.01, saturation= 1e6, # I'm not sure we actually saturate with the DITs??? nonlinear=0.76, numamplifiers=1, gain=3.8, ronoise=5.0, datasec='[:,:]', oscansec='[980:1024,:]' # Is this a hack?? ) ]
def __init__(self): # Get it started super(GeminiGNIRSSpectrograph, self).__init__() self.spectrograph = 'gemini_gnirs' self.telescope = telescopes.GeminiNTelescopePar() self.camera = 'GNIRS' self.numhead = 2 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=1, specaxis=0, specflip=True, spatflip=True, xgap=0., ygap=0., ysize=1., platescale=0.15, darkcurr=0.15, saturation=150000., nonlinear=0.71, numamplifiers=1, gain=13.5, ronoise=7.0, datasec='[:,:]', #'[1:1024,1:1022]', oscansec='[:,:]', #'[1:1024,1:1022]' ) ]
def __init__(self): # Get it started super(VLTXShooterVISSpectrograph, self).__init__() self.spectrograph = 'vlt_xshooter_vis' self.camera = 'XShooter_VIS' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=0, specflip=False, xgap=0., ygap=0., ysize=1., platescale= 0.16, # average from order 17 and order 30, see manual darkcurr=0.0, saturation=65535., nonlinear=0.86, numamplifiers=1, gain= 0.595, # FITS format is flipped: PrimaryHDU (2106, 4000) w/respect to Python ronoise=3.1, # raw unbinned images are (4000,2106) (spec, spat) datasec= '[:,11:2058]', # pre and oscan are in the spatial direction oscansec='[:,2059:2106]', suffix='_VIS') ] self.numhead = 1
def __init__(self): # Get it started super(VLTXShooterUVBSpectrograph, self).__init__() self.spectrograph = 'vlt_xshooter_uvb' self.camera = 'XShooter_UVB' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=0, specflip=True, spatflip=True, xgap=0., ygap=0., ysize=1., # average from order 14 and order 24, see manual platescale=0.161, darkcurr=0.0, saturation=65000., nonlinear=0.86, numamplifiers=1, gain=1.61, ronoise=2.60, datasec='[:,49:2096]', # '[49:2000,1:2999]', oscansec='[:,1:48]', # '[1:48, 1:2999]', suffix='_UVB') ] self.numhead = 1
def __init__(self): # Get it started super(LBTLUCI2Spectrograph, self).__init__() self.spectrograph = 'lbt_luci2' self.camera = 'LUCI2' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.25, darkcurr=0.0, # Saturation is 55000, but will be set to dummy value for # now saturation=1e+8, nonlinear=0.80, numamplifiers=1, gain=2.0, # ronoise = 10.0, ronoise=4.47, datasec='[5:2044,5:2044]', oscansec='[5:2044,1:4]', suffix='_luci2') ] self.numhead = 1
def __init__(self): # Get it started super(VLTXShooterNIRSpectrograph, self).__init__() self.spectrograph = 'vlt_xshooter_nir' self.camera = 'XShooter_NIR' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.197, # average between order 11 & 30, see manual darkcurr=0.0, saturation= 2.0e5, # I think saturation may never be a problem here since there are many DITs nonlinear=0.86, numamplifiers=1, gain=2.12, # ronoise= 8.0, # ?? more precise value? #TODO the read noise is exposure time dependent and should be grabbed from header datasec='[4:2044,4:]', # These are all unbinned pixels # EMA: No real overscan for XSHOOTER-NIR: # See Table 6 in http://www.eso.org/sci/facilities/paranal/instruments/xshooter/doc/VLT-MAN-ESO-14650-4942_P103v1.pdf # The overscan region below contains only zeros # ToDo should we just set it as empty? oscansec='[4:2044,1:3]', # These are all unbinned pixels. suffix='_NIR') ] self.numhead = 1
def __init__(self): # Get it started super(KeckNIRSPECSpectrograph, self).__init__() self.telescope = telescopes.KeckTelescopePar() self.camera = 'NIRSPEC' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.193, darkcurr = 0.8, saturation = 100000., nonlinear = 1.00, # docs say linear to 90,000 but our flats are usually higher numamplifiers = 1, gain = 5.8, ronoise = 23, datasec = '[:,:]', oscansec = '[:,:]' )] self.numhead = 1
def __init__(self): # Get it started super(KeckMOSFIRESpectrograph, self).__init__() self.telescope = telescopes.KeckTelescopePar() self.spectrograph = 'keck_mosfire' self.camera = 'MOSFIRE' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.193, darkcurr=0.8, saturation=1e9, # ADU, this is hacked for now nonlinear= 1.00, # docs say linear to 90,000 but our flats are usually higher numamplifiers=1, gain=2.15, # Taken from MOSFIRE detector webpage ronoise= 5.8, # This is for 16 non-destructuve reads, the default readout mode datasec='[:,:]', oscansec='[:,:]') ] self.numhead = 1
def __init__(self): super(TNGDoloresSpectrograph, self).__init__() self.spectrograph = 'tng_dolores' self.telescope = telescopes.TNGTelescopePar() self.camera = 'DOLORES' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 1, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.252, darkcurr = 0.0, saturation = 65535., nonlinear = 0.76, numamplifiers = 1, gain = 0.97, ronoise = 9.0, datasec = '[51:,1:2045]', oscansec = '[51:,2054:]', suffix = '_lrr' )] self.numhead = 1 # Uses default primary_hdrext self.timeunit = 'isot'
def __init__(self): # Get it started super(GeminiFLAMINGOS2Spectrograph, self).__init__() self.spectrograph = 'gemini_flamingos2' self.camera = 'FLAMINGOS' self.numhead = 2 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 1, specaxis = 0, specflip = True, xgap = 0., ygap = 0., ysize = 1., platescale = 0.1787, darkcurr = 0.5, saturation = 700000., #155400., nonlinear = 1.0, numamplifiers = 1, gain = 4.44, ronoise = 5.0, #8 CDS read datasec = '[:,:]', oscansec = '[:,:]' )]
def __init__(self): # Get it started super(ShaneKastBlueSpectrograph, self).__init__() self.spectrograph = 'shane_kast_blue' self.camera = 'KASTb' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.43, darkcurr=0.0, saturation=65535., nonlinear=0.76, numamplifiers=2, gain=[1.2, 1.2], ronoise=[3.7, 3.7], datasec=[ '[:, 1:1024]', '[:, 1025:2048]' ], # These are rows, columns on the raw frame, 1-indexed oscansec=['[:, 2050:2080]', '[:, 2081:2111]'], suffix='_blue') ] self.numhead = 1 # Uses timeunit from parent class # Uses default primary_hdrext self.sky_file = 'sky_kastb_600.fits'
def __init__(self): # Get it started super(MagellanMAGESpectrograph, self).__init__() self.spectrograph = 'magellan_mage' self.camera = 'magellan_mage' self.telescope = telescopes.MagellanTelescopePar() self.numhead = 1 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=True, xgap=0., ygap=0., ysize=1., # plate scale in arcsec/pixel platescale=0.3, # electrons/pixel/hour. From: http://www.lco.cl/telescopes-information/magellan/instruments/mage/the-mage-spectrograph-user-manual darkcurr=1.00, saturation=65535., # CCD is linear to better than 0.5 per cent up to digital saturation (65,536 DN including bias) in the Fast readout mode. nonlinear=0.99, numamplifiers=1, gain=1.02, # depends on the readout ronoise=2.9, # depends on the readout datasec='[1:1024, 1:2048]', oscansec='[1:1024, 2049:2176]', ) ] # Taken from the MASE paper: https://arxiv.org/pdf/0910.1834.pdf self.norders = 15 # 20-6
def __init__(self): # Get it started super(WHTISISBlueSpectrograph, self).__init__() self.spectrograph = 'wht_isis_blue' self.telescope = telescopes.WHTTelescopePar() self.camera = 'ISISb' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 1, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.225, darkcurr = 0.0, saturation = 65535., nonlinear = 0.76, numamplifiers = 1, gain = 1.2, ronoise = 5.0, datasec = '[:,2:4030]', oscansec = None, suffix = '_blue' )] self.numhead = 2
def set_detector(self, chip): detectors = [ # Detector 1 (Thor) -- http://www.eso.org/sci/php/optdet/instruments/fors2/index.html pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.126, # average between order 11 & 30, see manual darkcurr=0.0, saturation= 2.0e5, # I think saturation may never be a problem here since there are many DITs nonlinear=0.80, numamplifiers=1, gain=0.70, ronoise=2.9, # High gain datasec='[:,10:]', # For 1x binning, I think oscansec='[:,0:10]', suffix='_Thor'), # Detector 2 (Belenos) pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.126, # average between order 11 & 30, see manual darkcurr=0.0, saturation= 2.0e5, # I think saturation may never be a problem here since there are many DITs nonlinear=0.80, numamplifiers=1, gain=0.70, ronoise=3.0, # High gain datasec='[20:,0:2048]', oscansec='[4:20,4:2044]', suffix='_Belenos') ] if chip == 'CHIP1': self.detector = [detectors[0]] elif chip == 'CHIP2': debugger.set_trace() # NEED TO SET DATASEC self.detector = [detectors[1]]
def __init__(self): # Get it started super(KeckLRISRSpectrograph, self).__init__() self.spectrograph = 'keck_lris_red_longonly' self.camera = 'LRISr' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext =1, specaxis =0, specflip = False, xgap =0., ygap =0., ysize =1., platescale =0.135, darkcurr =0.0, saturation =65535., # Gain applied nonlinear =0.86, # Modified by JXP to go higher numamplifiers =1, gain =[1.255], ronoise =[4.64], datasec = ['',''], oscansec = ['',''], suffix ='_01red' ), #Detector 2 pypeitpar.DetectorPar( dataext =2, specaxis =0, specflip = False, xgap =0., ygap =0., ysize =1., platescale =0.135, darkcurr =0., saturation =65535., # Gain applied nonlinear =0.86, numamplifiers =1, gain =[1.162], ronoise =[4.62], datasec = ['',''], oscansec = ['',''], suffix ='_02red' )] self.numhead = 3
def __init__(self): # Get it started super(KeckLRISRSpectrograph, self).__init__() self.spectrograph = 'keck_lris_red' self.camera = 'LRISr' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext =1, specaxis =0, specflip = False, xgap =0., ygap =0., ysize =1., platescale =0.135, darkcurr =0.0, saturation =65535., nonlinear =0.76, numamplifiers =2, gain =[1.255, 1.18], ronoise =[4.64, 4.76], datasec = ['',''], # These are provided by read_lris oscansec = ['',''], suffix ='_01red' ), #Detector 2 pypeitpar.DetectorPar( dataext =2, specaxis =0, specflip = False, xgap =0., ygap =0., ysize =1., platescale =0.135, darkcurr =0., saturation =65535., nonlinear =0.76, numamplifiers =2, gain =[1.191, 1.162], ronoise =[4.54, 4.62], datasec = ['',''], # These are provided by read_lris oscansec = ['',''], suffix ='_02red' )] self.numhead = 5
def __init__(self): # Get it started super(MMTBINOSPECSpectrograph, self).__init__() self.spectrograph = 'mmt_binospec' self.telescope = telescopes.MMTTelescopePar() self.camera = 'BINOSPEC' self.numhead = 11 self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=1, specaxis=0, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.24, darkcurr=3.0, ##ToDO: To Be update saturation=65535., nonlinear=0.95, #ToDO: To Be update numamplifiers=4, gain=[1.085, 1.046, 1.042, 0.975], ronoise=[3.2] * 4, suffix='_01'), # Detector 2 pypeitpar.DetectorPar( dataext=2, specaxis=0, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.24, darkcurr=3.0, ##ToDO: To Be update saturation=65535., nonlinear=0.95, #ToDO: To Be update numamplifiers=4, gain=[1.028, 1.163, 1.047, 1.045], ronoise=[3.2] * 4, suffix='_02') ]
def __init__(self): # Get it started super(LBTLUCI1Spectrograph, self).__init__() self.spectrograph = 'lbt_luci1' self.camera = 'LUCI1' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext=0, specaxis=1, specflip=False, xgap=0., ygap=0., ysize=1., platescale=0.25, # Dark current nominally is < 360 electrons per hours # but the dark subtraction will effectively bring this to 0 darkcurr=0.0, # Saturation is 55000, but will be set to dummy value for # now saturation=1e+8, # NIR detectors are non-linear even in lower percentages # of the full well, thus for precision measurements one # should take into account a general non-linearity # correction. nonlinear=0.80, # In fact there are 32 amplifiers, which gain and ronoise # are extremely similar to each other, thus it will be # mimicked as 1 numamplifiers=1, # The readout noise for LUCI are different for # different readout modes. The LIR mode values will be # commented in and the MER values will be uncommented: gain=2.0, # ronoise= 10.3, ronoise=4.61, datasec='[5:2044,5:2044]', # For Luci the first 4 pixels on each side can # technically be used for as a biassec. This is not # included here. oscansec='[5:2044,1:4]', suffix='_luci1') ] self.numhead = 1
def __init__(self): # Get it started super(LBTMODS2BSpectrograph, self).__init__() self.spectrograph = 'lbt_mods2b' self.camera = 'MODS2B' self.detector = [ # Detector 1 pypeitpar.DetectorPar( dataext = 0, specaxis = 0, specflip = False, xgap = 0., ygap = 0., ysize = 1., platescale = 0.120, darkcurr = 0.5, saturation = 65535., nonlinear = 0.99, numamplifiers = 4, gain = [1.99,2.06,1.96,2.01], ronoise = [3.66,3.62,3.72,3.64], suffix = '_mods2b' )] self.numhead = 1