libcrystfel 0.10.1-221-gfe5ef1ab
Loading...
Searching...
No Matches
Data Structures | Typedefs | Functions
datatemplate.h File Reference

Data Structures

struct  rigid_group
 
struct  rg_collection
 

Typedefs

typedef struct _datatemplate DataTemplate
 

Functions

DataTemplatedata_template_new_from_file (const char *filename)
 
DataTemplatedata_template_new_from_string (const char *string_in)
 
void data_template_free (DataTemplate *dt)
 
const char * data_template_panel_number_to_name (const DataTemplate *dt, int pn)
 
int data_template_panel_name_to_number (const DataTemplate *dt, const char *panel_name, int *pn)
 
int data_template_file_to_panel_coords (const DataTemplate *dt, float *pfs, float *pss, int pn)
 
int data_template_slabby_file_to_panel_coords (const DataTemplate *dt, float *pfs, float *pss, int *ppn)
 
int data_template_panel_to_file_coords (const DataTemplate *dt, int pn, float *pfs, float *pss)
 
void data_template_add_copy_header (DataTemplate *dt, const char *header)
 
int data_template_get_slab_extents (const DataTemplate *dt, int *pw, int *ph)
 
struct rg_collectiondata_template_get_rigid_groups (const DataTemplate *dtempl, const char *collection_name)
 
double data_template_get_wavelength_if_possible (const DataTemplate *dt)
 
double data_template_get_clen_if_possible (const DataTemplate *dt)
 
struct detgeomdata_template_get_2d_detgeom_if_possible (const DataTemplate *dt)
 

Detailed Description

Template for loading data.

Typedef Documentation

◆ DataTemplate

typedef struct _datatemplate DataTemplate

This data structure is opaque. You must use the available accessor functions to read and write its contents.

Function Documentation

◆ data_template_get_2d_detgeom_if_possible()

struct detgeom * data_template_get_2d_detgeom_if_possible ( const DataTemplate dt)

Create a detgeom structure from the DataTemplate, if possible, and ignoring 3D information.

This procedure will create a detgeom structure provided that the detector is close to lying in a single flat plane perpendicular to the beam direction. If certain things (e.g. panel z-positions) refer to headers, it might not be possible to determine that the detector is really flat until an image is loaded. Therefore you must gracefully handle a NULL return value from this routine.

Returns
the detgeom structure, or NULL if impossible.

◆ data_template_get_clen_if_possible()

double data_template_get_clen_if_possible ( const DataTemplate dt)

Returns the mean clen in m, or NAN in the following circumstances:

  1. If the individual panel distances vary by more than 10% of the average
  2. If the tilt of the panel creates a distance variation of more than 10% of the corner value over the extent of the panel
  3. If the detector geometry is not static (per-frame clen)
Returns
the mean camera length, or NAN if impossible.

◆ data_template_get_wavelength_if_possible()

double data_template_get_wavelength_if_possible ( const DataTemplate dt)

Get the wavelength from a DataTemplate, if possible.

WARNING: This is probably not the routine you are looking for! See the disclaimer for image_create_for_simulation(), which applies equally to this routine.

Returns
the wavelength, in metres, or NAN if impossible.

◆ data_template_slabby_file_to_panel_coords()

int data_template_slabby_file_to_panel_coords ( const DataTemplate dt,
float *  pfs,
float *  pss,
int *  ppn 
)

Convert image-data-space fs/ss coordinates to panel-relative fs/ss coordinates and panel number, assuming that the data is all in one slab.

WARNING: This is probably not the routine you are looking for! If you use this routine, your code will only work with 'slabby' data, and will break for (amongst others) EuXFEL data. Use data_template_file_to_panel_coords instead, and provide the panel number.

Returns
0 on success, 1 on failure