#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include "marcmd.h"
#include "esd.h"
#include "marglobals.h"
#include "mararrays.h"
#include "config.h"
#include "version.h"
#include <mar345_header.h>
#include <mar300_header.h>
#include <nb_header.h>
#include "marxf.h"
Go to the source code of this file.
Defines | |
#define | NB_SIZE 1024 |
#define | BOXSIZE 100 |
#define | BOX_OFF 100 |
#define | ltell(a) lseek( a, 0, SEEK_CUR ) |
#define | min0(a, b) if ( b < a ) a = b |
#define | max0(a, b) if ( b > a ) a = b |
Functions | |
int | put_pck (unsigned short int *, int, int, int) |
void | swaplong (char *, int) |
void | swapshort (char *, int) |
int | Putmar345Header (int, MAR345_HEADER) |
int | Putmar300Header (int, int, MAR300_HEADER) |
MAR345_HEADER | Getmar345Header (FILE *) |
MARNB_HEADER | GetmarNBHeader (FILE *) |
int | PutCIFHeader (char *, char *) |
int | PutCIFData (char *, char *, char, unsigned int *) |
int | GetCIFData (char *, char *, FILE *, unsigned int *) |
void | mar3452CIFHeader (char *, char *, MAR345_HEADER) |
float | GetResol (float, float, float) |
void | rotate_i4 (unsigned int *, int) |
void | rotate_i4_anti (unsigned int *, int) |
Variables | |
MAR345_HEADER | h345 |
char | large_mem = 1 |
char | scan_in_progress = 0 |
char | xf_in_progress = 0 |
char | op_in_progress = 0 |
char | last_image [128] = { ""} |
char | is_data = 0 |
int | last_total = 0 |
int | bytes2xfer |
static int | n1 = 0 |
static int | n2 = 0 |
static int | adcavg1 |
static int | adcavg2 |
static int | adcavg11 |
static int | adcavg21 |
static int | xf_histo [65600] |
static int | hist_begin |
static int | hist_end |
static int | hist_max |
static int | add_A |
static int | add_B |
int | valmax |
int | valmin |
int | sp_pixels |
int | xf_pixels |
int | maximum_pixels |
int | maximum_block |
int | maximum_bytes |
int | data_offset |
int | current_pixel |
int | xform_status |
int | Imax |
float | AvgI |
float | SigI |
static char | adc_channel = 0 |
static unsigned short | i2_record [MAX_SIZE] |
static STRONG | strong_rec [MAX_SIZE/2] |
static FILE * | fpnb = NULL |
static int | fdspiral = -1 |
static int | iindex = 0 |
static int | i_x0 = 0 |
static int | j_y0 = 0 |
static int | max_spiral_int = 0 |
static int | spiral_offset = 0 |
static int | ac_size = 0 |
static int | i_rec = 1 |
static int | xf_rec = 0 |
static int | ns_rec = 0 |
static int | fdxf = 0 |
static int | swap_nb = 0 |
static char | start_with_A = 1 |
static int | spiral_size |
static int | total_pixels |
static int | last_block |
static int | last_pixel |
static int | istrong |
static int | nskip |
static int | poff |
static int | nb_index |
static int | lin_dxy [8] |
static int | saturation |
static char | spiral_only |
static float | fract_intens |
static MAR300_HEADER | h300 |
static MARNB_HEADER | nb |
static signed char | x_rec [NB_SIZE] |
static signed char | y_rec [NB_SIZE] |
static unsigned char | nb_rec [NB_SIZE] |
static unsigned short | px_rec [9 *NB_SIZE] |
static unsigned char | bit [8] = { 1, 2, 4, 8, 16, 32, 64, 128 } |
int | adc1 |
int | adc2 |
int | stat_blocks_sent |
int | com_scanmode |
char | input_skip_op |
char | skip_op |
char | keep_image |
char | do_xform |
int | fdnb |
int | stat_scan_add |
int | edit_output |
int | nstrong |
int | nsat |
CONFIG | cfg |
#define BOX_OFF 100 |
Definition at line 45 of file marxf.cpp.
Referenced by MarXF::output_image().
#define BOXSIZE 100 |
Definition at line 44 of file marxf.cpp.
Referenced by MarXF::output_image().
#define ltell | ( | a | ) | lseek( a, 0, SEEK_CUR ) |
Definition at line 47 of file marxf.cpp.
Referenced by MarXF::output_image(), and MarXF::Transform().
#define max0 | ( | a, | |
b | |||
) | if ( b > a ) a = b |
Definition at line 49 of file marxf.cpp.
Referenced by MarXF::HistoMinMax(), MarXF::output_image(), and MarXF::Transform().
#define min0 | ( | a, | |
b | |||
) | if ( b < a ) a = b |
Definition at line 48 of file marxf.cpp.
Referenced by MarXF::output_image().
#define NB_SIZE 1024 |
Definition at line 43 of file marxf.cpp.
Referenced by MarXF::Transform().
int GetCIFData | ( | char * | , |
char * | , | ||
FILE * | , | ||
unsigned int * | |||
) |
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; }
MAR345_HEADER Getmar345Header | ( | FILE * | ) |
Definition at line 57 of file mar345_header.c.
References MAR345_HEADER::adc_A, MAR345_HEADER::adc_B, MAR345_HEADER::add_A, MAR345_HEADER::add_B, buf, MAR345_HEADER::byteorder, 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, FLOAT, MAR345_HEADER::format, MAR345_HEADER::gain, MAR345_HEADER::gap, MAR345_HEADER::high, MAR345_HEADER::histbeg, MAR345_HEADER::histend, MAR345_HEADER::histmax, i, InputType(), INTEGER, j, MAR345_HEADER::kV, MAR345_HEADER::mA, MAR345_HEADER::mode, MAR345_HEADER::multiplier, N_GAPS, 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::program, MAR345_HEADER::remark, RemoveBlanks(), MAR345_HEADER::resol, MAR345_HEADER::roff, MAR345_HEADER::scanner, Setmar345Header(), MAR345_HEADER::size, MAR345_HEADER::slitx, MAR345_HEADER::slity, MAR345_HEADER::source, str, STRING, MAR345_HEADER::theta, MAR345_HEADER::time, MAR345_HEADER::toff, MAR345_HEADER::valavg, MAR345_HEADER::valmax, MAR345_HEADER::valmin, MAR345_HEADER::valsig, MAR345_HEADER::version, MAR345_HEADER::wave, WrongType(), MAR345_HEADER::xcen, and MAR345_HEADER::ycen.
{ MAR345_HEADER h; int i,j, ntok=0,fpos=0; int ngaps = 0; char str[64], buf[128], *key, *token[20]; int head[32]; /* * Set defaults */ h = Setmar345Header(); if( fp == NULL ) return( h ); fseek( fp, 0, SEEK_SET ); if ( fread( head, sizeof(int), 32, fp ) < 32) { return( h ); } /* First 32 longs contain: */ h.byteorder = (int )head[ 0]; h.size = (short)head[ 1]; h.high = (int )head[ 2]; h.format = (char )head[ 3]; h.mode = (char )head[ 4]; h.pixels = (int )head[ 5]; h.pixel_length = (float)head[ 6]; h.pixel_height = (float)head[ 7]; h.wave = (float)head[ 9]/1000000.; h.dist = (float)head[ 8]/1000.; h.phibeg = (float)head[10]/1000.; h.phiend = (float)head[11]/1000.; h.omebeg = (float)head[12]/1000.; h.omeend = (float)head[13]/1000.; h.chi = (float)head[14]/1000.; h.theta = (float)head[15]/1000.; /* First ASCII line (bytes 128 to 192 contains: mar research */ /* Ignore it... */ fpos = fseek( fp, 192, SEEK_SET ); /* * Read input lines */ while( fgets(buf,64,fp)!= NULL){ /* Always add 64 bytes to current filemarker after 1 read */ fpos += 64; fseek( fp, fpos, SEEK_SET ); /* Keyword: END OF HEADER*/ if(strstr(buf,"END OF HEADER") ) break; else if ( strstr( buf, "SKIP" ) ) continue; if ( strlen(buf) < 2 ) continue; /* Scip comment lines */ if( buf[0] == '#' || buf[0]=='!' ) continue; /* Tokenize input string */ /* ntok = number of items on input line - 1 (key) */ ntok = -1; for(i=0;i<64;i++) { /* Convert TAB to SPACE */ if( buf[i] == '\t') buf[i] = ' '; if( buf[i] == '\f') buf[i] = ' '; if( buf[i] == '\n') buf[i] = '\0'; if( buf[i] == '\r') buf[i] = '\0'; if( buf[i] == '\0') break; } for(i=0;i<strlen(buf);i++) { if( buf[i] == ' ' ) continue; ntok++; for (j=i;j<strlen(buf);j++) if( buf[j] == ' ') break; i=j; } if (strlen(buf) < 3 ) continue; key = strtok( buf, " "); /* Convert keyword to uppercase */ for ( i=0; i<strlen(key); i++ ) if ( isalnum( key[i] ) ) key[i] = toupper( key[i] ); for(i=0;i<ntok;i++) { token[i] = strtok( NULL, " "); strcpy( str, token[i] ); for ( j=0; j<strlen( str ); j++ ) if ( isalnum( str[j] ) && !strstr(key,"PROG") ) str[j] = toupper( str[j] ); strcpy( token[i] , str ); RemoveBlanks( token[i] ); } /* Keyword: PROGRAM */ if(!strncmp(key,"PROG",4) && ntok >= 2 ) { strcpy( h.program, token[0] ); strcpy( h.version, token[2] ); } /* Keyword: OFFSET */ else if(!strncmp(key,"OFFS",4) && ntok >= 1 ) { for ( i=0; i<ntok; i++ ) { if ( strstr( token[i], "ROF" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.roff = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "TOF" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.toff = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } /* Compatibility with previous versions for GAP entries: */ else if ( strstr( token[i], "GAP" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.gap[1] = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } } /* Keyword: GAP */ else if(!strncmp(key,"GAPS",4) && ntok >= 1 ) { for ( i=0; i<ntok; i++ ) { if ( InputType( token[i] ) == INTEGER ) { if ( ngaps < N_GAPS ) h.gap[ngaps++] = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } /* Keyword: ADC */ else if(!strncmp(key,"ADC",3) && ntok >= 1 ) { for ( i=0; i<ntok; i++ ) { if ( strstr( token[i], "A" ) && strlen( token[i] ) == 1 ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.adc_A = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "B" ) && strlen( token[i] ) == 1 ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.adc_B = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "ADD_A" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.add_A = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "ADD_B" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.add_B = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } } /* Keyword: MULTIPLIER */ else if(!strncmp(key,"MULT",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.multiplier = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: GAIN */ else if(!strncmp(key,"GAIN",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.gain = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: COUNTS */ else if(!strncmp(key,"COUN",4) && ntok >= 1 ) for(i=0;i<ntok;i++) { if ( strstr( token[i], "STA" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.dosebeg = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "END" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.doseend = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "MIN" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.dosemin = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "MAX" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.dosemax = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "AVE" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.doseavg = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "SIG" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.dosesig = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "NME" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.dosen = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } /* Keyword: MODE */ else if( !strncmp(key,"MODE",4) && ntok >= 0 ) if ( strstr( token[0], "TIME" ) ) h.mode = 1; else if ( strstr( token[0], "DOSE" ) ) h.mode = 0; else WrongType( STRING, key, token[0] ); /* Keyword: DISTANCE */ else if(!strncmp(key,"DIST",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.dist = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: PIXELSIZE */ else if(!strncmp(key,"PIXE",4) && ntok >= 0 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "LEN" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.pixel_length = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "HEI" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.pixel_height= atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } } } /* Keyword: SCANNER */ else if(!strncmp(key,"SCAN",4) && ntok >= 0 ) if ( InputType( token[0] ) == INTEGER ) h.scanner = atoi( token[0] ); else WrongType( INTEGER, key, token[0] ); /* Keyword: HIGH */ else if(!strncmp(key,"HIGH",4) && ntok >= 0 ) if ( InputType( token[0] ) == INTEGER ) h.high = atoi( token[0] ); else WrongType( INTEGER, key, token[0] ); /* Keyword: DATE */ else if(!strncmp(key,"DATE",4) && ntok >= 0 ) { for ( i=0; i<strlen( buf ); i++ ) if ( buf[i] == ' ' ) break; for ( j=i; j<strlen( buf ); j++ ) if ( buf[j] != ' ' ) break; strcpy( h.date, buf+j ); } /* Keyword: REMARK */ else if(!strncmp(key,"REMA",4) && ntok >= 0 ) { for ( i=0; i<strlen( buf ); i++ ) if ( buf[i] == ' ' ) break; for ( j=i; j<strlen( buf ); j++ ) if ( buf[j] != ' ' ) break; strcpy( h.remark, buf+j ); } /* Keyword: FORMAT */ else if(!strncmp(key,"FORM",4) && ntok >= 1 ) { if ( InputType( token[0] ) == INTEGER ) h.size = atoi( token[0] ); else WrongType( INTEGER, key, token[0] ); for ( i=1; i<ntok; i++ ) { if ( strstr( token[i], "PCK" ) ) h.format = 1; else if ( strstr( token[i], "IMA" ) ) h.format = 0; else if ( strstr( token[i], "SPI" ) ) h.format = 2; else { if ( InputType( token[i] ) == INTEGER ) h.pixels = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } } } /* Keyword: LAMBDA or WAVELENGTH */ else if( (!strncmp(key,"LAMB",4) || !strncmp(key,"WAVE",4) ) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.wave = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: MONOCHROMATOR */ else if( !strncmp(key,"MONO",4) && ntok >=0 ) { for ( i=0; i<ntok; i++ ) { if ( strstr( token[i], "POLA" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.polar = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else { strcat( h.filter, token[i] ); } } } /* Keyword: PHI */ else if(!strncmp(key,"PHI",3) && ntok >= 1 ) for(i=0;i<ntok;i++) { if ( strstr( token[i], "STA" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.phibeg = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "END" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.phiend = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "OSC" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.phiosc = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } /* Keyword: OMEGA */ else if(!strncmp(key,"OMEG",4) && ntok >= 1 ) for(i=0;i<ntok;i++) { if ( strstr( token[i], "STA" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.omebeg = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "END" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.omeend = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "OSC" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.omeosc = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } /* Keyword: TWOTHETA */ else if( !strncmp(key,"TWOT",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.theta = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: CHI */ else if( !strncmp(key,"CHI",3) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.chi = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: RESOLUTION */ else if( !strncmp(key,"RESO",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.resol = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: TIME */ else if( !strncmp(key,"TIME",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.time = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: CENTER */ else if( !strncmp(key,"CENT",4) && ntok >= 1 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "X" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.xcen = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "Y" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.ycen = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } } } /* Keyword: COLLIMATOR, SLITS */ else if( ( !strncmp(key,"COLL",4) || !strncmp(key,"SLIT",4) )&& ntok >= 1 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "WID" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.slitx= atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "HEI" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.slity = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } } } /* Keyword: GENERATOR */ else if( !strncmp(key,"GENE",4) && ntok >= 0 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "MA" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.mA = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "KV" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.kV = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else strcat( h.source, token[i] ); } } /* Keyword: INTENSITY */ else if( !strncmp(key,"INTE",4) && ntok >= 0 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "MIN" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.valmin = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "MAX" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.valmax = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "AVE" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.valavg = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "SIG" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.valsig = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } } } /* Keyword: HISTOGRAM */ else if( !strncmp(key,"HIST",4) && ntok >= 0 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "STA" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.histbeg = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "END" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.histend = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "MAX" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.histmax = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } } } /* End of while loop */ /* * End of input lines (while loop) */ return( h ); }
MARNB_HEADER GetmarNBHeader | ( | FILE * | fp | ) |
Definition at line 49 of file nb_header.c.
References buf, MARNB_HEADER::byteorder, MARNB_HEADER::cutoff, MARNB_HEADER::date, FLOAT, MARNB_HEADER::fpos, MARNB_HEADER::gain, i, InputType(), INTEGER, j, MAX_NBMODE, MARNB_HEADER::mode, MARNB_HEADER::nbs, MARNB_HEADER::phioff, MARNB_HEADER::pixel_height, MARNB_HEADER::pixel_length, MARNB_HEADER::pixels, MARNB_HEADER::program, RemoveBlanks(), MARNB_HEADER::roff, MARNB_HEADER::scale, MARNB_HEADER::scanner, SetmarNBHeader(), MARNB_HEADER::size, MARNB_HEADER::skip, str, MARNB_HEADER::subpixels, MARNB_HEADER::tot_pixels, MARNB_HEADER::version, WrongType(), MARNB_HEADER::x, and MARNB_HEADER::y.
Referenced by MarXF::mar_start_scan_readout().
{ MARNB_HEADER h; int i,j, itmp, size,fpos, ntok=0; char str[64], buf[128], *key, *token[20]; /* * Set defaults */ h = SetmarNBHeader(); if( fp == NULL ) return( h ); fseek( fp, 0, SEEK_SET ); if ( fread( &h.byteorder, sizeof(int), 1, fp ) < 1 ) { return( h ); } fgets( buf, 60, fp ); fpos = 64; /* First ASCII line (bytes 128 to 192 contains: mar research */ /* Ignore it... */ fseek( fp, 192, SEEK_SET ); fpos = 192; /* * Read input lines */ while( fgets(buf,64,fp)!= NULL){ /* Always add 64 bytes to current filemarker after 1 read */ fpos += 64; fseek( fp, fpos, SEEK_SET ); /* Keyword: END OF HEADER*/ if(strstr(buf,"END OF HEADER") ) break; else if(strstr(buf,"REMARK") ) continue; /* */ if ( strlen(buf) < 2 ) continue; /* Scip comment lines */ if( buf[0] == '#' || buf[0]=='!' ) continue; /* Tokenize input string */ /* ntok = number of items on input line - 1 (key) */ ntok = -1; for(i=0;i<64;i++) { /* Convert TAB to SPACE */ if( buf[i] == '\t') buf[i] = ' '; if( buf[i] == '\f') buf[i] = ' '; if( buf[i] == '\n') buf[i] = '\0'; if( buf[i] == '\r') buf[i] = '\0'; if( buf[i] == '\0') break; } for(i=0;i<strlen(buf);i++) { if( buf[i] == ' ' ) continue; ntok++; for (j=i;j<strlen(buf);j++) if( buf[j] == ' ') break; i=j; } if (strlen(buf) < 3 ) continue; key = strtok( buf, " "); /* Convert keyword to uppercase */ for ( i=0; i<strlen(key); i++ ) if ( isalnum( key[i] ) ) key[i] = toupper( key[i] ); for(i=0;i<ntok;i++) { token[i] = strtok( NULL, " "); strcpy( str, token[i] ); for ( j=0; j<strlen( str ); j++ ) if ( isalnum( str[j] ) ) str[j] = toupper( str[j] ); strcpy( token[i] , str ); RemoveBlanks( token[i] ); } /* Keyword: PROGRAM */ if(!strncmp(key,"PROG",4) && ntok >= 2 ) { strcpy( h.program, token[0] ); strcpy( h.version, token[2] ); } /* Keyword: SCALE */ else if(!strncmp(key,"SCAL",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.scale = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: PHIOFF */ else if(!strncmp(key,"PHI",3) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.phioff = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: CUTOFF */ else if(!strncmp(key,"CUT",3) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.cutoff = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); /* Keyword: GAIN */ else if(!strncmp(key,"GAIN",4) && ntok >= 0 ) if ( InputType( token[0] ) >= INTEGER ) h.gain = atof( token[0] ); else WrongType( FLOAT, key, token[0] ); else if(!strncmp(key,"PIXE",4) && ntok >= 0 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "LEN" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.pixel_length = atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "HEI" ) ) { i++; if ( InputType( token[i] ) >= INTEGER ) { h.pixel_height= atof( token[i] ); } else WrongType( FLOAT, key, token[i] ); } else if ( strstr( token[i], "SUB" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.subpixels = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } } /* Keyword: SCANNER */ else if(!strncmp(key,"SCAN",4) && ntok >= 0 ) if ( InputType( token[0] ) == INTEGER ) h.scanner = atoi( token[0] ); else WrongType( INTEGER, key, token[0] ); /* Keyword: DATE */ else if(!strncmp(key,"DATE",4) && ntok >= 0 ) { for ( i=0; i<strlen( buf ); i++ ) if ( buf[i] == ' ' ) break; for ( j=i; j<strlen( buf ); j++ ) if ( buf[j] != ' ' ) break; strcpy( h.date, buf+j ); } /* Keyword: MODE */ else if(!strncmp(key,"MODE",4) && ntok >= 0 ) { if ( InputType( token[0] ) != INTEGER ) WrongType( INTEGER, key, token[0] ); else { size = atoi( token[0] ); for ( j=0, i=0; i<MAX_NBMODE; i++ ) { if ( h.size[i] == 0 && h.mode <= MAX_NBMODE ) { h.size[h.mode] = size; j = h.mode; h.mode++; break; } else if ( h.size[i] == size ) { j = i; break; } } for ( i=1; i<ntok; i++ ) { if ( strstr( token[i], "POS" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.fpos[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "PIX" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.pixels[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "X" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.x[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "Y" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.y[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "SK" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.skip[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "RO" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) h.roff[j] = atoi( token[i] ); else WrongType( INTEGER, key, token[i] ); } } } } /* Keyword: NUMBER */ else if(!strncmp(key,"NUMB",3) && ntok >= 1 ) { for(i=0;i<ntok;i++) { if ( strstr( token[i], "PIX" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.tot_pixels = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } else if ( strstr( token[i], "NEI" ) ) { i++; if ( InputType( token[i] ) == INTEGER ) { h.nbs = atoi( token[i] ); } else WrongType( INTEGER, key, token[i] ); } } } } /* End of while loop */ /* * End of input lines (while loop) */ fseek( fp, 4096, SEEK_SET ); return( h ); }
float GetResol | ( | float | radius, |
float | distance, | ||
float | wave | ||
) |
Definition at line 37 of file utils.c.
Referenced by MarXF::get_header_values().
{ float res; if ( distance < 1.0 ) return 0.0; res = atan( radius/distance); /* Two theta !!! */ if ( res < 0.0001 ) return 0.0; res = wave/(2.0*sin(res/2.0)); return( res ); }
void mar3452CIFHeader | ( | char * | , |
char * | , | ||
MAR345_HEADER | |||
) |
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 put_pck | ( | unsigned short int * | , |
int | , | ||
int | , | ||
int | |||
) |
Referenced by MarXF::output_image().
int PutCIFData | ( | char * | , |
char * | , | ||
char | , | ||
unsigned int * | |||
) |
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 * | , |
char * | |||
) |
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; }
int Putmar300Header | ( | int | , |
int | , | ||
MAR300_HEADER | |||
) |
Definition at line 212 of file mar300_header.c.
References MAR300_HEADER::centre_x, MAR300_HEADER::centre_y, MAR300_HEADER::counts_end, MAR300_HEADER::counts_start, MAR300_HEADER::date, MAR300_HEADER::distance, MAR300_HEADER::exptime_sec, MAR300_HEADER::exptime_units, MAR300_HEADER::high_pixels, MAR300_HEADER::high_records, i, MAR300_HEADER::lambda, MAR300_HEADER::lrecl, MAR300_HEADER::max_rec, MAR300_HEADER::multiplier, now, MAR300_HEADER::omega, MAR300_HEADER::p_l, MAR300_HEADER::p_r, MAR300_HEADER::p_x, MAR300_HEADER::p_y, MAR300_HEADER::phi_end, MAR300_HEADER::phi_start, MAR300_HEADER::pixels_x, MAR300_HEADER::pixels_y, MAR300_HEADER::prog_time, MAR300_HEADER::r_max, MAR300_HEADER::r_min, and str.
Referenced by MarXF::output_header().
{ int i; int io=0; char c=' ',str[32]; time_t now; if ( fd < 0 )return(0); /* * Rewind file */ i = lseek( fd, 0, SEEK_SET ); if ( strlen( h.date ) < 5 ) { time( &now ); sprintf( str,"%s", (char *)ctime( &now ) ); for ( i=24; i<32; i++ ) str[i]='\0'; strncpy( h.date, str, 24 ); } /* * Write image header (10xint+15*float+date) */ io = write( fd, &h, sizeof( h ) ); /* * New header additions, all items are 16 byte strings. * 1.) MARCONTROL + Version no. * 2.) Scanner serial no. * 3.) Computer architecture * 4.) Sum of xray units * 5-...) Repeat normal header (i.e. 10 ints and 15 floats). */ str[15] = '\0'; sprintf( str, "MARCONTROL 1.0 "); io += write( fd, str, 16 ); sprintf( str, "%16d", serial); io += write( fd, str, 16 ); #if ( LINUX || linux ) sprintf( str, "LINUX " ); #elif ( __sgi ) sprintf( str, "SGI " ); #elif ( __osf__ ) sprintf( str, "DEC UNIX " ); #elif ( __hpux ) sprintf( str, "HPUX " ); #elif ( __ALPHA ) sprintf( str, "ALPHA " ); #else sprintf( str, "UNKNOWN " ); #endif io += write( fd, str, 16 ); sprintf( str, "%16.3f", (float)h.exptime_units ); io += write( fd, str, 16 ); str[16] = '\0'; /* 10 x integer as string */ sprintf( str, "%16d", h.pixels_x ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.pixels_y ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.lrecl ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.max_rec ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.high_pixels ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.high_records ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.counts_start ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.counts_end ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.exptime_sec ); io += write( fd, str, 16 ); sprintf( str, "%16d", h.exptime_units ); io += write( fd, str, 16 ); /* 15 x integer as string */ sprintf( str, "%16.3f", h.prog_time ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.r_max ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.r_min ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.p_r ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.p_l ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.p_x ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.p_y ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.centre_x ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.centre_y ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.lambda ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.distance ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.phi_start ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.phi_end ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.omega ); io += write( fd, str, 16 ); sprintf( str, "%16.3f", h.multiplier ); io += write( fd, str, 16 ); /* * Fill remaining bytes of record with blanks */ FILL: while ( lseek( fd, 0, SEEK_CUR ) < (2*h.pixels_x) ) if ( write( fd, &c, 1) < 1 ) break; else io++; if ( io < 2*h.pixels_x ) return 0; return 1; }
int Putmar345Header | ( | int | , |
MAR345_HEADER | |||
) |
Definition at line 747 of file mar345_header.c.
References MAR345_HEADER::adc_A, MAR345_HEADER::adc_B, MAR345_HEADER::add_A, MAR345_HEADER::add_B, MAR345_HEADER::byteorder, 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::format, 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::program, MAR345_HEADER::remark, MAR345_HEADER::resol, MAR345_HEADER::roff, MAR345_HEADER::scanner, MAR345_HEADER::size, MAR345_HEADER::slitx, MAR345_HEADER::slity, 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::version, MAR345_HEADER::wave, MAR345_HEADER::xcen, and MAR345_HEADER::ycen.
Referenced by MarXF::output_header().
{ int i,k=0; int io; int head[32]; int byte_order=1234; time_t now; char c=' ', str[128]; char *mode[2] ={"DOSE","TIME"}; char *format[3]={"IMAGE","PCK","SPIRAL"}; char *source[3]={"SEALED TUBE","ROTATING ANODE","SYNCHROTRON"}; char *filter[3]={"GRAPHITE", "MIRRORS" ,"FILTER" }; if ( fd < 0 )return(0); h.byteorder = 1234; time( &now); sprintf( str, "%s", (char *)ctime( &now )); memcpy( h.date, str, 24 ); lseek( fd, 0, SEEK_SET ); /* Make some necessary checks */ if ( h.mode > 1 ) h.mode = 1; if ( h.format > 2 ) h.format = 1; /* First 32 longs contain: */ memset( head, 0, 32*sizeof(int) ); head[ 0] = (int)( h.byteorder ); head[ 1] = (int)( h.size ); head[ 2] = (int)( h.high ); head[ 3] = (int)( h.format ); head[ 4] = (int)( h.mode ); head[ 5] = (int)( h.pixels ); head[ 6] = (int)( h.pixel_length ); head[ 7] = (int)( h.pixel_height ); head[ 8] = (int)( h.wave * 1000000. ); head[ 9] = (int)( h.dist * 1000. ); head[10] = (int)( h.phibeg * 1000. ); head[11] = (int)( h.phiend * 1000. ); head[12] = (int)( h.omebeg * 1000. ); head[13] = (int)( h.omeend * 1000. ); head[14] = (int)( h.chi * 1000. ); head[15] = (int)( h.theta * 1000. ); /* First 4 bytes: integer with 1234 */ io = write( fd, head, 32*sizeof(int) ); sprintf( str, "mar research"); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64); k++; sprintf( str, "PROGRAM %s Version %s",h.program,h.version); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64); k++; sprintf( str, "DATE %s",h.date); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "SCANNER %d\n",h.scanner); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "FORMAT %d %s %d\n",h.size,format[(int)h.format],h.pixels); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "HIGH %d\n",h.high); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "PIXEL LENGTH %1.0f HEIGHT %1.0f\n",h.pixel_length,h.pixel_height); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "OFFSET ROFF %1.0f TOFF %1.0f\n",h.roff,h.toff); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "GAPS %d %d %d %d %d %d %d %d\n", h.gap[0],h.gap[1],h.gap[2],h.gap[3],h.gap[4],h.gap[5],h.gap[6],h.gap[7]); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; if ( h.adc_A >= 0 ) { sprintf( str, "ADC A %d B %d ADD_A %d ADD_B %d\n",h.adc_A,h.adc_B,h.add_A,h.add_B); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; } sprintf( str, "MULTIPLIER %1.3f\n",h.multiplier); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "GAIN %1.3f\n",h.gain); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "WAVELENGTH %1.5f\n",h.wave); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "DISTANCE %1.3f\n",h.dist); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "RESOLUTION %1.3f\n",h.resol); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "PHI START %1.3f END %1.3f OSC %d\n",h.phibeg,h.phiend,h.phiosc); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "OMEGA START %1.3f END %1.3f OSC %d\n",h.omebeg,h.omeend,h.omeosc); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "CHI %1.3f\n",h.chi); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "TWOTHETA %1.3f\n",h.theta); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "CENTER X %1.3f Y %1.3f\n",h.xcen,h.ycen); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "MODE %s\n",mode[(int)h.mode]); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "TIME %1.2f\n",h.time); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "COUNTS START %1.2f END %1.2f NMEAS %d\n",h.dosebeg,h.doseend,h.dosen); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "COUNTS MIN %1.2f MAX %1.2f\n",h.dosemin,h.dosemax); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "COUNTS AVE %1.2f SIG %1.2f\n",h.doseavg,h.dosesig); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "INTENSITY MIN %d MAX %d AVE %1.1f SIG %1.2f\n",h.valmin,h.valmax,h.valavg,h.valsig); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "HISTOGRAM START %d END %d MAX %d\n",h.histbeg,h.histend,h.histmax); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "GENERATOR %s kV %1.1f mA %1.1f\n",h.source,h.kV, h.mA); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "MONOCHROMATOR %s POLAR %1.3f\n",h.filter,h.polar); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "COLLIMATOR WIDTH %1.2f HEIGHT %1.2f\n",h.slitx,h.slity); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "REMARK %s\n",h.remark); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; sprintf( str, "END OF HEADER\n"); for ( i=strlen(str); i<63; i++ ) str[i]=' '; str[63]='\n'; io += write( fd, str, 64 ); k++; /* * Fill rest of header (4096 bytes) with blanks: */ k = 4096; while ( lseek( fd, 0, SEEK_CUR ) < k ) { i = write( fd, &c, 1 ); if ( i < 1 ) break; io += i; } if ( io < k ) { fprintf( stderr, "ERROR: only %d out of %d bytes written into image header!!!\n",io,k); return 0; } return 1; }
void rotate_i4 | ( | unsigned int * | data, |
int | nx | ||
) |
Definition at line 176 of file misc.c.
Referenced by MarXF::output_image().
{ register unsigned int *ptr1, *ptr2, *ptr3, *ptr4, temp; register int i, j; int nx2 = (nx+1)/2; for ( i=nx/2; i--; ) { /* Set pointer addresses */ j = nx2 - 1; ptr1 = data + nx*i + j; /* 1. Quadrant */ ptr2 = data + nx*j + nx-1-i; /* 2. Quadrant */ ptr3 = data + nx*(nx-1-i) + nx-1-j; /* 4. Quadrant */ ptr4 = data + nx*(nx-1-j) + i; /* 3. Quadrant */ for ( j = nx2; j--; ) { /* Restack: clockwise rotation by 90.0 */ temp = *ptr4; *ptr4 = *ptr3; *ptr3 = *ptr2; *ptr2 = *ptr1; *ptr1 = temp; /* Increase pointer */ ptr1 --; ptr2 -= nx; ptr3 ++; ptr4 += nx; } } }
void rotate_i4_anti | ( | unsigned int * | data, |
int | nx | ||
) |
Definition at line 44 of file misc.c.
Referenced by MarXF::output_image().
{ register unsigned int *ptr1, *ptr2, *ptr3, *ptr4, temp; register int i, j; int nx2 = (nx+1)/2; for ( i=nx/2; i--; ) { /* Set pointer addresses */ j = nx2 - 1; ptr1 = data + nx*i + j; /* 1. Quadrant */ ptr2 = data + nx*j + nx-1-i; /* 2. Quadrant */ ptr3 = data + nx*(nx-1-i) + nx-1-j; /* 4. Quadrant */ ptr4 = data + nx*(nx-1-j) + i; /* 3. Quadrant */ for ( j = nx2; j--; ) { /* Restack: anticlockwise rotation by 90.0 */ temp = *ptr1; *ptr1 = *ptr2; *ptr2 = *ptr3; *ptr3 = *ptr4; *ptr4 = temp; /* Increase pointer */ ptr1 --; ptr2 -= nx; ptr3 ++; ptr4 += nx; } } }
void swaplong | ( | char * | , |
int | |||
) |
void swapshort | ( | char * | , |
int | |||
) |
int ac_size = 0 [static] |
Definition at line 95 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::mar_start_scan_readout(), MarXF::output_header(), MarXF::output_image(), MarXF::PrintStats(), and MarXF::Transform().
int adc1 |
Definition at line 54 of file marhw.cpp.
Referenced by MarXF::get_header_values(), MarXF::PrintStats(), and MarXF::Transform().
int adc2 |
Definition at line 55 of file marhw.cpp.
Referenced by MarXF::get_header_values(), MarXF::PrintStats(), and MarXF::Transform().
char adc_channel = 0 [static] |
Definition at line 84 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int adcavg1 |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int adcavg11 |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int adcavg2 |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int adcavg21 |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int add_A [static] |
Definition at line 68 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::mar_start_scan_readout(), and MarXF::Transform().
int add_B |
Definition at line 68 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::mar_start_scan_readout(), and MarXF::Transform().
float AvgI |
Definition at line 79 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::output_image(), and MarXF::PrintResults().
unsigned char bit[8] = { 1, 2, 4, 8, 16, 32, 64, 128 } [static] |
Definition at line 122 of file marxf.cpp.
Referenced by cbf_compare_bitcodes(), cbf_decompress_none(), cbf_get_bit(), cbf_reverse_bitcodes(), pack_longs(), and MarXF::Transform().
int bytes2xfer |
Definition at line 63 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarNet::net_data().
int com_scanmode |
Definition at line 207 of file marglobals.h.
Referenced by Command::exec_command(), Command::mar_init_params(), MarHW::marTask(), and MarHW::StartScan().
int current_pixel |
Definition at line 75 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarHW::marTask(), MarHW::StartScan(), and MarXF::Transform().
int data_offset |
Definition at line 74 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
char do_xform |
Definition at line 49 of file scan345.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_header(), MarXF::output_image(), and MarXF::Transform().
int edit_output |
int fdnb |
int fdspiral = -1 [static] |
Definition at line 89 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_header(), MarXF::output_image(), and MarXF::Transform().
int fdxf = 0 [static] |
Definition at line 99 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_header(), and MarXF::output_image().
FILE* fpnb = NULL [static] |
Definition at line 87 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
float fract_intens [static] |
Definition at line 113 of file marxf.cpp.
Referenced by MarXF::ImageArray(), and MarXF::Transform().
MAR300_HEADER h300 [static] |
Definition at line 54 of file marxf.cpp.
Referenced by CIF2mar345Header().
int hist_begin [static] |
Definition at line 67 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::HistoMinMax().
int hist_end |
Definition at line 67 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::HistoMinMax().
int hist_max |
Definition at line 67 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::HistoMinMax().
unsigned short i2_record[MAX_SIZE] [static] |
Definition at line 85 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int i_rec = 1 [static] |
Definition at line 96 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int i_x0 = 0 [static] |
Definition at line 91 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int iindex = 0 [static] |
Definition at line 90 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int Imax |
Definition at line 78 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::output_image(), and MarXF::PrintResults().
char input_skip_op |
Definition at line 53 of file scan345.cpp.
Referenced by MarXF::output_image(), MarXF::PrintResults(), and Scan345::scan345_main().
int istrong [static] |
Definition at line 106 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_image(), and MarXF::PrintResults().
int j_y0 = 0 [static] |
Definition at line 92 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
char keep_image |
Definition at line 49 of file marhw.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarHW::marTask(), MarHW::NotEnoughDiskSpace(), MarXF::output_header(), MarXF::output_image(), Scan345::scan345_main(), and MarXF::Transform().
int last_block [static] |
Definition at line 104 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
char last_image[128] = { ""} |
Definition at line 59 of file marxf.cpp.
Referenced by MarXF::output_image().
int last_pixel [static] |
Definition at line 105 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int last_total = 0 |
int lin_dxy[8] [static] |
Definition at line 110 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int max_spiral_int = 0 [static] |
Definition at line 93 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int maximum_block |
Definition at line 72 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int maximum_bytes |
Definition at line 73 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarNet::net_data().
int maximum_pixels |
Definition at line 71 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarHW::mar_progress(), MarXF::mar_start_scan_readout(), and MarXF::Transform().
int n1 = 0 [static] |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int n2 = 0 |
Definition at line 65 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
MARNB_HEADER nb [static] |
int nb_index [static] |
Definition at line 109 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
unsigned char nb_rec[NB_SIZE] [static] |
Definition at line 120 of file marxf.cpp.
Referenced by MarXF::ReadNB(), and MarXF::Transform().
int ns_rec = 0 [static] |
Definition at line 98 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::output_image().
int nsat |
Referenced by MarXF::output_image(), and MarXF::PrintResults().
int nskip [static] |
Definition at line 107 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
int nstrong |
Referenced by MarXF::get_header_values(), MarXF::output_image(), and MarXF::PrintResults().
char op_in_progress = 0 |
Definition at line 58 of file marxf.cpp.
Referenced by MarXF::output_image(), and MarXF::Transform().
int poff [static] |
Definition at line 108 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::mar_start_scan_readout(), and MarXF::Transform().
unsigned short px_rec[9 *NB_SIZE] [static] |
Definition at line 121 of file marxf.cpp.
Referenced by MarXF::ReadNB(), and MarXF::Transform().
int saturation [static] |
Definition at line 111 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
char scan_in_progress = 0 |
Definition at line 56 of file marxf.cpp.
Referenced by Command::exec_command(), MarHW::get_status(), MarHW::mar_progress(), MarXF::mar_start_scan_readout(), MarHW::marTask(), MarNet::net_data(), MarXF::output_image(), and MarXF::Transform().
float SigI |
Definition at line 79 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::output_image().
char skip_op |
Definition at line 48 of file marhw.cpp.
Referenced by MarHW::marTask(), MarXF::output_image(), and MarXF::PrintResults().
int sp_pixels |
Definition at line 70 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::ReadNB(), and MarXF::Transform().
int spiral_offset = 0 [static] |
Definition at line 94 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
char spiral_only [static] |
Definition at line 112 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_header(), MarXF::output_image(), and MarXF::PrintResults().
int spiral_size [static] |
Definition at line 102 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
char start_with_A = 1 [static] |
Definition at line 101 of file marxf.cpp.
Referenced by MarXF::get_header_values(), and MarXF::mar_start_scan_readout().
int stat_blocks_sent |
Definition at line 69 of file marhw.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarNet::net_data(), and MarXF::Transform().
int stat_scan_add |
Definition at line 62 of file marhw.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarHW::marTask(), and MarHW::StartScan().
STRONG strong_rec[MAX_SIZE/2] [static] |
int swap_nb = 0 [static] |
Definition at line 100 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::ReadNB().
int total_pixels [static] |
Definition at line 103 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), MarXF::output_image(), and MarXF::Transform().
int valmin |
Definition at line 69 of file marxf.cpp.
Referenced by MarXF::get_header_values(), MarXF::mar_start_scan_readout(), and MarXF::output_image().
signed char x_rec[NB_SIZE] [static] |
Definition at line 118 of file marxf.cpp.
Referenced by MarXF::ReadNB(), and MarXF::Transform().
int xf_histo[65600] [static] |
Definition at line 66 of file marxf.cpp.
Referenced by MarXF::HistoMinMax(), MarXF::mar_start_scan_readout(), and MarXF::output_image().
char xf_in_progress = 0 |
Definition at line 57 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::output_image().
int xf_pixels |
Definition at line 70 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::output_image().
int xf_rec = 0 [static] |
Definition at line 97 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout().
int xform_status |
Definition at line 76 of file marxf.cpp.
Referenced by MarXF::mar_start_scan_readout(), and MarXF::Transform().
signed char y_rec[NB_SIZE] [static] |
Definition at line 119 of file marxf.cpp.
Referenced by MarXF::ReadNB(), and MarXF::Transform().