1 | def runAlgorithm(): |
---|
2 | workspace_name = "POLREF00004699" |
---|
3 | workspace_nexus_file = workspace_name + ".nxs" |
---|
4 | |
---|
5 | PIX=1.1E-3 #m |
---|
6 | SC=75 |
---|
7 | avgDB=29 |
---|
8 | Load(Filename=workspace_nexus_file,OutputWorkspace=workspace_name) |
---|
9 | X=mtd[workspace_name] |
---|
10 | X = ConvertUnits(InputWorkspace=X,Target="Wavelength",AlignBins="1") |
---|
11 | # Reference intensity to normalise by |
---|
12 | CropWorkspace(InputWorkspace=X,OutputWorkspace='Io',XMin=0.8,XMax=14.5,StartWorkspaceIndex=2,EndWorkspaceIndex=2) |
---|
13 | # Crop out transmission and noisy data |
---|
14 | CropWorkspace(InputWorkspace=X,OutputWorkspace='D',XMin=0.8,XMax=14.5,StartWorkspaceIndex=3) |
---|
15 | Io=mtd['Io'] |
---|
16 | D=mtd['D'] |
---|
17 | |
---|
18 | # Peform the normaisation step |
---|
19 | Divide(LHSWorkspace=D,RHSWorkspace=Io,OutputWorkspace='I', |
---|
20 | AllowDifferentNumberSpectra='1',ClearRHSWorkspace='1') |
---|
21 | I=mtd['I'][0] |
---|
22 | |
---|
23 | # Automatically determine the SC and averageDB |
---|
24 | FindReflectometryLines(InputWorkspace=I, StartWavelength=10, OutputWorkspace='spectrum_numbers') |
---|
25 | spectrum_table = mtd['spectrum_numbers'] |
---|
26 | |
---|
27 | # Move the detector so that the detector channel matching the reflected beam is at 0,0 |
---|
28 | MoveInstrumentComponent(Workspace=I,ComponentName="lineardetector",X=0,Y=0,Z=-PIX*( (SC-avgDB)/2.0 +avgDB) ) |
---|
29 | |
---|
30 | # Should now have signed theta vs Lambda |
---|
31 | ConvertSpectrumAxis(InputWorkspace=I,OutputWorkspace='SignedTheta_vs_Wavelength',Target='signed_theta') |
---|
32 | |
---|
33 | # Check that signed two theta is being caluclated correctly (not normalised) |
---|
34 | ws1 = mtd['SignedTheta_vs_Wavelength'] |
---|
35 | upperHistogram = ws1.getNumberHistograms()-1 |
---|
36 | # MD transformations |
---|
37 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='QxQyMD',OutputDimensions='Q (lab frame)', Extents='-0.0005,0.0005,0,0.12') |
---|
38 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='QxQy2D',OutputDimensions='Q (lab frame)', NumberBinsQx=100, NumberBinsQz=100, OutputAsMDWorkspace=False, Extents='-0.0005,0.0005,0,0.12') |
---|
39 | |
---|
40 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='KiKfMD',OutputDimensions='K (incident, final)', Extents='0,0.05,0,0.05') |
---|
41 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='KiKf2D',OutputDimensions='K (incident, final)', Extents='0,0.05,0,0.05', NumberBinsQx=100, NumberBinsQz=100, OutputAsMDWorkspace=False) |
---|
42 | |
---|
43 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='PiPfMD',OutputDimensions='P (lab frame)', Extents='0,0.1,-0.02,0.15') |
---|
44 | ConvertToReflectometryQ(InputWorkspace='SignedTheta_vs_Wavelength',OutputWorkspace='PiPf2D',OutputDimensions='P (lab frame)', Extents='0,0.1,-0.02,0.15', NumberBinsQx=100, NumberBinsQz=100, OutputAsMDWorkspace=False) |
---|
45 | |
---|
46 | BinMD(InputWorkspace='QxQyMD',AxisAligned='0',BasisVector0='Qx,(Ang^-1),1,0',BasisVector1='Qz,(Ang^-1),0,1',OutputExtents='-0.0005,0.0005,0,0.12',OutputBins='100,100',Parallel='1',OutputWorkspace='QxQy_rebinned') |
---|
47 | BinMD(InputWorkspace='KiKfMD',AxisAligned='0',BasisVector0='Ki,(Ang^-1),1,0',BasisVector1='Kf,(Ang^-1),0,1',OutputExtents='0,0.05,0,0.05',OutputBins='100,100',Parallel='1',OutputWorkspace='KiKf_rebinned') |
---|
48 | BinMD(InputWorkspace='PiPfMD',AxisAligned='0',BasisVector0='Pz_i + Pz_f,(Ang^-1),1,0',BasisVector1='Pz_i - Pz_f,(Ang^-1),0,1',OutputExtents='0,0.1,-0.02,0.15',OutputBins='100,100',Parallel='1',OutputWorkspace='PiPf_rebinned') |
---|
49 | |
---|
50 | runAlgorithm() |
---|
51 | |
---|
52 | #Comparision 1 |
---|
53 | plotSlice(source='QxQy_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|
54 | plotSlice(source='QxQy2D', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|
55 | |
---|
56 | #Comparision 2 |
---|
57 | plotSlice(source='KiKf_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|
58 | plotSlice(source='KiKf2D', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|
59 | |
---|
60 | #Comparision 3 |
---|
61 | plotSlice(source='PiPf_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|
62 | plotSlice(source='PiPf2D', colormin=2e2, colormax=3e9, colorscalelog=True) |
---|