I'd like to load only merger trees with roots above a minimum mass (SubhaloMassInRadType, PartType4, if it makes a difference). Is there a way to determine the mass of each tree root without loading the tree file itself (so only its corresponding group catalog file (and offset file, if needed))? I'm using Python.
Thanks in advance,
By "tree root" do you mean the z=0 subhalo mass? (This can be loaded directly from the group catalogs).
Or, perhaps you mean that you have a large list of candidate subhalos at various redshifts, and you want to know the root mass of each? You can use the RootDescendant pointer (in SubLink trees), i.e. collect a list of these, and then load only the corresponding SubhaloMassInRadType elements.
I mean the former, the z=0 subhalo mass.
To load the tree roots directly (and algorithmically) from the group catalog files, then, I assume I use something like
rootMassGC = il.groupcat.loadSubhalos(basePath, 99, fields=['SubhaloMassInRadType'])
I'm not seeing (in the resulting data, or the Illustris website group catalog data specifications), however, a way to uniquely identify each subhalo (i.e. there's no ID field). I do note, though, that the mass in a particular entry in the rootMassGC array does appear to correspond to that of the corresponding tree, i.e. for id x, if
rootMassT = il.sublink.loadTree(basePath, 99, x, fields=['SubhaloMassInRadType'])
it appears to be the case that
rootMassGC[x] == rootMassT
If so, is this true for every tree root? For both SubLink and SubLink_gal trees? And all Illustris runs (TNG and non-)? If not, is there some way to guarantee that a particular subhalo in the group catalog files is the same subhalo as the root of a tree with a given ID (i.e. the ID in loadTree(basePath, snapNum, id,...)?
The loadTree function argument x is the "Subhalo ID", so yes any properties of the root of that tree (assuming it exists and ends at z=0, which is the most common case) will equal the properties of subhalo x at snapshot 99.
When you say there "is no ID field", I think the misunderstanding is just that "ID" and "index" mean the same thing, so the tenth subhalo in the snapshot has "ID" 9, and if you load this tree you will see in SubfindID this value.
That answered my question. Thank you!