aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
AgeCommit message (Collapse)Author
2023-09-23Fix a couple of profiling memory errorsThomas White
The "children" array was the wrong size, and not freed. Also, some formatting fussiness.
2023-09-22Don't complain about missing 'all' group until it's actually neededThomas White
2023-09-20Fix inappropriate use of r_devThomas White
These should be get_exerr. Following 1ae9a4582, the r_dev values are no longer useful physical quantities, only a refinement target function. This was causing the last few Git versions to not predict any reflections at all!
2023-09-19Prediction refinement: Weaken restraint and reduce number of iterationsThomas White
The restraint was way too strong, after the last round of tweaking. With a weaker restraint, the algorithm converges very quickly - it's practically linear - so ten iterations is way too much.
2023-09-18Use a*a instead of pow(a, 2)Thomas White
2023-09-18Build EXC_WEIGHT into r_devThomas White
This avoids weird weighting factors everywhere and much confusion. Since Millepede doesn't have an easy way of weighting measurements (only via altering the ESD values), treating it as a units conversion seems to be easier.
2023-09-18pred_residual: Remove vestigial conversion to metresThomas White
We want the residual in pixels, as described in the comment for EXC_WEIGHT. This routine is only used for displaying the total residuals, not for the real minimisation maths. However, we need to be clear.
2023-09-18Prediction refinement: Record excitation error and distance residuals separatelyThomas White
2023-09-18Prediction refinement: Record initial residual and total shiftsThomas White
2023-09-18Merge branch 'millepede'Thomas White
Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/3 Fixes: https://gitlab.desy.de/thomas.white/crystfel/-/issues/29
2023-09-12Fix nominal space group when exporting MTZ in PG 2Thomas White
2023-09-12Fix sense of panel rotationsThomas White
Should always be a right-hand grip rotation around positive axis direction.
2023-09-12Seedee: Handle format i4<Thomas White
2023-08-30Add excitation error to Millepede data (local-only measurement)Thomas White
2023-08-30FussinessThomas White
2023-08-29Meson: Simplify Millepede build systemThomas White
There are no dependencies, only a subproject via wrap.
2023-08-29Automatically add top-level group for single-panel detectorsThomas White
2023-08-24Use built-in Mille writer instead of wrapping C++ versionThomas White
2023-07-28Tweak sigmasThomas White
2023-07-28align_detector: Decode labels and apply geometry correctionsThomas White
2023-07-28Don't attempt to write Mille data without geometry groupsThomas White
2023-07-28Unconditionally compile crystfel-mille.cThomas White
We need mille_label() for align_detector, even if we don't have Millepede. Some of this complexity can be removed later by re-implementing "mille()". The build system and wrapper code is already longer than a pure C implementation would be.
2023-07-28Initialise det->top_groupThomas White
2023-07-28data_template_free: Free the groups as wellThomas White
2023-07-28detgeom_free: Free the groups as wellThomas White
2023-07-28Fix some memory leaksThomas White
2023-07-28Adjust refinement weights and restraintsThomas White
2023-07-28Fix sigmasThomas White
2023-07-28Fix parameter refinement unitsThomas White
The *parameters* will be in metres, radians, m^-1 for translation, rotation and cell parameters respectively. The *residuals*, however, are in pixels.
2023-07-28Avoid repetitive codeThomas White
2023-07-28Fix incorrectly-sized arrayThomas White
2023-07-28Implement data_template_group_info()Thomas White
2023-07-28Re-define geometry group labelling schemeThomas White
The old version was totally broken. The serial numbers have to contain the complete hierarchy information, otherwise they aren't unique.
2023-07-28Rotation centre coordinates need to be in metres (not pixels)Thomas White
2023-07-28Add rotation gradients for MilleThomas White
2023-07-28Add detgeom_group_centerThomas White
2023-07-28Fix iterate() for prediction refinementThomas White
I was confused when I wrote acd0de4e4a21, and completely broke the maths. To fix it, I copied the guts of iterate() back from the old version and re-created the intermediate steps - switching x/y to fs/ss, calculating fs/ss gradients together and the hooks for Minv.
2023-07-28Redefine ray vector without trigonometryThomas White
This makes the gradients very simple!
2023-07-28Implement rotation gradients (with test)Thomas White
2023-07-28Move rotate2d to utilsThomas White
2023-07-28Separate gradients into "panel" and "physics" partsThomas White
2023-07-28Factorise matrix operationsThomas White
This makes the code much clearer. Note that two opposing sign errors have been fixed in the gradient calculation.
2023-07-28Add show_vector()Thomas White
2023-07-28Implement panel x gradientsThomas White
2023-07-28Calculate panel MinvsThomas White
2023-07-28Calculate fs and ss gradients together, SPOT panel number, add matrix hooksThomas White
2023-07-28r_gradient: Re-order parameters to match {fs,ss}_gradientThomas White
2023-07-28Trim the list of geometric parametersThomas White
2023-07-28Don't refine detector at all, in prediction refinementThomas White
Following the advice in https://doi.org/10.1107/S2059798318009191
2023-07-28Remove a #defineThomas White