aboutsummaryrefslogtreecommitdiffstats
path: root/fg21sim/extragalactic/clusters/mergertree.py
diff options
context:
space:
mode:
Diffstat (limited to 'fg21sim/extragalactic/clusters/mergertree.py')
-rw-r--r--fg21sim/extragalactic/clusters/mergertree.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/fg21sim/extragalactic/clusters/mergertree.py b/fg21sim/extragalactic/clusters/mergertree.py
index 22d1d3b..3ea6165 100644
--- a/fg21sim/extragalactic/clusters/mergertree.py
+++ b/fg21sim/extragalactic/clusters/mergertree.py
@@ -69,6 +69,38 @@ def read_mtree(infile):
return mtree
+def show_mtree(mtree):
+ """
+ Trace the main cluster and show its formation history.
+ """
+ def _show_event(main, sub=None, parent=None):
+ z = main.data["z"]
+ age = main.data["age"]
+ mass = main.data["mass"]
+ info = "[z=%.3f/t=%.2f]" % (z, age)
+ if sub is None:
+ # Accretion
+ info += " %.5g" % mass
+ if parent is not None:
+ dM = parent.data["mass"] - mass
+ info += " (dM=%.5g)" % dM
+ else:
+ # Merger
+ Msub = sub.data["mass"]
+ Rmass = mass / Msub
+ info += " %.5g <> %.5g (Rm=%.1f)" % (mass, Msub, Rmass)
+ return info
+
+ i = 0
+ info = _show_event(main=mtree)
+ print("%2d %s" % (i, info))
+ while mtree and mtree.main:
+ i += 1
+ info = _show_event(main=mtree.main, sub=mtree.sub, parent=mtree)
+ print("%2d %s" % (i, info))
+ mtree = mtree.main
+
+
def plot_mtree(mtree, outfile, figsize=(12, 8)):
"""
Plot the cluster merger tree.