MDNormSCD v1

../_images/MDNormSCD-v1_dlg.png

MDNormSCD dialog.

Summary

Calculate normalization for an MDEvent workspace for single crystal diffraction.

Properties

Name Direction Type Default Description
InputWorkspace Input MDEventWorkspace Mandatory An input MDWorkspace.
AlignedDim0 Input string   Binning parameters for the 0th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
AlignedDim1 Input string   Binning parameters for the 1th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
AlignedDim2 Input string   Binning parameters for the 2th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
AlignedDim3 Input string   Binning parameters for the 3th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
AlignedDim4 Input string   Binning parameters for the 4th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
AlignedDim5 Input string   Binning parameters for the 5th dimension. Enter it as a comma-separated list of values with the format: ‘name,minimum,maximum,number_of_bins’. Leave blank for NONE.
FluxWorkspace Input MatrixWorkspace Mandatory An input workspace containing momentum dependent flux.
SolidAngleWorkspace Input MatrixWorkspace Mandatory An input workspace containing momentum integrated vanadium (a measure of the solid angle).
OutputWorkspace Output Workspace Mandatory A name for the output data MDHistoWorkspace.
OutputNormalizationWorkspace Output Workspace Mandatory A name for the output normalization MDHistoWorkspace.

Description

The algorithm calculates a normalization MD workspace for single crystal diffraction experiments. Trajectories of each detector in reciprocal space are calculated, and the flux is integrated between intersections with each MDBox. A brief introduction to the multi-dimensional data normalization can be found here.

Usage

Example - MDNormSCD

try:
  # Setting up the workspaces containing information about the flux and the solid angle (from a vanadium run)
  rawVan=Load(Filename=r'TOPAZ_7892_event.nxs')
  rawVan=ConvertUnits(InputWorkspace=rawVan,Target='Momentum')
  MaskBTP(Workspace=rawVan,Bank="10-16,19-21,23-25,29-35,40-46,49-57,59")
  MaskBTP(Workspace=rawVan,Pixel="0-9,246-255")
  MaskBTP(Workspace=rawVan,Tube="0-9,246-255")
  rawVan=CropWorkspace(InputWorkspace=rawVan,XMin='1.85',XMax='10')

  #Solid angle
  sa=Rebin(InputWorkspace=rawVan,Params='1.85,10,10',PreserveEvents='0')
  SaveNexus(InputWorkspace=sa, Filename="/home/3y9/Desktop/TOPAZ/solidAngle.nxs")

  #flux
  flux=GroupDetectors(InputWorkspace=rawVan,MapFile=r'/home/3y9/Desktop/TOPAZ/grouping.xml')
  DeleteWorkspace(rawVan)
  flux=CompressEvents(InputWorkspace=flux,Tolerance=1e-4)
  flux=Rebin(InputWorkspace=flux,Params='1.85,10,10')
  for i in range(flux.getNumberHistograms()):
      el=flux.getSpectrum(i)
      el.divide(flux.readY(i)[0],0)
  flux=Rebin(InputWorkspace=flux,Params='1.85,10,10')
  flux=IntegrateFlux(flux)
  SaveNexus(InputWorkspace=flux, Filename="/home/3y9/Desktop/TOPAZ/spectra.nxs")

  #data
  data=Load(Filename=r'TOPAZ_7985_event.nxs')
  data=ConvertUnits(InputWorkspace=data,Target='Momentum')
  MaskBTP(Workspace=data,Bank="10-16,19-21,23-25,29-35,40-46,49-57,59")
  MaskBTP(Workspace=data,Pixel="0-9,246-255")
  MaskBTP(Workspace=data,Tube="0-9,246-255")
  data=CropWorkspace(InputWorkspace=data,XMin='1.85',XMax='10')
  data=Rebin(InputWorkspace=data,Params='1.85,10,10')
  LoadIsawUB(InputWorkspace=data,Filename=r'7995.mat')
  MDdata=ConvertToMD(InputWorkspace=data,QDimensions="Q3D",dEAnalysisMode="Elastic",
      Q3DFrames="HKL",QConversionScales="HKL",
      MinValues="-10,-10,-10",Maxvalues="10,10,10")
  SaveMD(InputWorkspace=MDdata, Filename="/home/3y9/Desktop/TOPAZ/MDdata.nxs")

  #running the algorithm
  MDNormSCD(InputWorkspace='MDdata',
      AlignedDim0='[H,0,0],-8,8,100',
      AlignedDim1='[0,K,0],-8,8,100',
      AlignedDim2='[0,0,L],-8,8,100',
      FluxWorkspace=flux,
      SolidAngleWorkspace=sa,
      OutputWorkspace='mdout',
      OutputNormalizationWorkspace='mdnorm')

  #If you have multiple workspaces, add separately the output workspaces, and separately the
  #output normalization workspaces, then divide the two sums
  normalized=DivideMD('mdout','mdnorm')
except:
  pass

References

The source for how this calculation is done is

  1. T.M. Michels-Clark, A.T. Savici, V.E. Lynch, X.P. Wang and C.M. Hoffmann Expanding Lorentz and spectrum corrections to large volumes of reciprocal space for single-crystal time-of-flight neutron diffraction. J Appl Crystallogr 49.2 (2016) doi: 10.1107/S1600576716001369

Categories: Algorithms | MDAlgorithms\Normalisation

Source

C++ source: MDNormSCD.cpp

C++ header: MDNormSCD.h