aboutsummaryrefslogtreecommitdiff
path: root/doc/man/crystfel_geometry.5
blob: abf52accfde44450b8acb24261969f0d103be14c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
.\"
.\" Geometry man page
.\"
.\" Copyright © 2012 Thomas White <taw@physics.org>
.\"
.\" Part of CrystFEL - crystallography with a FEL
.\"

.TH CRYSTFEL\_GEOMETRY 5

.SH CRYSTFEL DETECTOR GEOMETRY AND BEAM DESCRIPTION FILES

See below for information about CrystFEL's beam 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, \fBpattern_sim\fR and \fBpowder_plot\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
detector is broken down into one or more "panels", each of which has its own
camera length, geometry, resolution and so on.  Each panel fits into the overall
image taken from the HDF5 file, defined by minimum and maximum coordinates in
the "fast scan" and "slow scan" directions.  "Fast scan" refers to the direction
whose coordinate changes most quickly as the bytes in the HDF5 file are moved
through.  The coordinates are specified inclusively, meaning that a minimum of 0
and a maximum of 9 results in a width of ten pixels.  Counting begins from zero.
All pixels in the image must be assigned to a panel - gaps are not permitted.
.PP
In the current version, panels are assumed to be perpendicular to the incident
beam and to have their edges parallel.  Within these limitations, any geometry
can be constructed.

The job of the geometry file is to establish a relationship between the array
of pixel values in the HDF5 file, defined in terms only of the "fast scan" and
"slow scan" directions, and the laboratory coordinate system defined as follows:

.IP
+z is the beam direction, and points along the beam (i.e. away from the source)

.IP
+y points towards the zenith (ceiling).

.IP
+x completes the right-handed coordinate system.

.PP
Naively speaking, this means that CrystFEL at the images from the "into the
beam" perspective, but please avoid thinking of things in this way.  It's much
better to consider the precise way in which the coordinates are mapped.

The syntax for a simple geometry might include several entires of the following
form:

; Lines which should be ignored start with a semicolon.

; The name before the slash indicates which panel is referred to.  You can use
.br
; any name as long as it doesn't start with "bad" (see below).
.br
; The range of pixels in the HDF5 file which correspond to a panel are given:
.br
panel0/min_fs = 0
.br
panel0/min_ss = 0
.br
panel0/max_fs = 193
.br
panel0/max_ss = 184

; The number of detector intensity units (ADU) which will arise from one eV:
.br
panel0/adu_per_eV = 0.01

; The readout direction (x, y or 0).  If more than three peaks are found in
.br
; the same readout region, they are all discarded.  This helps to avoid
.br
; problems due to streaks appearing along the readout direction.
.br
; If the badrow direction is '-', then the culling described above will not
.br
; be performed for this panel.
.br
panel0/badrow_direction = -

; The resolution (in pixels per metre) for this panel
.br
panel0/res = 9090.91

; The characteristic peak separation in pixels.  The peak detection will assume
.br
; that genuine peaks are separated by at least this amount.
.br
panel0/peak_sep = 6.0

; The camera length (in metres) for this panel
.br
; You can also specify the HDF path to a scalar floating point value containing
.br
; the camera length in millimetres.
.br
panel0/clen = /LCLS/detectorPosition

; For this panel, the fast and slow scan directions correspond to the given
.br
; directions in the lab coordinate system described above, measured in pixels.
.br
panel0/fs = +y
.br
panel0/ss = -x

; The corner of this panel, defined as the first point in the panel to appear in
.br
; the HDF5 file, is now given a position in the lab coordinate system.
.br
; Note that "first point in the panel" is a conceptual simplification.  We refer
.br
; to that corner, and to the very corner of the pixel - NOT, for example, to the
.br
; centre of the first pixel to appear.
.br
panel0/corner_x = 429.39
.br
panel0/corner_y = -17.30

; You can suppress indexing for this panel if required, by setting "no_index" to
.br
; "true" or "1".
.br
panel0/no_index = 0

; You can also specify bad regions.  Peaks with centroid locations within such
.br
; a region will not be integrated nor indexed.  Bad regions are specified in
.br
; pixel units, but in the lab coordinate system (i.e. "y" points at the ceiling,
.br
; "z" is the beam direction and "x" completes the right-handed system).
.br
badregionA/min_x = -20.0
.br
badregionA/max_x = +20.0
.br
badregionA/min_y = -100.0
.br
badregionA/max_y = +100.0

; If you have a bad pixel mask, you can include it in the HDF5 file as an
.br
; unsigned 16-bit integer array of the same size as the data.  You need to
.br
; give its path within each HDF5 file, and two bitmasks.  The pixel is
.br
; considered good if all of the bits which are set in "mask_good" are set, AND
.br
; if none of the bits which are set in "mask_bad" are set.
.br
mask = /processing/hitfinder/masks
.br
mask_good = 0x27
.br
mask_bad = 0x00

; Any of the per-panel values can be given without a panel prefix, for example:
.br
peak_sep = 6.0
.br
; in which case the value will be used for all *subsequent* panels.

.PP
See the "examples" folder for some examples (look at the ones ending in .geom).

.SH CRYSTFEL BEAM DESCRIPTION FILES
CrystFEL beam description files, usually given with fB--beam=\fR\fIfilename\fR,
describe the beam parameters.  The fields are as follows:

; Number of photons per pulse
.br
beam/fluence = 2.0e11

; Radius of X-ray beam
.br
beam/radius = 1.5e-6

; Photon energy in eV
.br
beam/photon_energy = 2000.0

; Bandwidth: FWHM(wavelength) over wavelength.
.br
; Note: current simulation code just uses a rectangular
.br
;       distribution with this as its (full) width.
.br
beam/bandwidth = 0.001

; Beam divergence (full convergence angle, \fBnot\fR the half-angle) in radians
.br
beam/divergence = 0.001

.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 Thomas White <taw@physics.org>
.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 pattern_sim (1),
.BR indexamajig (1)