diff options
author | Aaron LI <aaronly.me@gmail.com> | 2016-05-27 22:47:24 +0800 |
---|---|---|
committer | Aaron LI <aaronly.me@gmail.com> | 2016-05-27 22:47:24 +0800 |
commit | ffd178e0bd72562a3c2cff9747b6e656edc881dc (patch) | |
tree | 8800b7b5b2e8bc3df1a6760df5cd54eaaa686702 /mass_profile/calc_distance.cc | |
parent | 5c35fad9240fb42c1371c721e0b2af7379bd9ea0 (diff) | |
download | chandra-acis-analysis-ffd178e0bd72562a3c2cff9747b6e656edc881dc.tar.bz2 |
Add mass_profile tools
* These tools are mainly use to calculate the total gravitational mass
profile, as well as the intermediate products (e.g., surface
brightness profile fitting, gas density profile, NFW fitting, etc.)
* There are additional tools for calculating the luminosity and flux.
* These tools mainly developed by Junhua GU, and contributed by
Weitian (Aaron) LI, and Zhenghao ZHU.
Diffstat (limited to 'mass_profile/calc_distance.cc')
-rw-r--r-- | mass_profile/calc_distance.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/mass_profile/calc_distance.cc b/mass_profile/calc_distance.cc new file mode 100644 index 0000000..1a637d3 --- /dev/null +++ b/mass_profile/calc_distance.cc @@ -0,0 +1,61 @@ +#include <iostream> +#include <cmath> +#include <cstdlib> +#include <cstddef> +#include <cassert> +#include "adapt_trapezoid.h" + +//calc_distance +//usage: +//calc_distance z + +using namespace std; + +static double cm=1; +static double s=1; +static double km=1000*100; +static double Mpc=3.08568e+24*cm; +static double kpc=3.08568e+21*cm; +static double yr=365.*24.*3600.; +static double Gyr=1e9*yr; +static double H=71.*km/s/Mpc; +static const double c=299792458.*100.*cm; +//const double c=3e8*100*cm; +static const double omega_m=0.27; +static const double omega_l=0.73; +static const double arcsec2arc_ratio=1./60/60/180*3.1415926; + + +double E(double z) +{ + double omega_k=1-omega_m-omega_l; + return sqrt(omega_m*(1+z)*(1+z)*(1+z)+omega_k*(1+z)*(1+z)+omega_l); +} + +double f_dist(double z) +{ + return 1/E(z); +} + +double f_age(double z) +{ + return f_dist(1/z)/(z*z); +} + + + +double calc_angular_distance(double z) +{ + //return c/H*integer(f_dist,0,z)/(1+z); + //return c/H*adapt_trapezoid(f_dist,0.,z,1e-4)/(1+z); + return adapt_trapezoid(f_dist,0.,z,1e-4)/(1+z); +} + +double calc_luminosity_distance(double z) +{ + //return c/H*integer(f_dist,0,z)/(1+z); + return c/H*adapt_trapezoid(f_dist,0.,z,1e-4)*(1+z); +} + + +//EOF |