Top | ![]() |
![]() |
![]() |
![]() |
#define | HKL_HOLDER_SAMPLE_IDX |
#define | HKL_HOLDER_DETECTOR_IDX |
typedef | darray_holder |
struct | HklHolderConfig |
struct | HklHolder |
struct | HklGeometryOperations |
HklGeometry | |
#define | HKL_GEOMETRY_OPERATIONS_DEFAULTS |
extern const HklGeometryOperations | hkl_geometry_operations_defaults |
#define | HKL_GEOMETRY_ERROR |
enum | HklGeometryError |
HklGeometryList | |
HklGeometryListItem |
void (*HklGeometryListMultiplyFunction) (HklGeometryList *self
,HklGeometryListItem *item
);
HklHolder *
hkl_geometry_sample_holder_get_real (const HklGeometry *self
);
HklHolder *
hkl_geometry_detector_holder_get_real (const HklGeometry *self
);
HklParameter * hkl_holder_add_parameter (HklHolder *self
,char const *name
);
HklParameter * hkl_holder_add_rotation (HklHolder *self
,char const *name
,double x
,double y
,double z
);
HklParameter * hkl_holder_add_rotation_with_origin (HklHolder *self
,const char *name
,double x
,double y
,double z
,double ox
,double oy
,double oz
);
HklParameter * hkl_holder_add_translation (HklHolder *self
,char const *name
,double x
,double y
,double z
);
HklVector
hkl_holder_transformation_apply (const HklHolder *self
);
HklGeometry * hkl_geometry_new (const HklFactory *factory
,const HklGeometryOperations *ops
);
constructor
[skip]
int
hkl_geometry_init_geometry (HklGeometry *self
);
initilize an HklGeometry
[skip]
HklHolder * hkl_geometry_add_holder ();
add an Holder to the HklGeometry
[skip]
void
hkl_geometry_update ();
update the geometry internal once an Axis values changed
[skip]
int
hkl_geometry_get_axis_idx_by_name (const HklGeometry *self
);
get the index of the axes named name
in the geometry
[skip]
HklParameter *
hkl_geometry_get_axis_by_name (HklGeometry *self
);
get an HklAxis using its name
double
hkl_geometry_distance (const HklGeometry *self
);
compute the distance between two HklGeometries
double
hkl_geometry_distance_orthodromic (const HklGeometry *self
);
[skip]
int
hkl_geometry_closest_from_geometry_with_range
(HklGeometry *self
);
get the closest axes values in the HklInterval compatible with the current axes values
[skip]
int
hkl_geometry_is_valid ();
check if all axes of the HklGeometry are valid.
[skip]
int
hkl_geometry_is_valid_range ();
check if all axes of the HklGeometry are valid. (there is a difference for axis)
[skip]
HklHolder *
hkl_geometry_sample_holder_get (const HklGeometry *self
);
HklHolder *
hkl_geometry_detector_holder_get (const HklGeometry *self
);
HklGeometryList * hkl_geometry_list_new_copy ();
copy constructor
[skip]
void
hkl_geometry_list_add (HklGeometryList *self
);
this method Add a geometry to the geometries
This method try to be clever by allocating memory only if the current length of the geometries is not large enought. Then it just set the geometry axes and copy it to the right geometries. We do not gives the x len as it is equal to the self->axes_len.
[skip]
void
hkl_geometry_list_reset ();
reset the HklGeometry, in fact it is a sort of clean method remove all the items of the list.
[skip]
void
hkl_geometry_list_sort (HklGeometryList *self
);
sort the HklGeometryList compare to the distance of the given HklGeometry
[skip]
void
hkl_geometry_list_fprintf (FILE *f
);
print to a file the HklGeometryList
[skip]
void
hkl_geometry_list_multiply ();
apply the multiply lenthod to the HklGeometry
[skip]
void
hkl_geometry_list_remove_invalid ();
remove all invalid HklGeometry from the HklGeometryList
[skip]
HklGeometryListItem * hkl_geometry_list_item_new ();
constructor
[skip]
HklGeometryListItem * hkl_geometry_list_item_new_copy ();
copy constructor
[skip]
struct HklHolder { struct HklHolderConfig *config; HklGeometry *geometry; HklQuaternion q; };
struct HklGeometryOperations { HklHolder* (*sample_holder_get) (const HklGeometry *self, const HklSample *sample); HklHolder* (*detector_holder_get) (const HklGeometry *self, const HklDetector *detector); HklVector (*ki_get) (const HklGeometry *geometry); HklVector (*kf_get) (const HklGeometry *self, const HklDetector *detector); };
typedef struct { const HklFactory *factory; HklSource source; darray_parameter axes; darray_holder holders; const HklGeometryOperations *ops; } HklGeometry;
extern const HklGeometryOperations hkl_geometry_operations_defaults;
typedef struct { HklGeometryListMultiplyFunction multiply; struct list_head items; size_t n_items; } HklGeometryList;