Skip to content

Commit 93971f1

Browse files
authored
Beer powdiff workflow (#262)
* feat: load 3D detector geometry * feat: load monitor * fix: same interface for loading old and new files + replace DetectorBank index with enum * refactor: tofectomy * fix * docs: tweak wording * feat: powder diffraction workflow for beer * fix * fix: remove theta masking during load * docs: raw detector does not have scattering angle any more * fix: remove unused two theta limits * docs: naming * fix * refactor: self explanatory name * docs: make separate quantity for wavelength definition chopper position * docstring
1 parent 7f4ca04 commit 93971f1

8 files changed

Lines changed: 243 additions & 154 deletions

File tree

docs/user-guide/beer/beer_modulation_mcstas.ipynb

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"from ess.beer import BeerModMcStasWorkflow, BeerModMcStasWorkflowKnownPeaks\n",
2323
"from ess.beer.data import mcstas_silicon_medium_resolution, mcstas_duplex, duplex_peaks_array, silicon_peaks_array\n",
2424
"from ess.beer.types import *\n",
25+
"from ess.powder.types import *\n",
2526
"\n",
2627
"# Default bin edges for our d_hkl histograms\n",
2728
"dspacing = sc.linspace('dspacing', 0.8, 2.2, 2000, unit='angstrom')\n",
@@ -163,7 +164,8 @@
163164
"wf = BeerModMcStasWorkflowKnownPeaks()\n",
164165
"wf[DetectorBank] = DetectorBank.north\n",
165166
"wf[Filename[SampleRun]] = mcstas_silicon_medium_resolution()\n",
166-
"da = wf.compute(RawDetector[SampleRun])\n",
167+
"wf[DHKLList] = silicon_peaks_array()\n",
168+
"da = wf.compute(WavelengthDetector[SampleRun])\n",
167169
"da.masks.clear()\n",
168170
"da.hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
169171
]
@@ -183,13 +185,12 @@
183185
"metadata": {},
184186
"outputs": [],
185187
"source": [
186-
"wf[DHKLList] = silicon_peaks_array()\n",
187188
"wf[Filename[SampleRun]] = mcstas_silicon_medium_resolution()\n",
188189
"\n",
189190
"results = {}\n",
190191
"for bank in DetectorBank:\n",
191192
" wf[DetectorBank] = bank\n",
192-
" da = wf.compute(TofDetector[SampleRun])\n",
193+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
193194
" results[bank] = (\n",
194195
" da\n",
195196
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -220,7 +221,7 @@
220221
"results = {}\n",
221222
"for bank in DetectorBank:\n",
222223
" wf[DetectorBank] = bank\n",
223-
" da = wf.compute(TofDetector[SampleRun])\n",
224+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
224225
" results[bank] = (\n",
225226
" da\n",
226227
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -279,7 +280,8 @@
279280
"wf = BeerModMcStasWorkflowKnownPeaks()\n",
280281
"wf[DetectorBank] = DetectorBank.south\n",
281282
"wf[Filename[SampleRun]] = mcstas_duplex(8)\n",
282-
"wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-2)"
283+
"wf[DHKLList] = duplex_peaks_array()\n",
284+
"wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-2)"
283285
]
284286
},
285287
{
@@ -297,12 +299,10 @@
297299
"metadata": {},
298300
"outputs": [],
299301
"source": [
300-
"wf[DHKLList] = duplex_peaks_array()\n",
301-
"\n",
302302
"results = {}\n",
303303
"for bank in DetectorBank:\n",
304304
" wf[DetectorBank] = bank\n",
305-
" da = wf.compute(TofDetector[SampleRun])\n",
305+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
306306
" results[bank] = (\n",
307307
" da\n",
308308
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -333,7 +333,7 @@
333333
"results = {}\n",
334334
"for bank in DetectorBank:\n",
335335
" wf[DetectorBank] = bank\n",
336-
" da = wf.compute(TofDetector[SampleRun])\n",
336+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
337337
" results[bank] = (\n",
338338
" da\n",
339339
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -392,7 +392,8 @@
392392
"wf = BeerModMcStasWorkflowKnownPeaks()\n",
393393
"wf[DetectorBank] = DetectorBank.south\n",
394394
"wf[Filename[SampleRun]] = mcstas_duplex(9)\n",
395-
"wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
395+
"wf[DHKLList] = duplex_peaks_array()\n",
396+
"wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
396397
]
397398
},
398399
{
@@ -410,12 +411,10 @@
410411
"metadata": {},
411412
"outputs": [],
412413
"source": [
413-
"wf[DHKLList] = duplex_peaks_array()\n",
414-
"\n",
415414
"results = {}\n",
416415
"for bank in DetectorBank:\n",
417416
" wf[DetectorBank] = bank\n",
418-
" da = wf.compute(TofDetector[SampleRun])\n",
417+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
419418
" results[bank] = (\n",
420419
" da\n",
421420
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -446,7 +445,7 @@
446445
"results = {}\n",
447446
"for bank in DetectorBank:\n",
448447
" wf[DetectorBank] = bank\n",
449-
" da = wf.compute(TofDetector[SampleRun])\n",
448+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
450449
" results[bank] = (\n",
451450
" da\n",
452451
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -505,7 +504,8 @@
505504
"wf = BeerModMcStasWorkflowKnownPeaks()\n",
506505
"wf[DetectorBank] = DetectorBank.south\n",
507506
"wf[Filename[SampleRun]] = mcstas_duplex(10)\n",
508-
"wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
507+
"wf[DHKLList] = duplex_peaks_array()\n",
508+
"wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
509509
]
510510
},
511511
{
@@ -523,12 +523,10 @@
523523
"metadata": {},
524524
"outputs": [],
525525
"source": [
526-
"wf[DHKLList] = duplex_peaks_array()\n",
527-
"\n",
528526
"results = {}\n",
529527
"for bank in DetectorBank:\n",
530528
" wf[DetectorBank] = bank\n",
531-
" da = wf.compute(TofDetector[SampleRun])\n",
529+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
532530
" results[bank] = (\n",
533531
" da\n",
534532
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -559,7 +557,7 @@
559557
"results = {}\n",
560558
"for bank in DetectorBank:\n",
561559
" wf[DetectorBank] = bank\n",
562-
" da = wf.compute(TofDetector[SampleRun])\n",
560+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
563561
" results[bank] = (\n",
564562
" da\n",
565563
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -618,7 +616,8 @@
618616
"wf = BeerModMcStasWorkflowKnownPeaks()\n",
619617
"wf[DetectorBank] = DetectorBank.south\n",
620618
"wf[Filename[SampleRun]] = mcstas_duplex(16)\n",
621-
"wf.compute(RawDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
619+
"wf[DHKLList] = duplex_peaks_array()\n",
620+
"wf.compute(WavelengthDetector[SampleRun]).hist(two_theta=400, event_time_offset=1000).plot(norm='log', cmin=1.0e-3)"
622621
]
623622
},
624623
{
@@ -636,12 +635,10 @@
636635
"metadata": {},
637636
"outputs": [],
638637
"source": [
639-
"wf[DHKLList] = duplex_peaks_array()\n",
640-
"\n",
641638
"results = {}\n",
642639
"for bank in DetectorBank:\n",
643640
" wf[DetectorBank] = bank\n",
644-
" da = wf.compute(TofDetector[SampleRun])\n",
641+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
645642
" results[bank] = (\n",
646643
" da\n",
647644
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",
@@ -672,7 +669,7 @@
672669
"results = {}\n",
673670
"for bank in DetectorBank:\n",
674671
" wf[DetectorBank] = bank\n",
675-
" da = wf.compute(TofDetector[SampleRun])\n",
672+
" da = wf.compute(WavelengthDetector[SampleRun])\n",
676673
" results[bank] = (\n",
677674
" da\n",
678675
" .transform_coords(('dspacing',), graph=scn.conversion.graph.tof.elastic('tof'),)\n",

src/ess/beer/clustering.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
import scipp as sc
22
from scipy.signal import find_peaks, medfilt
33

4+
from ess.powder.types import RunType
5+
46
from .conversions import tof_from_t0_estimate_graph
57
from .types import (
68
GeometryCoordTransformGraph,
79
RawDetector,
8-
RunType,
910
StreakClusteredData,
1011
)
1112

1213

1314
def cluster_events_by_streak(
1415
da: RawDetector[RunType], gg: GeometryCoordTransformGraph
1516
) -> StreakClusteredData[RunType]:
16-
graph = tof_from_t0_estimate_graph(gg)
17+
graph = tof_from_t0_estimate_graph(da, gg)
1718

1819
da = da.transform_coords(['dspacing'], graph=graph)
1920
da.bins.coords['coarse_d'] = da.bins.coords.pop('dspacing').to(unit='angstrom')

0 commit comments

Comments
 (0)