Ticket #7445: ConvertToReflectometryQTest.py

File ConvertToReflectometryQTest.py, 4.0 KB (added by Owen Arnold, 7 years ago)
Line 
1def  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       
50runAlgorithm()
51
52#Comparision 1
53plotSlice(source='QxQy_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True)
54plotSlice(source='QxQy2D', colormin=2e2, colormax=3e9, colorscalelog=True)
55
56#Comparision 2
57plotSlice(source='KiKf_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True)
58plotSlice(source='KiKf2D', colormin=2e2, colormax=3e9, colorscalelog=True)
59
60#Comparision 3
61plotSlice(source='PiPf_rebinned', colormin=2e2, colormax=3e9, colorscalelog=True)
62plotSlice(source='PiPf2D', colormin=2e2, colormax=3e9, colorscalelog=True)