diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/examples/cspad-cxiformat.geom | 652 | ||||
-rw-r--r-- | doc/examples/cspad-single.geom (renamed from doc/examples/cspad-feb2011.geom) | 381 | ||||
-rw-r--r-- | doc/man/ambigator.1 | 2 | ||||
-rw-r--r-- | doc/man/check_hkl.1 | 2 | ||||
-rw-r--r-- | doc/man/compare_hkl.1 | 4 | ||||
-rw-r--r-- | doc/man/crystfel.7 | 11 | ||||
-rw-r--r-- | doc/man/crystfel_geometry.5 | 19 | ||||
-rw-r--r-- | doc/man/geoptimiser.1 | 25 | ||||
-rw-r--r-- | doc/man/hdfsee.1 | 12 | ||||
-rw-r--r-- | doc/man/indexamajig.1 | 57 | ||||
-rw-r--r-- | doc/man/list_events.1 | 5 | ||||
-rw-r--r-- | doc/man/partial_sim.1 | 7 | ||||
-rw-r--r-- | doc/man/partialator.1 | 25 | ||||
-rw-r--r-- | doc/reference/libcrystfel/CrystFEL-docs.sgml | 7 | ||||
-rw-r--r-- | doc/reference/libcrystfel/CrystFEL-sections.txt | 36 |
15 files changed, 872 insertions, 373 deletions
diff --git a/doc/examples/cspad-cxiformat.geom b/doc/examples/cspad-cxiformat.geom new file mode 100644 index 00000000..7c1baf14 --- /dev/null +++ b/doc/examples/cspad-cxiformat.geom @@ -0,0 +1,652 @@ +; Example of a geometry file for CSPAD data output by Cheetah in CXI format + +photon_energy = /LCLS/photon_energy_eV +clen = /LCLS/detector_1/EncoderValue +coffset = 0.573224 +adu_per_eV = 0.00338 +res = 9097.53 + + +; The following lines define how to interpret the three-dimensional data array +; containing the image data. The first dimension is the event number, the +; second and third are spatial dimensions. + +dim0 = % +dim1 = ss +dim2 = fs +data = /entry_1/data_1/data + + +; These following lines define where to find a "bad pixel mask" for each event, +; and how to interpret its contents. + +mask = /entry_1/data_1/mask +mask_good = 0x0000 +mask_bad = 0xffff + + +; The following lines define "rigid groups" which express the physical +; construction of the detector. This is used when refining the detector +; geometry. + +rigid_group_q0 = q0a0,q0a1,q0a2,q0a3,q0a4,q0a5,q0a6,q0a7,q0a8,q0a9,q0a10,q0a11,q0a12,q0a13,q0a14,q0a15 +rigid_group_q1 = q1a0,q1a1,q1a2,q1a3,q1a4,q1a5,q1a6,q1a7,q1a8,q1a9,q1a10,q1a11,q1a12,q1a13,q1a14,q1a15 +rigid_group_q2 = q2a0,q2a1,q2a2,q2a3,q2a4,q2a5,q2a6,q2a7,q2a8,q2a9,q2a10,q2a11,q2a12,q2a13,q2a14,q2a15 +rigid_group_q3 = q3a0,q3a1,q3a2,q3a3,q3a4,q3a5,q3a6,q3a7,q3a8,q3a9,q3a10,q3a11,q3a12,q3a13,q3a14,q3a15 + +rigid_group_a0 = q0a0,q0a1 +rigid_group_a1 = q0a2,q0a3 +rigid_group_a2 = q0a4,q0a5 +rigid_group_a3 = q0a6,q0a7 +rigid_group_a4 = q0a8,q0a9 +rigid_group_a5 = q0a10,q0a11 +rigid_group_a6 = q0a12,q0a13 +rigid_group_a7 = q0a14,q0a15 +rigid_group_a8 = q1a0,q1a1 +rigid_group_a9 = q1a2,q1a3 +rigid_group_a10 = q1a4,q1a5 +rigid_group_a11 = q1a6,q1a7 +rigid_group_a12 = q1a8,q1a9 +rigid_group_a13 = q1a10,q1a11 +rigid_group_a14 = q1a12,q1a13 +rigid_group_a15 = q1a14,q1a15 +rigid_group_a16 = q2a0,q2a1 +rigid_group_a17 = q2a2,q2a3 +rigid_group_a18 = q2a4,q2a5 +rigid_group_a19 = q2a6,q2a7 +rigid_group_a20 = q2a8,q2a9 +rigid_group_a21 = q2a10,q2a11 +rigid_group_a22 = q2a12,q2a13 +rigid_group_a23 = q2a14,q2a15 +rigid_group_a24 = q3a0,q3a1 +rigid_group_a25 = q3a2,q3a3 +rigid_group_a26 = q3a4,q3a5 +rigid_group_a27 = q3a6,q3a7 +rigid_group_a28 = q3a8,q3a9 +rigid_group_a29 = q3a10,q3a11 +rigid_group_a30 = q3a12,q3a13 +rigid_group_a31 = q3a14,q3a15 + +rigid_group_collection_quadrants = q0,q1,q2,q3 +rigid_group_collection_asics = a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31 + + +; The geometrical parameters for the panels follow. +; The above parameters can also be set for each panel individually, but usually +; it makes more sense to define them once for all panels. + +q0a0/min_fs = 0 +q0a0/min_ss = 0 +q0a0/max_fs = 193 +q0a0/max_ss = 184 +q0a0/fs = +0.004806x +0.999989y +q0a0/ss = -0.999989x +0.004806y +q0a0/corner_x = 443.819 +q0a0/corner_y = -49.8719 + +q0a1/min_fs = 194 +q0a1/min_ss = 0 +q0a1/max_fs = 387 +q0a1/max_ss = 184 +q0a1/fs = +0.004806x +0.999989y +q0a1/ss = -0.999989x +0.004806y +q0a1/corner_x = 444.766 +q0a1/corner_y = 147.126 + +q0a2/min_fs = 0 +q0a2/min_ss = 185 +q0a2/max_fs = 193 +q0a2/max_ss = 369 +q0a2/fs = +0.003265x +0.999995y +q0a2/ss = -0.999995x +0.003265y +q0a2/corner_x = 239.8 +q0a2/corner_y = -49.3504 + +q0a3/min_fs = 194 +q0a3/min_ss = 185 +q0a3/max_fs = 387 +q0a3/max_ss = 369 +q0a3/fs = +0.003265x +0.999995y +q0a3/ss = -0.999995x +0.003265y +q0a3/corner_x = 240.444 +q0a3/corner_y = 147.649 + +q0a4/min_fs = 0 +q0a4/min_ss = 370 +q0a4/max_fs = 193 +q0a4/max_ss = 554 +q0a4/fs = -0.999997x +0.002424y +q0a4/ss = -0.002424x -0.999997y +q0a4/corner_x = 872.219 +q0a4/corner_y = 342.054 + +q0a5/min_fs = 194 +q0a5/min_ss = 370 +q0a5/max_fs = 387 +q0a5/max_ss = 554 +q0a5/fs = -0.999997x +0.002424y +q0a5/ss = -0.002424x -0.999997y +q0a5/corner_x = 675.22 +q0a5/corner_y = 342.532 + +q0a6/min_fs = 0 +q0a6/min_ss = 555 +q0a6/max_fs = 193 +q0a6/max_ss = 739 +q0a6/fs = -0.999997x +0.002685y +q0a6/ss = -0.002685x -0.999997y +q0a6/corner_x = 871.381 +q0a6/corner_y = 135.836 + +q0a7/min_fs = 194 +q0a7/min_ss = 555 +q0a7/max_fs = 387 +q0a7/max_ss = 739 +q0a7/fs = -0.999997x +0.002685y +q0a7/ss = -0.002685x -0.999997y +q0a7/corner_x = 674.382 +q0a7/corner_y = 136.365 + +q0a8/min_fs = 0 +q0a8/min_ss = 740 +q0a8/max_fs = 193 +q0a8/max_ss = 924 +q0a8/fs = -0.000078x -0.999999y +q0a8/ss = +0.999999x -0.000078y +q0a8/corner_x = 480.758 +q0a8/corner_y = 769.64 + +q0a9/min_fs = 194 +q0a9/min_ss = 740 +q0a9/max_fs = 387 +q0a9/max_ss = 924 +q0a9/fs = -0.000078x -0.999999y +q0a9/ss = +0.999999x -0.000078y +q0a9/corner_x = 480.743 +q0a9/corner_y = 572.64 + +q0a10/min_fs = 0 +q0a10/min_ss = 925 +q0a10/max_fs = 193 +q0a10/max_ss = 1109 +q0a10/fs = +0.001551x -0.999999y +q0a10/ss = +0.999999x +0.001551y +q0a10/corner_x = 689.447 +q0a10/corner_y = 770.295 + +q0a11/min_fs = 194 +q0a11/min_ss = 925 +q0a11/max_fs = 387 +q0a11/max_ss = 1109 +q0a11/fs = +0.001551x -0.999999y +q0a11/ss = +0.999999x +0.001551y +q0a11/corner_x = 689.752 +q0a11/corner_y = 573.296 + +q0a12/min_fs = 0 +q0a12/min_ss = 1110 +q0a12/max_fs = 193 +q0a12/max_ss = 1294 +q0a12/fs = -0.999998x -0.002161y +q0a12/ss = +0.002161x -0.999998y +q0a12/corner_x = 445.672 +q0a12/corner_y = 751.701 + +q0a13/min_fs = 194 +q0a13/min_ss = 1110 +q0a13/max_fs = 387 +q0a13/max_ss = 1294 +q0a13/fs = -0.999998x -0.002161y +q0a13/ss = +0.002161x -0.999998y +q0a13/corner_x = 248.672 +q0a13/corner_y = 751.276 + +q0a14/min_fs = 0 +q0a14/min_ss = 1295 +q0a14/max_fs = 193 +q0a14/max_ss = 1479 +q0a14/fs = -0.999999x -0.000074y +q0a14/ss = +0.000074x -0.999999y +q0a14/corner_x = 445.151 +q0a14/corner_y = 541.081 + +q0a15/min_fs = 194 +q0a15/min_ss = 1295 +q0a15/max_fs = 387 +q0a15/max_ss = 1479 +q0a15/fs = -0.999999x -0.000074y +q0a15/ss = +0.000074x -0.999999y +q0a15/corner_x = 248.151 +q0a15/corner_y = 541.066 + +q1a0/min_fs = 388 +q1a0/min_ss = 0 +q1a0/max_fs = 581 +q1a0/max_ss = 184 +q1a0/fs = -0.999990x -0.004167y +q1a0/ss = +0.004167x -0.999990y +q1a0/corner_x = 28.4776 +q1a0/corner_y = 436.83 + +q1a1/min_fs = 582 +q1a1/min_ss = 0 +q1a1/max_fs = 775 +q1a1/max_ss = 184 +q1a1/fs = -0.999990x -0.004167y +q1a1/ss = +0.004167x -0.999990y +q1a1/corner_x = -168.52 +q1a1/corner_y = 436.009 + +q1a2/min_fs = 388 +q1a2/min_ss = 185 +q1a2/max_fs = 581 +q1a2/max_ss = 369 +q1a2/fs = -1.000001x +0.000385y +q1a2/ss = -0.000385x -1.000001y +q1a2/corner_x = 29.3559 +q1a2/corner_y = 226.978 + +q1a3/min_fs = 582 +q1a3/min_ss = 185 +q1a3/max_fs = 775 +q1a3/max_ss = 369 +q1a3/fs = -1.000001x +0.000385y +q1a3/ss = -0.000385x -1.000001y +q1a3/corner_x = -167.644 +q1a3/corner_y = 227.054 + +q1a4/min_fs = 388 +q1a4/min_ss = 370 +q1a4/max_fs = 581 +q1a4/max_ss = 554 +q1a4/fs = +0.000539x -1.000000y +q1a4/ss = +1.000000x +0.000539y +q1a4/corner_x = -364.144 +q1a4/corner_y = 859.163 + +q1a5/min_fs = 582 +q1a5/min_ss = 370 +q1a5/max_fs = 775 +q1a5/max_ss = 554 +q1a5/fs = +0.000539x -1.000000y +q1a5/ss = +1.000000x +0.000539y +q1a5/corner_x = -364.038 +q1a5/corner_y = 662.163 + +q1a6/min_fs = 388 +q1a6/min_ss = 555 +q1a6/max_fs = 581 +q1a6/max_ss = 739 +q1a6/fs = -0.000337x -1.000000y +q1a6/ss = +1.000000x -0.000337y +q1a6/corner_x = -156.511 +q1a6/corner_y = 857.902 + +q1a7/min_fs = 582 +q1a7/min_ss = 555 +q1a7/max_fs = 775 +q1a7/max_ss = 739 +q1a7/fs = -0.000337x -1.000000y +q1a7/ss = +1.000000x -0.000337y +q1a7/corner_x = -156.577 +q1a7/corner_y = 660.902 + +q1a8/min_fs = 388 +q1a8/min_ss = 740 +q1a8/max_fs = 581 +q1a8/max_ss = 924 +q1a8/fs = +0.999996x +0.002303y +q1a8/ss = -0.002303x +0.999996y +q1a8/corner_x = -786.718 +q1a8/corner_y = 463.506 + +q1a9/min_fs = 582 +q1a9/min_ss = 740 +q1a9/max_fs = 775 +q1a9/max_ss = 924 +q1a9/fs = +0.999996x +0.002303y +q1a9/ss = -0.002303x +0.999996y +q1a9/corner_x = -589.719 +q1a9/corner_y = 463.959 + +q1a10/min_fs = 388 +q1a10/min_ss = 925 +q1a10/max_fs = 581 +q1a10/max_ss = 1109 +q1a10/fs = +0.999997x +0.001741y +q1a10/ss = -0.001741x +0.999997y +q1a10/corner_x = -787.022 +q1a10/corner_y = 668.135 + +q1a11/min_fs = 582 +q1a11/min_ss = 925 +q1a11/max_fs = 775 +q1a11/max_ss = 1109 +q1a11/fs = +0.999997x +0.001741y +q1a11/ss = -0.001741x +0.999997y +q1a11/corner_x = -590.022 +q1a11/corner_y = 668.478 + +q1a12/min_fs = 388 +q1a12/min_ss = 1110 +q1a12/max_fs = 581 +q1a12/max_ss = 1294 +q1a12/fs = -0.000201x -0.999999y +q1a12/ss = +0.999999x -0.000201y +q1a12/corner_x = -761.085 +q1a12/corner_y = 428.541 + +q1a13/min_fs = 582 +q1a13/min_ss = 1110 +q1a13/max_fs = 775 +q1a13/max_ss = 1294 +q1a13/fs = -0.000201x -0.999999y +q1a13/ss = +0.999999x -0.000201y +q1a13/corner_x = -761.125 +q1a13/corner_y = 231.541 + +q1a14/min_fs = 388 +q1a14/min_ss = 1295 +q1a14/max_fs = 581 +q1a14/max_ss = 1479 +q1a14/fs = +0.003097x -0.999995y +q1a14/ss = +0.999995x +0.003097y +q1a14/corner_x = -559.624 +q1a14/corner_y = 428.347 + +q1a15/min_fs = 582 +q1a15/min_ss = 1295 +q1a15/max_fs = 775 +q1a15/max_ss = 1479 +q1a15/fs = +0.003097x -0.999995y +q1a15/ss = +0.999995x +0.003097y +q1a15/corner_x = -559.014 +q1a15/corner_y = 231.348 + +q2a0/min_fs = 776 +q2a0/min_ss = 0 +q2a0/max_fs = 969 +q2a0/max_ss = 184 +q2a0/fs = -0.004086x -0.999991y +q2a0/ss = +0.999991x -0.004086y +q2a0/corner_x = -442.346 +q2a0/corner_y = 20.3382 + +q2a1/min_fs = 970 +q2a1/min_ss = 0 +q2a1/max_fs = 1163 +q2a1/max_ss = 184 +q2a1/fs = -0.004086x -0.999991y +q2a1/ss = +0.999991x -0.004086y +q2a1/corner_x = -443.151 +q2a1/corner_y = -176.66 + +q2a2/min_fs = 776 +q2a2/min_ss = 185 +q2a2/max_fs = 969 +q2a2/max_ss = 369 +q2a2/fs = +0.000302x -1.000000y +q2a2/ss = +1.000000x +0.000302y +q2a2/corner_x = -235.519 +q2a2/corner_y = 19.2312 + +q2a3/min_fs = 970 +q2a3/min_ss = 185 +q2a3/max_fs = 1163 +q2a3/max_ss = 369 +q2a3/fs = +0.000302x -1.000000y +q2a3/ss = +1.000000x +0.000302y +q2a3/corner_x = -235.459 +q2a3/corner_y = -177.769 + +q2a4/min_fs = 776 +q2a4/min_ss = 370 +q2a4/max_fs = 969 +q2a4/max_ss = 554 +q2a4/fs = +0.999997x -0.002037y +q2a4/ss = +0.002037x +0.999997y +q2a4/corner_x = -863.817 +q2a4/corner_y = -370.344 + +q2a5/min_fs = 970 +q2a5/min_ss = 370 +q2a5/max_fs = 1163 +q2a5/max_ss = 554 +q2a5/fs = +0.999997x -0.002037y +q2a5/ss = +0.002037x +0.999997y +q2a5/corner_x = -666.817 +q2a5/corner_y = -370.746 + +q2a6/min_fs = 776 +q2a6/min_ss = 555 +q2a6/max_fs = 969 +q2a6/max_ss = 739 +q2a6/fs = +1.000000x -0.001155y +q2a6/ss = +0.001155x +1.000000y +q2a6/corner_x = -863.549 +q2a6/corner_y = -165.126 + +q2a7/min_fs = 970 +q2a7/min_ss = 555 +q2a7/max_fs = 1163 +q2a7/max_ss = 739 +q2a7/fs = +1.000000x -0.001155y +q2a7/ss = +0.001155x +1.000000y +q2a7/corner_x = -666.549 +q2a7/corner_y = -165.353 + +q2a8/min_fs = 776 +q2a8/min_ss = 740 +q2a8/max_fs = 969 +q2a8/max_ss = 924 +q2a8/fs = +0.002076x +0.999998y +q2a8/ss = -0.999998x +0.002076y +q2a8/corner_x = -473.62 +q2a8/corner_y = -793.473 + +q2a9/min_fs = 970 +q2a9/min_ss = 740 +q2a9/max_fs = 1163 +q2a9/max_ss = 924 +q2a9/fs = +0.002076x +0.999998y +q2a9/ss = -0.999998x +0.002076y +q2a9/corner_x = -473.211 +q2a9/corner_y = -596.474 + +q2a10/min_fs = 776 +q2a10/min_ss = 925 +q2a10/max_fs = 969 +q2a10/max_ss = 1109 +q2a10/fs = +0.004134x +0.999991y +q2a10/ss = -0.999991x +0.004134y +q2a10/corner_x = -676.809 +q2a10/corner_y = -792.653 + +q2a11/min_fs = 970 +q2a11/min_ss = 925 +q2a11/max_fs = 1163 +q2a11/max_ss = 1109 +q2a11/fs = +0.004134x +0.999991y +q2a11/ss = -0.999991x +0.004134y +q2a11/corner_x = -675.995 +q2a11/corner_y = -595.655 + +q2a12/min_fs = 776 +q2a12/min_ss = 1110 +q2a12/max_fs = 969 +q2a12/max_ss = 1294 +q2a12/fs = +0.999981x -0.006417y +q2a12/ss = +0.006417x +0.999981y +q2a12/corner_x = -442.034 +q2a12/corner_y = -769.447 + +q2a13/min_fs = 970 +q2a13/min_ss = 1110 +q2a13/max_fs = 1163 +q2a13/max_ss = 1294 +q2a13/fs = +0.999981x -0.006417y +q2a13/ss = +0.006417x +0.999981y +q2a13/corner_x = -245.038 +q2a13/corner_y = -770.711 + +q2a14/min_fs = 776 +q2a14/min_ss = 1295 +q2a14/max_fs = 969 +q2a14/max_ss = 1479 +q2a14/fs = +0.999996x -0.002727y +q2a14/ss = +0.002727x +0.999996y +q2a14/corner_x = -441.283 +q2a14/corner_y = -566.627 + +q2a15/min_fs = 970 +q2a15/min_ss = 1295 +q2a15/max_fs = 1163 +q2a15/max_ss = 1479 +q2a15/fs = +0.999996x -0.002727y +q2a15/ss = +0.002727x +0.999996y +q2a15/corner_x = -244.283 +q2a15/corner_y = -567.164 + +q3a0/min_fs = 1164 +q3a0/min_ss = 0 +q3a0/max_fs = 1357 +q3a0/max_ss = 184 +q3a0/fs = +0.999988x -0.004965y +q3a0/ss = +0.004965x +0.999988y +q3a0/corner_x = -33.3507 +q3a0/corner_y = -458.693 + +q3a1/min_fs = 1358 +q3a1/min_ss = 0 +q3a1/max_fs = 1551 +q3a1/max_ss = 184 +q3a1/fs = +0.999988x -0.004965y +q3a1/ss = +0.004965x +0.999988y +q3a1/corner_x = 163.647 +q3a1/corner_y = -459.671 + +q3a2/min_fs = 1164 +q3a2/min_ss = 185 +q3a2/max_fs = 1357 +q3a2/max_ss = 369 +q3a2/fs = +0.999998x -0.002316y +q3a2/ss = +0.002316x +0.999998y +q3a2/corner_x = -31.8316 +q3a2/corner_y = -254.931 + +q3a3/min_fs = 1358 +q3a3/min_ss = 185 +q3a3/max_fs = 1551 +q3a3/max_ss = 369 +q3a3/fs = +0.999998x -0.002316y +q3a3/ss = +0.002316x +0.999998y +q3a3/corner_x = 165.168 +q3a3/corner_y = -255.388 + +q3a4/min_fs = 1164 +q3a4/min_ss = 370 +q3a4/max_fs = 1357 +q3a4/max_ss = 554 +q3a4/fs = +0.002474x +0.999997y +q3a4/ss = -0.999997x +0.002474y +q3a4/corner_x = 359.553 +q3a4/corner_y = -886.512 + +q3a5/min_fs = 1358 +q3a5/min_ss = 370 +q3a5/max_fs = 1551 +q3a5/max_ss = 554 +q3a5/fs = +0.002474x +0.999997y +q3a5/ss = -0.999997x +0.002474y +q3a5/corner_x = 360.04 +q3a5/corner_y = -689.512 + +q3a6/min_fs = 1164 +q3a6/min_ss = 555 +q3a6/max_fs = 1357 +q3a6/max_ss = 739 +q3a6/fs = +0.000059x +1.000000y +q3a6/ss = -1.000000x +0.000059y +q3a6/corner_x = 154.142 +q3a6/corner_y = -884.763 + +q3a7/min_fs = 1358 +q3a7/min_ss = 555 +q3a7/max_fs = 1551 +q3a7/max_ss = 739 +q3a7/fs = +0.000059x +1.000000y +q3a7/ss = -1.000000x +0.000059y +q3a7/corner_x = 154.154 +q3a7/corner_y = -687.763 + +q3a8/min_fs = 1164 +q3a8/min_ss = 740 +q3a8/max_fs = 1357 +q3a8/max_ss = 924 +q3a8/fs = -0.999993x +0.004040y +q3a8/ss = -0.004040x -0.999993y +q3a8/corner_x = 784.877 +q3a8/corner_y = -492.935 + +q3a9/min_fs = 1358 +q3a9/min_ss = 740 +q3a9/max_fs = 1551 +q3a9/max_ss = 924 +q3a9/fs = -0.999993x +0.004040y +q3a9/ss = -0.004040x -0.999993y +q3a9/corner_x = 587.878 +q3a9/corner_y = -492.139 + +q3a10/min_fs = 1164 +q3a10/min_ss = 925 +q3a10/max_fs = 1357 +q3a10/max_ss = 1109 +q3a10/fs = -0.999971x +0.007529y +q3a10/ss = -0.007529x -0.999971y +q3a10/corner_x = 784.254 +q3a10/corner_y = -699.59 + +q3a11/min_fs = 1358 +q3a11/min_ss = 925 +q3a11/max_fs = 1551 +q3a11/max_ss = 1109 +q3a11/fs = -0.999971x +0.007529y +q3a11/ss = -0.007529x -0.999971y +q3a11/corner_x = 587.26 +q3a11/corner_y = -698.107 + +q3a12/min_fs = 1164 +q3a12/min_ss = 1110 +q3a12/max_fs = 1357 +q3a12/max_ss = 1294 +q3a12/fs = +0.004516x +0.999990y +q3a12/ss = -0.999990x +0.004516y +q3a12/corner_x = 769.176 +q3a12/corner_y = -460.51 + +q3a13/min_fs = 1358 +q3a13/min_ss = 1110 +q3a13/max_fs = 1551 +q3a13/max_ss = 1294 +q3a13/fs = +0.004516x +0.999990y +q3a13/ss = -0.999990x +0.004516y +q3a13/corner_x = 770.066 +q3a13/corner_y = -263.512 + +q3a14/min_fs = 1164 +q3a14/min_ss = 1295 +q3a14/max_fs = 1357 +q3a14/max_ss = 1479 +q3a14/fs = +0.004918x +0.999989y +q3a14/ss = -0.999989x +0.004918y +q3a14/corner_x = 554.764 +q3a14/corner_y = -460.25 + +q3a15/min_fs = 1358 +q3a15/min_ss = 1295 +q3a15/max_fs = 1551 +q3a15/max_ss = 1479 +q3a15/fs = +0.004918x +0.999989y +q3a15/ss = -0.999989x +0.004918y +q3a15/corner_x = 555.732 +q3a15/corner_y = -263.253 diff --git a/doc/examples/cspad-feb2011.geom b/doc/examples/cspad-single.geom index 21adb022..b850ca20 100644 --- a/doc/examples/cspad-feb2011.geom +++ b/doc/examples/cspad-single.geom @@ -1,896 +1,637 @@ -adu_per_eV = 1.0 +; Example of a CrystFEL geometry file for CSPAD data in single-event HDF5 +; format, with the panel data arranged as by Cheetah + +adu_per_eV = 0.00105 ; correct value for CSPAD 1.0 (i.e. old versions only) + ; for newer versions (since about 2013), use 0.00338 instead +res = 9090.91 ; pixels per metre +clen = /LCLS/detectorPosition ; camera length from HDF5 file +coffset = 0.0 ; no adjustment to camera length from HDF5 file +photon_energy = /LCLS/photon_energy_eV ; photon energy (in eV) from HDF5 file +data = /data/rawdata ; where to find the image data in the HDF5 file + + +; The following lines define "rigid groups" which express the physical +; construction of the detector. This is used when refining the detector +; geometry. + +rigid_group_q0 = q0a0,q0a1,q0a2,q0a3,q0a4,q0a5,q0a6,q0a7,q0a8,q0a9,q0a10,q0a11,q0a12,q0a13,q0a14,q0a15 +rigid_group_q1 = q1a0,q1a1,q1a2,q1a3,q1a4,q1a5,q1a6,q1a7,q1a8,q1a9,q1a10,q1a11,q1a12,q1a13,q1a14,q1a15 +rigid_group_q2 = q2a0,q2a1,q2a2,q2a3,q2a4,q2a5,q2a6,q2a7,q2a8,q2a9,q2a10,q2a11,q2a12,q2a13,q2a14,q2a15 +rigid_group_q3 = q3a0,q3a1,q3a2,q3a3,q3a4,q3a5,q3a6,q3a7,q3a8,q3a9,q3a10,q3a11,q3a12,q3a13,q3a14,q3a15 + +rigid_group_a0 = q0a0,q0a1 +rigid_group_a1 = q0a2,q0a3 +rigid_group_a2 = q0a4,q0a5 +rigid_group_a3 = q0a6,q0a7 +rigid_group_a4 = q0a8,q0a9 +rigid_group_a5 = q0a10,q0a11 +rigid_group_a6 = q0a12,q0a13 +rigid_group_a7 = q0a14,q0a15 +rigid_group_a8 = q1a0,q1a1 +rigid_group_a9 = q1a2,q1a3 +rigid_group_a10 = q1a4,q1a5 +rigid_group_a11 = q1a6,q1a7 +rigid_group_a12 = q1a8,q1a9 +rigid_group_a13 = q1a10,q1a11 +rigid_group_a14 = q1a12,q1a13 +rigid_group_a15 = q1a14,q1a15 +rigid_group_a16 = q2a0,q2a1 +rigid_group_a17 = q2a2,q2a3 +rigid_group_a18 = q2a4,q2a5 +rigid_group_a19 = q2a6,q2a7 +rigid_group_a20 = q2a8,q2a9 +rigid_group_a21 = q2a10,q2a11 +rigid_group_a22 = q2a12,q2a13 +rigid_group_a23 = q2a14,q2a15 +rigid_group_a24 = q3a0,q3a1 +rigid_group_a25 = q3a2,q3a3 +rigid_group_a26 = q3a4,q3a5 +rigid_group_a27 = q3a6,q3a7 +rigid_group_a28 = q3a8,q3a9 +rigid_group_a29 = q3a10,q3a11 +rigid_group_a30 = q3a12,q3a13 +rigid_group_a31 = q3a14,q3a15 + +rigid_group_collection_quadrants = q0,q1,q2,q3 +rigid_group_collection_asics = a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31 + + +; The geometrical parameters for the panels follow. +; The above parameters can also be set for each panel individually, but usually +; it makes more sense to define them once for all panels. q0a0/min_fs = 0 q0a0/min_ss = 0 q0a0/max_fs = 193 q0a0/max_ss = 184 -q0a0/badrow_direction = - -q0a0/res = 9090.91 -q0a0/clen = /LCLS/detectorPosition q0a0/fs = -0.0057225772x +0.9999836087y q0a0/ss = -0.9999836087x -0.0057225772y q0a0/corner_x = 424.384 q0a0/corner_y = -10.6473 -q0a0/no_index = 0 - q0a1/min_fs = 194 q0a1/min_ss = 0 q0a1/max_fs = 387 q0a1/max_ss = 184 -q0a1/badrow_direction = - -q0a1/res = 9090.91 -q0a1/clen = /LCLS/detectorPosition q0a1/fs = -0.0057225772x +0.9999836087y q0a1/ss = -0.9999836087x -0.0057225772y q0a1/corner_x = 423.257 q0a1/corner_y = 186.349 -q0a1/no_index = 0 - q1a0/min_fs = 388 q1a0/min_ss = 0 q1a0/max_fs = 581 q1a0/max_ss = 184 -q1a0/badrow_direction = - -q1a0/res = 9090.91 -q1a0/clen = /LCLS/detectorPosition q1a0/fs = -0.9999815226x +0.0060744919y q1a0/ss = -0.0060744919x -0.9999815226y q1a0/corner_x = 13.1196 q1a0/corner_y = 422.727 -q1a0/no_index = 0 - q1a1/min_fs = 582 q1a1/min_ss = 0 q1a1/max_fs = 775 q1a1/max_ss = 184 -q1a1/badrow_direction = - -q1a1/res = 9090.91 -q1a1/clen = /LCLS/detectorPosition q1a1/fs = -0.9999815226x +0.0060744919y q1a1/ss = -0.0060744919x -0.9999815226y q1a1/corner_x = -183.877 q1a1/corner_y = 423.924 -q1a1/no_index = 0 - q2a0/min_fs = 776 q2a0/min_ss = 0 q2a0/max_fs = 969 q2a0/max_ss = 184 -q2a0/badrow_direction = - -q2a0/res = 9090.91 -q2a0/clen = /LCLS/detectorPosition q2a0/fs = +0.0048825117x -0.9999880791y q2a0/ss = +0.9999880791x +0.0048825117y q2a0/corner_x = -428.519 q2a0/corner_y = 8.29208 -q2a0/no_index = 0 - q2a1/min_fs = 970 q2a1/min_ss = 0 q2a1/max_fs = 1163 q2a1/max_ss = 184 -q2a1/badrow_direction = - -q2a1/res = 9090.91 -q2a1/clen = /LCLS/detectorPosition q2a1/fs = +0.0048825117x -0.9999880791y q2a1/ss = +0.9999880791x +0.0048825117y q2a1/corner_x = -427.557 q2a1/corner_y = -188.706 -q2a1/no_index = 0 - q3a0/min_fs = 1164 q3a0/min_ss = 0 q3a0/max_fs = 1357 q3a0/max_ss = 184 -q3a0/badrow_direction = - -q3a0/res = 9090.91 -q3a0/clen = /LCLS/detectorPosition q3a0/fs = +0.9999964833x +0.0026521713y q3a0/ss = -0.0026521713x +0.9999964833y q3a0/corner_x = -12.1295 q3a0/corner_y = -424.046 -q3a0/no_index = 0 - q3a1/min_fs = 1358 q3a1/min_ss = 0 q3a1/max_fs = 1551 q3a1/max_ss = 184 -q3a1/badrow_direction = - -q3a1/res = 9090.91 -q3a1/clen = /LCLS/detectorPosition q3a1/fs = +0.9999964833x +0.0026521713y q3a1/ss = -0.0026521713x +0.9999964833y q3a1/corner_x = 184.870 q3a1/corner_y = -423.523 -q3a1/no_index = 0 - q0a2/min_fs = 0 q0a2/min_ss = 185 q0a2/max_fs = 193 q0a2/max_ss = 369 -q0a2/badrow_direction = - -q0a2/res = 9090.91 -q0a2/clen = /LCLS/detectorPosition q0a2/fs = -0.0003575958x +0.9999999404y q0a2/ss = -0.9999999404x -0.0003575958y q0a2/corner_x = 211.039 q0a2/corner_y = -10.9889 -q0a2/no_index = 0 - q0a3/min_fs = 194 q0a3/min_ss = 185 q0a3/max_fs = 387 q0a3/max_ss = 369 -q0a3/badrow_direction = - -q0a3/res = 9090.91 -q0a3/clen = /LCLS/detectorPosition q0a3/fs = -0.0003575958x +0.9999999404y q0a3/ss = -0.9999999404x -0.0003575958y q0a3/corner_x = 210.969 q0a3/corner_y = 186.011 -q0a3/no_index = 0 - q1a2/min_fs = 388 q1a2/min_ss = 185 q1a2/max_fs = 581 q1a2/max_ss = 369 -q1a2/badrow_direction = - -q1a2/res = 9090.91 -q1a2/clen = /LCLS/detectorPosition q1a2/fs = -0.9999999404x +0.0003117446y q1a2/ss = -0.0003117446x -0.9999999404y q1a2/corner_x = 13.3322 q1a2/corner_y = 208.973 -q1a2/no_index = 0 - q1a3/min_fs = 582 q1a3/min_ss = 185 q1a3/max_fs = 775 q1a3/max_ss = 369 -q1a3/badrow_direction = - -q1a3/res = 9090.91 -q1a3/clen = /LCLS/detectorPosition q1a3/fs = -0.9999999404x +0.0003117446y q1a3/ss = -0.0003117446x -0.9999999404y q1a3/corner_x = -183.668 q1a3/corner_y = 209.034 -q1a3/no_index = 0 - q2a2/min_fs = 776 q2a2/min_ss = 185 q2a2/max_fs = 969 q2a2/max_ss = 369 -q2a2/badrow_direction = - -q2a2/res = 9090.91 -q2a2/clen = /LCLS/detectorPosition q2a2/fs = -0.0004957085x -0.9999998808y q2a2/ss = +0.9999998808x -0.0004957085y q2a2/corner_x = -215.108 q2a2/corner_y = 8.41637 -q2a2/no_index = 0 - q2a3/min_fs = 970 q2a3/min_ss = 185 q2a3/max_fs = 1163 q2a3/max_ss = 369 -q2a3/badrow_direction = - -q2a3/res = 9090.91 -q2a3/clen = /LCLS/detectorPosition q2a3/fs = -0.0004957085x -0.9999998808y q2a3/ss = +0.9999998808x -0.0004957085y q2a3/corner_x = -215.206 q2a3/corner_y = -188.584 -q2a3/no_index = 0 - q3a2/min_fs = 1164 q3a2/min_ss = 185 q3a2/max_fs = 1357 q3a2/max_ss = 369 -q3a2/badrow_direction = - -q3a2/res = 9090.91 -q3a2/clen = /LCLS/detectorPosition q3a2/fs = +1.0000000000x -0.0001447762y q3a2/ss = +0.0001447762x +1.0000000000y q3a2/corner_x = -12.1720 q3a2/corner_y = -210.466 -q3a2/no_index = 0 - q3a3/min_fs = 1358 q3a3/min_ss = 185 q3a3/max_fs = 1551 q3a3/max_ss = 369 -q3a3/badrow_direction = - -q3a3/res = 9090.91 -q3a3/clen = /LCLS/detectorPosition q3a3/fs = +1.0000000000x -0.0001447762y q3a3/ss = +0.0001447762x +1.0000000000y q3a3/corner_x = 184.828 q3a3/corner_y = -210.495 -q3a3/no_index = 0 - q0a4/min_fs = 0 q0a4/min_ss = 370 q0a4/max_fs = 193 q0a4/max_ss = 554 -q0a4/badrow_direction = - -q0a4/res = 9090.91 -q0a4/clen = /LCLS/detectorPosition q0a4/fs = -0.9999362230x -0.0112929661y q0a4/ss = +0.0112929661x -0.9999362230y q0a4/corner_x = 840.468 q0a4/corner_y = 392.435 -q0a4/no_index = 0 - q0a5/min_fs = 194 q0a5/min_ss = 370 q0a5/max_fs = 387 q0a5/max_ss = 554 -q0a5/badrow_direction = - -q0a5/res = 9090.91 -q0a5/clen = /LCLS/detectorPosition q0a5/fs = -0.9999362230x -0.0112929661y q0a5/ss = +0.0112929661x -0.9999362230y q0a5/corner_x = 643.481 q0a5/corner_y = 390.210 -q0a5/no_index = 1 - q1a4/min_fs = 388 q1a4/min_ss = 370 q1a4/max_fs = 581 q1a4/max_ss = 554 -q1a4/badrow_direction = - -q1a4/res = 9090.91 -q1a4/clen = /LCLS/detectorPosition q1a4/fs = -0.0003113084x -0.9999999404y q1a4/ss = +0.9999999404x -0.0003113084y q1a4/corner_x = -387.060 q1a4/corner_y = 844.837 -q1a4/no_index = 0 - q1a5/min_fs = 582 q1a5/min_ss = 370 q1a5/max_fs = 775 q1a5/max_ss = 554 -q1a5/badrow_direction = - -q1a5/res = 9090.91 -q1a5/clen = /LCLS/detectorPosition q1a5/fs = -0.0003113084x -0.9999999404y q1a5/ss = +0.9999999404x -0.0003113084y q1a5/corner_x = -387.121 q1a5/corner_y = 647.837 -q1a5/no_index = 0 - q2a4/min_fs = 776 q2a4/min_ss = 370 q2a4/max_fs = 969 q2a4/max_ss = 554 -q2a4/badrow_direction = - -q2a4/res = 9090.91 -q2a4/clen = /LCLS/detectorPosition q2a4/fs = +0.9999818802x +0.0060196919y q2a4/ss = -0.0060196919x +0.9999818802y q2a4/corner_x = -849.683 q2a4/corner_y = -392.889 -q2a4/no_index = 0 - q2a5/min_fs = 970 q2a5/min_ss = 370 q2a5/max_fs = 1163 q2a5/max_ss = 554 -q2a5/badrow_direction = - -q2a5/res = 9090.91 -q2a5/clen = /LCLS/detectorPosition q2a5/fs = +0.9999818802x +0.0060196919y q2a5/ss = -0.0060196919x +0.9999818802y q2a5/corner_x = -652.687 q2a5/corner_y = -391.703 -q2a5/no_index = 0 - q3a4/min_fs = 1164 q3a4/min_ss = 370 q3a4/max_fs = 1357 q3a4/max_ss = 554 -q3a4/badrow_direction = - -q3a4/res = 9090.91 -q3a4/clen = /LCLS/detectorPosition q3a4/fs = -0.0023373319x +0.9999972582y q3a4/ss = -0.9999972582x -0.0023373319y q3a4/corner_x = 388.452 q3a4/corner_y = -844.271 -q3a4/no_index = 1 - q3a5/min_fs = 1358 q3a5/min_ss = 370 q3a5/max_fs = 1551 q3a5/max_ss = 554 -q3a5/badrow_direction = - -q3a5/res = 9090.91 -q3a5/clen = /LCLS/detectorPosition q3a5/fs = -0.0023373319x +0.9999972582y q3a5/ss = -0.9999972582x -0.0023373319y q3a5/corner_x = 387.991 q3a5/corner_y = -647.271 -q3a5/no_index = 0 - q0a6/min_fs = 0 q0a6/min_ss = 555 q0a6/max_fs = 193 q0a6/max_ss = 739 -q0a6/badrow_direction = - -q0a6/res = 9090.91 -q0a6/clen = /LCLS/detectorPosition q0a6/fs = -0.9999533892x -0.0096549187y q0a6/ss = +0.0096549187x -0.9999533892y q0a6/corner_x = 842.954 q0a6/corner_y = 182.508 -q0a6/no_index = 0 - q0a7/min_fs = 194 q0a7/min_ss = 555 q0a7/max_fs = 387 q0a7/max_ss = 739 -q0a7/badrow_direction = - -q0a7/res = 9090.91 -q0a7/clen = /LCLS/detectorPosition q0a7/fs = -0.9999533892x -0.0096549187y q0a7/ss = +0.0096549187x -0.9999533892y q0a7/corner_x = 645.963 q0a7/corner_y = 180.606 -q0a7/no_index = 0 - q1a6/min_fs = 388 q1a6/min_ss = 555 q1a6/max_fs = 581 q1a6/max_ss = 739 -q1a6/badrow_direction = - -q1a6/res = 9090.91 -q1a6/clen = /LCLS/detectorPosition q1a6/fs = +0.0007214849x -0.9999997616y q1a6/ss = +0.9999997616x +0.0007214849y q1a6/corner_x = -174.672 q1a6/corner_y = 844.923 -q1a6/no_index = 0 - q1a7/min_fs = 582 q1a7/min_ss = 555 q1a7/max_fs = 775 q1a7/max_ss = 739 -q1a7/badrow_direction = - -q1a7/res = 9090.91 -q1a7/clen = /LCLS/detectorPosition q1a7/fs = +0.0007214849x -0.9999997616y q1a7/ss = +0.9999997616x +0.0007214849y q1a7/corner_x = -174.530 q1a7/corner_y = 647.923 -q1a7/no_index = 0 - q2a6/min_fs = 776 q2a6/min_ss = 555 q2a6/max_fs = 969 q2a6/max_ss = 739 -q2a6/badrow_direction = - -q2a6/res = 9090.91 -q2a6/clen = /LCLS/detectorPosition q2a6/fs = +0.9999990463x +0.0013817062y q2a6/ss = -0.0013817062x +0.9999990463y q2a6/corner_x = -850.035 q2a6/corner_y = -179.939 -q2a6/no_index = 0 - q2a7/min_fs = 970 q2a7/min_ss = 555 q2a7/max_fs = 1163 q2a7/max_ss = 739 -q2a7/badrow_direction = - -q2a7/res = 9090.91 -q2a7/clen = /LCLS/detectorPosition q2a7/fs = +0.9999990463x +0.0013817062y q2a7/ss = -0.0013817062x +0.9999990463y q2a7/corner_x = -653.035 q2a7/corner_y = -179.667 -q2a7/no_index = 0 - q3a6/min_fs = 1164 q3a6/min_ss = 555 q3a6/max_fs = 1357 q3a6/max_ss = 739 -q3a6/badrow_direction = - -q3a6/res = 9090.91 -q3a6/clen = /LCLS/detectorPosition q3a6/fs = -0.0021083837x +0.9999977946y q3a6/ss = -0.9999977946x -0.0021083837y q3a6/corner_x = 175.688 q3a6/corner_y = -844.681 -q3a6/no_index = 0 - q3a7/min_fs = 1358 q3a7/min_ss = 555 q3a7/max_fs = 1551 q3a7/max_ss = 739 -q3a7/badrow_direction = - -q3a7/res = 9090.91 -q3a7/clen = /LCLS/detectorPosition q3a7/fs = -0.0021083837x +0.9999977946y q3a7/ss = -0.9999977946x -0.0021083837y q3a7/corner_x = 175.273 q3a7/corner_y = -647.681 -q3a7/no_index = 1 - q0a8/min_fs = 0 q0a8/min_ss = 740 q0a8/max_fs = 193 q0a8/max_ss = 924 -q0a8/badrow_direction = - -q0a8/res = 9090.91 -q0a8/clen = /LCLS/detectorPosition q0a8/fs = +0.0078456579x -0.9999692440y q0a8/ss = +0.9999692440x +0.0078456579y q0a8/corner_x = 440.576 q0a8/corner_y = 811.780 -q0a8/no_index = 0 - q0a9/min_fs = 194 q0a9/min_ss = 740 q0a9/max_fs = 387 q0a9/max_ss = 924 -q0a9/badrow_direction = - -q0a9/res = 9090.91 -q0a9/clen = /LCLS/detectorPosition q0a9/fs = +0.0078456579x -0.9999692440y q0a9/ss = +0.9999692440x +0.0078456579y q0a9/corner_x = 442.122 q0a9/corner_y = 614.786 -q0a9/no_index = 0 - q1a8/min_fs = 388 q1a8/min_ss = 740 q1a8/max_fs = 581 q1a8/max_ss = 924 -q1a8/badrow_direction = - -q1a8/res = 9090.91 -q1a8/clen = /LCLS/detectorPosition q1a8/fs = +0.9999817014x +0.0060460833y q1a8/ss = -0.0060460833x +0.9999817014y q1a8/corner_x = -808.912 q1a8/corner_y = 453.082 -q1a8/no_index = 0 - q1a9/min_fs = 582 q1a9/min_ss = 740 q1a9/max_fs = 775 q1a9/max_ss = 924 -q1a9/badrow_direction = - -q1a9/res = 9090.91 -q1a9/clen = /LCLS/detectorPosition q1a9/fs = +0.9999817014x +0.0060460833y q1a9/ss = -0.0060460833x +0.9999817014y q1a9/corner_x = -611.915 q1a9/corner_y = 454.273 -q1a9/no_index = 0 - q2a8/min_fs = 776 q2a8/min_ss = 740 q2a8/max_fs = 969 q2a8/max_ss = 924 -q2a8/badrow_direction = - -q2a8/res = 9090.91 -q2a8/clen = /LCLS/detectorPosition q2a8/fs = -0.0027005512x +0.9999963641y q2a8/ss = -0.9999963641x -0.0027005512y q2a8/corner_x = -451.888 q2a8/corner_y = -813.482 -q2a8/no_index = 0 - q2a9/min_fs = 970 q2a9/min_ss = 740 q2a9/max_fs = 1163 q2a9/max_ss = 924 -q2a9/badrow_direction = - -q2a9/res = 9090.91 -q2a9/clen = /LCLS/detectorPosition q2a9/fs = -0.0027005512x +0.9999963641y q2a9/ss = -0.9999963641x -0.0027005512y q2a9/corner_x = -452.420 q2a9/corner_y = -616.482 -q2a9/no_index = 0 - q3a8/min_fs = 1164 q3a8/min_ss = 740 q3a8/max_fs = 1357 q3a8/max_ss = 924 -q3a8/badrow_direction = - -q3a8/res = 9090.91 -q3a8/clen = /LCLS/detectorPosition q3a8/fs = -0.9999983311x -0.0018213630y q3a8/ss = +0.0018213630x -0.9999983311y q3a8/corner_x = 806.687 q3a8/corner_y = -442.882 -q3a8/no_index = 0 - q3a9/min_fs = 1358 q3a9/min_ss = 740 q3a9/max_fs = 1551 q3a9/max_ss = 924 -q3a9/badrow_direction = - -q3a9/res = 9090.91 -q3a9/clen = /LCLS/detectorPosition q3a9/fs = -0.9999983311x -0.0018213630y q3a9/ss = +0.0018213630x -0.9999983311y q3a9/corner_x = 609.687 q3a9/corner_y = -443.241 -q3a9/no_index = 0 - q0a10/min_fs = 0 q0a10/min_ss = 925 q0a10/max_fs = 193 q0a10/max_ss = 1109 -q0a10/badrow_direction = - -q0a10/res = 9090.91 -q0a10/clen = /LCLS/detectorPosition q0a10/fs = +0.0069182217x -0.9999760985y q0a10/ss = +0.9999760985x +0.0069182217y q0a10/corner_x = 653.083 q0a10/corner_y = 813.670 -q0a10/no_index = 0 - q0a11/min_fs = 194 q0a11/min_ss = 925 q0a11/max_fs = 387 q0a11/max_ss = 1109 -q0a11/badrow_direction = - -q0a11/res = 9090.91 -q0a11/clen = /LCLS/detectorPosition q0a11/fs = +0.0069182217x -0.9999760985y q0a11/ss = +0.9999760985x +0.0069182217y q0a11/corner_x = 654.445 q0a11/corner_y = 616.674 -q0a11/no_index = 0 - q1a10/min_fs = 388 q1a10/min_ss = 925 q1a10/max_fs = 581 q1a10/max_ss = 1109 -q1a10/badrow_direction = - -q1a10/res = 9090.91 -q1a10/clen = /LCLS/detectorPosition q1a10/fs = +0.9999817014x +0.0060461056y q1a10/ss = -0.0060461056x +0.9999817014y q1a10/corner_x = -808.912 q1a10/corner_y = 658.082 -q1a10/no_index = 0 - q1a11/min_fs = 582 q1a11/min_ss = 925 q1a11/max_fs = 775 q1a11/max_ss = 1109 -q1a11/badrow_direction = - -q1a11/res = 9090.91 -q1a11/clen = /LCLS/detectorPosition q1a11/fs = +0.9999817014x +0.0060461056y q1a11/ss = -0.0060461056x +0.9999817014y q1a11/corner_x = -611.915 q1a11/corner_y = 659.273 -q1a11/no_index = 0 - q2a10/min_fs = 776 q2a10/min_ss = 925 q2a10/max_fs = 969 q2a10/max_ss = 1109 -q2a10/badrow_direction = - -q2a10/res = 9090.91 -q2a10/clen = /LCLS/detectorPosition q2a10/fs = -0.0027005058x +0.9999963641y q2a10/ss = -0.9999963641x -0.0027005058y q2a10/corner_x = -656.888 q2a10/corner_y = -813.482 -q2a10/no_index = 0 - q2a11/min_fs = 970 q2a11/min_ss = 925 q2a11/max_fs = 1163 q2a11/max_ss = 1109 -q2a11/badrow_direction = - -q2a11/res = 9090.91 -q2a11/clen = /LCLS/detectorPosition q2a11/fs = -0.0027005058x +0.9999963641y q2a11/ss = -0.9999963641x -0.0027005058y q2a11/corner_x = -657.420 q2a11/corner_y = -616.482 -q2a11/no_index = 0 - q3a10/min_fs = 1164 q3a10/min_ss = 925 q3a10/max_fs = 1357 q3a10/max_ss = 1109 -q3a10/badrow_direction = - -q3a10/res = 9090.91 -q3a10/clen = /LCLS/detectorPosition q3a10/fs = -0.9999980927x -0.0019562324y q3a10/ss = +0.0019562324x -0.9999980927y q3a10/corner_x = 806.906 q3a10/corner_y = -655.522 -q3a10/no_index = 0 - q3a11/min_fs = 1358 q3a11/min_ss = 925 q3a11/max_fs = 1551 q3a11/max_ss = 1109 -q3a11/badrow_direction = - -q3a11/res = 9090.91 -q3a11/clen = /LCLS/detectorPosition q3a11/fs = -0.9999980927x -0.0019562324y q3a11/ss = +0.0019562324x -0.9999980927y q3a11/corner_x = 609.906 q3a11/corner_y = -655.907 -q3a11/no_index = 0 - q0a12/min_fs = 0 q0a12/min_ss = 1110 q0a12/max_fs = 193 q0a12/max_ss = 1294 -q0a12/badrow_direction = - -q0a12/res = 9090.91 -q0a12/clen = /LCLS/detectorPosition q0a12/fs = -0.9999986887x -0.0016366633y q0a12/ss = +0.0016366633x -0.9999986887y q0a12/corner_x = 416.434 q0a12/corner_y = 791.587 -q0a12/no_index = 0 - q0a13/min_fs = 194 q0a13/min_ss = 1110 q0a13/max_fs = 387 q0a13/max_ss = 1294 -q0a13/badrow_direction = - -q0a13/res = 9090.91 -q0a13/clen = /LCLS/detectorPosition q0a13/fs = -0.9999986887x -0.0016366633y q0a13/ss = +0.0016366633x -0.9999986887y q0a13/corner_x = 219.435 q0a13/corner_y = 791.265 -q0a13/no_index = 0 - q1a12/min_fs = 388 q1a12/min_ss = 1110 q1a12/max_fs = 581 q1a12/max_ss = 1294 -q1a12/badrow_direction = - -q1a12/res = 9090.91 -q1a12/clen = /LCLS/detectorPosition q1a12/fs = +0.0016421415x -0.9999986291y q1a12/ss = +0.9999986291x +0.0016421415y q1a12/corner_x = -781.411 q1a12/corner_y = 419.856 -q1a12/no_index = 0 - q1a13/min_fs = 582 q1a13/min_ss = 1110 q1a13/max_fs = 775 q1a13/max_ss = 1294 -q1a13/badrow_direction = - -q1a13/res = 9090.91 -q1a13/clen = /LCLS/detectorPosition q1a13/fs = +0.0016421415x -0.9999986291y q1a13/ss = +0.9999986291x +0.0016421415y q1a13/corner_x = -781.088 q1a13/corner_y = 222.856 -q1a13/no_index = 0 - q2a12/min_fs = 776 q2a12/min_ss = 1110 q2a12/max_fs = 969 q2a12/max_ss = 1294 -q2a12/badrow_direction = - -q2a12/res = 9090.91 -q2a12/clen = /LCLS/detectorPosition q2a12/fs = +0.9999987483x -0.0015812991y q2a12/ss = +0.0015812991x +0.9999987483y q2a12/corner_x = -423.530 q2a12/corner_y = -793.420 -q2a12/no_index = 0 - q2a13/min_fs = 970 q2a13/min_ss = 1110 q2a13/max_fs = 1163 q2a13/max_ss = 1294 -q2a13/badrow_direction = - -q2a13/res = 9090.91 -q2a13/clen = /LCLS/detectorPosition q2a13/fs = +0.9999987483x -0.0015812991y q2a13/ss = +0.0015812991x +0.9999987483y q2a13/corner_x = -226.531 q2a13/corner_y = -793.732 -q2a13/no_index = 0 - q3a12/min_fs = 1164 q3a12/min_ss = 1110 q3a12/max_fs = 1357 q3a12/max_ss = 1294 -q3a12/badrow_direction = - -q3a12/res = 9090.91 -q3a12/clen = /LCLS/detectorPosition q3a12/fs = +0.0000857039x +1.0000000000y q3a12/ss = -1.0000000000x +0.0000857039y q3a12/corner_x = 787.680 q3a12/corner_y = -418.886 -q3a12/no_index = 0 - q3a13/min_fs = 1358 q3a13/min_ss = 1110 q3a13/max_fs = 1551 q3a13/max_ss = 1294 -q3a13/badrow_direction = - -q3a13/res = 9090.91 -q3a13/clen = /LCLS/detectorPosition q3a13/fs = +0.0000857039x +1.0000000000y q3a13/ss = -1.0000000000x +0.0000857039y q3a13/corner_x = 787.697 q3a13/corner_y = -221.886 -q3a13/no_index = 0 - q0a14/min_fs = 0 q0a14/min_ss = 1295 q0a14/max_fs = 193 q0a14/max_ss = 1479 -q0a14/badrow_direction = - -q0a14/res = 9090.91 -q0a14/clen = /LCLS/detectorPosition q0a14/fs = -0.9999981523x -0.0019349456y q0a14/ss = +0.0019349456x -0.9999981523y q0a14/corner_x = 416.424 q0a14/corner_y = 579.070 -q0a14/no_index = 0 - q0a15/min_fs = 194 q0a15/min_ss = 1295 q0a15/max_fs = 387 q0a15/max_ss = 1479 -q0a15/badrow_direction = - -q0a15/res = 9090.91 -q0a15/clen = /LCLS/detectorPosition q0a15/fs = -0.9999981523x -0.0019349456y q0a15/ss = +0.0019349456x -0.9999981523y q0a15/corner_x = 219.424 q0a15/corner_y = 578.689 -q0a15/no_index = 0 - q1a14/min_fs = 388 q1a14/min_ss = 1295 q1a14/max_fs = 581 q1a14/max_ss = 1479 -q1a14/badrow_direction = - -q1a14/res = 9090.91 -q1a14/clen = /LCLS/detectorPosition q1a14/fs = +0.0016421643x -0.9999986291y q1a14/ss = +0.9999986291x +0.0016421643y q1a14/corner_x = -576.411 q1a14/corner_y = 419.856 -q1a14/no_index = 0 - q1a15/min_fs = 582 q1a15/min_ss = 1295 q1a15/max_fs = 775 q1a15/max_ss = 1479 -q1a15/badrow_direction = - -q1a15/res = 9090.91 -q1a15/clen = /LCLS/detectorPosition q1a15/fs = +0.0016421643x -0.9999986291y q1a15/ss = +0.9999986291x +0.0016421643y q1a15/corner_x = -576.088 q1a15/corner_y = 222.856 -q1a15/no_index = 0 - q2a14/min_fs = 776 q2a14/min_ss = 1295 q2a14/max_fs = 969 q2a14/max_ss = 1479 -q2a14/badrow_direction = - -q2a14/res = 9090.91 -q2a14/clen = /LCLS/detectorPosition q2a14/fs = +0.9999768734x -0.0068050129y q2a14/ss = +0.0068050129x +0.9999768734y q2a14/corner_x = -423.430 q2a14/corner_y = -582.404 -q2a14/no_index = 0 - q2a15/min_fs = 970 q2a15/min_ss = 1295 q2a15/max_fs = 1163 q2a15/max_ss = 1479 -q2a15/badrow_direction = - -q2a15/res = 9090.91 -q2a15/clen = /LCLS/detectorPosition q2a15/fs = +0.9999768734x -0.0068050129y q2a15/ss = +0.0068050129x +0.9999768734y q2a15/corner_x = -226.435 q2a15/corner_y = -583.745 -q2a15/no_index = 0 - q3a14/min_fs = 1164 q3a14/min_ss = 1295 q3a14/max_fs = 1357 q3a14/max_ss = 1479 -q3a14/badrow_direction = - -q3a14/res = 9090.91 -q3a14/clen = /LCLS/detectorPosition q3a14/fs = -0.0010058292x +0.9999995232y q3a14/ss = -0.9999995232x -0.0010058292y q3a14/corner_x = 575.673 q3a14/corner_y = -418.865 -q3a14/no_index = 0 - q3a15/min_fs = 1358 q3a15/min_ss = 1295 q3a15/max_fs = 1551 q3a15/max_ss = 1479 -q3a15/badrow_direction = - -q3a15/res = 9090.91 -q3a15/clen = /LCLS/detectorPosition q3a15/fs = -0.0010058292x +0.9999995232y q3a15/ss = -0.9999995232x -0.0010058292y q3a15/corner_x = 575.475 q3a15/corner_y = -221.866 -q3a15/no_index = 0 diff --git a/doc/man/ambigator.1 b/doc/man/ambigator.1 index d403f2aa..fad89641 100644 --- a/doc/man/ambigator.1 +++ b/doc/man/ambigator.1 @@ -25,7 +25,7 @@ The algorithm proceeds by calculating the individual correlation coefficients be Only one indexing ambiguity can be resolved at a time. In other words, each crystal is considered to be indexable in one of only two ways. If the true indexing ambiguity has more possibilities than this, the resolution must be performed by running \fBambigator\fR multiple times with a different ambiguity operator each time. -If the ambiguity operator is known (or, equivalently, the actual and apparent symmetries are both known), then the algorithm can be enhanced by including in \fIf\fR the correlation coefficients of all the crystals with the opposite indexing assignment to the current one, but after reindexing the other crystal first. Likewise, \fg\fR includes the correlation coefficients of the crystals with the same indexing assignment after reindexing. This enhances the algorithm to an extent roughly equivalent to doubling the number of crystals. +If the ambiguity operator is known (or, equivalently, the actual and apparent symmetries are both known), then the algorithm can be enhanced by including in \fIf\fR the correlation coefficients of all the crystals with the opposite indexing assignment to the current one, but after reindexing the other crystal first. Likewise, \fIg\fR includes the correlation coefficients of the crystals with the same indexing assignment after reindexing. This enhances the algorithm to an extent roughly equivalent to doubling the number of crystals. The default behaviour is to compare each crystal to every other crystal. This leads to a computational complexity proportional to the square of the number of crystals. If the number of crystals is large, the number of comparisons can be limited without compromising the algorithm much. In this case, the crystals to correlate against will be selected randomly. diff --git a/doc/man/check_hkl.1 b/doc/man/check_hkl.1 index ad66dfb2..f02b581b 100644 --- a/doc/man/check_hkl.1 +++ b/doc/man/check_hkl.1 @@ -17,7 +17,7 @@ check_hkl \- calculate figures of merit for reflection data \fBcheck_hkl --help\fR .SH DESCRIPTION -check_hkl calculates figures of merit for reflection data, such as completeness and average signal strengths, in resolution shells. check_hkl accepts a single reflection list in CrystFEL's format, and you must also provide a unit cell (in a PDB file). +check_hkl calculates figures of merit for reflection data, such as completeness and average signal strengths, in resolution shells. check_hkl accepts a single reflection list in CrystFEL's format, and you must also provide a unit cell (in a PDB file or CrystFEL unit cell format). .SH OPTIONS .PD 0 diff --git a/doc/man/compare_hkl.1 b/doc/man/compare_hkl.1 index b628f0b6..8e464d12 100644 --- a/doc/man/compare_hkl.1 +++ b/doc/man/compare_hkl.1 @@ -12,12 +12,12 @@ compare_hkl \- compare reflection data .SH SYNOPSIS .PP -\fBcompare_hkl\fR \fR [\fIoptions\fR] \fB...\fR \fIfile1.hkl\fR \fIfile2.hkl\fR +\fBcompare_hkl\fR [\fIoptions\fR] \fB... \fIfile1.hkl \fIfile2.hkl\fR -p \fIcell.pdb\fR .PP \fBcompare_hkl --help\fR .SH DESCRIPTION -compare_hkl compares two sets of reflection data and calculates figures of merit such as R-factors. Reflections will be considered equivalent according to your choice of point group. +compare_hkl compares two sets of reflection data and calculates figures of merit such as R-factors. Reflections will be considered equivalent according to your choice of point group. You need to provide a unit cell, as a PDB file or a CrystFEL unit cell file. .SH OPTIONS .PD 0 diff --git a/doc/man/crystfel.7 b/doc/man/crystfel.7 index fd3f337c..bc545069 100644 --- a/doc/man/crystfel.7 +++ b/doc/man/crystfel.7 @@ -25,7 +25,7 @@ The crystal orientations in each pattern are random and uncorrelated, which lead .RE CrystFEL includes programs for simulating and processing patterns subject to the -above characteristics. Twelve programs form the core of CrystFEL. They are: +above characteristics. Fifteen programs form the core of CrystFEL. They 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. @@ -63,6 +63,12 @@ A tool for rendering slices of reciprocal space in two dimensions. .IP \fBgeoptimiser\fR A program to refine and optimize detector geometry. +.IP \fBlist_events\fR +A tool for creating lists of events from multi-event data files. + +.IP \fBwhirligig\fR +A tool for locating runs of crystals with similar orientations, e.g. from 'mini rotation series' arising from the use of a slow extrusion sample injector. + .PP There is also a folder full of scripts for achieving many related tasks. @@ -149,4 +155,7 @@ You should have received a copy of the GNU General Public License along with Cry .BR render_hkl (1), .BR hdfsee (1), .BR get_hkl (1), +.BR geoptimiser (1), +.BR whirligig (1), +.BR list_events (1), .BR crystfel_geometry (5). diff --git a/doc/man/crystfel_geometry.5 b/doc/man/crystfel_geometry.5 index 44fe4450..974d602b 100644 --- a/doc/man/crystfel_geometry.5 +++ b/doc/man/crystfel_geometry.5 @@ -55,14 +55,13 @@ Information about the layout of the file data can be included in the geometry fi This allows CrystFEL to unambigously identify data blocks which contain data for a specific event, and to determine the number of events that each file contains. - The geometry file should contain lines of the following form: .IP -\fIpanel\fR\fB/\fIproperty\fB = \fIvalue\fR +\fIpanel\fR/clen = 0.560 .PP -\fIpanel\fR can be any name of your choosing. You can make up names for your panels however you please, as long as the first three letters are not "\fBbad\fR" (in lower case), because this is used to identify bad regions. +\fIpanel\fR can be any name of your choosing. You can make up names for your panels however you please, as long as the first three letters are not "\fBbad\fR" or "rigid_group" (in lower case), because these are used for special purposes (see below). .PP You can also specify values without a panel name, for example: @@ -133,7 +132,7 @@ The range of pixels in the data block specified by the 'data' property that corr .PD 0 .IP \fBadu_per_eV\fR .PD -The number of detector intensity units (ADU) which will arise from one electron-Volt of photon energy. This is used to estimate Poisson errors. +The number of detector intensity units (ADU) which will arise from one electron-Volt of photon energy. 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. .PD 0 .IP \fBbadrow_direction\fR @@ -149,7 +148,7 @@ The resolution (in pixels per metre) for this panel. This is one over the pixel .PD 0 .IP \fBclen\fR .PD -The camera length (in metres) for this panel. You can also specify the HDF path to a floating point data block containing the camera length in millimetres. For example: "panel0/clen = /LCLS/detectorPosition". If the HDF file contains more than one event, and the data block is scalar, the camera length value +The camera length (in metres) for this panel. You can also specify the HDF5 path to a floating point data block containing the camera length in millimetres. For example: "panel0/clen = /LCLS/detectorPosition". If the HDF5 file contains more than one event, and the data block is scalar, the camera length value it contains will be used for all events. If, however, the data block is multidimensional and the second dimension is bigger than one, the CrystFEL programs will try to match the content of the data block with the events in the file, assigning the first value in the data block to the first event in the file, the second value in the data block to the second event in the file, etc. See \fBcoffset\fR as well. @@ -187,7 +186,7 @@ Set this to 1 or "true" to ignore this panel completely. .IP \fBmask_bad\fR .PD Bitmasks for bad pixel masks. The pixel is considered good if all of the bits which are set in \fBmask_good\fR are set, \fIand\fR if none of the bits which are set in \fBmask_bad\fR are set. Example: -.br +.IP mask = /processing/hitfinder/masks .br mask_good = 0x27 @@ -197,7 +196,9 @@ mask_bad = 0x00 .SH BAD REGIONS -You can also specify bad regions. Peaks with centroid locations within such a region will not be integrated nor used for indexing. Bad regions are specified in pixel units, either in the lab coordinate system (see above) or in fast scan/slow scan coordinates (mixtures are not allowed). In the latter case, the range of pixels is specified \fIinclusively\fR. Bad regions are distinguished from normal panels by the fact that they begin with the three letters "bad". +You can also specify bad regions. Bad regions will be completely ignored by CrystFEL. Bad regions are specified in pixel units, either in the lab coordinate system (see above) or in fast scan/slow scan coordinates (mixtures are not allowed). In the latter case, the range of pixels is specified \fIinclusively\fR. Bad regions are distinguished from normal panels by the fact that they begin with the three letters "bad". +.PP +You can specify a panel name for the bad region, in which case the pixels will only be considered bad if they are within the range you specify \fIand\fR in the panel you specify. This might be necessary if your HDF5 file layout has overlapping ranges of fs/ss coordinates for different panels (e.g. if the data blocks for the panels are in different HDF5 datasets). Examples: .br @@ -218,6 +219,8 @@ badregionB/max_fs = 160 badregionB/min_ss = 256 .br badregionB/max_ss = 512 +.br +badregionB/panel = q0a1 .SH RIGID GROUPS AND RIGID GROUP COLLECTIONS @@ -248,7 +251,7 @@ The geometry file can include information about beam characteristics, using gene .PD 0 .IP \fBphoton_energy\fR .PD -The beam photon energy in eV. You can also specify the HDF path to a floating point data block value containing the photon energy in eV. For example: "photon_energy = /LCLS/photon_energy_eV". If the HDF file contains more than one event, and the data block is scalar, the photon energy value +The beam photon energy in eV. You can also specify the HDF5 path to a floating point data block value containing the photon energy in eV. For example: "photon_energy = /LCLS/photon_energy_eV". If the HDF5 file contains more than one event, and the data block is scalar, the photon energy value it contains will be used for all events. If, however, the data block is multidimensional and the second dimension is bigger than one, the CrystFEL programs will try to match the content of the data block with the events in the file, assigning the first value in the data block to the first event in the file, the second value in the data block to the second event in the file, etc. See also \fBphoton_energy_scale\fR. diff --git a/doc/man/geoptimiser.1 b/doc/man/geoptimiser.1 index 19ce4534..2a544830 100644 --- a/doc/man/geoptimiser.1 +++ b/doc/man/geoptimiser.1 @@ -14,7 +14,7 @@ geoptimiser \- detector geometry refinement .PP .BR geoptimiser \fB-i \fIinput.stream \fB-g \fIinput.geom \fB-o \fIoutput.geom \fB-c \fIconnected_rigidgroup_coll \fB-q \fI\quadrant_rigidgroup_coll\fR -[\fBoptions\fR] \fB...\fR +[\fBoptions\fR] .PP \fBgeoptimiser --help\fR @@ -33,12 +33,17 @@ the name of two rigid group collections defined in the geometry file: one descri .PP See \fBman crystfel_geometry\fR for information on how to create a file describing the detector geometry, and guidelines to define the required rigid groups and rigid groups collections. +.PP +Geoptimizer saves error maps before and after the geometry optimization. These maps show an estimation of the geometry error as average displacement, for each pixel, between the predicted and the observed positions of the Bragg peaks. The maps are color-scaled PNG files and +are named "error_map_before.png" and "error_map_after.png" respectively. In order to better visualize small local errors, the color range has been set to show all displacements bigger that 1 pixel as white (in other words, "displacement saturation" is set at 1 pixel). + + .SH OPTIONS .PD 0 .IP "\fB-i\fR \fIfilename\fR" .IP \fB--input=\fR\fIfilename\fR .PD -Read the indexed patterns from the \fIfilename\fR stream file. +Give the filename of the stream from which to read the indexed patterns. .PD 0 .IP "\fB-g\fR \fIfilename\fR" @@ -69,6 +74,10 @@ Specifies the name of the rigid group collection for detector 'quadrants'. This .sp If a given rigid group is a member of \fIname\fR, then panels which are members of that rigid group and which do not contain enough peaks for positional refinement will be moved according to the average movement of the other panels in the group. +.PD 0 +.IP \fB--no-error-maps\fR +.PD +Forces geoptimiser not to save error maps. .PD 0 .IP "\fB-x\fR \fIn\fR" @@ -108,6 +117,16 @@ to be included in the optimization process. The default maximum distance is 8 pi .PD By default, geoptimiser refines the distance between the detector and the sample. This option turns off this optimization. +.PD 0 +.IP \fB--no-cspad\fR +.PD +If a geometry file containing 64 panels (ASICs) is provided by the user, geoptimiser assumes that the detector described by the geometry file is a CSPAD, and performs some sanity-checks on the relative ditance and orientation of connected panels. If the checks fail, the geometry optimization is stopped. This option turns off these checks. + +.PD 0 +.IP \fB--enforce-cspad-layout\fR +.PD +When this option is used, geoptimiser tries to fix the CSPAD layout problems detected by the checks described in the entry for the \fB--no-cspad\fR option. Immediately after performing this operation, geoptimser saves the new detector layout in the output refined geometry file and exits. + .SH AUTHOR This page was written by Valerio Mariani, Oleksandr Yefanov and Thomas White. @@ -115,7 +134,7 @@ This page was written by Valerio Mariani, Oleksandr Yefanov and Thomas White. Report bugs to <taw@physics.org>, or visit <http://www.desy.de/~twhite/crystfel>. .SH COPYRIGHT AND DISCLAIMER -Copyright © 2012-2015 Deutsches Elektronen-Synchrotron DESY, a research centre of the Helmholtz Association. +Copyright © 2014-2015 Deutsches Elektronen-Synchrotron DESY, a research centre of the Helmholtz Association. .P geoptimiser, and this manual, are part of CrystFEL. .P diff --git a/doc/man/hdfsee.1 b/doc/man/hdfsee.1 index 1b2834c2..7a4dddb6 100644 --- a/doc/man/hdfsee.1 +++ b/doc/man/hdfsee.1 @@ -43,7 +43,11 @@ Show the image after binning down by a factor of \fIb\fR. .IP "\fB-e\fR \fIpath\fR" .IP \fB--image=\fR\fIpath\fR .PD -Get the image data to display from \fIpath\fR inside the HDF5 file. For example: \fI/data/rawdata\fR. If this is not specified, the default behaviour is to display the first two-dimensional dataset with both dimensions greater than 64. +Get the image data to display from \fIpath\fR inside the HDF5 file. Example: \fI/data/rawdata\fR. +.IP +If no geometry file is provided (see \fB-g\fR) and this option is not used, hdfsee will display the first two-dimensional dataset it finds in the file with both dimensions greater than 64. If a geometry file is provided, the data layout description from the file determines which image is displayed (see \fB man crystfel_geometry\fR). +.IP +If \fB-e\fR is used in combination with \fB-g\fR, hdfsee will attempt to show the specified dataset with the geometry applied. The data layout description from the geometry file will be ignored, the data block to be used as data source for all panels will be set to \fIpath\fR and it will be assumed to be 2-dimensional. .PD 0 .IP "\fB-g\fR \fIfilename\fR" @@ -91,9 +95,13 @@ Apply a noise filter to the image with checks 3x3 squares of pixels and sets all .SH CALIBRATION MODE Calibration mode allows you to visually adjust the locations of panels. To enter calibration mode, select Tools->Calibration Mode from the menu. The currently selected panel will be bordered in white. Press + or - to move to the next or previous panel (as listed in the geometry file). Use the arrow keys to move the current panel. Press 'f' to hide or restore the white border. Press 's' to save the geometry file with your modifications. Press 'g' to toggle between moving individual panels, rigid groups (if any are defined in the geometry file) and moving all panels together. +Most of these actions can also be accessed from the Calibration menu, which becomes aptive when calibration mode is toggled once + +.SH EVENT NAVIGATION +When multi-event files are opened, the Events menu in the menubar becomes active, and some event navigation tools become available. The title bar shows, in addition to the file name, the name of the event currently displayed (See \fBman crystfel_geometry\fR and \fBman indexamajig\fR for a description of event naming). Press 'n' to move to the next event in the file, and 'p' to move to the previous one'. Press 'e' to jump to a specific event, by providing an event name (Use the \fBlist_events\fR program to get a list of the events included in a file). Press 'r' to jump to a random event. These actions are also accessible from the Events menu in the menubar. .SH AUTHOR -This page was written by Thomas White. +This page was written by Thomas White and Valerio Mariani. .SH REPORTING BUGS Report bugs to <taw@physics.org>, or visit <http://www.desy.de/~twhite/crystfel>. diff --git a/doc/man/indexamajig.1 b/doc/man/indexamajig.1 index b46b663b..75fa3e6c 100644 --- a/doc/man/indexamajig.1 +++ b/doc/man/indexamajig.1 @@ -1,7 +1,7 @@ .\" .\" indexamajig man page .\" -.\" Copyright © 2012-2014 Deutsches Elektronen-Synchrotron DESY, +.\" Copyright © 2012-2015 Deutsches Elektronen-Synchrotron DESY, .\" a research centre of the Helmholtz Association. .\" .\" Part of CrystFEL - crystallography with a FEL @@ -26,22 +26,24 @@ For minimal basic use, you need to provide the list of diffraction patterns, the .IP \fBindexamajig\fR .PD --i mypatterns.lst -j 10 -g mygeometry.geom --indexing=mosflm,dirax --peaks=hdf5 -o test.stream -p mycell.pdb +-i mypatterns.lst -g mygeometry.geom --indexing=mosflm,dirax --peaks=hdf5 -o test.stream -p mycell.pdb .PP More typical use includes all the above, but might also include extra parameters to modify the behaviour. For example, you'll probably want to run more than one indexing job at a time (-j <n>). -See \fBman crystfel_geometry\fR for information about how to create a file describing detector geometry and beam characteristics. +See \fBman crystfel_geometry\fR for information about how to create a file describing the detector geometry and beam characteristics. .SH DIFFRACTION PATTERN LIST -Indexamajig requires an input file with a list of diffraction patterns ("events") to process. In its simplest form, this is just a text files containing a list of HDF5 filenames. The HDF5 files might be in some folder a long way from the current directory, so you might want to specify a full pathname to be added in front of each filename. The geometry file includes a description of the data layout within the HDF5 files. Indexamajig uses this description to make an educated guess at the number of diffraction patterns stored in each file, and tries to process them all. You can however single out an event contained in the file for processing, by putting a string describing the event after the file name (see below). +Indexamajig requires an input file with a list of diffraction patterns ("events") to process. In its simplest form, this is just a text files containing a list of HDF5 filenames. The HDF5 files might be in some folder a long way from the current directory, so you might want to specify a full pathname to be added in front of each filename. The geometry file includes a description of the data layout within the HDF5 files. Indexamajig uses this description to determine the number of diffraction patterns stored in each file, and tries to process them all. You can also specify explicity which event(s) you would like to process by putting a string describing the event after the file name(s) in this list. .SH PEAK DETECTION -You can control the peak detection on the command line. Firstly, you can choose the peak detection method using \fB--peaks=\fR\fImethod\fR. Currently, two values for "method" are available. \fB--peaks=hdf5\fR will take the peak locations from the HDF5 file. It expects a two dimensional array, by default at /processing/hitfinder/peakinfo, whose size in the first dimension equals the number of peaks and whose size in the second dimension is three. The first two columns contain the fast scan and slow scan coordinates, the third contains the intensity. However, the intensity will be ignored since the pattern will always be re-integrated using the unit cell provided by the indexer on the basis of the peaks. You can tell indexamajig where to find this table inside each HDF5 file using \fB--hdf5-peaks=\fR\fIpath\fR. +You can control the peak detection on the command line. Firstly, you can choose the peak detection method using \fB--peaks=\fR\fImethod\fR. There are three possibilities for "method" here. \fB--peaks=hdf5\fR will take the peak locations from the HDF5 file. It expects a two dimensional array, by default at /processing/hitfinder/peakinfo, whose size in the first dimension equals the number of peaks and whose size in the second dimension is three. The first two columns contain the fast scan and slow scan coordinates, the third contains the intensity. However, the intensity will be ignored since the pattern will always be re-integrated using the unit cell provided by the indexer on the basis of the peaks. You can tell indexamajig where to find this table inside each HDF5 file using \fB--hdf5-peaks=\fR\fIpath\fR. + +\fB--peaks=cxi\fR works similarly to this, but expects four separate HDF5 datasets beneath \fIpath\fR, \fBnPeaks\fR, \fBpeakXPosRaw\fR, \fBpeakYPosRaw\fR and \fBpeakTotalIntensity\fR. See the specification for the CXI file format at http://www.cxidb.org/ for more details. If you use \fB--peaks=zaef\fR, indexamajig will use a simple gradient search after Zaefferer (2000). You can control the overall threshold and minimum squared gradient for finding a peak using \fB--threshold\fR and \fB--min-gradient\fR. The threshold has arbitrary units matching the pixel values in the data, and the minimum gradient has the equivalent squared units. Peaks will be rejected if the 'foot point' is further away from the 'summit' of the peak by more than the inner integration radius (see below). They will also be rejected if the peak is closer than twice the inner integration radius from another peak. @@ -230,7 +232,7 @@ Prefix the filenames from the input file with \fIprefix\fR. If \fB--basename\fR .PD 0 .IP \fB--hdf5-peaks=\fR\fIpath\fR .PD -When using \fB--peaks=hdf5\fR, read the peak locations from a table in the HDF5 file located at \fIpath\fR. +When using \fB--peaks=hdf5\fR or \fB--peaks=cxi\fR, read the peak positions from location \fIpath\fR. See \fBPEAK DETECTION\fR above. .PD 0 .IP \fB--tolerance=\fR\fItol\fR @@ -263,7 +265,7 @@ Set the overall threshold for peak detection using \fB--peaks=zaef\fR to \fIthre .PD 0 .IP \fB--min-gradient=\fR\fIgrad\fR .PD -Set the gradient threshold for peak detection using \fB--peaks=zaef\fR to \fIgrad\fR, which units of "detector units per pixel". The default is \fB--min-gradient=100000\fR. +Set the square of the gradient threshold for peak detection using \fB--peaks=zaef\fR to \fIgrad\fR, which has units of "squared detector units per pixel". The default is \fB--min-gradient=100000\fR. The reason it's 'gradient squared' instead of just 'gradient' is historical. .PD 0 .IP \fB--min-snr=\fR\fIsnr\fR @@ -293,7 +295,7 @@ Normally, peaks which contain one or more pixels above max_adu (defined in the d .PD 0 .IP \fB--no-revalidate\fR .PD -When using \fB--peaks=hdf5\fR, the peaks will be put through some of the same checks as if you were using \fB--peaks=zaef\fR. These checks reject peaks which are too close to panel edges, are saturated (unless you use \fB--use-saturated\fR), have other nearby peaks (closer than twice the inner integration radius, see \fB--int-radius\fR), or have any part in a bad region. Using this option skips this validation step, and uses the peaks directly. +When using \fB--peaks=hdf5\fR or \fB--peaks=cxi\fR, the peaks will be put through some of the same checks as if you were using \fB--peaks=zaef\fR. These checks reject peaks which are too close to panel edges, are saturated (unless you use \fB--use-saturated\fR), have other nearby peaks (closer than twice the inner integration radius, see \fB--int-radius\fR), or have any part in a bad region. Using this option skips this validation step, and uses the peaks directly. .PD 0 .IP \fB--check-hdf5-snr\fR @@ -326,14 +328,25 @@ When \fBrescut\fR is in the integration method, integrate \fIn\fR nm^-1 higher t Mark all pixels on the detector higher than \fIn\fR Angstroms as bad. This might be useful when you have noisy patterns and don't expect any signal above a certain resolution. +.PD 0 +.IP \fB--fix-profile-radius=\fIn\fR +.IP \fB--fix-bandwidth=\fIn\fR +.IP \fB--fix-divergence=\fIn\fR +.PD +Fix the beam and crystal paramters to the given values. The profile radius is given in m^-1, the bandwidth as a decimal fraction and the divergence in radians (full angle). The default is to set the divergence to zero, the bandwidth to a very small value, and then to automatically determine the profile radius. +.IP +You do not have to use all three of these options together. For example, if the automatic profile radius determination is not working well for your data set, you could fix that alone and continue using the default values for the other parameters (which might be automatically determined in future versions of CrystFEL, but are not currently). + +.PD 0 +.IP \fB--no-refine +.PD +Skip the prediction refinement step. + .SH IDENTIFYING SINGLE PATTERNS IN THE INPUT FILE By default indexamajig processes all diffraction patterns ("events") in each of the data files listed in the input list. It is however, possible, to only process single events in a multi-event file, by adding in the list an event description string after the data filename. The event description always includes a first section with alphanumeric strings separated by forward slashes ("/") and a second section with integer numbers also separated by forward slashes. The two sections are in turn separated by a double forward slash ('//'). Any of the two sections can be empty, but the double forward slash separator must always be present. Indexamajig matches the strings and the numbers in the event description with the event placeholders ('%') present respectively in the 'data' and 'dim' properties defined in the geometry file, and tries to retrieve the full HDF path to the event data and the the its location in a multi-dimensional data space. Consider the following examples: -Example 1: -.br - -Assuming that the 'data' and 'dim' properties have been defined like this in the geometry file: +\fBExample 1:\fR The 'data' and 'dim' properties have been defined like this in the geometry file: .br data = /data/%/rawdata @@ -342,18 +355,15 @@ dim0 = ss .br dim1 = fs -The following line: +The event list contains the following line: .br filename.h5 event1// .br -Identifies an event in the 2-dimensional data block lying at the /data/event1/rawdata HDF path in the filename.h5 file - -Example 2: -.br +This identifies an event in the 2-dimensional data block located at /data/event1/rawdata in the HDF5 file called filename.h5. -Assuming that the 'data' and 'dim' properties have been defined like this in the geometry file: +\fBExample 2:\fR The 'data' and 'dim' properties have been defined like this in the geometry file: .br data = /data/rawdata @@ -364,18 +374,21 @@ dim1 = ss .br dim2 = fs -The following line: +The event list contains the following line: .br filename.h5 //3 .br -Identifies an event in the 3-dimensional data block lying at the /data/rawdata HDF path in the filename.h5 file, specifically the 2-dimensional data slice defined by the value 3 of the first axis of the data space. +This identifies an event in the 3-dimensional data block located at /data/rawdata in the HDF5 file called filename.h5, specifically the 2-dimensional data slice defined by the value 3 of the first axis of the data space. Indexamajig tries to match the alphanumerical strings to the placeholders in the 'dim' property defined in the geometry file. The first string is matched to the first placeholder, the second to the second placeholder, and so on. A similar strategy is followed to match integer numbers to the placeholders in the 'dim' property defined in the geometry file. For a full explanation of how the internal layout of the data file can be described in the geometry file, please see \fBman crystfel_geometry\fR. +You can use \fBlist_events\fR to prepare a list of each event in one or more input files. Note that you only need to do this if you need to perform some sorting or filtering on this list. If you want to process every event in a file, simply specify the filename in the input file. + + .SH BUGS ReAx indexing is experimental. It works very nicely for some people, and crashes for others. In a future version, it will be improved and fully supported. @@ -401,4 +414,6 @@ You should have received a copy of the GNU General Public License along with Cry .BR crystfel_geometry (5), .BR cell_explorer (1), .BR process_hkl (1), -.BR partialator (1) +.BR partialator (1), +.BR list_events (1), +.BR whirligig (1) diff --git a/doc/man/list_events.1 b/doc/man/list_events.1 index d1e080e3..900288f6 100644 --- a/doc/man/list_events.1 +++ b/doc/man/list_events.1 @@ -1,7 +1,8 @@ .\" .\" list_events man page .\" -.\" Copyright © 2015 Thomas White <taw@physics.org> +.\" Copyright © 2015 Deutsches Elektronen-Synchrotron DESY, +.\" a research centre of the Helmholtz Association. .\" .\" Part of CrystFEL - crystallography with a FEL .\" @@ -16,7 +17,7 @@ list_events \- generate event lists \fBlist_events --help\fI .SH DESCRIPTION -list_events expands a list of filenames, where each file contains events in a multi-event format (e.g. the CXI format, http://www.cxidb.org/), into a list of individual events. +list_events expands a list of filenames, where each file contains events in a multi-event format (e.g. the CXI format, http://www.cxidb.org/), into a list of individual events. This might be useful if you need to sort or filter the event list prior to processing, rather than just processing all events. .SH OPTIONS diff --git a/doc/man/partial_sim.1 b/doc/man/partial_sim.1 index 67b05edc..e11c75e7 100644 --- a/doc/man/partial_sim.1 +++ b/doc/man/partial_sim.1 @@ -15,7 +15,6 @@ partial_sim \- calculate partial reflections .BR partial_sim \fB-o\fR \fIsimulated.stream\fR \fB-g\fR \fIgeometry.geom\fR -\fB-b\fR \fIxrays.beam\fR \fB-p\fR \fIunitcell.pdb\fR [\fIoptions\fR] \fB...\fR @@ -113,7 +112,7 @@ Use \fIn\fR threads for simulation. Default: 1. .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 have th +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 @@ -145,6 +144,10 @@ Set the radius of the scattering density surrounding each reciprocal lattice poi .PD Set the central photon energy, in eV, for the incident beam. The default is \fB--photon-energy=9000\fR, i.e. 9 keV X-rays. +.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. .SH AUTHOR This page was written by Thomas White. diff --git a/doc/man/partialator.1 b/doc/man/partialator.1 index 75fc34f2..63fb062c 100644 --- a/doc/man/partialator.1 +++ b/doc/man/partialator.1 @@ -93,20 +93,29 @@ Include a reflection in the output only if it appears at least least \fIn\fR tim The available partiality models are: -.IP \fBsphere\fR +.IP \fBscsphere\fR .PD The volume of intersection between a sphere centered on each reciprocal lattice -point, and the part of reciprocal space excited by the Ewald sphere taking into -account the finite bandwidth and convergence angle. A Lorentz factor will also -be used, proportional to the distance between the limiting Ewald spheres. +point and the part of reciprocal space excited by the Ewald sphere taking into +account the finite bandwidth and convergence angle. A "source coverage factor" +will be included to take into account the spectral brightness of the effective +source for the reflection. -For a full description including diagrams, see T. A. White et al., Acta Cryst. -D69 (2013) p1231-1240. +This model is similar to that described in Acta Cryst. D69 (2013) p1231-1240, +and in Phil. Trans. Roy. Soc. B 369 (2014) 20130330, except that the "Lorentz +factor" described there is no longer treated as a separate factor. -.IP \fBunity\fR + +.IP \fBscgaussian\fR .PD -Fix all partialities at 1, and use no Lorentz factor at all. +As \fBscsphere\fR, except that the shape of the scattering density centered on +each reciprocal lattice point is taken to be a 3D Gaussian distribution instead +of a sphere. The standard deviation of the distribution will be the profile +radius (determined by indexamajig) divided by 2.6. +.IP \fBunity\fR +.PD +Fix all partialities at 1. .SH BUGS diff --git a/doc/reference/libcrystfel/CrystFEL-docs.sgml b/doc/reference/libcrystfel/CrystFEL-docs.sgml index 1aef3ddb..ae0a115a 100644 --- a/doc/reference/libcrystfel/CrystFEL-docs.sgml +++ b/doc/reference/libcrystfel/CrystFEL-docs.sgml @@ -8,7 +8,7 @@ <bookinfo> <title>CrystFEL Reference Manual</title> <releaseinfo> - For libcrystfel from CrystFEL 0.5.4. + For libcrystfel from CrystFEL 0.6.0. </releaseinfo> <abstract> This is the internal documentation for CrystFEL. Unless you are looking at @@ -43,6 +43,11 @@ </chapter> <chapter> + <title>Events</title> + <xi:include href="xml/events.xml"/> + </chapter> + + <chapter> <title>Geometry of diffraction</title> <xi:include href="xml/geometry.xml"/> </chapter> diff --git a/doc/reference/libcrystfel/CrystFEL-sections.txt b/doc/reference/libcrystfel/CrystFEL-sections.txt index f3b5dc59..7b06c2cd 100644 --- a/doc/reference/libcrystfel/CrystFEL-sections.txt +++ b/doc/reference/libcrystfel/CrystFEL-sections.txt @@ -94,6 +94,7 @@ cell_get_reciprocal cell_get_centering cell_get_lattice_type cell_get_unique_axis +cell_has_parameters <SUBSECTION> cell_set_cartesian cell_set_parameters @@ -132,6 +133,7 @@ right_handed str_lattice forbidden_reflection load_cell_from_pdb +load_cell_from_file lattice_from_str </SECTION> @@ -202,10 +204,15 @@ histogram_set_num_bins <SECTION> <FILE>image</FILE> image +beam_params +imagefeature ImageFeatureList SpectrumType +sample +<SUBSECTION> image_add_feature image_feature_closest +image_reflection_closest image_feature_count image_feature_list_free image_feature_list_new @@ -327,11 +334,18 @@ intmat_print <SECTION> <FILE>detector</FILE> +detector +panel +badregion +rigid_group +rg_collection +<SUBSECTION> copy_geom fill_in_values free_detector_geometry get_detector_geometry write_detector_geometry +write_detector_geometry_2 find_panel find_panel_by_name find_panel_number @@ -342,15 +356,22 @@ get_q get_q_for_panel get_tt smallest_q -twod_mapping reverse_2d_mapping largest_q in_bad_region mark_resolution_range_as_bad +find_orig_panel +panel_is_in_rigid_group +rigid_group_is_in_collection +single_panel_data_source +find_rigid_group_collection_by_name </SECTION> <SECTION> <FILE>events</FILE> +event +event_list +<SUBSECTION> initialize_event push_path_entry_to_event pop_path_entry_from_event @@ -358,6 +379,7 @@ push_dim_entry_to_event pop_dim_entry_from_event copy_event free_event +find_event get_event_string get_event_from_event_string event_path_placeholder_subst @@ -374,6 +396,7 @@ initialize_dim_structure default_dim_structure set_dim_structure_entry free_dim_structure_entry +free_dim_structure </SECTION> <SECTION> @@ -383,6 +406,7 @@ free_dim_structure_entry <SECTION> <FILE>hdf5-file</FILE> hdf5_read +hdf5_read2 hdf5_write hdf5_write_image hdfile @@ -394,13 +418,17 @@ hdfile_read_group hdfile_set_first_image hdfile_set_image get_value +get_ev_based_value copy_hdf5_field copy_hdf5_fields add_copy_hdf5_field new_copy_hdf5_field_list free_copy_hdf5_field_list get_peaks +get_peaks_cxi hdfile_is_scalar +check_path_existence +fill_event_list </SECTION> <SECTION> @@ -419,6 +447,7 @@ crystal_get_profile_radius crystal_get_reflections crystal_get_resolution_limit crystal_get_user_flag +crystal_get_num_implausible_reflections crystal_set_cell crystal_set_image crystal_set_mosaicity @@ -428,16 +457,20 @@ crystal_set_profile_radius crystal_set_reflections crystal_set_resolution_limit crystal_set_user_flag +crystal_set_num_implausible_reflections </SECTION> <SECTION> <FILE>geometry</FILE> PartialityModel find_intersections +find_intersections_to_res select_intersections update_partialities update_partialities_2 polarisation_correction +sphere_fraction +gaussian_fraction </SECTION> <SECTION> @@ -501,4 +534,5 @@ rewind_stream is_stream write_command write_geometry_file +extract_f_from_stuff </SECTION> |