示例#1
0
    def X0_norm(self):

        name = 'STANDARD'
        band = 'B'
        thedir = '../Cosmo_Maf'
        #thedir='.'

        os.environ[name] = thedir + '/Instruments/Landolt'

        trans_standard = Throughputs(through_dir='STANDARD',
                                     telescope_files=[],
                                     filter_files=['sb_-41A.dat'],
                                     atmos=False,
                                     aerosol=False,
                                     filterlist=('A'),
                                     wave_min=3559,
                                     wave_max=5559)

        mag, spectrum_file = self.Get_Mag(
            thedir + '/MagSys/VegaBD17-2008-11-28.dat', name, band)

        #print 'alors mag',mag, spectrum_file
        sed = Sed()

        sed.readSED_fnu(filename=thedir + '/' + spectrum_file)
        CLIGHT_A_s = 2.99792458e18  # [A/s]
        HPLANCK = 6.62606896e-27
        sedb = Sed(wavelen=sed.wavelen,
                   flambda=sed.wavelen * sed.fnu / (CLIGHT_A_s * HPLANCK))
        #print 'alors man',sed.wavelen*sed.fnu/(CLIGHT_A_s * HPLANCK)
        flux = self.calcInteg(bandpass=trans_standard.system['A'],
                              signal=sedb.flambda,
                              wavelen=sedb.wavelen)

        zp = 2.5 * np.log10(flux) + mag
        flux_at_10pc = np.power(10., -0.4 * (self.peakAbsMagBesselB - zp))

        #print 'zp',zp,flux_at_10pc

        source = sncosmo.get_source(self.model, version=self.version)
        SN = sncosmo.Model(source=source)

        SN.set(z=0.)
        SN.set(t0=0)
        SN.set(c=self.param['Color'])
        SN.set(x1=self.param['X1'])
        SN.set(x0=1)

        fluxes = 10. * SN.flux(0., self.wave)

        wavelength = self.wave / 10.
        SED_time = Sed(wavelen=wavelength, flambda=fluxes)

        expTime = 30.
        photParams = PhotometricParameters(nexp=expTime / 15.)
        trans = Bandpass(wavelen=trans_standard.system['A'].wavelen / 10.,
                         sb=trans_standard.system['A'].sb)
        e_per_sec = SED_time.calcADU(
            bandpass=trans,
            photParams=photParams)  #number of ADU counts for expTime
        #e_per_sec = sed.calcADU(bandpass=self.transmission.lsst_atmos[filtre], photParams=photParams)
        e_per_sec /= expTime / photParams.gain * photParams.effarea
        #print 'hello',e_per_sec
        """
        SN.set(c=self.param['Color'])
        SN.set(x1=self.param['X1'])
        """

        #print 'My zp',zp,flux
        return flux_at_10pc * 1.E-4 / e_per_sec