@@ -29,6 +29,7 @@ def build_header(options, params, intervals, detectors):
2929# ylabel: 'Intensity'
3030# xvars: %(xvars)s
3131# yvars: %(yvars)s
32+ # list: %(xvals)s
3233# xlimits: %(xmin)s %(xmax)s
3334# filename: %(filename)s
3435# variables: %(variables)s
@@ -41,8 +42,12 @@ def build_header(options, params, intervals, detectors):
4142 hdrparams = {key .lstrip ('-' ) for key in params }
4243 xvars = ', ' .join (hdrparams )
4344 lst = intervals [list (params )[0 ]]
44- xmin = min (lst )
45- xmax = max (lst )
45+ if options .list :
46+ xmin = 1
47+ xmax = len (lst )
48+ else :
49+ xmin = min (lst )
50+ xmax = max (lst )
4651 # Get Numpoints from length of -L list
4752 N = len (lst )
4853 # ... or using options.numponts if in fact a normal scan
@@ -77,6 +82,8 @@ def build_header(options, params, intervals, detectors):
7782 'xvars' : xvars ,
7883 'yvars' : ' ' .join ('(%s_I,%s_ERR)' % (d , d ) for d in detectors ),
7984
85+ 'xvals' : str (lst ),
86+
8087 'xmin' : xmin ,
8188 'xmax' : xmax ,
8289
@@ -314,7 +321,18 @@ def run(self):
314321 LOG .info ("Wrote headers" )
315322 LOG .info (f"Write step detectors line into { self .outfile } " )
316323 values = ['%s %s' % (d .intensity , d .error ) for d in detectors ]
317- line = '%s %s\n ' % (' ' .join (map (str , par_values )), ' ' .join (values ))
324+
325+ # Normal equidistant scan
326+ if not self .mcstas .options .list :
327+ line = '%s %s\n ' % (' ' .join (map (str , par_values )), ' ' .join (values ))
328+ else :
329+ try :
330+ # Check if parameters are numeric/float
331+ par_floats = [float (x ) for x in par_values ]
332+ line = '%s %s\n ' % (' ' .join (map (str , par_floats )), ' ' .join (values ))
333+ except :
334+ # otherwise use simple 'index' (may be scanning e.g. a filename)
335+ line = '%s %s\n ' % (str (i ), ' ' .join (values ))
318336 outfile .write (line )
319337 outfile .flush ()
320338
0 commit comments