2,684
edits
No edit summary |
(revision 0.16) |
||
Line 4: | Line 4: | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
# purpose: generate XDS.INP | # purpose: generate XDS.INP | ||
# | |||
# tested with some datasets from ALS, SSRL, SLS, ESRF and BESSY; only MARCCD, ADSC/SMV, PILATUS 6M detectors; | |||
# for other detectors, values marked with XXX must be manually filled in. | |||
# | |||
# revision 0.03 . Kay Diederichs 2/2010 | # revision 0.03 . Kay Diederichs 2/2010 | ||
# revision 0.04 . Kay Diederichs 4/2010 - include alternative ORGX, ORGY calculations for ADSC | # revision 0.04 . Kay Diederichs 4/2010 - include alternative ORGX, ORGY calculations for ADSC | ||
Line 13: | Line 16: | ||
# revision 0.08 . KD 6/2010 - fixes for Pilatus 6M | # revision 0.08 . KD 6/2010 - fixes for Pilatus 6M | ||
# revision 0.09 . KD 6/2010 - get rid of requirement for mccd_xdsparams.pl and/or catmar; rather use "od" | # revision 0.09 . KD 6/2010 - get rid of requirement for mccd_xdsparams.pl and/or catmar; rather use "od" | ||
# revision 0.10 . Tim Gruene 7/2010 - set link 'images' to image directory if path exceeds 72 characters | # revision 0.10 . Tim Gruene 7/2010 - set link 'images' to image directory if path exceeds 72 characters | ||
# revision 0.11 . KD 7/2010 - for MarCCD: look for distance info at different byte position | # revision 0.11 . KD 7/2010 - for MarCCD: look for distance info at different byte position | ||
Line 21: | Line 22: | ||
# revision 0.14 . KD 1/2011 - SENSOR_THICKNESS for Pilatus; MINIMUM_NUMBER_OF_PIXELS_IN_A_SPOT=3 | # revision 0.14 . KD 1/2011 - SENSOR_THICKNESS for Pilatus; MINIMUM_NUMBER_OF_PIXELS_IN_A_SPOT=3 | ||
# revision 0.15 . KD 2/2011 - add comment for -ive sign of APS 19-ID and Australian Synchrotron rotation axis | # revision 0.15 . KD 2/2011 - add comment for -ive sign of APS 19-ID and Australian Synchrotron rotation axis | ||
# revision 0.16 . KD 3/2011 - SENSOR_THICKNESS=0.01 for ADSC and MarCCD. Add comment about SILICON= | |||
REVISION=0.16 | |||
# | # | ||
# usage: e.g. generate_XDS.INP "frms/mydata_1_???.img" | # usage: e.g. generate_XDS.INP "frms/mydata_1_???.img" | ||
Line 60: | Line 63: | ||
NX=XXX | NX=XXX | ||
NY=XXX | NY=XXX | ||
SENSOR_THICKNESS=0 | |||
# see how we are called: | # see how we are called: | ||
NAME_TEMPLATE_OF_DATA_FRAMES="$1" | NAME_TEMPLATE_OF_DATA_FRAMES="$1" | ||
Line 125: | Line 128: | ||
DETECTOR="CCDCHESS MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65500" | DETECTOR="CCDCHESS MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65500" | ||
SENSOR_THICKNESS= 0.01 | |||
# use first frame of dataset to obtain parameters | # use first frame of dataset to obtain parameters | ||
MARFRAME=`head -1 tmp1` | MARFRAME=`head -1 tmp1` | ||
Line 178: | Line 181: | ||
DETECTOR="ADSC MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65000" | DETECTOR="ADSC MINIMUM_VALID_PIXEL_VALUE= 1 OVERLOAD= 65000" | ||
echo this is an ADSC detector. Obtaining ORGX, ORGY from the header depends on beamline setup. | echo this is an ADSC detector. Obtaining ORGX, ORGY from the header depends on beamline setup. | ||
SENSOR_THICKNESS= 0.01 | |||
strings `head -1 tmp1` | sed s/\;// > tmp2 | strings `head -1 tmp1` | sed s/\;// > tmp2 | ||
Line 210: | Line 214: | ||
elif [ "$DET" == "pilatus" ]; then | elif [ "$DET" == "pilatus" ]; then | ||
DETECTOR="PILATUS MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD= 1048576 SENSOR_THICKNESS=0.32 | DETECTOR="PILATUS MINIMUM_VALID_PIXEL_VALUE=0 OVERLOAD= 1048576 !PILATUS 6M" | ||
SENSOR_THICKNESS=0.32 | |||
NX=2463 NY=2527 QX=0.172 QY=0.172 | NX=2463 NY=2527 QX=0.172 QY=0.172 | ||
echo this is a Pilatus detector | echo this is a Pilatus detector | ||
Line 280: | Line 285: | ||
! parameters specifically for this detector and beamline: | ! parameters specifically for this detector and beamline: | ||
DETECTOR= $DETECTOR | DETECTOR= $DETECTOR | ||
SENSOR_THICKNESS= $SENSOR_THICKNESS | |||
! attention CCD detectors: for very high resolution (better than 1A) make sure to specify SILICON | |||
! as about 32* what CORRECT.LP suggests (absorption of phosphor is much higher than that of silicon) | |||
NX= $NX NY= $NY QX= $QX QY= $QY ! to make CORRECT happy if frames are unavailable | NX= $NX NY= $NY QX= $QX QY= $QY ! to make CORRECT happy if frames are unavailable | ||
DIRECTION_OF_DETECTOR_X-AXIS=1 0 0 | DIRECTION_OF_DETECTOR_X-AXIS=1 0 0 |