Skip to content

Commit b475a52

Browse files
authored
Merge pull request #2273 from willend/main
Platform-independent reflection list sort in Single_crystal
2 parents e0af992 + ac5b873 commit b475a52

File tree

3 files changed

+69
-13
lines changed

3 files changed

+69
-13
lines changed

mcstas-comps/samples/Single_crystal.comp

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -379,12 +379,30 @@ struct hkl_data
379379
{
380380
struct hkl_data const *pa = a;
381381
struct hkl_data const *pb = b;
382-
double s = pa->tau - pb->tau;
383382

384-
if (!s) return 0;
385-
else return (s < 0 ? -1 : 1);
386-
} /* PN_list_compare */
387-
383+
/* Sort by tau */
384+
if (pa->tau < pb->tau) return -1;
385+
if (pa->tau > pb->tau) return 1;
386+
387+
/* Sort by tau_x */
388+
if (pa->tau_x < pb->tau_x) return -1;
389+
if (pa->tau_x > pb->tau_x) return 1;
390+
391+
/* Sort by tau_y */
392+
if (pa->tau_y < pb->tau_y) return -1;
393+
if (pa->tau_y > pb->tau_y) return 1;
394+
395+
/* Sort by tau_z */
396+
if (pa->tau_z < pb->tau_z) return -1;
397+
if (pa->tau_z > pb->tau_z) return 1;
398+
399+
/* In case of tie, sort by F2 also */
400+
if (pa->F2 < pb->F2) return -1;
401+
if (pa->F2 > pb->F2) return 1;
402+
403+
404+
return 0;
405+
} /* SX_list_compare */
388406

389407
#ifndef CIF2HKL
390408
#define CIF2HKL

mcstas-comps/union/Single_crystal_process.comp

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,30 @@ SHARE
167167
{
168168
struct hkl_data_union const *pa = a;
169169
struct hkl_data_union const *pb = b;
170-
double s = pa->tau - pb->tau;
171-
172-
if (!s) return 0;
173-
else return (s < 0 ? -1 : 1);
174-
} /* PN_list_compare */
170+
171+
/* Sort by tau */
172+
if (pa->tau < pb->tau) return -1;
173+
if (pa->tau > pb->tau) return 1;
174+
175+
/* Sort by tau_x */
176+
if (pa->tau_x < pb->tau_x) return -1;
177+
if (pa->tau_x > pb->tau_x) return 1;
178+
179+
/* Sort by tau_y */
180+
if (pa->tau_y < pb->tau_y) return -1;
181+
if (pa->tau_y > pb->tau_y) return 1;
182+
183+
/* Sort by tau_z */
184+
if (pa->tau_z < pb->tau_z) return -1;
185+
if (pa->tau_z > pb->tau_z) return 1;
186+
187+
/* In case of tie, sort by F2 also */
188+
if (pa->F2 < pb->F2) return -1;
189+
if (pa->F2 > pb->F2) return 1;
190+
191+
192+
return 0;
193+
} /* SX_list_compare */
175194

176195
/* ------------------------------------------------------------------------ */
177196
int

mcxtrace-comps/samples/Single_crystal.comp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,10 +396,29 @@ SHARE
396396
{
397397
struct hkl_data const *pa = a;
398398
struct hkl_data const *pb = b;
399-
double s = pa->tau - pb->tau;
400399

401-
if (!s) return 0;
402-
else return (s < 0 ? -1 : 1);
400+
/* Sort by tau */
401+
if (pa->tau < pb->tau) return -1;
402+
if (pa->tau > pb->tau) return 1;
403+
404+
/* Sort by tau_x */
405+
if (pa->tau_x < pb->tau_x) return -1;
406+
if (pa->tau_x > pb->tau_x) return 1;
407+
408+
/* Sort by tau_y */
409+
if (pa->tau_y < pb->tau_y) return -1;
410+
if (pa->tau_y > pb->tau_y) return 1;
411+
412+
/* Sort by tau_z */
413+
if (pa->tau_z < pb->tau_z) return -1;
414+
if (pa->tau_z > pb->tau_z) return 1;
415+
416+
/* In case of tie, sort by F2 also */
417+
if (pa->F2 < pb->F2) return -1;
418+
if (pa->F2 > pb->F2) return 1;
419+
420+
421+
return 0;
403422
} /* SX_list_compare */
404423

405424
#ifndef CIF2HKL

0 commit comments

Comments
 (0)