示例#1
0
def mCalcs(airmass, bandName, ra, dec, expMJD,  FWHMeff, hwbpdict, photparams=None, sm=None):
    """
    sm : 
    """
    if photparams is None:
        photparams = PhotometricParameters()
    if sm is None:
        sm = SkyModel(observatory='LSST', mags=False, preciseAltAz=True)
    # Obtain full sky transmission at airmass
    # Note that this method is not interpolating but choosing the atmospheric transmission from
    # Modtran simulations of the closest airmass in a sequence of np.arange(1., 2.51, 0.1)
    fname = atmTransName(airmass)
    print(fname)
    atmTrans = np.loadtxt(fname)
    wave, trans = hwbpdict[bandName].multiplyThroughputs(atmTrans[:, 0], atmTrans[:, 1])
    bp = Bandpass(wavelen=wave, sb=trans)
    # Set the observing condition
    sm.setRaDecMjd(lon=[ra], lat=[dec], filterNames=[bandName],
                   mjd=expMJD, degrees=False, azAlt=False)
    # Get the sky sed
    wave, spec = sm.returnWaveSpec()
    sed = Sed(wavelen=wave, flambda=spec[0])
    sed.writeSED('skySED_laptop.csv')
    m5 = calcM5(sed, bp, hwbpdict[bandName], photparams, FWHMeff)
    # Get the sky magnitude only in the band concerned
    m = sm.returnMags(bandpasses=hwbpdict)[bandName][0]
    return m5, m
perfilterheader = {}
for f in filters:
    good = np.where(filters[f].sb > 0)[0]
    wavelen_blue = filters[f].wavelen[good[0] - 1]
    wavelen_red = filters[f].wavelen[good[-1] + 1]
    perfilterheader[f] = '# Wavelen_cutoff_BLUE %.2f\n' % (wavelen_blue)
    perfilterheader[f] += '# Wavelen_cutoff_RED %.2f\n' % (wavelen_red)

detector.writeThroughput(os.path.join(outDir, 'detector.dat'),
                         print_header=header)
lens1.writeThroughput(os.path.join(outDir, 'lens1.dat'), print_header=header)
lens2.writeThroughput(os.path.join(outDir, 'lens2.dat'), print_header=header)
lens3.writeThroughput(os.path.join(outDir, 'lens3.dat'), print_header=header)
m1.writeThroughput(os.path.join(outDir, 'm1.dat'), print_header=header)
m2.writeThroughput(os.path.join(outDir, 'm2.dat'), print_header=header)
m3.writeThroughput(os.path.join(outDir, 'm3.dat'), print_header=header)
atmos_std.writeThroughput(os.path.join(outDir, 'atmos_std.dat'),
                          print_header=atmosheader)
atmos_10.writeThroughput(os.path.join(outDir, 'atmos_10.dat'),
                         print_header=atmosheader)
darksky.writeSED(os.path.join(outDir, 'darksky.dat'), print_header=skyheader)

for f in filters:
    filters[f].writeThroughput(os.path.join(outDir, 'filter_%s.dat' % (f)),
                               print_header=header + perfilterheader[f])
    hardware[f].writeThroughput(os.path.join(outDir, 'hardware_%s.dat' % (f)),
                                print_header=header + perfilterheader[f])
    system[f].writeThroughput(os.path.join(outDir, 'total_%s.dat' % (f)),
                              print_header=systemheader + perfilterheader[f])
skyheader += versioninfo

perfilterheader = {}
for f in filters:
    good = np.where(filters[f].sb > 0)[0]
    wavelen_blue = filters[f].wavelen[good[0]-1]
    wavelen_red = filters[f].wavelen[good[-1]+1]
    perfilterheader[f] = '# Wavelen_cutoff_BLUE %.2f\n' % (wavelen_blue)
    perfilterheader[f] += '# Wavelen_cutoff_RED %.2f\n' % (wavelen_red)


detector.writeThroughput(os.path.join(outDir, 'detector.dat'), print_header=header)
lens1.writeThroughput(os.path.join(outDir, 'lens1.dat'), print_header=header)
lens2.writeThroughput(os.path.join(outDir, 'lens2.dat'), print_header=header)
lens3.writeThroughput(os.path.join(outDir, 'lens3.dat'), print_header=header)
m1.writeThroughput(os.path.join(outDir, 'm1.dat'), print_header=header)
m2.writeThroughput(os.path.join(outDir, 'm2.dat'), print_header=header)
m3.writeThroughput(os.path.join(outDir, 'm3.dat'), print_header=header)
atmos_std.writeThroughput(os.path.join(outDir, 'atmos_std.dat'), print_header=atmosheader)
atmos_10.writeThroughput(os.path.join(outDir, 'atmos_10.dat'), print_header=atmosheader)
darksky.writeSED(os.path.join(outDir, 'darksky.dat'), print_header=skyheader)

for f in filters:
    filters[f].writeThroughput(os.path.join(outDir, 'filter_%s.dat' %(f)), print_header=header+perfilterheader[f])
    hardware[f].writeThroughput(os.path.join(outDir, 'hardware_%s.dat' %(f)), print_header=header+perfilterheader[f])
    system[f].writeThroughput(os.path.join(outDir, 'total_%s.dat' %(f)), print_header=systemheader+perfilterheader[f])