Merger Tree File Format - galacticusorg/galacticus GitHub Wiki
Merger trees are stored in HDF5 files for portability and convenience. Additionally, the format is intended to be sufficiently flexible to allow it to desribe merger trees obtained in a wide variety of ways, including Monte Carlo algorithms (e.g. extended Press-Schechter algorithms) and from N-body simulations.
All of the groups/datasets in the file except for the
forestIndex
and forestHalos
groups are, in
principle, optional. This does not mean that a file created without some
of these optional groups/datasets will be useable by a given code. It is
the responsibility of a given code to check that all data that it
requires is present in the file. You are therefore encouraged to include
as much information as possible when constructing merger tree files.
Additionally, the file format is intended to be extensible. It is permissible to add additional datasets, for example to describe some other properties of nodes in each tree. Additional datasets should follow the structure of currently defined datasets, i.e. they should be stored as a single dataset combining all trees with nodes listed in the same order as for other datasets. For additional datasets which might be of general use you are encouraged to contact us and recommend them for inclusion in the standard—this allows their name to be standardized.
Many of the HDF5 attributes discussed in this document are indicated to be scalar (rank 0) attributes. It is allowable within the standard that these be pseudo-scalars (rank 1 arrays contaning a single element). This allows such attributes to be created using the h5lt API for example.
An example of the structure of such a file, called
“example.hdf5
” is shown below using the format of
h5dump
. Each of the groups is described in detail in the
following sections.
HDF5 "example.hdf5" {
GROUP "/" {
ATTRIBUTE "formatVersion"
GROUP "cosmology" {
}
GROUP "groupFinder" {
}
GROUP "forestHalos" {
}
GROUP "forests" {
}
GROUP "particles" {
}
GROUP "provenance" {
}
GROUP "simulation" {
}
GROUP "forestIndex" {
}
GROUP "units" {
}
}
The formatVersion
attribute specifies which version of the
merger tree file format this file follows. The current standard is
version 2.
The cosmology
group describes the cosmological model within
which the merger trees contained in the file were constructed. An
example of this group, showing standard attributes, is given below.
GROUP "cosmology" {
ATTRIBUTE "HubbleParam" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.73
}
}
ATTRIBUTE "OmegaMatter" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.25
}
}
ATTRIBUTE "OmegaLambda" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.75
}
}
ATTRIBUTE "OmegaBaryon" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.045
}
}
ATTRIBUTE "powerSpectrumIndex" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "sigma_8" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.9
}
}
ATTRIBUTE "transferFunction" {
DATATYPE H5T_STRING {
STRSIZE 7;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "CAMB"
}
}
}
The following are standard attributes in the cosmology
group (others may be added as desired).
HubbleParam
: The Hubble parameter in units of 100 km/s/Mpc at z=0, h0;
OmegaMatter
:The density of matter (both dark and baryonic matter) in units of
the critical density at z=0, ΩM;
OmegaLambda
: The density of dark energy in units of the critical density at
z=0, ΩΛ;
OmegaBaryon
: The density of matter (both dark and baryonic matter) in units of
the critical density at z=0, Ωb;
powerSpectrumIndex
: The index of the primordial power spectrum of matter
fluctuations, i.e. ns for power spectrum P(k) ∝ kns;
sigma_8
: The root-variance of mass fluctuations in real space top-hat spheres
of radius 8 h-1 Mpc computed from the z=0 linear theory power spectrum, σ8;
transferFunction
: A descriptor of the transfer function used to compute the power spectrum.
This group, typically relevant only for merger trees derived from N-body simulations, describes the characteristics of the group finding algorithm that was used to find halos in the simulation. An example of this group, showing standard attributes, is given below.
GROUP "groupFinder" {
COMMENT "Group finder parameters."
ATTRIBUTE "code" {
DATATYPE H5T_STRING {
STRSIZE 7;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "SUBFIND"
}
}
ATTRIBUTE "linkingLength" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.2
}
}
ATTRIBUTE "minimumParticleNumber" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 20
}
}
}
The following are standard attributes in the groupFinder
group (others may be added as desired).
code
: The name of the group finding code used in the construction of these
merger trees;
linkingLength
: For friends-of-friends group finding algorithms the
dimensionless (i.e. in units of the mean interparticle spacing)
linking length used;
minimumParticleNumber
: The minimum number of particles that a group was required to have in
order to be included in a merger tree.
This group, typically relevant only for merger trees derived from N-body simulations, describes the characteristics of the simulation from which the trees were derived. An example of this group, showing standard attributes, is given below.
GROUP "simulation" {
COMMENT "Simulation parameters."
ATTRIBUTE "ErrTolIntAccuracy" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.02
}
}
ATTRIBUTE "TypeOfTimestepCriterion" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "boxSize" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 500
}
}
ATTRIBUTE "code" {
DATATYPE H5T_STRING {
STRSIZE 8;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "GADGET-2"
}
}
ATTRIBUTE "initialConditions" {
DATATYPE H5T_STRING {
STRSIZE 5;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "glass"
}
}
ATTRIBUTE "softeningKernel" {
DATATYPE H5T_STRING {
STRSIZE 6;
STRPAD H5T_STR_SPACEPAD;
CSET H5T_CSET_ASCII;
CTYPE H5T_C_S1;
}
DATASPACE SCALAR
DATA {
(0): "spline"
}
}
ATTRIBUTE "softeningPlummerEquivalent" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 0.005
}
}
ATTRIBUTE "startRedshift" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 127
}
}
}
The following are standard attributes in the simulation
group (others may be added as desired).
boxSize
: Relevant for cubic volumes typical of cosmological simulations, this
attributes gives the length of the box in whatever unit system the
file used (see Units Group);
code
: The name of the code used to run the simulation;
initialConditions
: A description of the initial conditions;
softeningKernel
: A description of the softening kernel used;
softeningPlummerEquivalent
: The equivalent Plummer softening length;
startRedshift
: The redshift at which the simulation was begun.
The following are standard attributes in the simulation
group specifically relevant to simulations run with the Gadget
code. They typically reflect the values of parameters used by that code.
ErrTolIntAccuracy
: The integration accuracy used by Gadget;
TypeOfTimestepCriterion
: The type of timestepping criterion used by Gadget;
SofteningGas
: Specifies the (comoving) softening of the first particle group in
Gadget;
SofteningHalo
: Specifies the (comoving) softening of the second particle group in
Gadget;
SofteningDisk
: Specifies the (comoving) softening of the third particle group in
Gadget;
SofteningBulge
: Specifies the (comoving) softening of the fourth particle group in
Gadget;
SofteningStars
: Specifies the (comoving) softening of the fifth particle group in
Gadget;
SofteningBndry
: Specifies the (comoving) softening of the sixth particle group in
Gadget;
SofteningGasMaxPhys
: Specifies the maximum physical softening of the first particle group
in Gadget;
SofteningHaloMaxPhys
: Specifies the maximum physical softening of the second particle
group in Gadget;
SofteningDiskMaxPhys
: Specifies the maximum physical softening of the third particle group
in Gadget;
SofteningBulgeMaxPhys
: Specifies the maximum physical softening of the fourth particle
group in Gadget;
SofteningStarsMaxPhys
: Specifies the maximum physical softening of the fifth particle group
in Gadget;
SofteningBndryMaxPhys
: Specifies the maximum physical softening of the sixth particle group
in Gadget.
This group describes the unit system used throughout the file.
Attributes should be included for length, mass and velocity units. In
each case, three attributes are required to describe the units used (in
the following quantity
refers to length
,
mass
, time
or velocity
):
quantityUnitsInSI
: The units of this quantity expressed in the SI system;
quantityHubbleExponent
: The exponent of the reduced Hubble constant, h, appearing in the
units for this quantity;
quantityScaleFactorExponent
: The exponent, n, of the expansion factor, a, required to convert
this quantity into physical units. That is, multiplying this quantity by an will give the quantity in physical units.
For example, if lengths in the file are expressed in units of comoving h-1 Mpc, then we would have
lengthUnitsInSI = 3.08568e+22
lengthHubbleExponent = -1
lengthScaleFactorExponent = 1
This allows a code reading the data from a merger tree file to automatically convert it into whatever unit/coordinate system it chooses.
An example of this group, showing standard attributes, is given below.
ATTRIBUTE "lengthHubbleExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): -1
}
}
ATTRIBUTE "lengthScaleFactorExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "lengthUnitsInSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 3.08568e+22
}
}
ATTRIBUTE "massHubbleExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): -1
}
}
ATTRIBUTE "massScaleFactorExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "massUnitsInSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 1.98892e+40
}
}
ATTRIBUTE "timeHubbleExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "timeScaleFactorExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "timeUnitsInSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 3.1556926e+16
}
}
} ATTRIBUTE "velocityHubbleExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "velocityScaleFactorExponent" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "velocityUnitsInSI" {
DATATYPE H5T_IEEE_F64LE
DATASPACE SCALAR
DATA {
(0): 1000
}
}
}
The forestHalos
group contains the data describing the
actual merger tree forests. Nodes from each forest must be stored
contiguously. An example of this group is given below. In this example,
<nodeCount>
is the total number of nodes in all merger
tree forests.
GROUP "forestHalos" {
ATTRIBUTE "haloMassesIncludeSubhalos" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "haloAngularMomentaIncludeSubhalos" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "forestsAreSelfContained" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "treesHaveSubhalos" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 1
}
}
ATTRIBUTE "velocitiesIncludeHubbleFlow" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
ATTRIBUTE "positionsArePeriodic" {
DATATYPE H5T_STD_I32LE
DATASPACE SCALAR
DATA {
(0): 0
}
}
DATASET "descendantIndex" {
COMMENT "The index of each descendant node."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "expansionFactor" {
COMMENT "The expansion factor of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "halfMassRadius" {
COMMENT "The half mass radius of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "hostIndex" {
COMMENT "The index of each host node."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "nodeIndex" {
COMMENT "The index of each node."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "nodeMass" {
COMMENT "The mass of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "particleCount" {
COMMENT "The number of entries within the particles group for this node."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "particleStart" {
COMMENT "The index within the particles group at which the particle data for this node is stored."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "position" {
COMMENT "The position of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount>, 3 ) / ( <nodeCount>, 3 ) }
}
DATASET "scaleRadius" {
COMMENT "The scale radius of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "redshift" {
COMMENT "The redshift of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "spin" {
COMMENT "The spin of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount>, 3 ) / ( <nodeCount>, 3 ) }
}
DATASET "time" {
COMMENT "The time of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount> ) / ( <nodeCount> ) }
}
DATASET "velocity" {
COMMENT "The velocity of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <nodeCount>, 3 ) / ( <nodeCount>, 3 ) }
}
}
The following are standard attributes in the forestHalos
group (others may be added as desired).
haloMassesIncludeSubhalos
: Indicates whether or not the masses of halos include the masses of
any subhalos that they may contain. A value of 0 implies that halo
masses do not include masses of subhalos, while a value of 1
indicates that they do;
haloAngularMomentaIncludeSubhalos
: Indicates whether or not the angular momenta of halos include the
angular momenta contributed by any subhalos that they may contain. A
value of 0 implies that halo masses do not include the contribution
of subhalos, while a value of 1 indicates that they do. If this
attribute is not present it is assumed to be equal to the
haloMassesIncludeSubhalos
attribute;
forestsAreSelfContained
: Indicates whether or not forests are self-contained, in the sense
that nodes never transfer from one forest to another. A value of 0
implies that nodes can move from one tree to another, while a
value of 1 implies that they can not;
treesHaveSubhalos
: Indicates whether or not trees contain information on subhalos. A
value of 0 implies that they do not, while a value of 1 implies that
they do. This attribute is a convenience, as subhalo presence can be
determined from the node data directly;
velocitiesIncludeHubbleFlow
: Indicates whether or not velocities include the Hubble flow. A value
of 0 indicates that they do not, while a value of 1 indicates that
they do. See here for important
notes on velocity definitions in .
positionsArePeriodic
: Indicates whether or not positions are periodic (as in a
cosmological cube simulation). A value of 0 indicates that they are
not, while a value of 1 indicates that they are periodic, with a
period of boxSize
.
The following are standard datasets in the forestHalos
group.
angularMomentum
: The angular momentum of the halo. This can be either the magnitude
of the angular momentum or a 3-D vector;
expansionFactor
: The expansion factor (normalized to unity at the present day) at
which this node is identified (note that only one of the
expansionFactor
, redshift
and
time
datasets is required, since they are simply
related, but multiple can be present);
descendantIndex
: The nodeIndex
of the descendant of this node in the
merger tree, or -1 if there is no descendant;
halfMassRadius
: The radius containing half the mass of the node;
hostIndex
: The nodeIndex
of the node which hosts this node. For
nodes that are self-hosting (i.e. that are not subhalos inside
another halo), the value of hostIndex
should be set
equal to the node’s own nodeIndex
;
nodeIndex
: An ID number for the node, unique at least within each tree. If
nodes are able to move from one tree to another, the ID must be
unique within all trees. No other constraints are placed on
nodeIndex
(e.g. it does not have to be monotonically
increasing within the file for example);
nodeMass
: The mass of the node;
position
: The three dimensional position of this node;
redshift
: The redshift at which this node is identified (note that only one of
the expansionFactor
, redshift
and
time
datasets is required, since they are simply
related, but multiple can be present);
scaleRadius
: The characteristic scale radius in the node (typically, but not
necessarily, the NFW scale radius);
spin
: The spin parameter, λ, of the halo. This can be either the
spin magnitude or a 3-D vector;
time
: The time at which this node is identified (note that only one of the
expansionFactor
, redshift
and
time
datasets is required, since they are simply
related, but multiple can be present);
velocity
: The three dimensional velocity of the node. See
here for important notes on
velocity definitions in ;
particleIndexStart
: If the particles
group is included, this dataset should
give the index of the first entry in the particle datasets that
corresponds to the particle associated with this node;
particleIndexCount
: If the particles
group is included, this dataset should
give the number of entries in particle datasets that correspond to
the particle associated with this node;
Note that, internally, uses a different naming convention for the links
between nodes. Specifically, an isolated node’s descendant is known as
its parent, while a satellite node’s host is also referred to as the
parent. By default, will output a parentIndex
dataset,
which therefore specifies either the descendant or host, depending on
whether the node in question is isolated or not. To additionally output
information which matches the use of “descendant” and “host” in these
merger tree files, set both of the input parameters and to
true
. This will result in the output of two additional
datasets, descendantIndex
and hostIndex
which
correspond to the definitions used in the merger tree file.
The forestIndex
group contains indexing information which
describes which sections of the datasets in the forestHalos
group belong to each forest. An example of this group is given below.
GROUP "forestIndex" {
DATASET "firstNode" {
COMMENT "Position of the first node in each forest in the forestHalos datasets."
DATATYPE H5T_STD_I32LE
DATASPACE SIMPLE { ( <forestCount> ) / ( <forestCount> ) }
}
DATASET "numberOfNodes" {
COMMENT "Number of nodes in each forst."
DATATYPE H5T_STD_I32LE
DATASPACE SIMPLE { ( <forestCount> ) / ( <forestCount> ) }
}
DATASET "forestIndex" {
COMMENT "Unique index of forst."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <forestCount> ) / ( <forestCount> ) }
}
DATASET "forestWeight" {
COMMENT "The number of such forests required per unit volume to create a representative sample."
DATATYPE H5T_STD_F64LE
DATASPACE SIMPLE { ( <forestCount> ) / ( <forestCount> ) }
}
}
firstNode
: For each forest, gives the position1 in the
forestHalos
datasets of the first node in the forest
(note that dataset indexing begins at 0). This does not
necessarily have to be a root node of the forest—nodes in a single
forest can be stored in any order in the forestHalos
datasets, providing that they are contiguous;
numberOfNodes
: For each forest, gives the number of nodes in the forest;
forestIndex
: A unique ID number for each forest;
forestWeight
: A weight factor specifying the number density of each forest
required to construct a representative sample. If not present, it is
acceptable to assume that the weight is 1/boxSize
3
if that attribute is present in the simulation
group. In cases where a
simulation has been split into multiple subvolumes, the forestWeight
should still be the weight required to construct a representative sample
from the entire volume. That is, for a cubic simulation of side length
forestWeight
should be
The forests
group is optional and provides a convenience
method for accessing the properties of individual forests. If present,
it contains one group for each tree in the file, named
forest<forestID>
where <forestID>
is
the ID of the forest. Each of these groups should contain a set of
scalar references to the sections of the datasets in the
forestHalos
group to which this forest corresponds. For
example, the descendantIndex
reference for the forest with
ID number 89 would be as follows:
GROUP "forests/forest89" {
DATASET "descendantIndex" {
DATATYPE H5T_REFERENCE
DATASPACE SCALAR
DATA {
DATASET /forestHalos/descendantIndex {(<indexBegin>)-(<indexEnd>)}
}
}
}
The particles
group is optional and contains information on
particle trajectories. It is intended for use with merger trees derived
from N-body simulations for which it is often useful to track the
location of, for example, the most bound particle associated with a
subhalo even after that subhalo can no longer be tracked in the
simulation. An example of this group is given below. In this example,
<particleCount>
is the total number of particles included
in the group.
GROUP "particles" {
DATASET "particleID" {
COMMENT "The ID of each particle."
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( <particleCount> ) / ( <particleCount> ) }
}
DATASET "redshift" {
COMMENT "The redshift of each particle."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <particleCount> ) / ( <particleCount> ) }
}
DATASET "time" {
COMMENT "The time of each particle."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <particleCount> ) / ( <particleCount> ) }
}
DATASET "expansionFactor" {
COMMENT "The expansion factor of each particle."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <particleCount> ) / ( <particleCount> ) }
}
DATASET "position" {
COMMENT "The position of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <particleCount>, 3 ) / ( <particleCount>, 3 ) }
}
DATASET "velocity" {
COMMENT "The velocity of each node."
DATATYPE H5T_IEEE_F64LE
DATASPACE SIMPLE { ( <particleCount>, 3 ) / ( <particleCount>, 3 ) }
}
}
Each particle should be stored contiguously (i.e. entries with the same
particleID
should be consecutive) and it is frequently
convenient (although not required) that entries for each particle be
arranged in order of increasing cosmic time.
particleID
: An ID, unique within the entire simulation, for each particle;
redshift
: The redshift at which the particle is recorded (a single particle
can appear in these datasets at multiple times);
time
: The time at which the particle is recorded (a single particle can
appear in these datasets multiple times at different redshifts);
expansionFactor
: The expansion factor at which the particle is recorded (a single
particle can appear in these datasets multiple times at different
expansion factors);
position
: The spatial position of the particle;
velocity
: The velocity of the particle. See
here for important notes on
velocity definitions in .
Note that only one of the expansionFactor
,
time
and redshift
datasets is required, as
they are simply related, but multiple of them can be present.
[1]: That is, it gives the array index of the first node of the forest
in the forestHalos/nodeIndex
dataset for example. It
does not give the nodeIndex
of the first node in the
forest.