\(\renewcommand\AA{\unicode{x212B}}\)
Table of Contents
Name | Direction | Type | Default | Description |
---|---|---|---|---|
InputWorkspace | Input | Workspace | Mandatory | An input workspace from wich to copy sample information. |
OutputWorkspace | InOut | Workspace | Mandatory | An output workspace to wich to copy sample information.. |
CopyName | Input | boolean | True | Copy the name of the sample |
CopyMaterial | Input | boolean | True | Copy the material of the sample |
CopyEnvironment | Input | boolean | True | Copy the sample environment |
CopyShape | Input | boolean | True | Copy the sample shape |
CopyLattice | Input | boolean | True | Copy the sample oriented lattice |
CopyOrientationOnly | Input | boolean | False | Copy the U matrix only, if both origin and destination have oriented lattices |
MDInputSampleNumber | Input | number | 0 | The number of the sample to be copied from, for an MD workspace (starting from 0) |
MDOutputSampleNumber | Input | number | Optional | The number of the sample to be copied to for an MD workspace (starting from 0). No number, or negative number, means that it will copy to all samples |
The algorithm copies some/all the sample information from one workspace to another. For MD input workspaces, if no input sample number is specified, or not found, it will copy the first sample. For MD output workspaces, if no output sample number is specified (or negative), it will copy to all samples. The following information can be copied:
One can copy the orientation matrix only. To do this, select both CopyLattice and CopyOrientationOnly. If only CopyOrientationOnly is true, the algorithm will throw an error.
A common use for this algorithm is for single crystal measurements. Finding the UB matrix occurs on a PeaksWorkspace. In order to convertthe data to HKL space, one needs to copy the oriented lattice to the individual data workspaces.
#create some workspaces
peaks=CreateWorkspace(DataX='1,2',DataY='1',WorkspaceTitle='Workspace a')
SetUB(peaks,a=2,b=3,c=4,alpha=90,beta=90,gamma=90,u="1,0,0",v="0,0,1")
data=CreateWorkspace(DataX='1,2',DataY='1',WorkspaceTitle='Workspace b')
SetUB(data,a=1,b=1,c=1,alpha=90,beta=90,gamma=90,u="1,0,0",v="0,1,1")
#apply algorithm
CopySample(InputWorkspace=peaks,OutputWorkspace=data,CopyName=0,CopyMaterial=0,CopyEnvironment=0,CopyShape=0,CopyLattice=1)
#do a quick check
ol=data.sample().getOrientedLattice()
print("Data lattice parameters are: {} {} {} {} {} {}".format(
ol.a(), ol.b(), ol.c(), ol.alpha(), ol.beta(), ol.gamma()))
Output:
Data lattice parameters are: 2.0 3.0 4.0 90.0 90.0 90.0
CopySample can be used to copy a sample shape, but apply a new automatic goniometer rotation. SetGoniometer should be called before CopySample. After running this example code, the sample shapes can be plotted (see 3D Mesh Plots for Sample Shapes):
cuboid = " \
<cuboid id='some-cuboid'> \
<height val='2.0' /> \
<width val='2.0' /> \
<depth val='0.2' /> \
<centre x='10.0' y='10.0' z='10.0' /> \
</cuboid> \
<algebra val='some-cuboid' /> \
"
ws = CreateSampleWorkspace()
SetGoniometer(ws, Axis0="0,0,1,0,1")
SetSample(ws, Geometry={'Shape': 'CSG', 'Value': cuboid})
ws1 = CreateSampleWorkspace()
SetGoniometer(ws1, Axis0="30,0,1,0,-1")
CopySample(ws,ws1,CopyEnvironment=False, CopyMaterial=False,CopyShape=True)
Categories: AlgorithmIndex | Sample | Utility\Workspaces