SCHIFF-OUTPUT(5) File Formats Manual SCHIFF-OUTPUT(5)

schiff-outputschiff's results format

The output result of the schiff(1) program is a collection of ASCII floating point data. Each set of floating point values are separated by an empty line.

schiff-output ::= cross-sections
EMPTY-LINE
phase-func-desc
EMPTY-LINE
phase-func-list
EMPTY-LINE
cumul-phase-func-list
EMPTY-LINE
invcumul-phase-func-list
EMPTY-LINE

The first set is a list of per wavelength cross-sections. Each line stores the estimated cross-section for a wavelength submitted by the -w option of schiff(1).

Its grammar is as follows:

cross-sections ::= wavelength⟩ ⟨extinction⟩ \
absorption⟩ ⟨scattering⟩ ⟨area
...
 
extinction ::= estimation
absorption ::= estimation
scattering ::= estimation
area ::= estimation
 
estimation ::= mean-value⟩ ⟨standard-error
 
wavelength ::= real
mean-value ::= real
standard-error ::= real

A line is a set of 9 reals: a ‘wavelength’ in vacuum (in microns), followed by the estimations (i.e., the mean values and standard errors) of the ‘extinction’, ‘absorption’ and ‘scattering’ cross-sections in square microns per particle, and finally the estimation of the projected ‘area’ of the soft particles, also in square microns per particle.

Following the list of cross-sections comes the list of phase function descriptors. Each descriptor is a line that gives informations on the [[inverse-]cumulative] phase functions.

Its grammar is as follows:

phase-funcs-desc ::= wavelength⟩ ⟨theta⟩ \
pf(theta)⟩ ⟨cdf(theta)⟩ \
n⟩ ⟨nangles⟩ ⟨nangles-inv
...
 
pf(theta)⟩ ::= estimation
cdf(theta)⟩ ::= estimation

The first value of a descriptor is the wavelength in vacuum (in microns) of the inverse cumulative phase function. It is followed by ‘theta’ that is the scattering angle in radians from which the phase function was analytically computed. Then come the estimation of the differential cross-section ‘pf(theta)’ and its cumulative ‘cdf(theta)’ at the angle ‘theta’. ‘n’ is the parameter of the model used to analytically evaluate the phase function for large scattering angles (i.e. angles greater than ‘theta’). The last 2 values, ‘nangles’ and ‘nangles-inv’, are integers that correspond to the number of scattering angles (option -a of schiff(1)) and the number of inverse cumulative phase function values (option -A of schiff(1)).

The list of phase functions contains as many phase functions as there are wavelengths associated with the result (option -w of schiff(1)). They are sorted in ascending order by their associated wavelengths. The phase functions are separated from one another by a blank line.

phase-func-list ::= phase-func
[ EMPTY-LINE
phase-func⟩ ] ...

A phase function is a list of lines starting with a scattering angle in radians, followed by an estimate of the phase function's value - that is, its mean value and standard error. The number of scattering angles, and thus the number of lines describing the phase function, is controlled by the -a option of schiff(1).

phase-func ::= angle⟩ ⟨estimation
...
angle ::= real # In [0,PI]

The list of cumulative phase functions is formatted in the same way as the list of phase functions, that is, it contains as many functions as there are wavelengths associated with the result (option -w of schiff(1)), sorted in ascending order of wavelength, and separated by a blank line.

cumul-phase-func-list ::= cumul-phase-func
[ EMPTY-LINE
cumul-phase-func⟩ ] ...

Similarly, a cumulative phase function follows the same data structure as a phase function, namely as many lines as there are scattering angles (see the -a option of schiff(1)), where each line begins with the value of the scattering angle in radians followed by the estimate of the cumulative phase function, namely its mean value and standard error.

cumul-phase-func ::= angle⟩ ⟨estimation
...

The last data set consists of a list of inverse cumulative phase functions which, like the previous function lists, contains as many entries as there are wavelengths used in the calculation (option -w of schiff(1)). The functions in this list are sorted in ascending order of these wavelengths, and separated by a blank line.

invcumul-phase-func-list ::= invcumul-phase-func
[ EMPTY-LINE
invcumul-phase-func⟩ ] ...

Each function corresponds to a list of lines, the number of which equals the number of scattering angles used to discretize the function (option -A in schiff(1)). Each line of an inverse cumulative phase function contains two values: the scattering angle in radians (in [0,PI]) and its probability, which is equal to i/(N-1) for the i^th angle (i in [0,N-1]), where N is the number of angles used to discretize the function.

invcumul-phase-func ::= angle⟩ ⟨proba
...
 
proba ::= real # In [0,1]

The following output is emitted by the schiff(1) program invoked on the wavelengths 0.3 and 0.6 micron. Note that actually, schiff(1) does not write comments, i.e. text preceeded by the hash character (#). The comments here are intended to help in the understanding of the data structure.

0.3 10.61 0.20 9.51e-3 2.37e-4 10.6 0.20 5.25 0.10 # X-sections
0.6 11.15 0.25 4.76e-3 1.19e-4 11.1 0.25 5.25 0.10 # X-sections
0.3 0.18 1.37 17.6 7.74 0.73 0.80 1000 2000 # Descriptor
0.6 0.26 9.81 5.26 7.65 0.48 2.90 1000 2000 # Descriptor
0 520.23 64.2971 # Phase function (0.3 micron)
0.00314474 474.315 50.6471
...
3.13845 0.0196258 0
3.14159 0.0196259 0
0 150.183 25.4822 # Phase function (0.6 micron)
0.00314474 145.969 23.7955
...
3.13845 0.00262338 0
3.14159 0.00262338 0
0 0 0 # Cumulative (0.3 micron)
0.00314474 0.0154297 0.00177366
...
3.13845 0.999999 0
3.14159 1 0
0 0 0 # Cumulative (0.6 micron)
0.00314474 0.00460001 0.000765182
...
3.13845 1 0
3.14159 1 0
0 0 # Inverse cumulative (0.3 micron)
0.00050025 0.000101956
...
0.9995 3.05143
1 3.14159
0 0 # Inverse cumulative (0.6 micron)
0.00050025 0.00034199
...
0.9995 2.89409
1 3.14159

schiff(1)

schiff-output has been developed as part of ANR-11-IDEX-0002-02 ALGUE project.

May 18, 2026 UNIX