00001 /*
00002 ccp4_spg.h: Data structure for symmetry information
00003 Copyright (C) 2001 CCLRC, Martyn Winn
00004
00005 This code is distributed under the terms and conditions of the
00006 CCP4 Program Suite Licence Agreement as a CCP4 Library.
00007 A copy of the CCP4 licence can be obtained by writing to the
00008 CCP4 Secretary, Daresbury Laboratory, Warrington WA4 4AD, UK.
00009 */
00010
00022 #ifndef __CCP4_SPG__
00023 #define __CCP4_SPG__
00024 static char rcsidhsp[] = "$Id$";
00025
00026 #ifdef __cplusplus
00027 namespace CSym {
00028 extern "C" {
00029 #endif
00030
00031 /* Kevin's symmetry operator */
00032
00033 typedef struct ccp4_symop_
00034 {
00035 float rot[3][3];
00036 float trn[3];
00037 } ccp4_symop;
00038
00039 typedef struct ccp4_spacegroup_
00040 {
00041 int spg_num; /* true spacegroup number */
00042 int spg_ccp4_num; /* CCP4 spacegroup number */
00043 char symbol_Hall[40]; /* Hall symbol */
00044 char symbol_xHM[20]; /* Extended Hermann Mauguin symbol */
00045 char symbol_old[20]; /* old spacegroup name */
00046
00047 char point_group[20]; /* point group name */
00048 char crystal[20]; /* crystal system */
00049
00050 int nlaue; /* CCP4 Laue class number, inferred from asu_descr */
00051 char laue_name[20]; /* Laue class name */
00052 int laue_sampling[3]; /* sampling factors for FFT */
00053
00054 int npatt; /* Patterson spacegroup number, inferred from asu_descr */
00055 char patt_name[40]; /* Patterson spacegroup name */
00056
00057 int nsymop; /* total number of symmetry operations */
00058 int nsymop_prim; /* number of primitive symmetry operations */
00059 ccp4_symop *symop; /* symmetry matrices */
00060 ccp4_symop *invsymop; /* inverse symmetry matrices */
00061
00062 float chb[3][3]; /* change of basis matrix from file */
00063
00064 char asu_descr[80]; /* asu description from file */
00065 int (*asufn)(const int, const int, const int); /* pointer to ASU function */
00066
00067 int centrics[12]; /* symop which generates centric zone, 0 if none */
00068 int epsilon[13]; /* flag which epsilon zones are applicable */
00069
00070 char mapasu_zero_descr[80]; /* origin-based map asu: description from file */
00071 float mapasu_zero[3]; /* origin-based map asu: upper limits */
00072
00073 char mapasu_ccp4_descr[80]; /* CCP4 map asu: defaults to mapasu_zero */
00074 float mapasu_ccp4[3]; /* CCP4 map asu: upper limits */
00075
00076 } CCP4SPG;
00077
00078 #ifdef __cplusplus
00079 } }
00080 #endif
00081
00082 #endif