Skip to content
Snippets Groups Projects
Commit f403a700 authored by Raquel Alvarez's avatar Raquel Alvarez
Browse files

Re #17385 Workflow diagram for CreateTransmissionWorkspace

parent 5df61d53
No related merge requests found
......@@ -9,21 +9,28 @@
Description
-----------
Creates a transmission run workspace given one or two TOF workspaces,
and the original run workspace. If two workspaces are provided, then the
first workspace is considered a low wavelength transmission run, and the
second workspace is considered a high wavelength transmission run.
Creates a transmission run workspace given one or two TOF workspaces.
If two workspaces are provided, then the first workspace is considered
a low wavelength transmission run, and the second workspace is considered
a high wavelength transmission run.
The two transmission run workspaces are converted to IvQ workspaces and
then stitched together using :ref:`algm-Stitch1D`.
Both input workspaces must have x-units of TOF.
Both input workspaces must have X-units of TOF. They are first converted
to units of wavelength and then stitched together using :ref:`algm-Stitch1D`.
A single output workspace is generated with x-units of Wavelength in angstroms.
A single output workspace is generated with X-units of Wavelength in angstroms.
In most cases you will want to use :ref:`algm-CreateTransmissionWorkspaceAuto`,
which is a facade over this algorithm that correctly configures the input
properties for you.
.. diagram:: CreateTransmissionWorkspace_HighLvl-v1_wkflw.dot
The diagram above illustrates the main steps in the algorithm. Below is a more
detailed diagram describing how transmission workspaces are converted to units
of wavelength and normalized by monitors.
.. diagram:: CreateTransmissionWorkspace_ConvertToWavelength-v1_wkflw.dot
Usage
-----
......
digraph CreateTransmissionWorkspaceWavelength {
label = ""
$global_style
subgraph params {
$param_style
firstRun [label="TransmissionRun"]
monitorIndex [label="I0MonitorIndex"]
processingInst [label="ProcessingInstructions"]
wavMin [label="WavelengthMin"]
wavMax [label="WavelengthMax"]
wavStep [label="WavelengthStep"]
monIntWavMin [label="MonitorIntegration-\nWavelengthMin"]
monIntWavMax [label="MonitorIntegration-\nWavelengthMax"]
outputWS [label="TransmissionRun\nin wavelength"]
detWS [label="DetectorWorkspace"]
monWS [label="MonitorWorkspace"]
}
subgraph decisions {
$decision_style
checkMon [label="Monitors?"]
checkBgMinMax [label="MonitorBackground-\nWavelength\nMin/Max non-zero?"]
}
subgraph algorithms {
$algorithm_style
convertDet [label="ConvertUnits\n(AlignBins = True)"]
groupDet [label="GroupDetectors"]
cropDet [label="CropWorkspace"]
rebinDet [label="Rebin"]
convertMon [label="ConvertUnits\n(AlignBins = False)"]
cropMon [label="CropWorkspace"]
calcFlatBg [label="CalculateFlatBackground"]
rebinToWS [label="RebinToWorkspace"]
intMon [label="Integration"]
divideDetMon [label="Divide\n(Detectors / Monitors / Unity)"]
}
subgraph processes {
$process_style
}
subgraph values {
$value_style
valDet [label="I(λ)"]
valMon [label="I(λ)"]
valUnity [label="I(1)"]
}
firstRun -> convertDet [label="Detectors"]
convertDet -> valDet
valDet -> groupDet
valDet -> processingInst [style=invis]
processingInst -> groupDet
groupDet -> cropDet
wavMin -> cropDet
wavMax -> cropDet
cropDet -> rebinDet
wavStep -> rebinDet
rebinDet -> detWS
firstRun -> checkMon [label="Monitors"]
checkMon -> convertMon [label="Yes"]
convertMon -> valMon
valMon -> cropMon
monitorIndex -> cropMon
cropMon -> checkBgMinMax
checkBgMinMax -> calcFlatBg [label="Yes"]
calcFlatBg -> rebinToWS
checkBgMinMax -> rebinToWS [label="No"]
detWS -> rebinToWS
rebinToWS -> intMon
monIntWavMin -> intMon
monIntWavMax -> intMon
rebinToWS -> monIntWavMin [style=invis]
monIntWavMin -> monIntWavMax [style=invis]
intMon -> monWS
checkMon -> valUnity [label="No"]
valUnity -> divideDetMon
detWS -> divideDetMon
monWS -> divideDetMon
divideDetMon -> outputWS
{rank = same; convertDet; convertMon}
{rank = same; valDet; valMon; valUnity}
{rank = same; detWS; rebinToWS}
}
digraph CreateTransmissionWorkspace {
label = ""
$global_style
subgraph params {
$param_style
firstRun [label="FirstTransmissionRun"]
secondRun [label="SecondTransmissionRun"]
outputWS [label="OutputWorkspace"]
params [label="Params"]
startOv [label="StartOverlap"]
endOv [label="EndOverlap"]
}
subgraph decisions {
$decision_style
checkSecondRun [label="SecondTransmissionRun?"]
}
subgraph algorithms {
$algorithm_style
stitch [label="Stitch1D"]
}
subgraph processes {
$process_style
convertFirst [label="Convert to λ and\nnormalize"]
convertSecond [label="Convert to λ and\nnormalize"]
}
subgraph values {
$value_style
}
firstRun -> convertFirst
convertFirst -> checkSecondRun
checkSecondRun -> outputWS [label="No"]
checkSecondRun -> stitch [label="Yes"]
secondRun -> convertSecond
convertSecond -> stitch
convertSecond -> params [style=invis]
startOv -> stitch
endOv -> stitch
stitch -> outputWS
params -> stitch
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment