def _create_workspaces(self): cal=CreateSampleWorkspace(NumBanks=1,BinWidth=20000,PixelSpacing=0.1,BankPixelWidth=100) RotateInstrumentComponent(cal, ComponentName='bank1', X=1, Y=0.5, Z=2, Angle=35) MoveInstrumentComponent(cal, ComponentName='bank1', X=1, Y=1, Z=5) bkg=CloneWorkspace(cal) data=CloneWorkspace(cal) AddSampleLog(cal, LogName="gd_prtn_chrg", LogType='Number', NumberType='Double', LogText='200') AddSampleLog(bkg, LogName="gd_prtn_chrg", LogType='Number', NumberType='Double', LogText='50') AddSampleLog(data, LogName="gd_prtn_chrg", LogType='Number', NumberType='Double', LogText='100') AddSampleLog(cal, LogName="duration", LogType='Number', NumberType='Double', LogText='20') AddSampleLog(bkg, LogName="duration", LogType='Number', NumberType='Double', LogText='5') AddSampleLog(data, LogName="duration", LogType='Number', NumberType='Double', LogText='10') def get_cal_counts(n): if n < 5000: return 0.9 else: return 1.0 def get_bkg_counts(n): return 1.5*get_cal_counts(n) def get_data_counts(n,twoTheta): tt1=30 tt2=45 return get_bkg_counts(n)+10*np.exp(-(twoTheta-tt1)**2/1)+20*np.exp(-(twoTheta-tt2)**2/0.2) for i in range(cal.getNumberHistograms()): cal.setY(i, [get_cal_counts(i)*2.0]) bkg.setY(i, [get_bkg_counts(i)/2.0]) twoTheta=data.getInstrument().getDetector(i+10000).getTwoTheta(V3D(0,0,0),V3D(0,0,1))*180/np.pi data.setY(i, [get_data_counts(i,twoTheta)]) return data, cal, bkg
def createPhononWS(self, T, en, e_units): fn = 'name=Gaussian, PeakCentre='+str(en)+', Height=1, Sigma=0.5;' fn +='name=Gaussian, PeakCentre=-'+str(en)+', Height='+str(np.exp(-en*11.6/T))+', Sigma=0.5;' ws = CreateSampleWorkspace(binWidth = 0.1, XMin = -25, XMax = 25, XUnit = e_units, Function = 'User Defined', UserDefinedFunction=fn) LoadInstrument(ws, InstrumentName='MARI', RewriteSpectraMap = True) with self.assertRaises(RuntimeError): ws_DOS = ComputeIncoherentDOS(ws) ws = SofQW3(ws, [0, 0.05, 8], 'Direct', 25) qq = np.arange(0, 8, 0.05)+0.025 for i in range(ws.getNumberHistograms()): ws.setY(i, ws.readY(i)*qq[i]**2) ws.setE(i, ws.readE(i)*qq[i]**2) return ws
def create_workspace(self, name): workspace = CreateSampleWorkspace(OutputWorkspace=name, NumBanks=1, BankPixelWidth=5, XMin=0.1, XMax=3.1, BinWidth=0.1, XUnit='DeltaE') AddSampleLog(Workspace=workspace, LogName='Ei', LogText='3.', LogType='Number') sim_scattering_data = np.arange(0, 1.5, 0.002).reshape(30, 25).transpose() for i in range(workspace.getNumberHistograms()): workspace.setY(i, sim_scattering_data[i]) workspace = wrap_workspace(workspace, name) workspace.is_PSD = False workspace.limits['MomentumTransfer'] = [0.1, 3.1, 0.1] workspace.limits['|Q|'] = [0.1, 3.1, 0.1] workspace.limits['DeltaE'] = [-10, 15, 1] workspace.e_fixed = 10 return workspace