Table of Contents
Calculates indirect absorption corrections for a given sample shape, using a MonteCarlo simulation.
Name | Direction | Type | Default | Description |
---|---|---|---|---|
SampleWorkspace | Input | Workspace | Mandatory | Sample Workspace |
SampleChemicalFormula | Input | string | Chemical formula for the sample material | |
SampleCoherentXSection | Input | number | 0 | The coherent cross-section for the sample material in barns. To be used instead of Chemical Formula. |
SampleIncoherentXSection | Input | number | 0 | The incoherent cross-section for the sample material in barns. To be used instead of Chemical Formula. |
SampleAttenuationXSection | Input | number | 0 | The absorption cross-section for the sample material in barns. To be used instead of Chemical Formula. |
SampleDensityType | Input | string | Mass Density | Use of Mass density or Number density for the sample. Allowed values: [‘Mass Density’, ‘Number Density’] |
SampleNumberDensityUnit | Input | string | Atoms | Choose which units SampleDensity refers to. Allowed values: [Atoms, Formula Units]. Allowed values: [‘Atoms’, ‘Formula Units’] |
SampleDensity | Input | number | 0 | The value for the sample Mass density (g/cm^3) or Number density (1/Angstrom^3). |
BeamHeight | Input | number | 1 | Height of the beam (cm) |
BeamWidth | Input | number | 1 | Width of the beam (cm) |
NumberOfWavelengthPoints | Input | number | 10 | Number of wavelengths for calculation |
EventsPerPoint | Input | number | 1000 | Number of neutron events |
Interpolation | Input | string | Linear | Type of interpolation. Allowed values: [‘Linear’, ‘CSpline’] |
MaxScatterPtAttempts | Input | number | 5000 | Maximum number of tries made to generate a scattering point |
ContainerWorkspace | Input | Workspace | Container Workspace | |
ContainerChemicalFormula | Input | string | Chemical formula for the container material | |
ContainerCoherentXSection | Input | number | 0 | The coherent cross-section for the can material in barns. To be used instead of Chemical Formula. |
ContainerIncoherentXSection | Input | number | 0 | The incoherent cross-section for the can material in barns. To be used instead of Chemical Formula. |
ContainerAttenuationXSection | Input | number | 0 | The absorption cross-section for the can material in barns. To be used instead of Chemical Formula. |
ContainerDensityType | Input | string | Mass Density | Use of Mass density or Number density for the container. Allowed values: [‘Mass Density’, ‘Number Density’] |
ContainerNumberDensityUnit | Input | string | Atoms | Choose which units ContainerDensity refers to. Allowed values: [Atoms, Formula Units]. Allowed values: [‘Atoms’, ‘Formula Units’] |
ContainerDensity | Input | number | 0 | The value for the container Mass density (g/cm^3) or Number density (1/Angstrom^3). |
Shape | Input | string | FlatPlate | Geometric shape of the sample environment. Allowed values: [‘FlatPlate’, ‘Cylinder’, ‘Annulus’] |
Height | Input | number | 0 | Height of the sample environment (cm) |
SampleWidth | Input | number | 0 | Width of the sample environment (cm) |
SampleThickness | Input | number | 0 | Thickness of the sample environment (cm) |
SampleCenter | Input | number | 0 | Center of the sample environment |
SampleAngle | Input | number | 0 | Angle of the sample environment with respect to the beam (degrees) |
SampleRadius | Input | number | 0 | Radius of the sample environment (cm) |
SampleInnerRadius | Input | number | 0 | Inner radius of the sample environment (cm) |
SampleOuterRadius | Input | number | 0 | Outer radius of the sample environment (cm) |
ContainerFrontThickness | Input | number | 0 | Front thickness of the container environment (cm) |
ContainerBackThickness | Input | number | 0 | Back thickness of the container environment (cm) |
ContainerInnerRadius | Input | number | 0 | Inner radius of the container environment (cm) |
ContainerOuterRadius | Input | number | 0 | Outer radius of the container environment (cm) |
CorrectionsWorkspace | Output | WorkspaceGroup | corrections | Name of the workspace group to save correction factors |
This algorithm calculates the absorption factors, required for the Paalman Pings method of absorption corrections, using a Monte Carlo procedure. Currently only the acc and ass factors are calculated.
CalculateMonteCarloAbsorption subsequently calls the SimpleShapeMonteCarloAbsorption v1 algorithm for the calculation of each absorption factor.
There are three existing Shape Options: Flat Plate, Annulus and Cylinder. Each shape is defined by a different set of geometric parameters.
Flat Plate parameters: SampleThickness and SampleWidth for the Sample, ContainerFrontThickness and ContainerBackThickness for the container. Annulus parameters: SampleInnerRadius and SampleOuterRadius for the Sample, ContainerInnerRadius and ContainerOuterRadius for the container. Cylinder parameters: SampleRadius for the sample, ContainerInnerRadius and ContainerOuterRadius for the container.
The location and orientation of the sample can be defined with SampleCenter and SampleAngle.
Example - CalculateMonteCarloAbsorption
sample_ws = CreateSampleWorkspace(Function="Quasielastic",
XUnit="Wavelength",
XMin=-0.5,
XMax=0.5,
BinWidth=0.01)
# Efixed is generally defined as part of the IDF for real data.
# Fake it here
inst_name = sample_ws.getInstrument().getName()
SetInstrumentParameter(sample_ws, ComponentName=inst_name,
ParameterName='Efixed', ParameterType='Number', Value='4.1')
container_ws = CreateSampleWorkspace(Function="Quasielastic",
XUnit="Wavelength",
XMin=-0.5,
XMax=0.5,
BinWidth=0.01)
SetInstrumentParameter(container_ws, ComponentName=inst_name,
ParameterName='Efixed', ParameterType='Number', Value='4.1')
corrections = CalculateMonteCarloAbsorption(SampleWorkspace = sample_ws,
SampleChemicalFormula = 'H2-O',
SampleDensityType = 'Mass Density',
SampleDensity = 1.0,
ContainerWorkspace = container_ws,
ContainerChemicalFormula = 'Al',
ContainerDensityType = 'Mass Density',
ContainerDensity = 1.0,
EventsPerPoint = 200,
BeamHeight = 3.5,
BeamWidth = 4.0,
Height = 2.0,
Shape = 'FlatPlate',
SampleWidth = 1.4,
SampleThickness = 2.1,
ContainerFrontThickness = 1.2,
ContainerBackThickness = 1.1)
ass_ws = corrections[0]
acc_ws = corrections[1]
print("Workspaces: " + str(ass_ws.getName()) + ", " + str(acc_ws.getName()))
print("Y-Unit Label of " + str(ass_ws.getName()) + ": " + str(ass_ws.YUnitLabel()))
print("Y-Unit Label of " + str(acc_ws.getName()) + ": " + str(acc_ws.YUnitLabel()))
Output:
Workspaces: corrections_ass, corrections_acc
Y-Unit Label of corrections_ass: Attenuation factor
Y-Unit Label of corrections_acc: Attenuation factor
Categories: AlgorithmIndex | Workflow\Inelastic | CorrectionFunctions\AbsorptionCorrections | Workflow\MIDAS
Python: CalculateMonteCarloAbsorption.py (last modified: 2019-04-02)