aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/detector.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcrystfel/src/detector.c')
-rw-r--r--libcrystfel/src/detector.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/libcrystfel/src/detector.c b/libcrystfel/src/detector.c
index 42ffbe40..8c98f79e 100644
--- a/libcrystfel/src/detector.c
+++ b/libcrystfel/src/detector.c
@@ -1204,7 +1204,7 @@ struct detector *get_detector_geometry_2(const char *filename,
int i;
int rgi, rgci;
int reject = 0;
- int path_dim;
+ int path_dim, mask_path_dim;
int dim_dim;
int dim_reject = 0;
int dim_dim_reject = 0;
@@ -1389,6 +1389,7 @@ struct detector *get_detector_geometry_2(const char *filename,
}
+ mask_path_dim = -1;
for ( i=0; i<det->n_panels; i++ ) {
int panel_mask_dim = 0;
@@ -1398,8 +1399,7 @@ struct detector *get_detector_geometry_2(const char *filename,
next_instance = det->panels[i].mask;
- while(next_instance)
- {
+ while ( next_instance ) {
next_instance = strstr(next_instance, "%");
if ( next_instance != NULL ) {
next_instance += 1*sizeof(char);
@@ -1407,18 +1407,29 @@ struct detector *get_detector_geometry_2(const char *filename,
}
}
- if ( panel_mask_dim != path_dim ) {
- dim_reject = 1;
+ if ( mask_path_dim == -1 ) {
+ mask_path_dim = panel_mask_dim;
+ } else {
+ if ( panel_mask_dim != mask_path_dim ) {
+ dim_reject = 1;
+ }
}
+
}
}
- if ( dim_reject == 1) {
+ if ( dim_reject == 1 ) {
ERROR("All panels' data and mask entries must have the same "
"number of placeholders\n");
reject = 1;
}
+ if ( mask_path_dim > path_dim ) {
+ ERROR("Number of placeholders in mask cannot be larger than "
+ "for data\n");
+ reject = 1;
+ }
+
det->path_dim = path_dim;
dim_dim_reject = 0;