.. _physics-outputAnalysisPropertyOperator: Output Analysis Property Operator ================================= Class providing operators on galaxy or halo properties for on-the-fly output analysis---scalar transformations applied to a raw property value (e.g.\ stellar mass, luminosity, or velocity) before it is binned or compared with observations. Typical operations include logarithmic transformations, dust attenuation corrections, aperture corrections, or random scatter to simulate observational measurement errors. The operator receives the property value, the galaxy node, the property type, and the output snapshot index, and returns the transformed value. **Default implementation:** ``outputAnalysisPropertyOperatorIdentity`` Methods ------- ``operate`` → ``double precision`` Operate on the given property. * ``double precision , intent(in ) :: propertyValue`` * ``type (treeNode ), intent(inout), optional :: node`` * ``type (enumerationOutputAnalysisPropertyTypeType), intent(inout), optional :: propertyType`` * ``integer (c_size_t ), intent(in ), optional :: outputIndex`` .. _physics-outputAnalysisPropertyOperatorAntiLog10: ``outputAnalysisPropertyOperatorAntiLog10`` ------------------------------------------- Applies the inverse :math:`\log_{10}` transformation (:math:`10^x`) to a property value, converting from logarithmic to linear scale as part of an output analysis property operator pipeline. .. _physics-outputAnalysisPropertyOperatorBoolean: ``outputAnalysisPropertyOperatorBoolean`` ----------------------------------------- An output analysis property operator that converts a continuous property to a boolean value (:math:`x \rightarrow 0` if :math:`x=0`, otherwise :math:`x \rightarrow 1`), with ``preciseZero`` controlling whether zero inputs map to exact zero or the smallest representable non-zero value. **Parameters** * ``[preciseZero]`` (default ``.true.``) — If true, then input value of 0 will be mapped to precisely 0. Otherwise, they are mapped to the smallest representable non-zero value, ``epsilon(0.0d0)``. This is useful since a precise 0 is treated differently by the :galacticus-class:`outputAnalysisMeanFunction1D` output analysis class. .. _physics-outputAnalysisPropertyOperatorCosmologySZ: ``outputAnalysisPropertyOperatorCosmologySZ`` --------------------------------------------- An output analysis property operator class which scales thermal Sunyaev-Zeldovich properties to :math:`z=0` using the expected cosmological scalings. Specifically, the property is multiplied by a factor of :math:`E^{-2/3}(t)` where :math:`H(t) = E(t) H_0` is the epoch-dependent Hubble parameter :cite:p:`planck_collaboration_planck_2013`. .. _physics-outputAnalysisPropertyOperatorCsmlgyAnglrDstnc: ``outputAnalysisPropertyOperatorCsmlgyAnglrDstnc`` -------------------------------------------------- An output analysis property operator class which corrects properties for the difference in cosmological angular diameter distance between true and assumed (i.e. in the observational analysis) cosmologies. Typically the observational data will have been analyzed assuming some specific set of cosmological parameters which will differ from that in the current model. Therefore, the size of a galaxy must be adjusted to match what would be inferred if they were assessed using the same cosmological parameters as were used for the observational data. Typically, this will mean that sizes are scaled in proportion to :math:`D^\prime_\mathrm{A}(z)/D_\mathrm{A}(z)`, where :math:`D_\mathrm{A}(z)` and :math:`D^\prime_\mathrm{A}(z)` are the luminosity distances to redshift :math:`z` in the true and assumed cosmologies respectively. .. _physics-outputAnalysisPropertyOperatorCsmlgyLmnstyDstnc: ``outputAnalysisPropertyOperatorCsmlgyLmnstyDstnc`` --------------------------------------------------- An output analysis property operator class which corrects properties for the difference in cosmological luminosity distance between true and assumed (i.e. in the observational analysis) cosmologies. Typically the observational data will have been analyzed assuming some specific set of cosmological parameters which will differ from that in the current model. Therefore, the luminosity or mass of a galaxy must be adjusted to match what would be inferred if they were assessed using the same cosmological parameters as were used for the observational data. Typically, this will mean that luminosities and stellar masses are scaled in proportion to :math:`D^{\prime 2}_\mathrm{L}(z)/D_\mathrm{L}^2(z)`, where :math:`D_\mathrm{L}(z)` and :math:`D^\prime_\mathrm{L}(z)` are the luminosity distances to redshift :math:`z` in the true and assumed cosmologies respectively. .. _physics-outputAnalysisPropertyOperatorFilterHighPass: ``outputAnalysisPropertyOperatorFilterHighPass`` ------------------------------------------------ An output analysis property operator that applies a high-pass filter to a galaxy property value, passing values above ``filterThreshold`` (with transition sharpness controlled by ``filterWidth``) and either setting or multiplying the property by the filter value. **Parameters** * ``[filterThreshold]`` — Threshold for the high-pass filter distribution operator. * ``[filterWidth]`` (default ``0.0d0``) — The width of the filter (0 for a sharp transition; :math:`>0` for a smoothed transition). * ``[normalized]`` (default ``.false.``) — If true, the property value is set to the filter value, otherwise it is multiplied by it. * ``[filterThreshold]`` — Threshold for the high-pass filter distribution operator. * ``[filterWidth]`` (default ``0.0d0``) — The width of the filter (0 for a sharp transition; :math:`>0` for a smoothed transition). * ``[threshold]`` — The threshold value above which to pass. .. _physics-outputAnalysisPropertyOperatorHIMass: ``outputAnalysisPropertyOperatorHIMass`` ---------------------------------------- Converts ISM (interstellar medium) gas mass to neutral hydrogen (HI) mass using a :galacticus-class:`outputAnalysisMolecularRatioClass` object, accounting for the molecular-to-atomic gas ratio to predict observable HI properties. .. _physics-outputAnalysisPropertyOperatorIdentity: ``outputAnalysisPropertyOperatorIdentity`` ------------------------------------------ Applies no transformation to a property value, passing it through unchanged; useful as a no-op placeholder in output analysis property operator pipelines or for testing purposes. **(Default implementation)** **Parameters** * ``[redshift]`` (default ``0.0d0``) — The redshift at which the transfer function is defined. .. _physics-outputAnalysisPropertyOperatorLog10: ``outputAnalysisPropertyOperatorLog10`` --------------------------------------- Applies a :math:`\log_{10}` transformation to a property value, converting from linear to logarithmic scale as part of an output analysis property operator pipeline. .. _physics-outputAnalysisPropertyOperatorMagnitude: ``outputAnalysisPropertyOperatorMagnitude`` ------------------------------------------- Converts a luminosity or flux property value into an astronomical magnitude, applying the standard logarithmic magnitude scale transformation for comparison to observed photometric data. .. _physics-outputAnalysisPropertyOperatorMetallicity12LogNH: ``outputAnalysisPropertyOperatorMetallicity12LogNH`` ---------------------------------------------------- A property operator class which converts a metallicity, assumed to be a mass ratio of a given element to hydrogen, to :math:`12+\log_{10}(\mathrm{N}/\mathrm{H})` form. **Parameters** * ``[massElement]`` — The atomic mass of the element used to define metallicity. .. _physics-outputAnalysisPropertyOperatorMetallicitySolarRelative: ``outputAnalysisPropertyOperatorMetallicitySolarRelative`` ---------------------------------------------------------- A property operator class which converts a metallicity, assumed to be a mass ratio of a given element to hydrogen, to :math:`[\mathrm{N}/\mathrm{H}]` form. **Parameters** * ``[atomicNumberElement]`` — The atomic number of the element used to define metallicity. .. _physics-outputAnalysisPropertyOperatorMinMax: ``outputAnalysisPropertyOperatorMinMax`` ---------------------------------------- An output analysis property operator that clamps a galaxy property value to lie within a specified range, replacing values below ``thresholdMinimum`` with the minimum threshold and values above ``thresholdMaximum`` with the maximum threshold. **Parameters** * ``[thresholdMinimum]`` — Minimum threshold for the min-max property operator. * ``[thresholdMaximum]`` — Maximum threshold for the min-max property operator. .. _physics-outputAnalysisPropertyOperatorMultiply: ``outputAnalysisPropertyOperatorMultiply`` ------------------------------------------ An output analysis property operator that multiplies a galaxy property value by a fixed scalar ``multiplier``, useful for unit conversions or rescaling properties before binning or likelihood computation. **Parameters** * ``[multiplier]`` — The fixed scalar value by which the galaxy property is multiplied, enabling unit conversions or rescaling before binning or likelihood computation. .. _physics-outputAnalysisPropertyOperatorNormal: ``outputAnalysisPropertyOperatorNormal`` ---------------------------------------- A property operator class in which the property value is replaced with an integral over a normal distribution between given limits, using the property value as the mean of the distribution. **Methods** * ``calculationReset`` — Reset memoized calculations. **Parameters** * ``[rangeLower]`` — Lower integration limit for the normal distribution weight operator. * ``[rangeUpper]`` — Upper integration limit for the normal distribution weight operator. * ``[rootVariance]`` — Root variance for the normal distribution weight operator. * ``[extentLower]`` (default ``-huge(0.0d0)``) — Lower extent for the normal distribution weight operator. * ``[extentUpper]`` (default ``+huge(0.0d0)``) — Upper extent for the normal distribution weight operator. * ``[rangeLower]`` — Lower integration limit for the normal distribution weight operator. * ``[rangeUpper]`` — Upper integration limit for the normal distribution weight operator. * ``[rootVariance]`` — Root variance for the normal distribution weight operator. * ``[mean]`` — The mean :math:`\mu` of the normal (Gaussian) distribution, specifying the location of the peak of the probability density function; optionally constrained within :math:`[x_\mathrm{l}, x_\mathrm{u}]`. * ``[variance]`` — The variance :math:`S = \sigma^2 > 0` of the normal distribution, controlling the width of the Gaussian bell curve; the standard deviation is :math:`\sigma = \sqrt{S}` and the FWHM is :math:`2\sqrt{2\ln 2}\,\sigma`. * ``[limitLower]`` — The lower truncation limit :math:`x_\mathrm{l}` of the normal distribution; when set, the distribution is renormalized over :math:`[x_\mathrm{l}, x_\mathrm{u}]` rather than :math:`(-\infty, +\infty)`. * ``[limitUpper]`` — The upper truncation limit :math:`x_\mathrm{u}` of the normal distribution; when set, the distribution is renormalized over :math:`[x_\mathrm{l}, x_\mathrm{u}]` rather than :math:`(-\infty, +\infty)`. * ``[massEnvironment]`` (default ``1.0d15``) — The mass within the sphere sphere used to determine the variance in the environmental density. * ``[radiusEnvironment]`` (default ``7.0d0``) — The radius of the sphere used to determine the variance in the environmental density. * ``[redshift]`` (default ``0.0d0``) — The redshift at which the large-scale environmental overdensity is defined; the linear density variance and growth factor are evaluated at the corresponding cosmic time to normalize the Gaussian environmental PDF. .. _physics-outputAnalysisPropertyOperatorSequence: ``outputAnalysisPropertyOperatorSequence`` ------------------------------------------ Applies a sequence of :galacticus-class:`outputAnalysisPropertyOperatorClass` objects in order to a property value, enabling construction of complex multi-step transformations from simple composable operators. **Methods** * ``prepend`` — Prepend an operator to a sequence of weight operators. .. _physics-outputAnalysisPropertyOperatorSquare: ``outputAnalysisPropertyOperatorSquare`` ---------------------------------------- Applies a squaring transformation (:math:`x^2`) to a property value, useful for converting linear quantities to squared quantities (e.g., velocity to velocity-squared) in output analysis pipelines. **Methods** * ``positionAtOutput`` * ``replicants`` * ``periodicRange`` * ``nodePositionReplicant`` * ``nodeVelocityReplicant`` * ``replicantLightConeCrossing`` * ``isInFieldOfView`` **Parameters** * ``[nodeIndicesReport]`` — A list of node indices for which reporting should be performed. * ``[origin]`` — The 3D Cartesian position vector (in Mpc) of the observer's location from which the square lightcone extends along the direction defined by the unit vectors. * ``[unitVector1]`` — The first (radial) unit vector defining the lightcone geometry. * ``[unitVector2]`` — The second (angular) unit vector defining the lightcone geometry. * ``[unitVector3]`` — The third (angular) unit vector defining the lightcone geometry. * ``[lengthReplication]`` — The length of the simulation box being used to construct the lightcone. * ``[lengthUnitsInSI]`` — The units of the box length in the SI system. * ``[lengthHubbleExponent]`` — The exponent of the "little-:math:`h`" parameter used in the definition of the box length. * ``[angularSize]`` — The angular size (i.e. side length) of the square field of view of the lightcone (in units of degrees). * ``[timeEvolvesAlongLightcone]`` (default ``.true.``) — If ``true``, cosmic time evolves along the lightcone as expected. Otherwise, time is fixed at the present epoch throughout the lightcone. This allows construction of lightcones with no evolution. .. _physics-outputAnalysisPropertyOperatorSystmtcPolynomial: ``outputAnalysisPropertyOperatorSystmtcPolynomial`` --------------------------------------------------- A polynomial systematic shift output analysis property operator class. This operator allows for a systematic shift in properties (to account for systematic uncertainties in the observational analysis) using a simple model. Specifically, properties are mapped by this model as follows .. math:: \log_\mathrm{10} x \rightarrow \log_{10} x + \sum_{i=0}^N \alpha_i \log^i_{10}(x/x_0), where :math:`x_0=`\ ``[zeroPoint]`` is a zero-point, and the coefficients :math:`\alpha_{i=1\ldots N}=`\ ``[coefficient]`` are specified by input parameters. **Parameters** * ``[zeroPoint]`` — The zero-point of the property value used in the polynomial systematic offset property operator class. * ``[coefficient]`` — The coefficients in the polynomial systematic offset property operator class. * ``[zeroPoint]`` — The zero-point of the property value used in the polynomial random error distribution class. * ``[coefficient]`` — The coefficients in the polynomial random error distribution class. * ``[errorMinimum]`` — The minimum error in the polynomial random error distribution class. * ``[errorMaximum]`` — The maximum error in the polynomial random error distribution class. * ``[coefficients]`` — The polynomial coefficients, :math:`c_i`, in the function :math:`Z(z)/Z_\odot = 10^{\sum_{i=0}^N c_i [\log_{10}(1+z)]^i}`.