00001 /* 00002 mtzdata.h: Definition of MTZ data structure. 00003 Copyright (C) 2001 CCLRC, Martyn Winn 00004 00005 This library is free software and is distributed under the terms and 00006 conditions of the CCP4 licence agreement as `Part 0' (Annex 2) 00007 software, which is version 2.1 of the GNU Lesser General Public 00008 Licence (LGPL) with the following additional clause: 00009 00010 `You may also combine or link a "work that uses the Library" to 00011 produce a work containing portions of the Library, and distribute 00012 that work under terms of your choice, provided that you give 00013 prominent notice with each copy of the work that the specified 00014 version of the Library is used in it, and that you include or 00015 provide public access to the complete corresponding 00016 machine-readable source code for the Library including whatever 00017 changes were used in the work. (i.e. If you make changes to the 00018 Library you must distribute those, but you do not need to 00019 distribute source or object code to those portions of the work 00020 not covered by this licence.)' 00021 00022 Note that this clause grants an additional right and does not impose 00023 any additional restriction, and so does not affect compatibility 00024 with the GNU General Public Licence (GPL). If you wish to negotiate 00025 other terms, please contact the maintainer. 00026 00027 You can redistribute it and/or modify the library under the terms of 00028 the GNU Lesser General Public License as published by the Free Software 00029 Foundation; either version 2.1 of the License, or (at your option) any 00030 later version. 00031 00032 This library is distributed in the hope that it will be useful, but 00033 WITHOUT ANY WARRANTY; without even the implied warranty of 00034 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00035 Lesser General Public License for more details. 00036 00037 You should have received a copy of the CCP4 licence and/or GNU 00038 Lesser General Public License along with this library; if not, write 00039 to the CCP4 Secretary, Daresbury Laboratory, Warrington WA4 4AD, UK. 00040 The GNU Lesser General Public can also be obtained by writing to the 00041 Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 00042 MA 02111-1307 USA 00043 */ 00044 00055 #ifndef __CMTZData__ 00056 #define __CMTZData__ 00057 00058 #define MTZVERSN "MTZ:V1.1" 00061 #define SIZE1 20 00062 #define MTZRECORDLENGTH 80 00063 #define MAXSPGNAMELENGTH 20 00065 #define NBATCHWORDS 185 00066 #define NBATCHINTEGERS 29 00067 #define NBATCHREALS 156 00069 #define MXTALS 100 00070 #define MSETS 1000 00071 #define MCOLUMNS 10000 00074 typedef struct { char label[31]; 00075 char type[3]; 00076 int active; 00077 unsigned int source; 00078 float min; 00079 float max; 00080 float *ref; 00081 } MTZCOL; 00082 00084 typedef struct { int setid; 00085 char dname[65]; 00086 float wavelength; 00087 int ncol; 00088 MTZCOL **col; 00089 } MTZSET; 00090 00092 typedef struct { int xtalid; 00093 char xname[65]; 00094 char pname[65]; 00095 float cell[6]; 00096 float resmin; 00097 float resmax; 00098 int nset; 00099 MTZSET **set; 00100 } MTZXTAL; 00101 00103 typedef struct bathead { int num; 00104 char title[71]; 00105 char gonlab[3][9]; 00106 int iortyp; 00108 int lbcell[6]; 00109 int misflg; 00110 int jumpax; 00112 int ncryst; 00113 int lcrflg; 00115 int ldtype; 00117 int jsaxs; 00118 int nbscal; 00120 int ngonax; 00121 int lbmflg; 00124 int ndet; 00126 int nbsetid; 00127 float cell[6]; 00128 float umat[9]; 00130 float phixyz[2][3]; 00132 float crydat[12]; 00133 float datum[3]; 00134 float phistt; 00135 float phiend; 00136 float scanax[3]; 00137 float time1; 00138 float time2; 00139 float bscale; 00140 float bbfac; 00141 float sdbscale; 00142 float sdbfac; 00143 float phirange; 00144 float e1[3]; 00146 float e2[3]; 00148 float e3[3]; 00150 float source[3]; 00151 float so[3]; 00152 float alambd; 00153 float delamb; 00154 float delcor; 00155 float divhd; 00156 float divvd; 00157 float dx[2]; 00158 float theta[2]; 00159 float detlm[2][2][2]; 00161 struct bathead *next; 00162 } MTZBAT; 00163 00165 typedef struct { int spcgrp; 00166 char spcgrpname[MAXSPGNAMELENGTH+1]; 00167 int nsym; 00168 float sym[192][4][4]; 00170 int nsymp; 00171 char symtyp; 00172 char pgname[11]; 00173 } SYMGRP; 00174 00175 typedef union { char amnf[4]; 00176 float fmnf; 00177 } MNF; 00178 00180 typedef struct { CCP4File *filein; 00181 CCP4File *fileout; 00182 char title[71]; 00183 char *hist; 00184 int histlines; 00185 int nxtal; 00186 int ncol_read; 00187 int nref; 00188 int nref_filein; 00189 int refs_in_memory; 00190 int n_orig_bat; 00191 float resmax_out; 00192 float resmin_out; 00193 MNF mnf; 00194 SYMGRP mtzsymm; 00195 MTZXTAL **xtal; 00196 MTZBAT *batch; 00197 MTZCOL *order[5]; 00198 } MTZ; 00199 00200 #endif