[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Reply to: [list | sender only]
Re: Base coordinate set for CBF, and Minimal headers.
- To: imgcif-l@bnl.gov
- Subject: Re: Base coordinate set for CBF, and Minimal headers.
- From: "Herbert J. Bernstein" <yaya@bernstein-plus-sons.com>
- Date: Thu, 31 Dec 1998 12:24:21 -0500
- In-Reply-To: <Pine.SGI.3.96.981228113942.4947B-100000@lsx12n.nsls.bnl.gov>
Here is a very rough first draft of some suggestions for dictionary items to implement what I _think_ Bob was saying in his message. I gathered the goniometer and detector axis items in a new "AXIS" category to avoid duplication of a lot of tags. I have not yet done anything specific about Bob's comments on the specification of the beam-center. If I misunderstood various parts of this, somebody please say so. Happy New Year -- Herbert ######## # AXIS # ######## save_AXIS _category.description ; Data items in the AXIS category record the information required to describe the various goniometer, detector, source and other axes needed to specify a data collection. The location of each axis is specified by two vectors: the axis itself, given as a unit vector, and an offset to the base of the unit vector. These vectors are referenced to a right-handed laboratory coordinate system with its origin in the sample: | Y (to complete right-handed system) | | /Z (to source) | / | / | / |/__________________X principal goniometer axis Axis 1 (X): The mechanical axis, pointing from the sample to the principal axis of the goniometer. Axis 3 (Z): The source axis, pointing from the sample towards the source in the plane of Axis 1 (X) and the source, perpendicular to Z. Axis 2 (Y): Completes an orthogonal right-handed system. These axes are based on the goniometer, not on the orientation of the detector, gravity, etc. The vectors necessary to specify all other axes are given by sets of three components in the order (X, Y, Z). If the axis involved is a rotation axis, it is right handed, i.e. as one views the object to be rotated from the origin (the tail) of the unit vector, the rotation is clockwise. If a translation axis is specified, the directtion of the unit vecotr specifies the sense of positive translation. For simplicity, all rotations are given in degrees and all translation are given in mm. Axes may be dependent on one another. The X-axis is the only goniometer axis the direction of which is strictly connected to the hardware. All other axes are specified by the positions they would assume when the axes upon which they depend are at their zero points. When specifying detector axes, the axis is given to the beam center. The location of the beam center on the detector should be given in the DIFFRN_DETECTOR category in distortion-corrected mm from the (0,0) corner of the detector. ; _category.id axis _category.mandatory_code no loop_ _category_key.name '_axis.id' '_axis.equipment' loop_ _category_group.id 'inclusive_group' 'axis_group' 'diffrn_group' loop_ _category_examples.detail _catgeory-examples.case ; Example 1: This example show the axis specification of the axes of a kappa geometry goniometer (See "X-Ray Structure Deptermination, A Practical Guide", 2nd ed. by G. H. Stout, L. H. Jensen, Wiley Interscience, 1989, 453 pp, p 134.). There are three axies specified, and no offsets. The outermost axis, omega, is pointed along the X-axis. The next innermost axis, kappa, is at a 50 dgeree angle to the X-axis, pointed away from the source. The innermost axis, phi, aligns with the X-axis when omega and phi are at their zero-points. If T-omega, T-kappa and T-phi are the ttransormation matrixes derived from the axis settings, the complete transformation would be: x' = (T-omega) (T-kappa) (T-phi) x ; ; loop_ _axis.id _axis.type _axis.equipment _axis.depends_on _axis.vector[1] _axis.vector[2] _axis.vector[3] omega rotation goniometer . 1 0 0 kappa rotation goniometer omega -.64279 0 -.76604 phi rotation goniometer kappa 1 0 0 ; ; Example 2: This example show the axis specification of the axes of a detector, source and gravity. We have juggled the order as a reminder that the ordering of presentation of tokens is not significant. We have taken the center of rotation of the detector to be 68 millimeters in the direction away from the source. ; ; loop_ _axis.id _axis.type _axis.equipment _axis.depends_on _axis.vector[1] _axis.vector[2] _axis.vector[3] _axis.offset[1] _axis.offset[2] _axis.offset[3] source . source . 0 0 1 . . . gravity . gravity . 0 -1 0 . . . tranz translation detector rotz 0 0 1 0 0 -68 twotheta rotation detector . 1 0 0 . . . roty rotation detector twotheta 0 1 0 0 0 -68 rotz rotation detector roty 0 0 1 0 0 -68 ; save_ save__axis.id _item_description.description ; The value of _axis.id must uniquely identify each axis relevant to the experiment. Note that multiple pieces of equipment may share the same axis (e.g. a twotheta arm), so that the category key for AXIS also includes the equipment. ; loop_ _item.name _item.category_id _item.mandatory_code '_axis.id' axis yes '_diffrn_detector_axis.axis_id' diffrn_detector_axis yes '_diffrn_measurement_axis.axis_id' diffrn_measurment-axis yes _item_type.code code loop_ _item_linked.child_name _item_linked.parent_name '_axis.depends_on' '_axis.id' '_diffrn_detector_axis.axis_id' '_axis.id' '_diffrn_measurement_axis.axis_id' '_axis.id' save_ save__axis.type _item_description.description ; The value of _axis.type specifies the type of axis: rotation, translation (or general when the type is not relevant, as for gravity) ; _item.name '_axis.type' _item.category_id axis _item.mandatory_code no _item_type.code ucode _item_default.value general loop_ _item_enumeration.value _item_enumeration.detail rotation 'right-handed axis of rotation' translation 'translation in the direction of the axis' general 'axis for which the type is not relevant' save_ save__axis.equipment _item_description.description ; The value of _axis.type specifies the type of equipment using the axis: goniometer, detector, gravity, source or general ; _item.name '_axis.equipment' _item.category_id axis _item.mandatory_code no _item_type.code ucode _item_default.value general loop_ _item_enumeration.value _item_enumeration.detail goniometer 'equipment used to orient or position samples' detector 'equipment used to detect reflections' general 'equipment used for general purposes' gravity 'axis specifying the downward direction' source 'axis specifying the direction sample to source' save_ save__axis.depends_on _item_description.description ; The value of _axis.type specifies next next outermost axis upon which this axis depends. This item is a point to axis.id in the same category. ; _item.name '_axis.depends_on' _item.category_id axis _item.mandatory_code no save_ save__axis.vector[1] _item_description.description ; The [1] element of the 3 element vector used to specify the direction of a rotation or translation axis. The vector should be normalized to be a unit vector. ; _item.name '_axis.vector[1]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float save_ save__axis.vector[2] _item_description.description ; The [2] element of the 3 element vector used to specify the direction of a rotation or translation axis. The vector should be normalized to be a unit vector. ; _item.name '_axis.vector[2]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float save_ save__axis.vector[3] _item_description.description ; The [3] element of the 3 element vector used to specify the direction of a rotation or translation axis. The vector should be normalized to be a unit vector, and is dimensionless. ; _item.name '_axis.vector[3]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float save_ save__axis.offset[1] _item_description.description ; The [1] element of the 3 element vector used to specify the offset to the base of a rotation or translation axis. The vecotr is specified in millimeters ; _item.name '_axis.offset[1]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float _item_units.code mm save_ save__axis.offset[2] _item_description.description ; The [2] element of the 3 element vector used to specify the offset to the base of a rotation or translation axis. The vecotr is specified in millimeters ; _item.name '_axis.offset[2]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float _item_units.code mm save_ save__axis.offset[3] _item_description.description ; The [3] element of the 3 element vector used to specify the offset to the base of a rotation or translation axis. The vecotr is specified in millimeters ; _item.name '_axis.offset[3]' _item.category_id axis _item.mandatory_code no _item_default.value 0.0 _item_sub_category.id vector _item_type.code float _item_units.code mm save_ ################### # DIFFRN_DETECTOR # ################### save_DIFFRN_DETECTOR _category.description ; This category redefinition has been added to extend the key of the standard DIFFRN_DETECTOR category. ; _category.id diffrn_detector _category.mandatory_code no loop_ _category_key.name '_diffrn_detector.diffrn_id' '_diffrn_detector.id' loop_ _category_group.id 'inclusive_group' 'diffrn_group' save_ save__diffrn_detector.id _item_description.description ; The value of _diffrn_detector.id must uniquely identify each detector used to collect each diffraction data set. ; _item.name '_diffrn_detector.id' _item.category_id diffrn_detector _item.mandatory_code implicit _item_type.code code save_ # ######################## # DIFFRN_DETECTOR_AXIS # ######################## save_DIFFRN_DETECTOR_AXIS _category.description ; Data items in the DIFFRN_DETECTOR_AXIS category associates axes with detectors. ; _category.id diffrn_detector_axis _category.mandatory_code no loop_ _category_key.name '_diffrn_detector_axis.id' '_diffrn_detector_axis.axis_id' loop_ _category_group.id 'inclusive_group' 'diffrn_group' save_ save__diffrn_detector_axis.id _item_description.description ; This data item is a pointer to _diffrn_detector.id in the DIFFRN_DETECTOR category. ; _item.name '_diffrn_detector_axis.id' _item.category_id diffrn_detector_axis _item.mandatory_code yes _item_type.code code save_ save__diffrn_detector_axis.axis_id _item_description.description ; This data item is a pointer to _axis.id in the AXIS category. ; _item.name '_diffrn_detector_axis.axis_id' _item.category_id diffrn_detector_axis _item.mandatory_code yes _item_type.code code save_ ########################### # DIFFRN_MEASUREMENT_AXIS # ########################### save_DIFFRN_MEASUREMENT_AXIS _category.description ; Data items in the DIFFRN_MEASUREMENT_AXIS category associates axes with goniometers. ; _category.id diffrn_measurement_axis _category.mandatory_code no loop_ _category_key.name '_diffrn_measurement_axis.id' '_diffrn_measurement_axis.axis_id' loop_ _category_group.id 'inclusive_group' 'diffrn_group' save_ save__diffrn_measurement_axis.id _item_description.description ; This data item is a pointer to _diffrn_measurement.id in the DIFFRN_DETECTOR category. ; _item.name '_diffrn_measurement_axis.id' _item.category_id diffrn_measurement_axis _item.mandatory_code yes _item_type.code code save_ save__diffrn_detector_axis.axis_id _item_description.description ; This data item is a pointer to _axis.id in the AXIS category. ; _item.name '_diffrn_measurement_axis.axis_id' _item.category_id diffrn_measurement_axis _item.mandatory_code yes _item_type.code code save_ # ===================================================== **** BERNSTEIN + SONS * * INFORMATION SYSTEMS CONSULTANTS **** P.O. BOX 177, BELLPORT, NY 11713-0177 * * *** **** * Herbert J. Bernstein * *** yaya@bernstein-plus-sons.com *** * * *** 1-516-286-1339 FAX: 1-516-286-1999 =====================================================
Reply to: [list | sender only]
- Follow-Ups:
- Re: Base coordinate set for CBF, and Minimal headers. (J.W. Pflugrath)
- References:
- Base coordinate set for CBF, and Minimal headers. (Robert Sweet)
- Prev by Date: Re: Base coordinate set for CBF, and Minimal headers.
- Next by Date: Re: Base coordinate set for CBF, and Minimal headers.
- Prev by thread: Re: Base coordinate set for CBF, and Minimal headers.
- Next by thread: Re: Base coordinate set for CBF, and Minimal headers.
- Index(es):