Created
June 20, 2018 17:51
-
-
Save j-faria/dd635ffdf47ae758e7f3ce8384da8c99 to your computer and use it in GitHub Desktop.
Three slightly different ways to do get stellar mass using the Torres calibration
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def massTorres(teff, erteff, logg, erlogg, feh, erfeh, | |
ntrials=10000, corrected=True): | |
randomteff = teff + erteff * np.random.randn(ntrials) | |
randomlogg = logg + erlogg * np.random.randn(ntrials) | |
randomfeh = feh + erfeh * np.random.randn(ntrials) | |
# Parameters for the Torres calibration | |
a1 = 1.5689 | |
a2 = 1.3787 | |
a3 = 0.4243 | |
a4 = 1.139 | |
a5 = -0.1425 | |
a6 = 0.01969 | |
a7 = 0.1010 | |
X = np.log10(randomteff) - 4.1 | |
logMass = a1 + a2*X + a3*X**2 + a4*X**3 + a5*randomlogg**2 \ | |
+ a6*randomlogg**3 + a7*randomfeh | |
meanlogMass = np.mean(logMass) | |
siglogMass = np.sum((logMass - meanlogMass)**2) / (ntrials - 1) | |
siglogMassTot = np.sqrt(0.027*0.027 + siglogMass) | |
meanMass = 10**meanlogMass | |
sigMass = 10**(meanlogMass + siglogMassTot) - meanMass | |
if corrected: | |
# correction comes from Santos+(2013), the SWEET-Cat paper | |
corrected_meanMass = 0.791 * meanMass**2 - 0.575 * meanMass + 0.701 | |
return corrected_meanMass, sigMass | |
else: | |
return meanMass, sigMass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numba | |
@numba.jit | |
def massTorres3(teff, erteff, logg, erlogg, feh, erfeh, | |
ntrials=10000, corrected=True): | |
randomteff = teff + erteff * np.random.randn(ntrials) | |
randomlogg = logg + erlogg * np.random.randn(ntrials) | |
randomfeh = feh + erfeh * np.random.randn(ntrials) | |
# Parameters for the Torres calibration | |
a1 = 1.5689 | |
a2 = 1.3787 | |
a3 = 0.4243 | |
a4 = 1.139 | |
a5 = -0.1425 | |
a6 = 0.01969 | |
a7 = 0.1010 | |
X = np.log10(randomteff) - 4.1 | |
logMass = a1 + a2*X + a3*X**2 + a4*X**3 + a5*randomlogg**2 \ | |
+ a6*randomlogg**3 + a7*randomfeh | |
meanlogMass = np.mean(logMass) | |
siglogMass = np.sum((logMass - meanlogMass)**2) / (ntrials - 1) | |
siglogMassTot = np.sqrt(0.027*0.027 + siglogMass) | |
meanMass = 10**meanlogMass | |
sigMass = 10**(meanlogMass + siglogMassTot) - meanMass | |
if corrected: | |
# correction comes from Santos+(2013), the SWEET-Cat paper | |
corrected_meanMass = 0.791 * meanMass**2 - 0.575 * meanMass + 0.701 | |
return corrected_meanMass, sigMass | |
else: | |
return meanMass, sigMass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def massTorres(teff, erteff, logg, erlogg, feh, erfeh): | |
ntrials = 10000 | |
randomteff = teff + erteff * np.random.randn(ntrials) | |
randomlogg = logg + erlogg * np.random.randn(ntrials) | |
randomfeh = feh + erfeh * np.random.randn(ntrials) | |
# Parameters for the Torres calibration: | |
a1 = 1.5689 | |
a2 = 1.3787 | |
a3 = 0.4243 | |
a4 = 1.139 | |
a5 = -0.1425 | |
a6 = 0.01969 | |
a7 = 0.1010 | |
M = np.zeros(ntrials) | |
logM = np.zeros(ntrials) | |
for i in range(len(randomteff)): | |
X = np.log10(randomteff[i]) - 4.1 | |
logMass = a1 + a2 * X + a3 * X * X + a4 * X * X * X + a5 *\ | |
randomlogg[i] * randomlogg[i] + a6 * randomlogg[i] *\ | |
randomlogg[i] * randomlogg[i] + a7 * randomfeh[i] | |
logM[i] = logMass | |
M[i] = 10 ** logMass | |
meanMasslog = np.mean(logM) | |
sigMasslog = np.sqrt(np.sum([(logMi - meanMasslog)**2 for logMi in logM]) / | |
(ntrials - 1)) | |
sigMasslogTot = np.sqrt(0.027*0.027 + sigMasslog*sigMasslog) | |
meanMass = 10**meanMasslog | |
sigMass = 10**(meanMasslog + sigMasslogTot) - meanMass | |
corrected_meanMass = 0.791 * meanMass**2 - 0.575 * meanMass + 0.701 | |
return corrected_meanMass, sigMass |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment