aboutsummaryrefslogtreecommitdiffstats
path: root/mass_profile/calc_distance.cc
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@gmail.com>2016-05-27 22:47:24 +0800
committerAaron LI <aaronly.me@gmail.com>2016-05-27 22:47:24 +0800
commitffd178e0bd72562a3c2cff9747b6e656edc881dc (patch)
tree8800b7b5b2e8bc3df1a6760df5cd54eaaa686702 /mass_profile/calc_distance.cc
parent5c35fad9240fb42c1371c721e0b2af7379bd9ea0 (diff)
downloadchandra-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.cc61
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