aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2023-02-22 11:59:07 +0100
committerThomas White <taw@physics.org>2023-05-02 10:53:09 +0200
commit41ed47a931e4c162c9a501981b6f19cd725f6e43 (patch)
tree0d6999f68c7ccd3bbd37bad4c70ab94797e064c5 /doc
parent1995ba5ada88e3c1949eaf245c5e8e60dff5a3cc (diff)
Remove pattern_sim and partial_sim
Use of these programs has been following this pattern for several years: 1. Neglect 2. Once yearly attempt by someone to use either tool 3. Discovery that it's totally broken 4. Bug report and fast bug fix 5. Go to 1. For more discussion, see the issue referenced below. Closes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/81
Diffstat (limited to 'doc')
-rw-r--r--doc/man/crystfel.714
-rw-r--r--doc/man/crystfel_geometry.58
-rw-r--r--doc/man/get_hkl.13
-rw-r--r--doc/man/partial_sim.1158
-rw-r--r--doc/man/partialator.13
-rw-r--r--doc/man/pattern_sim.1250
6 files changed, 9 insertions, 427 deletions
diff --git a/doc/man/crystfel.7 b/doc/man/crystfel.7
index e04b7644..3ff25c16 100644
--- a/doc/man/crystfel.7
+++ b/doc/man/crystfel.7
@@ -1,7 +1,7 @@
.\"
.\" CrystFEL main man page
.\"
-.\" Copyright © 2012-2021 Deutsches Elektronen-Synchrotron DESY,
+.\" Copyright © 2012-2023 Deutsches Elektronen-Synchrotron DESY,
.\" a research centre of the Helmholtz Association.
.\"
.\" Part of CrystFEL - crystallography with a FEL
@@ -24,15 +24,12 @@ Many patterns, numbering tens of thousands or more, are required, so high throug
The crystal orientations in each pattern are random and uncorrelated, which leads to special considerations during scaling and merging.
.RE
-CrystFEL includes programs for simulating and processing patterns subject to the
-above characteristics. The programs are:
+CrystFEL includes programs processing patterns subject to the above
+characteristics. The programs are:
.IP \fBindexamajig\fR
Batch indexing, integration and data reduction program, which produces a "stream" containing the indexing and integration results for each diffraction pattern.
-.IP \fBpattern_sim\fR
-A diffraction pattern simulation tool.
-
.IP \fBprocess_hkl\fR
A tool merging intensities from many patterns into a single reflection list, via the Monte Carlo method.
@@ -54,9 +51,6 @@ A tool for examining the distributions of unit cell parameters.
.IP "\fBcompare_hkl\fR and \fBcheck_hkl\fR"
Tools for calculating figures of merit, such as completeness and R-factors.
-.IP \fBpartial_sim\fB
-A tool for calculating partial reflection intensities, perhaps for testing the convergence of Monte Carlo merging.
-
.IP \fBrender_hkl\fR
A tool for rendering slices of reciprocal space in two dimensions.
@@ -160,8 +154,6 @@ You should have received a copy of the GNU General Public License along with Cry
.BR indexamajig (1),
.BR process_hkl (1),
.BR partialator (1),
-.BR pattern_sim (1),
-.BR partial_sim (1),
.BR compare_hkl (1),
.BR check_hkl (1),
.BR render_hkl (1),
diff --git a/doc/man/crystfel_geometry.5 b/doc/man/crystfel_geometry.5
index 6056c463..998aa213 100644
--- a/doc/man/crystfel_geometry.5
+++ b/doc/man/crystfel_geometry.5
@@ -14,8 +14,9 @@ CRYSTFEL DETECTOR GEOMETRY DESCRIPTION FILES
.SH CRYSTFEL DETECTOR GEOMETRY FILES
The detector geometry is taken from a text file rather than hardcoded into the
program. Programs which care about the geometry (particularly
-\fBindexamajig\fR and \fBpattern_sim\fR) take an argument
-\fB--geometry=\fR\fIfilename\fR, where \fIfilename\fR contains the geometry.
+\fBindexamajig\fR) take an argument \fB--geometry=\fR\fIfilename\fR, where
+\fIfilename\fR contains the geometry.
+
.PP
A flexible (and pedantic) representation of the detector has been developed to
avoid all possible sources of ambiguity. CrystFEL's representation of a
@@ -175,7 +176,7 @@ The range of pixels in the data block specified by the 'data' property that corr
.IP \fBadu_per_eV\fR
.IP \fBadu_per_photon\fR
.PD
-The number of detector intensity units (ADU) which will arise from either one electron-Volt of photon energy, or one photon. This is used to estimate Poisson errors. Note that setting different values for this parameter for different panels does \fBnot\fR result in the intensities being scaled accordingly when integrating data, but it does affect the intensities calculated by \fBpattern_sim\fR. You should only specify one out of \fBadu_per_eV\fR and \fBadu_per_photon\fR.
+The number of detector intensity units (ADU) which will arise from either one electron-Volt of photon energy, or one photon. This is used to estimate Poisson errors. Note that setting different values for this parameter for different panels does \fBnot\fR result in the intensities being scaled accordingly when integrating data. You should only specify one out of \fBadu_per_eV\fR and \fBadu_per_photon\fR.
.PD 0
.IP \fBres\fR
@@ -339,5 +340,4 @@ You should have received a copy of the GNU General Public License along with Cry
.SH SEE ALSO
.BR crystfel (7),
-.BR pattern_sim (1),
.BR indexamajig (1)
diff --git a/doc/man/get_hkl.1 b/doc/man/get_hkl.1
index b15a33df..bdc7df35 100644
--- a/doc/man/get_hkl.1
+++ b/doc/man/get_hkl.1
@@ -126,5 +126,4 @@ You should have received a copy of the GNU General Public License along with Cry
.SH SEE ALSO
.BR crystfel (7),
.BR check_hkl (1),
-.BR compare_hkl (1),
-.BR pattern_sim (1)
+.BR compare_hkl (1)
diff --git a/doc/man/partial_sim.1 b/doc/man/partial_sim.1
deleted file mode 100644
index 102e3cdf..00000000
--- a/doc/man/partial_sim.1
+++ /dev/null
@@ -1,158 +0,0 @@
-.\"
-.\" partial_sim man page
-.\"
-.\" Copyright © 2012-2021 Deutsches Elektronen-Synchrotron DESY,
-.\" a research centre of the Helmholtz Association.
-.\"
-.\" Part of CrystFEL - crystallography with a FEL
-.\"
-
-.TH PARTIAL_SIM 1
-.SH NAME
-partial_sim \- calculate partial reflections
-.SH SYNOPSIS
-.PP
-.BR partial_sim
-\fB-o\fR \fIsimulated.stream\fR
-\fB-g\fR \fIgeometry.geom\fR
-\fB-p\fR \fIunitcell.pdb\fR
-[\fIoptions\fR] \fB...\fR
-
-.BR partial_sim
-\fB--help\fR
-
-.SH DESCRIPTION
-partial_sim calculates the intensities of idealised partial reflections from crystals in random orientations, which is useful for testing the convergence of Monte Carlo integration or scaling/post-refinement techniques.
-
-.P
-You need to provide a CrystFEL geometry file (with \fB--geometry=\fR\fImy.geom\fR or \fB-g\fR \fImy.geom\fR), a file containing the unit cell to use for the simulation (with \fB--pdb=\fR\fImy.pdb\fR or \fB-p\fR \fImy.pdb\fR), and an output filename with \fB--output=\fR\fImy.stream\fR or \fB-o\fR \fImy.stream\fR.
-
-For each randomly generated orientation, partial_sim calculates which reflections would appear on the detector with the specified beam parameters. It calculates the partiality for each reflection and multiplies it by the fully integrated intensity to produce a partial intensity. The fully integrated intensities can be taken from a file you provide (see below), otherwise they will be randomly generated (by taking the absolute value of a Gaussian random number, mean zero and standard deviation 1000). All the partial intensities for the orientation are multiplied by an overall scaling factor, which is randomly generated with a Gaussian distribution with mean 1 and standard deviation 0.3. The partial intensities are written to the output stream, and the process repeated for as many different orientations as you ask for (see below, default: 2).
-
-Set the incident radiation wavelength and bandwidth in the geometry file. Set the reciprocal space profile radius on the command line with \fI--profile-radius\fR. Beam divergence is not taken into account by the \fIxsphere\fR partiality model used by partial_sim. See \fBman crystfel_geometry\fR for information about CrystFEL geometry description files.
-
-.SH OPTIONS
-.PD 0
-.B
-.IP "-i \fIfile.hkl\fR"
-.B
-.IP --input=\fIfile.hkl\fR
-.PD
-Take the fully integrated reflection intensities from \fIfile.hkl\fR, instead of generating them randomly.
-
-.B
-.IP "\fB-n\fR \fIn\fR"
-Specify the number of different orientations to simulate. Default: 2.
-
-.PD 0
-.IP "\fB-p\fR \fIunitcell.cell\fR"
-.IP "\fB-p\fR \fIunitcell.pdb\fR"
-.IP \fB--pdb=\fR\fIunitcell.pdb\fR
-.PD
-Specify the name of the file containing unit cell information, in PDB or CrystFEL format.
-
-.PD 0
-.B
-.IP "-r \fIrandom.hkl\fR"
-.B
-.IP --save-random=\fIrandom.hkl\fR
-.PD
-If you did not provide your own fully integrated reflection intensities, they will be generated randomly for you. Use this option to save the random intensities for future comparisons.
-
-.PD 0
-.B
-.IP "\fB-y\fR \fIpointgroup\fR"
-.B
-.IP "\fB--symmetry=\fR\fIpointgroup\fR"
-.PD
-When combined with with \fB-i\fR, specifies the symmetry of the input reflection list. Otherwise, specifies the symmetry of the randomly generated intensities.
-
-.PD 0
-.B
-.IP "\fB-c\fR \fIval\fR"
-.B
-.IP "\fB--cnoise=\fR\fIval\fR"
-.PD
-Add random values with a flat distribution to the components of the reciprocal lattice vectors written to the stream, simulating indexing errors. The maximum value that will be added is +/- \fIval\fR percent.
-
-.PD 0
-.B
-.IP "\fB--pgraph=\fR\fIfilename\fR"
-.PD
-Save a table of values to \fIfilename\fR containing, in resolution shells, the following columns: resolution shell centre in nm^-1, number of reflections in shell, mean partiality, maximum partiality.
-
-.PD 0
-.B
-.IP "\fB--osf-stddev=\fR\fIval\fR"
-.PD
-Set the standard deviation of the distribution of overall scaling factors to \fIval\fR. The distribution will be cut at zero, i.e. negative or zero scaling factors are not allowed. The distribution will be Gaussian centered on 1. The default is \fB--osf-stddev=2.0\fR.
-
-.PD 0
-.B
-.IP "\fB--full-stddev=\fR\fIval\fR"
-.PD
-Set the standard deviation of the distribution of randomly generated full intensities to \fIval\fR. The distribution will be Gaussian, centered on zero, and the absolute value will be taken (i.e. there will be no negative values). The default is \fB--full-stddev=1000.0\fR. This option has no effect if you also use \fB-i\fR or \fB--input\fR.
-
-.PD 0
-.B
-.IP "\fB--noise-stddev=\fR\fIval\fR"
-.PD
-Set the standard deviation of the noise added to the partial intensities to \fIval\fR. The noise will be Gaussian, and the same for all reflections. The default is \fB--noise-stddev=20.0\fR.
-
-.PD 0
-.B
-.IP "\fB-j\fR \fIn\fR"
-.PD
-Use \fIn\fR threads for simulation. Default: 1.
-
-.PD 0
-.B
-.IP "\fB--images=\fR\fIprefix\fR"
-.PD
-For each chunk in the output stream, write a 'sketch' image in HDF5 format to \fIprefix\fR\fB/sim-\fR\fINNN\fR\fB.h5\fR, where \fINNN\fR is the sequence number of the chunk in the output stream. This option is incompatible with \fB-j\fR. The intensities in the peaks in the sketches will be equal to the partial intensities in the stream, including noise and overall scaling factors. The images will also contain a random Poisson-distributed background according to \fB--background\fR.
-
-.PD 0
-.B
-.IP "\fB--background=\fIval\fR"
-.PD
-Add a Poisson-distributed background with \fIval\fR photons to the sketches (see \fB--images\fR). The default is \fB--background=3000\fR.\fR.
-
-.PD 0
-.B
-.IP "\fB--profile-radius=\fIval\fR"
-.PD
-Set the radius of the scattering density surrounding each reciprocal lattice point, in m^-1. The default is \fB--profile-radius=0.001e9\fR m^-1.
-
-.PD 0
-.IP \fB--really-random\fR
-.PD
-Seed the random number generator using the kernel random number generator (/dev/urandom). This means that truly random (although not "cryptographically random") numbers will be used for the orientation and crystal size, instead of the same sequence being used for each new run.
-
-.IP "\fB--template-stream=\fImy.stream\fR"
-.PD
-Get the crystal cell parameters, orientations and the reflections to calculate from \fImy.stream\fR. This allows you to re-calculate partial intensities using new beam parameters. There must only be one crystal per chunk in the template. If more than one thread is used (see \fB-j\fR), note that there is no guarantee that the order of crystals in the output stream will match that of \fImy.stream\fR.
-
-
-.SH AUTHOR
-This page was written by Thomas White.
-
-.SH REPORTING BUGS
-Report bugs to <taw@physics.org>, or visit <http://www.desy.de/~twhite/crystfel>.
-
-.SH COPYRIGHT AND DISCLAIMER
-Copyright © 2012-2021 Deutsches Elektronen-Synchrotron DESY, a research centre of the Helmholtz Association.
-.P
-partial_sim, and this manaul, are part of CrystFEL.
-.P
-CrystFEL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-.P
-CrystFEL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-.P
-You should have received a copy of the GNU General Public License along with CrystFEL. If not, see <http://www.gnu.org/licenses/>.
-
-.SH SEE ALSO
-.BR crystfel (7),
-.BR process_hkl (1),
-.BR partialator (1),
-.BR pattern_sim (1),
-.BR crystfel_geometry (5).
diff --git a/doc/man/partialator.1 b/doc/man/partialator.1
index 6fa67593..d900476d 100644
--- a/doc/man/partialator.1
+++ b/doc/man/partialator.1
@@ -281,5 +281,4 @@ You should have received a copy of the GNU General Public License along with Cry
.SH SEE ALSO
.BR crystfel (7),
.BR indexamajig (1),
-.BR process_hkl (1),
-.BR partial_sim (1)
+.BR process_hkl (1)
diff --git a/doc/man/pattern_sim.1 b/doc/man/pattern_sim.1
deleted file mode 100644
index 36287162..00000000
--- a/doc/man/pattern_sim.1
+++ /dev/null
@@ -1,250 +0,0 @@
-.\"
-.\" pattern_sim man page
-.\"
-.\" Copyright © 2012-2021 Deutsches Elektronen-Synchrotron DESY,
-.\" a research centre of the Helmholtz Association.
-.\"
-.\" Part of CrystFEL - crystallography with a FEL
-.\"
-
-.TH PATTERN_SIM 1
-.SH NAME
-pattern_sim \- Simulation of nanocrystal diffraction patterns
-.SH SYNOPSIS
-.PP
-.B pattern_sim
-\fB-g\fR \fIdetector.geom\fR \fB-p\fR \fImy.pdb\fR
-[\fBoptions\fR] \fB...\fR
-.PP
-.B pattern_sim
-\fB--help\fR
-
-.SH DESCRIPTION
-
-pattern_sim simulates diffraction patterns from small crystals probed with femtosecond pulses of X-rays from a free electron laser. Typical use might be of the form:
-
-pattern_sim -g mydetector.geom -p my.pdb -r -i myintensities.hkl
-
-The unit cell geometry will be taken from the unit cell file you provide, and the intensities of the reflections will be interpolated from the reflection list file you provide. The reflection list format is the same as that output by process_hkl and handled by get_hkl. You also need a geometry description file (-g). See `man crystfel_geometry' for details of how to create a geometry file. Examples of both files can be found in the installation directory, which is normally /usr/local/share/doc/crystfel.
-
-Set the incident radiation wavelength and bandwidth in the geometry file. Beam divergence is not taken into account. See \fBman crystfel_geometry\fR for information about CrystFEL geometry description files.
-
-The result will be written to an HDF5 file in the current directory with the name `sim.h5'.
-
-.SH OPTIONS
-
-.PD 0
-.IP "\fB-p\fR \fIunitcell.cell\fR"
-.IP "\fB-p\fR \fIunitcell.pdb\fR"
-.IP \fB--pdb=\fR\fIunitcell.pdb\fR
-.PD
-Specify the name of the file containing unit cell information, in PDB or CrystFEL format.
-
-.PD 0
-.IP \fB--gpu\fR
-.PD
-Use the GPU to speed up the calculation. Requires that OpenCL libraries and drivers are available, and that CrystFEL was compiled with OpenCL enabled.
-
-.PD 0
-.IP \fB--gpu-dev=\fRIn\fR
-.PD
-Use GPU device number \fIn\fR. If you omit this option, the list of GPU devices will be shown when you run pattern_sim.
-
-.PD 0
-.IP "\fB-g\fR \fIfilename\fR"
-.IP \fB--geometry=\fR\fIfilename\fR
-.PD
-Read the detector geometry description from \fIfilename\fR. See \fBman crystfel_geometry\fR for more information.
-
-.PD 0
-.IP "\fB-n\fR \fn\fR"
-.IP \fB--number=\fR\fIn\fR
-.PD
-Simulate \fIn\fR patterns. Default: \fB-n 1\fR.
-
-.PD 0
-.IP \fB--no-images\fR
-.PD
-Do not save any HDF5 files apart from the powder pattern (if requested).
-
-.PD 0
-.IP "\fB-o\fR \fIfilename\fR"
-.IP \fB--output=\fR\fIfilename\fR
-.PD
-Write the pattern to \fIfilename\fR. The default is \fB--output=sim.5\fR. If more than one pattern is to be simulated (see \fB--number\fR), the filename will be postfixed with a hyphen, the image number and then '.h5'.
-
-.PD 0
-.IP \fB-r\fR
-.IP \fB--random-orientation\fR
-.PD
-Make up a random orientation for each pattern simulated.
-
-.PD 0
-.IP \fB--powder=\fR\fIfilename\fR
-.PD
-Write the sum of all patterns to \fIfilename\fR.
-
-.PD 0
-.IP "\fB-i\fR \fIfilename\fR"
-.IP \fB--intensities=\fR\fIfilename\fR
-.PD
-Get the intensities and phases at the reciprocal lattice points from \fIfilename\fR.
-
-.PD 0
-.IP "\fB-y\fR \fIpointgroup\fR"
-.IP \fB--symmetry=\fR\fIpointgroup\fR
-.PD
-Use \fIpointgroup\fR as the symmetry of the intensity list (see \fB--intensities\fR).
-
-.PD 0
-.IP "\fB-t\fR \fImethod\fR"
-.IP \fB--gradients=\fR\fImethod\fR
-.PD
-Use \fImethod\fR as way of calculating the molecular transform between reciprocal lattice points. See the section \fBGRADIENT METHODS\fR below.
-
-.PD 0
-.IP \fB--really-random\fR
-.PD
-Seed the random number generator using the kernel random number generator (/dev/urandom). This means that truly random numbers for the orientation and crystal size, instead of the same sequence being used for each new run.
-
-.PD 0
-.IP \fB--min-size=\fR\fImin\fR
-.IP \fB--min-size=\fR\fImax\fR
-.PD
-Generate random crystal sizes between \fImin\fR and \fImax\fR nanometres. These options must be used together.
-
-.PD 0
-.IP \fB--no-noise\fR
-.PD
-Do not calculate Poisson noise.
-
-.PD 0
-.IP "\fB-s\fR \fIn\fR"
-.IP \fB--sample-spectrum=\fR\fIn\fR
-.PD
-Include \fIn\fR samples from the spectrum in the calculation.
-
-.PD 0
-.IP "\fB-x\fR \fItype\fR"
-.IP \fB--spectrum=\fR\fItype\fR
-.PD
-Use \fItype\fR of spectrum. \fItype\fR can be one of \fBtophat\fR, \fBsase\fR or \fBtwocolour\fR. See the section \fBSPECTRUM TYPES\fR below.
-
-.PD 0
-.IP \fB--background=\fR\fIn\fR
-.PD
-Add \fIn\fR photons of Poisson-distributed background uniformly over the detector surface.
-
-.PD 0
-.IP \fB--no-fringes\fR
-.PD
-Suppress the subsidiary maxima of the shape transforms by setting I_latt(q) to zero beyond the first minimum of the function.
-
-.PD 0
-.B
-.IP "\fB--nphotons=\fIval\fR"
-.PD
-Set the number of photons per X-ray pulse. The default is \fB--nphotons=1e12\fR. A physically reasonable value is such that the pulse energy (number of photons multiplied by photon energy) is about 1 mJ.
-
-.IP "\fB--beam-radius=\fIval\fR"
-.PD
-Set the radius of the X-ray beam, in metres. The default is \fB--beam-radius=1e-6\fR, i.e. a beam of 2 microns' diameter.
-
-.SH REFLECTION LISTS
-
-You'll need to create a file containing the intensities of the reflections. The normal way to do this is to use CCP4 via the "gen-sfs" script in CrystFEL's script folder. Run it like this:
-
-$ \fBgen-sfs\fR \fImymodel.pdb\fR \fB"\fR\fIP6\fR\fB"\fR \fI3\fR
-
-You need to give the PDB model, the symmetry of the output reflections (use the lowest symmetry space group with the right point group), and optionally the maximum resolution in Angstroms. If you don't specify the resolution, it'll use 3 Angstroms.
-
-The reflections will be output as \fImymodel.pdb\fR.hkl ready for input to pattern_sim. You'll need to give the Laue class of the symmetry you gave to gen-sfs, "6/m" in this case, to pattern_sim with \fB-y\fR. By default, \fBgen-sfs\fR calculates the values for CuKa radiation (8.3 keV, 1.5 A). It will not calculate the anomalous contribution to scattering, i.e. the differences in intensities between Bijoet pairs. Both of these are the default behaviour for "sfall" in CCP4, so read the manual for that for further details. If you need something different, get the "ano_sfall.com" script from James Holton and use the
-\fBgen-sfs-ano\fR script instead of \fBgen-sfs\fR.
-
-.SH CALCULATION DETAILS
-
-The lattice transform from the specified number of unit cells is calculated
-using the closed-form solution for a truncated lattice faceted on the
-(001), (010) and (100) planes:
-.IP
-I_latt(q) = sin^2(pi*na*g.a)/sin^2(pi*g.a)
- * sin^2(pi*nb*g.b)/sin^2(pi*g.b)
- * sin^2(pi*nc*g.c)/sin^2(pi*g.c)
-.IP
-na = number of unit cells in 'a' direction (likewise nb, nc)
-.br
- g = reciprocal vector (1/d convention, not 2pi/d)
-.PP
-This is multiplied by a model of the underlying molecular transform, I_mol(g).
-This can be approximated to varying levels of accuracy by the methods given by
-\fB--gradients\fR.
-.PP
-Expected intensities at the CCD are then calculated using:
-.IP
-I(g) = I0 * r^2 * I_latt(g) * I_mol(g) * S
-.IP
-I0 = number of photons per unit area in the incident beam
- r = Thomson radius
- S = solid angle of corresponding pixel
-.PP
-Polarisation is not currently included in pattern_sim, although it is included
-in the analysis of Bragg peaks done by \fBindexamajig\fR.
-.PP
-Poisson counts are generated from the expected intensities using Knuth's
-algorithm. When the intensity is sufficiently high that Knuth's algorithm
-would result in machine precision problems, a normal distribution with
-standard deviation sqrt(I) is used instead.
-
-.SH GRADIENT METHODS
-
-The available options for \fB--gradients\fR as as follows:
-
-.IP \fBmosaic\fR
-.PD
-Take the intensity of the nearest Bragg position. This is the fastest method and the only one supported on the GPU, but the least accurate.
-
-.IP \fBinterpolate\fR
-.PD
-Interpolate trilinearly between six adjacent Bragg intensities. This method has intermediate accuracy.
-
-.IP \fBphased\fR
-.PD
-As 'interpolate', but take phase values into account. This is the most accurate method, but the slowest.
-
-.SH SPECTRUM TYPES
-
-The available options for \fB--spectrum\fR are:
-
-.IP \fBtophat\fR
-.PD
-The spectrum samples will be distributed equidistantly either side of the specified photon energy to give a uniform distribution.
-
-.IP \fBsase\fR
-.PD
-A self-amplified spontaneous emission (SASE) spectrum will be simulated, as follows. First, a central photon energy will be chosen using a Gaussian distribution centered on the specified photon energy with a standard deviation of 8 eV. A Gaussian spectrum will then be calculated using the specified bandwidth, and noise added to simulatie the SASE 'spikes'.
-
-.IP \fBtwocolour\fR
-.PD
-The spectrum will consist of two Gaussian peaks separated by the specified bandwidth, each with a standard deviation of one fifth the specified bandwidth.
-
-.SH AUTHOR
-This page was written by Thomas White.
-
-.SH REPORTING BUGS
-Report bugs to <taw@physics.org>, or visit <http://www.desy.de/~twhite/crystfel>.
-
-.SH COPYRIGHT AND DISCLAIMER
-Copyright © 2012-2021 Deutsches Elektronen-Synchrotron DESY, a research centre of the Helmholtz Association.
-.P
-pattern_sim, and this manual, are part of CrystFEL.
-.P
-CrystFEL is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
-.P
-CrystFEL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-.P
-You should have received a copy of the GNU General Public License along with CrystFEL. If not, see <http://www.gnu.org/licenses/>.
-
-.SH SEE ALSO
-.BR crystfel (7)
-and
-.BR crystfel_geometry (5).