#include <stdio.h>#include <string.h>#include <stdlib.h>#include <unistd.h>#include <ctype.h>#include <sys/types.h>#include <sys/stat.h>#include <math.h>#include "marcif_header.h"#include "mar345_header.h"#include <cbf.h>#include <img.h>
Go to the source code of this file.
Defines | |
| #define | printe(x) printf("%s: %s: %s\n",prg,f,x) |
| #define | cbf_failnez(x) |
Functions | |
| int | GetCIFHeader (char *, char *, FILE *) |
| int | GetCIFData (char *, char *, FILE *, unsigned int *) |
| int | PutCIFData (char *, char *, char, unsigned int *) |
| int | PutCIFHeader (char *, char *) |
| MAR345_HEADER | CIF2mar345Header (char *) |
| void | mar3452CIFHeader (char *, char *, MAR345_HEADER) |
Variables | |
| int | verbose |
| static char | PRINT_AXIS = 0 |
| static char | PRINT_CHEMICAL = 0 |
| static int | cif_error = 0 |
| static CIF_HEADER | hcif |
| cbf_handle | cif = NULL |
| static size_t | cif_read = 0 |
| static int | cif_id = 0 |
| static int | cif_element_signed = 0 |
| static int | cif_element_unsigned = 0 |
| static int | cif_minelement = 0 |
| static int | cif_maxelement = 0 |
| static unsigned int | cif_compression = 0 |
| static size_t | cif_nelements = 0 |
| static size_t | cif_element_size = 0 |
| #define cbf_failnez | ( | x | ) |
{ int err; \
cif_error = 0; \
err = (x); \
if (err) { \
if ( verbose > 1 ) \
fprintf(stdout,"CBFlib error %d\n",err); \
cif_error=err; \
} \
}
Definition at line 38 of file marcif.c.
Referenced by GetCIFData(), GetCIFHeader(), PutCIFData(), and PutCIFHeader().
| #define printe | ( | x | ) | printf("%s: %s: %s\n",prg,f,x) |
Definition at line 36 of file marcif.c.
Referenced by GetCIFData(), and GetCIFHeader().
| MAR345_HEADER CIF2mar345Header | ( | char * | prg | ) |
Definition at line 791 of file marcif.c.
References MARIP_ADC::add_channel_a, MARIP_ADC::add_channel_b, DIFFRN_SCAN_FRAME_AXIS::angle, MARIP_AXIS::angle_end, DIFFRN_SCAN_AXIS::angle_increment, DIFFRN_SCAN_AXIS::angle_start, MARIP_AXIS::angle_start, CIF_HEADER::array_element_size, CIF_HEADER::array_intensities, CIF_HEADER::array_structure_list, CIF_HEADER::audit, MARIP_EXPOSURE_DOSE::avg, AXIS_CHI, AXIS_DISTANCE, AXIS_OMEGA, AXIS_PHI, AXIS_THETA, DIFFRN_DETECTOR_ELEMENT::center_x, DIFFRN_DETECTOR_ELEMENT::center_y, MARIP_ADC::channel_a, MARIP_ADC::channel_b, AUDIT::creation_date, DIFFRN_SOURCE::current, CIF_HEADER::diffrn_detector_element, CIF_HEADER::diffrn_detector_mar_adc, CIF_HEADER::diffrn_detector_mar_axis, CIF_HEADER::diffrn_detector_mar_data, CIF_HEADER::diffrn_detector_mar_exposure, CIF_HEADER::diffrn_detector_mar_exposure_dose, CIF_HEADER::diffrn_detector_mar_gaps, CIF_HEADER::diffrn_detector_mar_scan, CIF_HEADER::diffrn_radiation, CIF_HEADER::diffrn_radiation_wavelength, CIF_HEADER::diffrn_scan_axis, CIF_HEADER::diffrn_scan_frame_axis, CIF_HEADER::diffrn_source, ARRAY_STRUCTURE_LIST::dimension, DIFFRN_SCAN_FRAME_AXIS::displacement, MARIP_AXIS::displacement, CIF_HEADER::element_id, MARIP_EXPOSURE_DOSE::end, MARIP_EXPOSURE_DOSE::esd, ARRAY_INTENSITIES::gain, MARIP_ADC::gain, MARIP_GAPS::gap, h345, MARIP_DATA::histogram_end, MARIP_DATA::histogram_max, MARIP_DATA::histogram_start, i, MARIP_DATA::intensity_avg, MARIP_DATA::intensity_esd, MARIP_DATA::intensity_max, MARIP_DATA::intensity_min, j, CIF_HEADER::mar_id, MARIP_EXPOSURE_DOSE::max, MARIP_EXPOSURE_DOSE::measurements, MARIP_EXPOSURE_DOSE::min, DIFFRN_RADIATION::monochromator, MARIP_ADC::multiplier, MARIP_SCAN::number_of_pixels, MARIP_SCAN::number_of_pixels_larger_16_bit, MARIP_AXIS::oscillations, MARIP_SCAN::pixel_height, MARIP_SCAN::pixel_length, ARRAY_ELEMENT_SIZE::pixelsize, DIFFRN_RADIATION_WAVELENGTH::polarisn_ratio, MARIP_SCAN::radial_offset, ARRAY_INTENSITIES::scaling, MARIP_SCAN::scanmode, DIFFRN_SOURCE::source, MARIP_EXPOSURE_DOSE::start, MARIP_SCAN::tangential_offset, MARIP_EXPOSURE::time, MARIP_EXPOSURE::type, DIFFRN_SOURCE::voltage, and DIFFRN_RADIATION_WAVELENGTH::wavelength.
{
char *c,*d, *sval;
int i,j,k;
MAR345_HEADER h345;
/* Defaults ... */
memset( (char *)&h345, 0, sizeof(MAR345_HEADER) );
h345.wave = hcif.diffrn_radiation_wavelength.wavelength;
h345.byteorder = 1234;
h345.format = 1;
/* Center of detector ... */
h345.xcen = hcif.diffrn_detector_element.center_x;
h345.ycen = hcif.diffrn_detector_element.center_y;
/* Serial number may be stored in element_id ... */
if ( (sval=strchr( hcif.element_id, '_' )) != NULL ) {
i=sscanf( sval+1, "%d", &k);
if ( i==1 )
h345.scanner = k;
}
/* Has this CBF been created by mar software ? ... */
if ( strlen( hcif.mar_id ) ) {
/* Axis setting */
h345.phibeg = hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_start;
h345.phiend = hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_end;
h345.phiosc = hcif.diffrn_detector_mar_axis[AXIS_PHI].oscillations;
h345.omebeg = hcif.diffrn_detector_mar_axis[AXIS_OMEGA].angle_start;
h345.omeend = hcif.diffrn_detector_mar_axis[AXIS_OMEGA].angle_end;
h345.omeosc = hcif.diffrn_detector_mar_axis[AXIS_OMEGA].oscillations;
h345.dist = hcif.diffrn_detector_mar_axis[AXIS_DISTANCE].displacement;
h345.theta = hcif.diffrn_detector_mar_axis[AXIS_THETA].angle_end;
h345.chi = hcif.diffrn_detector_mar_axis[AXIS_CHI].angle_end;
h345.time = hcif.diffrn_detector_mar_exposure.time;
/* Internals ... */
h345.multiplier = hcif.diffrn_detector_mar_adc.multiplier;
h345.gain = hcif.diffrn_detector_mar_adc.gain;
h345.adc_A = hcif.diffrn_detector_mar_adc.channel_a;
h345.adc_B = hcif.diffrn_detector_mar_adc.channel_b;
h345.add_A = hcif.diffrn_detector_mar_adc.add_channel_a;
h345.add_B = hcif.diffrn_detector_mar_adc.add_channel_b;
h345.roff = hcif.diffrn_detector_mar_scan.radial_offset;
h345.toff = hcif.diffrn_detector_mar_scan.tangential_offset;
/* Image descriptors */
h345.pixel_height = hcif.diffrn_detector_mar_scan.pixel_height;
h345.pixel_length = hcif.diffrn_detector_mar_scan.pixel_length;
h345.size = hcif.diffrn_detector_mar_scan.scanmode;
h345.pixels = hcif.diffrn_detector_mar_scan.number_of_pixels;
h345.high = hcif.diffrn_detector_mar_scan.number_of_pixels_larger_16_bit;
/* Exposure dose statistics */
h345.dosebeg = hcif.diffrn_detector_mar_exposure_dose.start;
h345.doseend = hcif.diffrn_detector_mar_exposure_dose.end;
h345.dosemin = hcif.diffrn_detector_mar_exposure_dose.min;
h345.dosemax = hcif.diffrn_detector_mar_exposure_dose.max;
h345.doseavg = hcif.diffrn_detector_mar_exposure_dose.avg;
h345.dosesig = hcif.diffrn_detector_mar_exposure_dose.esd;
h345.dosen = hcif.diffrn_detector_mar_exposure_dose.measurements;
/* Image statistics */
h345.valmin = hcif.diffrn_detector_mar_data.intensity_min;
h345.valmax = hcif.diffrn_detector_mar_data.intensity_max;
h345.valavg = hcif.diffrn_detector_mar_data.intensity_avg;
h345.valsig = hcif.diffrn_detector_mar_data.intensity_esd;
h345.histbeg = hcif.diffrn_detector_mar_data.histogram_start;
h345.histend = hcif.diffrn_detector_mar_data.histogram_end;
h345.histmax = hcif.diffrn_detector_mar_data.histogram_max;
/* Gaps */
for (i=0;i<8;i++) {
h345.gap[i] = hcif.diffrn_detector_mar_gaps.gap[i];
}
/* Type of exposure: DOSE or TIME */
if ( strstr( hcif.diffrn_detector_mar_exposure.type, "dose" ) )
h345.mode = 0;
else
h345.mode = 1;
/* Serial number is stored in diffrn_detector_mar_id ... */
if ( (sval=strchr( hcif.mar_id, '_' )) != NULL ) {
i=sscanf( sval+1, "%d", &k);
if ( i==1 )
h345.scanner = k;
}
}
/* So this CBF has not been created by mar software ... */
/* Some parameters may have been guessed ...*/
else {
/* Axis setting */
h345.phibeg = hcif.diffrn_scan_axis[AXIS_PHI].angle_start;
h345.phiend = h345.phibeg + hcif.diffrn_scan_axis[AXIS_PHI].angle_increment;
h345.phiosc = 1;
h345.omebeg = hcif.diffrn_scan_axis[AXIS_OMEGA].angle_start;
h345.omeend = h345.omebeg + hcif.diffrn_scan_axis[AXIS_OMEGA].angle_increment;
h345.omeosc = 0;
/* Distance is in m, so divide by 1000 to get mm */
h345.dist = hcif.diffrn_scan_frame_axis[AXIS_DISTANCE].displacement;
h345.theta = hcif.diffrn_scan_frame_axis[AXIS_THETA].angle;
h345.chi = hcif.diffrn_scan_frame_axis[AXIS_CHI].angle;
/* Image descriptors */
h345.pixel_height = hcif.array_element_size.pixelsize[0];
h345.pixel_length = hcif.array_element_size.pixelsize[1];
h345.size = hcif.array_structure_list[0].dimension;
h345.pixels = h345.size*h345.size;
h345.multiplier = hcif.array_intensities.scaling;
h345.gain = hcif.array_intensities.gain;
h345.mode = 1; /* Time mode = default */
/* Serial number is stored in element_id ... */
if ( (sval=strchr( hcif.element_id, '_' )) != NULL ) {
i=sscanf( sval+1, "%d", &k);
if ( i==1 )
h345.scanner = k;
}
}
/* Make sure pixesize is in microm */
i=0;
while (h345.pixel_height < 1.f) { /* Pixelsize in micron */
h345.pixel_height *= 1000.;
h345.pixel_length *= 1000.;
i++;
if (i==6) break;
}
/* Convert distance from m to mm */
if ( h345.dist < 0.1 ) h345.dist *= 1000.;
/* Convert IP-center from mm to pixels */
if ( h345.pixel_height > 0.01 ) {
h345.xcen /= ( h345.pixel_height/1000. );
h345.ycen /= ( h345.pixel_height/1000. );
}
/* Generator setup */
strcpy( h345.source, hcif.diffrn_source.source);
h345.kV = hcif.diffrn_source.voltage;
h345.mA = hcif.diffrn_source.current;
/* Beam setup */
strcpy( h345.filter, hcif.diffrn_radiation.monochromator);
h345.polar = hcif.diffrn_radiation_wavelength.polarisn_ratio;
strcpy( h345.date, hcif.audit.creation_date);
return h345;
}
| int GetCIFData | ( | char * | prg, |
| char * | f, | ||
| FILE * | fp, | ||
| unsigned int * | i4_img | ||
| ) |
Definition at line 1880 of file marcif.c.
References CIF_HEADER::array_id, cbf_failnez, cbf_find_category(), cbf_find_column(), cbf_find_row(), cbf_free_handle(), cbf_get_integerarray(), cbf_get_integerarrayparameters(), cbf_rewind_datablock(), cif_compression, cif_element_signed, cif_element_size, cif_element_unsigned, cif_error, cif_id, cif_maxelement, cif_minelement, cif_nelements, cif_read, printe, and verbose.
{
cif_read = 0;
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "array_data"))
if ( cif_error ) {
printe("Cannot find category: array_data");
goto CIF_END;
}
cbf_failnez (cbf_find_column (cif, "array_id"))
cbf_failnez (cbf_find_row (cif, hcif.array_id))
cbf_failnez (cbf_find_column (cif, "data"))
cbf_failnez (cbf_get_integerarrayparameters(
cif,
&cif_compression,
&cif_id,
&cif_element_size,
&cif_element_signed,
&cif_element_unsigned,
&cif_nelements,
&cif_minelement,
&cif_maxelement))
if ( cif_error ) {
printe("Cannot get data array parameters");
goto CIF_END;
}
cbf_failnez (cbf_get_integerarray (
cif,
&cif_id,
(void *)i4_img,
cif_element_size,
cif_element_signed,
cif_nelements,
&cif_read))
if ( cif_error ) {
printe("Cannot read data array");
goto CIF_END;
}
CIF_END:
if ( verbose > 1 ) {
printf("\n");
printf(" Identifier :\t %11d\n",cif_id);
printf(" Compression :\t %11d\n",cif_compression);
printf(" Elements: :\t %11d\n",cif_nelements);
printf(" Min. element :\t %11d\n",cif_minelement);
printf(" Max. element :\t %11d\n",cif_maxelement);
printf(" Element size :\t %11d\n",cif_element_size);
printf(" Signed :\t %11d\n",cif_element_signed);
printf(" Unsigned :\t %11d\n",cif_element_unsigned);
printf(" Elements read:\t %11d\n",cif_read);
}
/* Free the cbf */
cbf_failnez (cbf_free_handle (cif))
/* Input file has been closed my cbf_free_handle! */
fp = NULL;
return cif_read;
}
| int GetCIFHeader | ( | char * | prg, |
| char * | f, | ||
| FILE * | fp | ||
| ) |
Definition at line 93 of file marcif.c.
References AXIS_DISTANCE, AXIS_PHI, cbf_failnez, cbf_find_category(), cbf_find_column(), cbf_find_nextrow(), cbf_get_doublevalue(), cbf_get_integervalue(), cbf_get_value(), cbf_make_handle(), cbf_read_file(), cbf_rewind_datablock(), cbf_rewind_row(), cif_error, i, MSG_DIGEST, N_SCAN_AXES, N_SCAN_FRAME_AXES, printe, str, and verbose.
{
const char *sval;
float fval;
double dval;
int ival;
int i;
char str[64];
char *axis_name[] = {"phi", "omega",
"chi", "2-theta",
"distance", "z-axis",
"slit_1_hor", "slit_1_ver",
"slit_2_hor", "slit_2_ver",
"trans_hor", "trans_ver",
"rot_hor", "rot_ver",
"beamstop" };
char axis[16] = {""};
rewind( fp );
/* Initialize CIF Header */
memset( (char *)&hcif, 0, sizeof(CIF_HEADER) );
cbf_failnez (cbf_make_handle (&cif))
if ( cif_error ) {
printe("Cannot create handle for CIF input");
return 0;
}
cbf_failnez (cbf_read_file (cif, fp, MSG_DIGEST))
cbf_failnez (cbf_rewind_datablock (cif))
/************************************************************
* Category MARIP
************************************************************/
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar"))
if ( cif_error ) {
printe("Cannot find category: diffrn_detector_mar");
goto CIF_MARIP_GAPS;
}
cbf_failnez (cbf_find_column (cif, "id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.mar_id, sval);
}
/************************************************************
* Category MARIP_GAPS
************************************************************/
CIF_MARIP_GAPS:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_gaps"))
if ( !cif_error ) {
for (i=0;i<8;i++) {
sprintf(str, "gap[%d]",i+1);
cbf_failnez (cbf_find_column (cif, str))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_gaps.gap[i] = ival;
}
cbf_failnez (cbf_rewind_row (cif))
}
}
/************************************************************
* Category MARIP_EXPOSURE
************************************************************/
CIF_MARIP_EXPOSURE:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_exposure"))
if ( cif_error ) goto CIF_MARIP_AXIS;
cbf_failnez (cbf_find_column (cif, "type"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.diffrn_detector_mar_exposure.type, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "time"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_exposure.time = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "dose"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_exposure.dose = (float)dval;
}
/************************************************************
* Category MARIP_AXIS
************************************************************/
CIF_MARIP_AXIS:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_axis"))
if ( cif_error ) goto CIF_MARIP_EXPOSURE_DOSE;
cbf_failnez (cbf_find_column (cif, "mar_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.mar_id, sval);
}
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
while (cbf_find_nextrow (cif, hcif.mar_id) == 0) {
cbf_failnez (cbf_find_column (cif, "axis_id"))
if ( cif_error ) break;
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( axis, axis_name[i] );
if ( !strcmp( sval, axis ) ) {
cbf_failnez (cbf_find_column (cif, "angle_start"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_axis[i].angle_start=(float)dval;
}
cbf_failnez (cbf_find_column (cif, "angle_end"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_axis[i].angle_end=(float)dval;
}
cbf_failnez (cbf_find_column (cif, "angle_increment"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_axis[i].angle_increment=(float)dval;
}
cbf_failnez (cbf_find_column (cif, "oscillations"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_axis[i].oscillations = ival;
}
cbf_failnez (cbf_find_column (cif, "displacement"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_axis[i].displacement=(float)dval;
}
}
cbf_failnez (cbf_find_column (cif, "mar_id"))
}
cbf_failnez (cbf_rewind_row (cif))
}
/************************************************************
* Category MARIP_EXPOSURE_DOSE
************************************************************/
CIF_MARIP_EXPOSURE_DOSE:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_exposure_dose"))
if ( cif_error ) goto CIF_MARIP_SCAN;
cbf_failnez (cbf_find_column (cif, "start"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.start = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "end"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue(cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.end = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "min"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue(cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.min = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "max"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue(cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.max= (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "avg"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue(cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.avg = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "esd"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue(cif, &dval))
hcif.diffrn_detector_mar_exposure_dose.esd = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "measurements"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_exposure_dose.measurements = ival;
}
/************************************************************
* Category MARIP_EXPOSURE_SCAN
************************************************************/
CIF_MARIP_SCAN:
cbf_failnez (cbf_rewind_datablock (cif))
if ( cif_error ) goto CIF_MARIP_ADC;
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_scan"))
cbf_failnez (cbf_find_column (cif, "scanmode"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_scan.scanmode = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "number_of_pixels"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_scan.number_of_pixels = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "number_of_pixels_larger_16_bit"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_scan.number_of_pixels_larger_16_bit = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "pixel_height"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_scan.pixel_height = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "pixel_length"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_scan.pixel_length = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "radial_offset"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_scan.radial_offset = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "tangential_offset"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_scan.tangential_offset= (float)dval;
}
/************************************************************
* Category MARIP_ADC
************************************************************/
CIF_MARIP_ADC:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_adc"))
if ( cif_error ) goto CIF_MARIP_DATA;
cbf_failnez (cbf_find_column (cif, "channel_a"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_adc.channel_a = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "channel_b"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_adc.channel_b = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "add_channel_a"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_adc.add_channel_a = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "add_channel_b"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_adc.add_channel_b = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "oversampling"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_adc.oversampling = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "multiplier"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_adc.multiplier = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "gain"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_adc.gain = (float)dval;
}
/************************************************************
* Category MARIP_DATA
************************************************************/
CIF_MARIP_DATA:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_mar_data"))
if ( cif_error ) goto CIF_DIFFRN_FRAME_DATA;
cbf_failnez (cbf_find_column (cif, "intensity_avg"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_data.intensity_avg = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "intensity_esd"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_mar_data.intensity_esd = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "intensity_min"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_data.intensity_min = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "intensity_max"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_data.intensity_max = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "histogram_start"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_data.histogram_start = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "histogram_end"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_data.histogram_end = ival;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "histogram_max"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &ival))
hcif.diffrn_detector_mar_data.histogram_max = ival;
}
/************************************************************
* Category DIFFRN_FRAME_DATA
************************************************************/
CIF_DIFFRN_FRAME_DATA:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_frame_data"))
if ( cif_error ) {
printe("Cannot find category: diffrn_frame_data ");
goto CIF_DIFFRN_DETECTOR_ELEMENT;
}
cbf_failnez (cbf_find_column (cif, "array_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.array_id, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.data_id, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "detector_element_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.element_id, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "binary_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_integervalue (cif, &hcif.binary_id))
}
/************************************************************
* Category DIFFRN_DETECTOR_ELEMENT
************************************************************/
CIF_DIFFRN_DETECTOR_ELEMENT:
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "diffrn_detector_element"))
if ( cif_error )goto CIF_ARRAY_STRUCTURE_LIST;
cbf_failnez (cbf_find_column (cif, "center[1]"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_element.center_x = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "center[2]"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_detector_element.center_y = (float)dval;
}
/************************************************************
* Category ARRAY_STRUCTURE_LIST
************************************************************/
CIF_ARRAY_STRUCTURE_LIST:
/* Get the image dimensions (2nd = fast, 1st = slow) */
cbf_failnez (cbf_rewind_datablock (cif))
cbf_failnez (cbf_find_category (cif, "array_structure_list"))
if ( cif_error ) goto CIF_ARRAY_ELEMENT_SIZE;
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "array_id"))
i=0;
while (cbf_find_nextrow (cif, hcif.array_id) == 0) {
cbf_failnez (cbf_find_column (cif, "precedence"))
cbf_failnez (cbf_get_integervalue (cif, &hcif.array_structure_list[i].precedence))
if ( hcif.array_structure_list[i].precedence >= 1 &&
hcif.array_structure_list[i].precedence <= 2) {
cbf_failnez (cbf_find_column (cif, "dimension"))
cbf_failnez (cbf_get_integervalue (cif,
&hcif.array_structure_list[2-hcif.array_structure_list[i].precedence].dimension))
}
else {
printe("Cannot find CIF dimensions");
return 0;
}
i++;
if ( i == 2 ) break;
cbf_failnez (cbf_find_column (cif, "array_id"))
}
if ( hcif.array_structure_list[0].dimension*hcif.array_structure_list[1].dimension == 0 ) {
printe("Something wrong with CIF dimensions");
return 0;
}
/************************************************************
* Category ARRAY_ELEMENT_SIZE
************************************************************/
CIF_ARRAY_ELEMENT_SIZE:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "array_element_size"))
if ( cif_error ) {
printe("Cannot find category: array_element_size");
goto CIF_DIFFRN_RADIATION;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "array_id"))
i = 0;
while (cbf_find_nextrow (cif, hcif.array_id) == 0) {
cbf_failnez (cbf_find_column (cif, "size"))
cbf_failnez (cbf_get_doublevalue (cif, &dval))
if ( !cif_error )
hcif.array_element_size.pixelsize[i] = (float)dval;
cbf_failnez (cbf_find_column (cif, "array_id"))
i++;
if ( i == 2 ) break;
}
/************************************************************
* Category DIFFRN_RADIATION
************************************************************/
CIF_DIFFRN_RADIATION:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_radiation"))
if ( cif_error ) goto CIF_DIFFRN_RADIATION_WAVELENGTH;
cbf_failnez (cbf_find_column (cif, "monochromator"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.diffrn_radiation.monochromator, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "wavelength"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_radiation_wavelength.wavelength = (float)dval;
}
/************************************************************
* Category DIFFRN_RADIATION_WAVELENGTH
************************************************************/
CIF_DIFFRN_RADIATION_WAVELENGTH:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_radiation_wavelength"))
if ( cif_error ) goto CIF_DIFFRN_MEASUREMENT;
cbf_failnez (cbf_find_column (cif, "wavelength"))
if ( cif_error ) {
printe("Cannot find data item: wavelength");
goto CIF_DIFFRN_MEASUREMENT;
}
else {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_radiation_wavelength.wavelength = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "polarisn_ratio"))
if ( !cif_error ) {
hcif.diffrn_radiation_wavelength.polarisn_ratio = (float)dval;
}
/************************************************************
* Category DIFFRN_MEASUREMENT
************************************************************/
CIF_DIFFRN_MEASUREMENT:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_measurement"))
if ( cif_error ) {
printe("Cannot find category: diffrn_measurement");
goto CIF_DIFFRN_SOURCE;
}
cbf_failnez (cbf_find_column (cif, "sample_detector_distance"))
if ( cif_error == 0 ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_measurement.sample_detector_distance = (float)dval;
}
/************************************************************
* Category DIFFRN_SOURCE
************************************************************/
CIF_DIFFRN_SOURCE:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_source"))
if ( cif_error ) goto CIF_DIFFRN_SCAN_FRAME_AXIS;
cbf_failnez (cbf_find_column (cif, "source"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.diffrn_source.source, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "type"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.diffrn_source.type, sval);
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "current"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_source.current = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "voltage"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_source.voltage = (float)dval;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "power"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_source.power = (float)dval;
}
/************************************************************
* Category DIFFRN_SCAN_FRAME_AXIS
************************************************************/
CIF_DIFFRN_SCAN_FRAME_AXIS:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_scan_frame_axis"))
if ( cif_error ) {
printe("Cannot find category: diffrn_scan_frame_axis");
goto CIF_DIFFRN_SCAN;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "scan_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.scan_id, sval);
}
for ( i=0; i<N_SCAN_FRAME_AXES; i++ ) {
while (cbf_find_nextrow (cif, hcif.scan_id) == 0) {
cbf_failnez (cbf_find_column (cif, "axis_id"))
if ( cif_error ) break;
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( axis, axis_name[i] );
if ( !strcmp( sval, axis ) ) {
cbf_failnez (cbf_find_column (cif, "angle"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_scan_frame_axis[i].angle=(float)dval;
}
cbf_failnez (cbf_find_column (cif, "displacement"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_scan_frame_axis[i].displacement=(float)dval;
}
}
cbf_failnez (cbf_find_column (cif, "scan_id"))
}
cbf_failnez (cbf_rewind_row (cif))
}
/************************************************************
* Category DIFFRN_SCAN + DIFFRN+SCAN_AXIS
************************************************************/
CIF_DIFFRN_SCAN:
cbf_failnez (cbf_rewind_datablock(cif))
cbf_failnez (cbf_find_category (cif, "diffrn_scan_axis"))
if ( cif_error ) {
printe("Cannot find category: diffrn_scan_axis");
goto CIF_CAT4;
}
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_find_column (cif, "scan_id"))
if ( !cif_error ) {
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( hcif.scan_id, sval);
}
for ( i=0; i<N_SCAN_AXES; i++ ) {
while (cbf_find_nextrow (cif, hcif.scan_id) == 0) {
cbf_failnez (cbf_find_column (cif, "axis_id"))
if ( cif_error ) break;
cbf_failnez (cbf_get_value (cif, &sval))
strcpy( axis, axis_name[i] );
if ( !strcmp( sval, axis ) ) {
cbf_failnez (cbf_find_column (cif, "angle_start"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_scan_axis[i].angle_start=(float)dval;
}
cbf_failnez (cbf_find_column (cif, "angle_increment"))
if ( !cif_error ) {
cbf_failnez (cbf_get_doublevalue (cif, &dval))
hcif.diffrn_scan_axis[i].angle_increment=(float)dval;
}
}
cbf_failnez (cbf_find_column (cif, "scan_id"))
}
cbf_failnez (cbf_rewind_row (cif))
}
/************************************************************
* Category ARRAY_DATA
************************************************************/
CIF_CAT4:
CIF_END:
if ( verbose > 1 ) {
printf("%s: CIF-Header values:\n",prg);
printf(" Pixels :\t %d x %d\n",hcif.array_structure_list[0].dimension,hcif.array_structure_list[1].dimension);
printf(" Pixelsize :\t %11.6f [m]\n",hcif.array_element_size.pixelsize[0]);
if ( strlen( hcif.mar_id ) ) {
printf(" Distance :\t %11.3f [mm ]\n",hcif.diffrn_detector_mar_axis[AXIS_DISTANCE].displacement);
printf(" PHI-start :\t %11.3f [deg]\n",hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_start);
printf(" Delta-PHI :\t %11.3f [deg]\n",hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_increment);
}
else {
printf(" Distance :\t %11.6f [m]\n",hcif.diffrn_scan_frame_axis[AXIS_DISTANCE].displacement);
printf(" Wavelength :\t %11.6f [Ang]\n",hcif.diffrn_radiation_wavelength.wavelength);
printf(" PHI-start :\t %11.3f [deg]\n",hcif.diffrn_scan_axis[AXIS_PHI].angle_start);
printf(" Delta-PHI :\t %11.3f [deg]\n",hcif.diffrn_scan_axis[AXIS_PHI].angle_increment);
}
printf(" Wavelength :\t %11.6f [Ang]\n",hcif.diffrn_radiation_wavelength.wavelength);
}
return 1;
}
| void mar3452CIFHeader | ( | char * | prg, |
| char * | f, | ||
| MAR345_HEADER | h345 | ||
| ) |
Definition at line 1613 of file marcif.c.
References MAR345_HEADER::adc_A, MAR345_HEADER::adc_B, MAR345_HEADER::add_A, MAR345_HEADER::add_B, AXIS_CHI, AXIS_DISTANCE, AXIS_OMEGA, AXIS_PHI, AXIS_THETA, MAR345_HEADER::chi, MAR345_HEADER::date, MAR345_HEADER::dist, MAR345_HEADER::doseavg, MAR345_HEADER::dosebeg, MAR345_HEADER::doseend, MAR345_HEADER::dosemax, MAR345_HEADER::dosemin, MAR345_HEADER::dosen, MAR345_HEADER::dosesig, MAR345_HEADER::filter, MAR345_HEADER::gain, MAR345_HEADER::gap, MAR345_HEADER::high, MAR345_HEADER::histbeg, MAR345_HEADER::histend, MAR345_HEADER::histmax, i, MAR345_HEADER::kV, MAR345_HEADER::mA, MAR345_HEADER::mode, MAR345_HEADER::multiplier, now, MAR345_HEADER::omebeg, MAR345_HEADER::omeend, MAR345_HEADER::omeosc, MAR345_HEADER::phibeg, MAR345_HEADER::phiend, MAR345_HEADER::phiosc, MAR345_HEADER::pixel_height, MAR345_HEADER::pixel_length, MAR345_HEADER::pixels, MAR345_HEADER::polar, MAR345_HEADER::roff, MAR345_HEADER::scanner, MAR345_HEADER::size, MAR345_HEADER::source, str, MAR345_HEADER::theta, MAR345_HEADER::time, MAR345_HEADER::toff, MAR345_HEADER::valavg, MAR345_HEADER::valmax, MAR345_HEADER::valmin, MAR345_HEADER::valsig, MAR345_HEADER::wave, MAR345_HEADER::xcen, and MAR345_HEADER::ycen.
Referenced by MarXF::output_image().
{
char *c,str[64],num[16];
int i;
float pixelsize;
time_t now;
time( &now );
/* Initialize CIF Header */
memset( (char *)&hcif, 0, sizeof(CIF_HEADER) );
pixelsize = h345.pixel_height;
if ( pixelsize > 1.0 ) pixelsize /= 1000.;
hcif.binary_id = 1;
strcpy(hcif.entry_id, "img1");
strcpy(hcif.scan_id, "scan1");
strcpy(hcif.array_id, "img1");
strcpy(hcif.crystal_id, "xtal1");
sprintf(str, "SN_%03d",h345.scanner);
strcpy(hcif.element_id, str);
strcpy(hcif.mar_id, str);
strcpy(hcif.diffrn_id, "diffrn1");
strcpy(hcif.data_id, "data1");
strcpy(hcif.detector_id, "mar345");
strcpy(hcif.frame_id, "frm1");
sprintf(str, "%s",(char *)ctime( &now ) );
str[ strlen( str ) -1 ] = '\0';
if ( strlen( h345.date ) > 5 )
strcpy(hcif.audit.creation_date, h345.date);
else
strcpy(hcif.audit.creation_date, str);
sprintf(str, "Created by %s", prg);
strcpy(hcif.audit.creation_method, str);
strcpy(hcif.diffrn_radiation.detector, "Image Plate");
strcpy(hcif.diffrn_radiation.collimation, "double slits");
strcpy(hcif.diffrn_radiation.monochromator, h345.filter);
hcif.diffrn_radiation_wavelength.polarisn_ratio = h345.polar;
hcif.diffrn_radiation_wavelength.polarisn_norm = 0.0;
hcif.diffrn_radiation_wavelength.wavelength = h345.wave;
hcif.diffrn_radiation_wavelength.wavelength_wt = 1.0;
if ( strlen( h345.source ) )
strcpy(hcif.diffrn_source.source, h345.source);
else
strcpy(hcif.diffrn_source.source, "unknown");
strcpy(hcif.diffrn_source.type, "unknown");
hcif.diffrn_source.current = h345.mA;
hcif.diffrn_source.voltage = h345.kV;
hcif.diffrn_source.power = h345.kV*h345.mA;
strcpy(hcif.array_structure.compression_type, "x-CBF_PACKED");
strcpy(hcif.array_structure.encoding_type, "unsigned 32-bit integer");
strcpy(hcif.array_structure.byte_order, "little_endian");
hcif.array_structure_list[0].dimension = h345.size;
hcif.array_structure_list[1].dimension = h345.size;
hcif.array_structure_list[0].index = 1;
hcif.array_structure_list[1].index = 2;
hcif.array_structure_list[0].precedence = 2;
hcif.array_structure_list[1].precedence = 1;
strcpy(hcif.array_structure_list[0].direction, "increasing");
strcpy(hcif.array_structure_list[1].direction, "increasing");
hcif.array_element_size.pixelsize[0] = pixelsize/1000.;
hcif.array_element_size.pixelsize[1] = pixelsize/1000.;
hcif.array_element_size.index[0] = 1;
hcif.array_element_size.index[1] = 2;
hcif.array_intensities.gain = h345.gain;
hcif.array_intensities.overload = 250000;
hcif.array_intensities.undefined_value = 999999;
strcpy(hcif.array_intensities.linearity, "linear");
hcif.array_intensities.offset = 0;
hcif.array_intensities.scaling = h345.multiplier;
strcpy(hcif.axis[AXIS_PHI].id, "phi" );
strcpy(hcif.axis[AXIS_PHI].type, "rotation" );
strcpy(hcif.axis[AXIS_PHI].equipment, "detector" );
strcpy(hcif.axis[AXIS_PHI].depends_on, "." );
hcif.axis[AXIS_PHI].vector[0] = 1.0;
hcif.axis[AXIS_PHI].vector[1] = 0.0;
hcif.axis[AXIS_PHI].vector[2] = 0.0;
strcpy(hcif.axis[AXIS_OMEGA].id, "omega" );
strcpy(hcif.axis[AXIS_OMEGA].type, "rotation" );
strcpy(hcif.axis[AXIS_OMEGA].equipment, "detector" );
strcpy(hcif.axis[AXIS_OMEGA].depends_on, "." );
hcif.axis[AXIS_OMEGA].vector[0] = 0.0;
hcif.axis[AXIS_OMEGA].vector[1] = 1.0;
hcif.axis[AXIS_OMEGA].vector[2] = 0.0;
strcpy(hcif.axis[AXIS_CHI].id, "chi" );
strcpy(hcif.axis[AXIS_CHI].type, "rotation" );
strcpy(hcif.axis[AXIS_CHI].equipment, "detector" );
strcpy(hcif.axis[AXIS_CHI].depends_on, "." );
hcif.axis[AXIS_CHI].vector[0] = 0.0;
hcif.axis[AXIS_CHI].vector[1] = 0.0;
hcif.axis[AXIS_CHI].vector[2] = 1.0;
strcpy(hcif.axis[AXIS_THETA].id, "twotheta" );
strcpy(hcif.axis[AXIS_THETA].type, "rotation" );
strcpy(hcif.axis[AXIS_THETA].equipment, "detector" );
strcpy(hcif.axis[AXIS_THETA].depends_on, "." );
hcif.axis[AXIS_THETA].vector[0] = 1.0;
hcif.axis[AXIS_THETA].vector[1] = 0.0;
hcif.axis[AXIS_THETA].vector[2] = 0.0;
strcpy(hcif.axis[AXIS_DISTANCE].id, "distance" );
strcpy(hcif.axis[AXIS_DISTANCE].type, "translation" );
strcpy(hcif.axis[AXIS_DISTANCE].equipment, "detector" );
strcpy(hcif.axis[AXIS_DISTANCE].depends_on, "." );
hcif.axis[AXIS_DISTANCE].vector[0] = 0.0;
hcif.axis[AXIS_DISTANCE].vector[1] = 0.0;
hcif.axis[AXIS_DISTANCE].vector[2] = -1.0;
strcpy(hcif.diffrn_detector.detector, "Image Plate" );
strcpy(hcif.diffrn_detector.type, "mar345 IP system" );
hcif.diffrn_detector_element.center_x = h345.xcen*pixelsize;
hcif.diffrn_detector_element.center_y = h345.ycen*pixelsize;
/* marresearch extensions */
if ( h345.mode == 0 )
strcpy(hcif.diffrn_detector_mar_exposure.type, "dose");
else
strcpy(hcif.diffrn_detector_mar_exposure.type, "time");
hcif.diffrn_detector_mar_exposure.time = h345.time;
hcif.diffrn_detector_mar_exposure.dose = h345.doseavg;
for (i=0; i<=AXIS_DISTANCE; i++ ) {
hcif.diffrn_detector_mar_axis[i].angle_start =
hcif.diffrn_detector_mar_axis[i].angle_end =
hcif.diffrn_detector_mar_axis[i].angle_increment=
hcif.diffrn_detector_mar_axis[i].displacement = 0.0;
}
hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_start = h345.phibeg;
hcif.diffrn_detector_mar_axis[AXIS_PHI].angle_end = h345.phiend;
hcif.diffrn_detector_mar_axis[AXIS_OMEGA].angle_start = h345.omebeg;
hcif.diffrn_detector_mar_axis[AXIS_OMEGA].angle_end = h345.omeend;
hcif.diffrn_detector_mar_axis[AXIS_CHI].angle_start = h345.chi;
hcif.diffrn_detector_mar_axis[AXIS_CHI].angle_end = h345.chi;
hcif.diffrn_detector_mar_axis[AXIS_THETA].angle_end = h345.theta;
hcif.diffrn_detector_mar_axis[AXIS_THETA].angle_start = h345.theta;
hcif.diffrn_detector_mar_axis[AXIS_OMEGA].oscillations = h345.omeosc;
hcif.diffrn_detector_mar_axis[AXIS_PHI ].oscillations = h345.phiosc;
hcif.diffrn_detector_mar_axis[AXIS_DISTANCE].angle_start = 0.0;
hcif.diffrn_detector_mar_axis[AXIS_DISTANCE].angle_end = 0.0;
hcif.diffrn_detector_mar_axis[AXIS_DISTANCE].displacement = h345.dist;
for (i=0; i<=AXIS_DISTANCE; i++ ) {
strcpy( hcif.diffrn_detector_mar_axis[i].axis_id, hcif.axis[i].id);
hcif.diffrn_detector_mar_axis[i].angle_increment = hcif.diffrn_detector_mar_axis[i].angle_end -
hcif.diffrn_detector_mar_axis[i].angle_start;\
}
hcif.diffrn_detector_mar_exposure_dose.start = h345.dosebeg;
hcif.diffrn_detector_mar_exposure_dose.end = h345.doseend;
hcif.diffrn_detector_mar_exposure_dose.min = h345.dosemin;
hcif.diffrn_detector_mar_exposure_dose.max = h345.dosemax;
hcif.diffrn_detector_mar_exposure_dose.avg = h345.doseavg;
hcif.diffrn_detector_mar_exposure_dose.esd = h345.dosesig;
hcif.diffrn_detector_mar_exposure_dose.measurements = h345.dosen;
hcif.diffrn_detector_mar_adc.channel_a = h345.adc_A;
hcif.diffrn_detector_mar_adc.channel_b = h345.adc_B;
hcif.diffrn_detector_mar_adc.add_channel_a = h345.add_A;
hcif.diffrn_detector_mar_adc.add_channel_b = h345.add_B;
hcif.diffrn_detector_mar_adc.gain = h345.gain;
hcif.diffrn_detector_mar_adc.multiplier = h345.multiplier;
if ( h345.pixel_height == 100.f || h345.pixel_height == 0.1f )
hcif.diffrn_detector_mar_adc.oversampling = 1;
else
hcif.diffrn_detector_mar_adc.oversampling = 2;
hcif.diffrn_detector_mar_scan.scanmode = h345.size;
hcif.diffrn_detector_mar_scan.number_of_pixels = h345.pixels;
hcif.diffrn_detector_mar_scan.number_of_pixels_larger_16_bit = h345.high;
hcif.diffrn_detector_mar_scan.radial_offset = h345.roff;
hcif.diffrn_detector_mar_scan.tangential_offset = h345.toff;
hcif.diffrn_detector_mar_scan.pixel_height = h345.pixel_height;
hcif.diffrn_detector_mar_scan.pixel_length = h345.pixel_length;
hcif.diffrn_detector_mar_data.intensity_min = h345.valmin;
hcif.diffrn_detector_mar_data.intensity_max = h345.valmax;
hcif.diffrn_detector_mar_data.intensity_avg = h345.valavg;
hcif.diffrn_detector_mar_data.intensity_esd = h345.valsig;
hcif.diffrn_detector_mar_data.histogram_start = h345.histbeg;
hcif.diffrn_detector_mar_data.histogram_end = h345.histend;
hcif.diffrn_detector_mar_data.histogram_max = h345.histmax;
for ( i=0; i<8; i++ )
hcif.diffrn_detector_mar_gaps.gap[i] = h345.gap[i];
/* From the entire file name path, cut off directory */
c = strrchr( f, '/' );
if ( c == NULL )
c = f;
else
c++;
/* From the remaining filename root + extension, cut off extension */
strcpy( str, c);
c = strrchr ( str, '.' );
if ( c!=NULL ) {
i=strlen( c );
str[ strlen(str) - i ] = '\0';
}
strcpy( hcif.diffrn_scan.frame_id_start, str);
strcpy( hcif.diffrn_scan.frame_id_end, str);
for (i=strlen(str)-1;i>=0; i--) {
if ( str[i] == '_' ) {
str[i] = '\0';
break;
}
}
strcpy(hcif.crystal_id, str);
hcif.diffrn_scan.frames = 1;
strcpy(hcif.diffrn_measurement.device, "oscillation camera");
strcpy(hcif.diffrn_measurement.device_type, "mar detector");
strcpy(hcif.diffrn_measurement.method, "phi scan");
hcif.diffrn_measurement.sample_detector_distance = h345.dist;
hcif.diffrn_measurement.number_of_axes = 1;
strcpy(hcif.diffrn_scan_axis[AXIS_PHI].axis_id, "phi" );
hcif.diffrn_scan_axis[AXIS_PHI].angle_start = h345.phibeg;
hcif.diffrn_scan_axis[AXIS_PHI].angle_range = h345.phiend-h345.phibeg;
hcif.diffrn_scan_axis[AXIS_PHI].angle_increment = h345.phiend-h345.phibeg;
strcpy(hcif.diffrn_scan_axis[AXIS_OMEGA].axis_id,"omega" );
hcif.diffrn_scan_axis[AXIS_OMEGA].angle_start = h345.omebeg;
hcif.diffrn_scan_axis[AXIS_OMEGA].angle_range = h345.omeend-h345.omebeg;
hcif.diffrn_scan_axis[AXIS_OMEGA].angle_increment= h345.omeend-h345.omebeg;
strcpy(hcif.diffrn_scan_frame_axis[AXIS_PHI].axis_id, "phi" );
hcif.diffrn_scan_frame_axis[AXIS_PHI].angle = h345.phiend;
hcif.diffrn_scan_frame_axis[AXIS_PHI].displacement = 0.0;
strcpy(hcif.diffrn_scan_frame_axis[AXIS_OMEGA].axis_id, "omega" );
hcif.diffrn_scan_frame_axis[AXIS_OMEGA].angle = h345.omeend;
hcif.diffrn_scan_frame_axis[AXIS_OMEGA].displacement = 0.0;
strcpy(hcif.diffrn_scan_frame_axis[AXIS_CHI].axis_id, "chi" );
hcif.diffrn_scan_frame_axis[AXIS_CHI].angle = h345.chi;
hcif.diffrn_scan_frame_axis[AXIS_CHI].displacement = 0.0;
strcpy(hcif.diffrn_scan_frame_axis[AXIS_THETA].axis_id, "twotheta" );
hcif.diffrn_scan_frame_axis[AXIS_THETA].angle = h345.theta;
hcif.diffrn_scan_frame_axis[AXIS_THETA].displacement = 0.0;
strcpy(hcif.diffrn_scan_frame_axis[AXIS_DISTANCE].axis_id,"distance" );
hcif.diffrn_scan_frame_axis[AXIS_DISTANCE].angle = 0.0;
hcif.diffrn_scan_frame_axis[AXIS_DISTANCE].displacement = h345.dist;
}
| int PutCIFData | ( | char * | prg, |
| char * | op, | ||
| char | op_cbf, | ||
| unsigned int * | i4_img | ||
| ) |
Definition at line 1946 of file marcif.c.
References CIF_HEADER::array_structure_list, CIF_HEADER::binary_id, CBF, cbf_failnez, cbf_free_handle(), CBF_PACKED, cbf_set_integerarray(), cbf_write_file(), CIF, cif_compression, cif_element_signed, cif_element_size, cif_error, cif_id, cif_nelements, ARRAY_STRUCTURE_LIST::dimension, ENC_BASE64, ENC_CRTERM, ENC_LFTERM, ENC_NONE, MIME_HEADERS, MSG_DIGEST, and verbose.
Referenced by MarXF::output_image().
{
FILE *fp = NULL;
int success = 0;
int mime = MIME_HEADERS;
int digest = MSG_DIGEST;
int encoding = ENC_NONE;
int bytedir = 0;
int cbforcif = CBF;
int term = ENC_CRTERM | ENC_LFTERM;
if ( op_cbf == 1 ) {
cbforcif = CBF;
encoding = ENC_NONE;
term = ENC_CRTERM | ENC_LFTERM;
}
else {
cbforcif = CIF;
encoding = ENC_BASE64;
term = ENC_LFTERM;
}
cif_compression = CBF_PACKED;
cif_id = hcif.binary_id;
cif_element_size = sizeof(int);
cif_element_signed = 0;
cif_nelements = hcif.array_structure_list[0].dimension *
hcif.array_structure_list[1].dimension;
/* Save the binary data */
cbf_failnez (cbf_set_integerarray (
cif,
cif_compression,
cif_id,
(void *)i4_img,
cif_element_size,
cif_element_signed,
cif_nelements))
fp = fopen (op, "w+b");
if ( fp == NULL ) return 0;
cbf_failnez (cbf_write_file (
cif,
fp,
1,
cbforcif,
mime | digest,
encoding | bytedir | term))
if ( !cif_error ) success = 1;
/* Free the cbf */
cbf_failnez (cbf_free_handle (cif))
if ( verbose > 1 ) {
printf("\n");
printf("%s: CIF-Header values:\n",prg);
printf(" Pixels :\t %d x %d\n",hcif.array_structure_list[0].dimension,hcif.array_structure_list[1].dimension);
printf(" Identifier :\t %11d\n",cif_id);
printf(" Compression :\t %11d\n",cif_compression);
printf(" Elements: :\t %11d\n",cif_nelements);
printf(" Element size :\t %11d\n",cif_element_size);
printf(" Signed :\t %11d\n",cif_element_signed);
}
return success;
}
| int PutCIFHeader | ( | char * | prg, |
| char * | f | ||
| ) |
Definition at line 960 of file marcif.c.
References MARIP_ADC::add_channel_a, MARIP_ADC::add_channel_b, DIFFRN_SCAN_FRAME_AXIS::angle, MARIP_AXIS::angle_end, DIFFRN_SCAN_AXIS::angle_increment, MARIP_AXIS::angle_increment, DIFFRN_SCAN_AXIS::angle_start, MARIP_AXIS::angle_start, CIF_HEADER::array_element_size, CIF_HEADER::array_id, CIF_HEADER::array_intensities, CIF_HEADER::array_structure_list, CIF_HEADER::audit, MARIP_EXPOSURE_DOSE::avg, AXIS_DISTANCE, DIFFRN_SCAN_FRAME_AXIS::axis_id, DIFFRN_SCAN_AXIS::axis_id, MARIP_AXIS::axis_id, AXIS_PHI, CIF_HEADER::binary_id, cbf_failnez, cbf_force_new_category(), cbf_make_handle(), cbf_new_column(), cbf_new_datablock(), cbf_new_row(), cbf_next_row(), cbf_rewind_row(), cbf_set_doublevalue(), cbf_set_integervalue(), cbf_set_value(), DIFFRN_DETECTOR_ELEMENT::center_x, DIFFRN_DETECTOR_ELEMENT::center_y, MARIP_ADC::channel_a, MARIP_ADC::channel_b, DIFFRN_RADIATION::collimation, AUDIT::creation_date, AUDIT::creation_method, CIF_HEADER::crystal_id, DIFFRN_SOURCE::current, DIFFRN_DETECTOR::detector, DIFFRN_RADIATION::detector, CIF_HEADER::detector_id, DIFFRN_MEASUREMENT::device, DIFFRN_MEASUREMENT::device_type, CIF_HEADER::diffrn_detector, CIF_HEADER::diffrn_detector_element, CIF_HEADER::diffrn_detector_mar_adc, CIF_HEADER::diffrn_detector_mar_axis, CIF_HEADER::diffrn_detector_mar_data, CIF_HEADER::diffrn_detector_mar_exposure, CIF_HEADER::diffrn_detector_mar_exposure_dose, CIF_HEADER::diffrn_detector_mar_gaps, CIF_HEADER::diffrn_detector_mar_scan, CIF_HEADER::diffrn_id, CIF_HEADER::diffrn_measurement, CIF_HEADER::diffrn_radiation, CIF_HEADER::diffrn_radiation_wavelength, CIF_HEADER::diffrn_scan, CIF_HEADER::diffrn_scan_axis, CIF_HEADER::diffrn_scan_frame_axis, CIF_HEADER::diffrn_source, ARRAY_STRUCTURE_LIST::dimension, ARRAY_STRUCTURE_LIST::direction, DIFFRN_SCAN_FRAME_AXIS::displacement, MARIP_AXIS::displacement, MARIP_EXPOSURE::dose, CIF_HEADER::element_id, MARIP_EXPOSURE_DOSE::end, MARIP_EXPOSURE_DOSE::esd, CIF_HEADER::frame_id, DIFFRN_SCAN::frame_id_end, DIFFRN_SCAN::frame_id_start, DIFFRN_SCAN::frames, ARRAY_INTENSITIES::gain, MARIP_ADC::gain, MARIP_GAPS::gap, MARIP_DATA::histogram_end, MARIP_DATA::histogram_max, MARIP_DATA::histogram_start, i, ARRAY_ELEMENT_SIZE::index, ARRAY_STRUCTURE_LIST::index, MARIP_DATA::intensity_avg, MARIP_DATA::intensity_esd, MARIP_DATA::intensity_max, MARIP_DATA::intensity_min, ARRAY_INTENSITIES::linearity, CIF_HEADER::mar_id, MARIP_EXPOSURE_DOSE::max, MARIP_EXPOSURE_DOSE::measurements, DIFFRN_MEASUREMENT::method, MARIP_EXPOSURE_DOSE::min, DIFFRN_RADIATION::monochromator, MARIP_ADC::multiplier, MARIP_SCAN::number_of_pixels, MARIP_SCAN::number_of_pixels_larger_16_bit, MARIP_AXIS::oscillations, ARRAY_INTENSITIES::overload, MARIP_ADC::oversampling, MARIP_SCAN::pixel_height, MARIP_SCAN::pixel_length, ARRAY_ELEMENT_SIZE::pixelsize, DIFFRN_RADIATION_WAVELENGTH::polarisn_norm, DIFFRN_RADIATION_WAVELENGTH::polarisn_ratio, ARRAY_STRUCTURE_LIST::precedence, PRINT_AXIS, PRINT_CHEMICAL, MARIP_SCAN::radial_offset, DIFFRN_MEASUREMENT::sample_detector_distance, ARRAY_INTENSITIES::scaling, CIF_HEADER::scan_id, MARIP_SCAN::scanmode, DIFFRN_SOURCE::source, MARIP_EXPOSURE_DOSE::start, MARIP_SCAN::tangential_offset, MARIP_EXPOSURE::time, MARIP_EXPOSURE::type, DIFFRN_DETECTOR::type, DIFFRN_SOURCE::type, ARRAY_INTENSITIES::undefined_value, DIFFRN_SOURCE::voltage, DIFFRN_RADIATION_WAVELENGTH::wavelength, and DIFFRN_RADIATION_WAVELENGTH::wavelength_wt.
Referenced by MarXF::output_image().
{
const char *sval;
float fval;
double dval;
int ival;
int i;
cbf_failnez (cbf_make_handle (&cif))
/* Make a new data block */
cbf_failnez (cbf_new_datablock (cif, "image_1"))
/********************************************************************
* AUDIT
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "audit"))
cbf_failnez (cbf_new_column (cif, "creation_date"))
cbf_failnez (cbf_set_value (cif, hcif.audit.creation_date))
cbf_failnez (cbf_new_column (cif, "creation_method"))
cbf_failnez (cbf_set_value (cif, hcif.audit.creation_method))
/********************************************************************
* ENTRY, EXPTL_CRYSTAL & CHEMICAL
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "entry_id"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, "img1"))
cbf_failnez (cbf_force_new_category (cif, "exptl_crystal"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.crystal_id))
if ( PRINT_CHEMICAL ) {
cbf_failnez (cbf_force_new_category (cif, "chemical"))
cbf_failnez (cbf_new_column (cif, "entry_id"))
cbf_failnez (cbf_set_value (cif, "img1"))
}
/********************************************************************
* DIFFRN
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_id ))
cbf_failnez (cbf_new_column (cif, "crystal_id"))
cbf_failnez (cbf_set_value (cif, hcif.crystal_id))
/********************************************************************
* DIFFRN_SOURCE
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_source"))
cbf_failnez (cbf_new_column (cif, "diffrn_id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_id ))
cbf_failnez (cbf_new_column (cif, "source"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_source.source))
cbf_failnez (cbf_new_column (cif, "type"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_source.type))
cbf_failnez (cbf_new_column (cif, "current"))
cbf_failnez (cbf_set_doublevalue (cif, "%.1f", hcif.diffrn_source.current))
cbf_failnez (cbf_new_column (cif, "voltage"))
cbf_failnez (cbf_set_doublevalue (cif, "%.1f", hcif.diffrn_source.voltage))
/********************************************************************
* DIFFRN_MEASUREMENT
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_measurement"))
cbf_failnez (cbf_new_column (cif, "diffrn_id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_id ))
cbf_failnez (cbf_new_column (cif, "method"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_measurement.method))
cbf_failnez (cbf_new_column (cif, "device"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_measurement.device))
cbf_failnez (cbf_new_column (cif, "device_type"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_measurement.device_type))
cbf_failnez (cbf_new_column (cif, "sample_detector_distance"))
cbf_failnez (cbf_set_doublevalue (cif, "%.6f", hcif.diffrn_measurement.sample_detector_distance))
/********************************************************************
* DIFFRN_RADIATION
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_radiation"))
cbf_failnez (cbf_new_column (cif, "diffrn_id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_id ))
cbf_failnez (cbf_new_column (cif, "detector"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_radiation.detector))
cbf_failnez (cbf_new_column (cif, "collimation"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_radiation.collimation))
cbf_failnez (cbf_new_column (cif, "monochromator"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_radiation.monochromator))
/********************************************************************
* DIFFRN_RADIATION_WAVELENGTH
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_radiation_wavelength"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, "WL1"))
cbf_failnez (cbf_new_column (cif, "wavelength"))
cbf_failnez (cbf_set_doublevalue (cif, "%.6f", hcif.diffrn_radiation_wavelength.wavelength))
cbf_failnez (cbf_new_column (cif, "wavelength_wt"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_radiation_wavelength.wavelength_wt))
cbf_failnez (cbf_new_column (cif, "polarisn_ratio"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_radiation_wavelength.polarisn_ratio))
cbf_failnez (cbf_new_column (cif, "polarisn_norm"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_radiation_wavelength.polarisn_norm))
/********************************************************************
* DIFFRN_DETECTOR
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.detector_id ))
cbf_failnez (cbf_new_column (cif, "diffrn_id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_id ))
cbf_failnez (cbf_new_column (cif, "detector"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_detector.detector))
cbf_failnez (cbf_new_column (cif, "type"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_detector.type))
/********************************************************************
* DIFFRN_DETECTOR_ELEMENT
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_element"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.element_id ))
cbf_failnez (cbf_new_column (cif, "detector_id"))
cbf_failnez (cbf_set_value (cif, hcif.detector_id ))
cbf_failnez (cbf_new_column (cif, "center[1]"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_element.center_x))
cbf_failnez (cbf_new_column (cif, "center[2]"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_element.center_y))
/********************************************************************
* MARIP
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "detector_id"))
cbf_failnez (cbf_set_value (cif, hcif.detector_id ))
/********************************************************************
* MARIP_ADC
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_adc"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "channel_a"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_adc.channel_a))
cbf_failnez (cbf_new_column (cif, "channel_b"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_adc.channel_b))
cbf_failnez (cbf_new_column (cif, "add_channel_a"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_adc.add_channel_a))
cbf_failnez (cbf_new_column (cif, "add_channel_b"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_adc.add_channel_b))
cbf_failnez (cbf_new_column (cif, "oversampling"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_adc.oversampling))
cbf_failnez (cbf_new_column (cif, "multiplier"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_adc.multiplier))
cbf_failnez (cbf_new_column (cif, "gain"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_adc.gain))
/********************************************************************
* MARIP_GAPS
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_gaps"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "gap[1]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[0]))
cbf_failnez (cbf_new_column (cif, "gap[2]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[1]))
cbf_failnez (cbf_new_column (cif, "gap[3]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[2]))
cbf_failnez (cbf_new_column (cif, "gap[4]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[3]))
cbf_failnez (cbf_new_column (cif, "gap[5]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[4]))
cbf_failnez (cbf_new_column (cif, "gap[6]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[5]))
cbf_failnez (cbf_new_column (cif, "gap[7]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[6]))
cbf_failnez (cbf_new_column (cif, "gap[8]"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_gaps.gap[7]))
/********************************************************************
* MARIP_SCAN
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_scan"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "scanmode"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_scan.scanmode))
cbf_failnez (cbf_new_column (cif, "number_of_pixels"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_scan.number_of_pixels))
cbf_failnez (cbf_new_column (cif, "number_of_pixels_larger_16_bit"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_scan.number_of_pixels_larger_16_bit))
cbf_failnez (cbf_new_column (cif, "radial_offset"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_scan.radial_offset))
cbf_failnez (cbf_new_column (cif, "tangential_offset"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_scan.tangential_offset))
cbf_failnez (cbf_new_column (cif, "pixel_height"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_scan.pixel_height))
cbf_failnez (cbf_new_column (cif, "pixel_length"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_scan.pixel_length))
/********************************************************************
* MARIP_EXPOSURE
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_exposure"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "type"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_detector_mar_exposure.type))
cbf_failnez (cbf_new_column (cif, "time"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure.time))
cbf_failnez (cbf_new_column (cif, "dose"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure.dose))
/********************************************************************
* MARIP_EXPOSURE_DOSE
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_exposure_dose"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "dose"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure.dose))
cbf_failnez (cbf_new_column (cif, "avg"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.avg))
cbf_failnez (cbf_new_column (cif, "esd"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.esd))
cbf_failnez (cbf_new_column (cif, "min"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.min))
cbf_failnez (cbf_new_column (cif, "max"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.max))
cbf_failnez (cbf_new_column (cif, "start"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.start))
cbf_failnez (cbf_new_column (cif, "end"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.2f", hcif.diffrn_detector_mar_exposure_dose.end))
cbf_failnez (cbf_new_column (cif, "measurements"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_exposure_dose.measurements))
/********************************************************************
* MARIP_DATA
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_data"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
cbf_failnez (cbf_new_column (cif, "intensity_avg"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_data.intensity_avg))
cbf_failnez (cbf_new_column (cif, "intensity_esd"))
cbf_failnez (cbf_set_doublevalue (cif, "%1.3f", hcif.diffrn_detector_mar_data.intensity_esd))
cbf_failnez (cbf_new_column (cif, "intensity_min"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_data.intensity_min))
cbf_failnez (cbf_new_column (cif, "intensity_max"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_data.intensity_max))
cbf_failnez (cbf_new_column (cif, "histogram_start"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_data.histogram_start))
cbf_failnez (cbf_new_column (cif, "histogram_end"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_data.histogram_end))
cbf_failnez (cbf_new_column (cif, "histogram_max"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_data.histogram_max))
/********************************************************************
* MARIP_AXIS
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_detector_mar_axis"))
cbf_failnez (cbf_new_column (cif, "mar_id"))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.mar_id ))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_new_row (cif))
}
cbf_failnez (cbf_new_column (cif, "axis_id"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.diffrn_detector_mar_axis[i].axis_id))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "angle_start"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_axis[i].angle_start))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "angle_end"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_axis[i].angle_end))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "angle_increment"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_axis[i].angle_increment))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "oscillations"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_detector_mar_axis[i].oscillations))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "displacement"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_detector_mar_axis[i].displacement))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
/********************************************************************
* DIFFRN_FRAME_DATA
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_frame_data"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, hcif.frame_id ))
cbf_failnez (cbf_new_column (cif, "detector_element_id"))
cbf_failnez (cbf_set_value (cif, hcif.element_id ))
cbf_failnez (cbf_new_column (cif, "array_id"))
cbf_failnez (cbf_set_value (cif, hcif.array_id ))
cbf_failnez (cbf_new_column (cif, "binary_id"))
cbf_failnez (cbf_set_integervalue (cif, hcif.binary_id))
/********************************************************************
* DIFFRN_SCAN
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_scan"))
cbf_failnez (cbf_new_column (cif, "scan_id"))
cbf_failnez (cbf_set_value (cif, hcif.scan_id ))
cbf_failnez (cbf_new_column (cif, "frame_id_start"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_scan.frame_id_start))
cbf_failnez (cbf_new_column (cif, "frame_id_end"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_scan.frame_id_end))
cbf_failnez (cbf_new_column (cif, "frames"))
cbf_failnez (cbf_set_integervalue (cif, hcif.diffrn_scan.frames))
/********************************************************************
* AXIS
********************************************************************/
if ( !PRINT_AXIS ) goto CIF_DIFFRN_SCAN_AXIS;
cbf_failnez (cbf_force_new_category (cif, "axis"))
cbf_failnez (cbf_new_column (cif, "id"))
cbf_failnez (cbf_set_value (cif, "phi" ))
cbf_failnez (cbf_new_row (cif))
cbf_failnez (cbf_set_value (cif, "chi" ))
cbf_failnez (cbf_new_row (cif))
cbf_failnez (cbf_set_value (cif, "omega" ))
cbf_failnez (cbf_new_row (cif))
cbf_failnez (cbf_set_value (cif, "twotheta" ))
cbf_failnez (cbf_new_row (cif))
cbf_failnez (cbf_set_value (cif, "distance" ))
cbf_failnez (cbf_new_column (cif, "type"))
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_set_value (cif, "rotation" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "rotation" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "rotation" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "rotation" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "translation" ))
cbf_failnez (cbf_new_column (cif, "equipment"))
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_set_value (cif, "detector" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "detector" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "detector" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "detector" ))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_value (cif, "detector" ))
cbf_failnez (cbf_new_column (cif, "vector[1]"))
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 1.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 1.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_new_column (cif, "vector[2]"))
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 1.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_new_column (cif, "vector[3]"))
cbf_failnez (cbf_rewind_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 1.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
cbf_failnez (cbf_next_row (cif))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", -1.0))
cbf_failnez (cbf_new_column (cif, "offset[1]"))
cbf_failnez (cbf_rewind_row (cif))
for (i=0;i<=AXIS_DISTANCE;i++) {
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "offset[2]"))
cbf_failnez (cbf_rewind_row (cif))
for (i=0;i<=AXIS_DISTANCE;i++) {
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "offset[3]"))
cbf_failnez (cbf_rewind_row (cif))
for (i=0;i<=AXIS_DISTANCE;i++) {
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", 0.0))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
/********************************************************************
* DIFFRN_SCAN_AXIS
********************************************************************/
CIF_DIFFRN_SCAN_AXIS:
cbf_failnez (cbf_force_new_category (cif, "diffrn_scan_axis"))
cbf_failnez (cbf_new_column (cif, "scan_id"))
cbf_failnez (cbf_set_value (cif, hcif.scan_id ))
cbf_failnez (cbf_new_column (cif, "axis_id"))
cbf_failnez (cbf_set_value (cif, hcif.diffrn_scan_axis[AXIS_PHI].axis_id))
cbf_failnez (cbf_new_column (cif, "angle_start"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_scan_axis[AXIS_PHI].angle_start))
cbf_failnez (cbf_new_column (cif, "angle_increment"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_scan_axis[AXIS_PHI].angle_increment))
/********************************************************************
* DIFFRN_SCAN_FRAME
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_scan_frame"))
cbf_failnez (cbf_new_column (cif, "scan_id"))
cbf_failnez (cbf_set_value (cif, hcif.scan_id ))
cbf_failnez (cbf_new_column (cif, "frame_id"))
cbf_failnez (cbf_set_value (cif, hcif.frame_id ))
/********************************************************************
* DIFFRN_SCAN_FRAME_AXIS
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "diffrn_scan_frame_axis"))
cbf_failnez (cbf_new_column (cif, "frame_id"))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.frame_id ))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_new_row (cif))
}
cbf_failnez (cbf_new_column (cif, "axis_id"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.diffrn_scan_frame_axis[i].axis_id))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "angle"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_scan_frame_axis[i].angle))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "displacement"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<=AXIS_DISTANCE; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.diffrn_scan_frame_axis[i].displacement))
if ( i==AXIS_DISTANCE ) break;
cbf_failnez (cbf_next_row (cif))
}
/********************************************************************
* ARRAY_STRUCTURE
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "array_structure"))
cbf_failnez (cbf_new_column (cif, "array_id"))
cbf_failnez (cbf_set_value (cif, hcif.array_id ))
/********************************************************************
* ARRAY_INTENSITIES
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "array_intensities"))
cbf_failnez (cbf_new_column (cif, "array_id"))
cbf_failnez (cbf_set_value (cif, hcif.array_id ))
cbf_failnez (cbf_new_column (cif, "binary_id"))
cbf_failnez (cbf_set_integervalue (cif, hcif.binary_id))
cbf_failnez (cbf_new_column (cif, "linearity"))
cbf_failnez (cbf_set_value (cif, hcif.array_intensities.linearity))
cbf_failnez (cbf_new_column (cif, "undefined_value"))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", hcif.array_intensities.undefined_value))
cbf_failnez (cbf_new_column (cif, "overload"))
cbf_failnez (cbf_set_doublevalue (cif, "%.0f", hcif.array_intensities.overload))
cbf_failnez (cbf_new_column (cif, "scaling"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.array_intensities.scaling))
cbf_failnez (cbf_new_column (cif, "gain"))
cbf_failnez (cbf_set_doublevalue (cif, "%.3f", hcif.array_intensities.gain))
/********************************************************************
* ARRAY_STRUCTURE_LIST
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "array_structure_list"))
cbf_failnez (cbf_new_column (cif, "array_id"))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.array_id ))
if ( i==1) break;
cbf_failnez (cbf_new_row (cif))
}
cbf_failnez (cbf_new_column (cif, "index"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_integervalue (cif, hcif.array_structure_list[i].index))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "dimension"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_integervalue (cif, hcif.array_structure_list[i].dimension))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "precedence"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_integervalue (cif, hcif.array_structure_list[i].precedence))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "direction"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.array_structure_list[i].direction))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
/********************************************************************
* ARRAY_ELEMENT_SIZE
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "array_element_size"))
cbf_failnez (cbf_new_column (cif, "array_id"))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_value (cif, hcif.array_id ))
if ( i==1) break;
cbf_failnez (cbf_new_row (cif))
}
cbf_failnez (cbf_new_column (cif, "index"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_integervalue (cif, hcif.array_element_size.index[i]))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
cbf_failnez (cbf_new_column (cif, "size"))
cbf_failnez (cbf_rewind_row (cif))
for ( i=0; i<2; i++ ) {
cbf_failnez (cbf_set_doublevalue (cif, "%1.4e", hcif.array_element_size.pixelsize[i]))
if ( i==1) break;
cbf_failnez (cbf_next_row (cif))
}
/********************************************************************
* ARRAY_DATA
********************************************************************/
cbf_failnez (cbf_force_new_category (cif, "array_data"))
cbf_failnez (cbf_new_column (cif, "array_id"))
cbf_failnez (cbf_set_value (cif, "image_1"))
cbf_failnez (cbf_new_column (cif, "binary_id"))
cbf_failnez (cbf_set_integervalue (cif, hcif.binary_id))
cbf_failnez (cbf_new_column (cif, "data"))
return 1;
}
| cbf_handle cif = NULL |
unsigned int cif_compression = 0 [static] |
Definition at line 72 of file marcif.c.
Referenced by GetCIFData(), and PutCIFData().
int cif_element_signed = 0 [static] |
Definition at line 68 of file marcif.c.
Referenced by GetCIFData(), and PutCIFData().
size_t cif_element_size = 0 [static] |
Definition at line 74 of file marcif.c.
Referenced by GetCIFData(), and PutCIFData().
int cif_element_unsigned = 0 [static] |
Definition at line 69 of file marcif.c.
Referenced by GetCIFData().
int cif_error = 0 [static] |
Definition at line 62 of file marcif.c.
Referenced by GetCIFData(), GetCIFHeader(), and PutCIFData().
int cif_id = 0 [static] |
Definition at line 67 of file marcif.c.
Referenced by GetCIFData(), and PutCIFData().
int cif_maxelement = 0 [static] |
Definition at line 71 of file marcif.c.
Referenced by GetCIFData().
int cif_minelement = 0 [static] |
Definition at line 70 of file marcif.c.
Referenced by GetCIFData().
size_t cif_nelements = 0 [static] |
Definition at line 73 of file marcif.c.
Referenced by GetCIFData(), and PutCIFData().
size_t cif_read = 0 [static] |
Definition at line 66 of file marcif.c.
Referenced by GetCIFData().
CIF_HEADER hcif [static] |
char PRINT_AXIS = 0 [static] |
Definition at line 59 of file marcif.c.
Referenced by PutCIFHeader().
char PRINT_CHEMICAL = 0 [static] |
Definition at line 60 of file marcif.c.
Referenced by PutCIFHeader().
| int verbose |
Definition at line 289 of file marglobals.h.
Referenced by GetCIFData(), GetCIFHeader(), MarHW::mar_command(), MarHW::mar_progress(), PutCIFData(), PutConfig(), and Scan345::scan345_main().
1.7.3