diff --git a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/ApplyNegMuCorrection.py b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/ApplyNegMuCorrection.py new file mode 100644 index 0000000000000000000000000000000000000000..eee7a42a9a76c7ad0a73461c8704bb6ffb6d809f --- /dev/null +++ b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/ApplyNegMuCorrection.py @@ -0,0 +1,96 @@ +from mantid.api import * # PythonAlgorithm, registerAlgorithm, WorkspaceProperty + +#pylint: disable=no-init, too-many-arguments +class ApplyNegMuCorrection(PythonAlgorithm): + + #Combining work spaces and normalising the correction. + #_OILE and _OIHE are unused parameters for now to make PyLint happy + def combine(self,dataDir,runno,A2000,B2000,A3000,B3000,_OILE,_OIHE,spec): + if spec<10: + specNo='0'+str(spec) + else: + specNo=str(spec) + print dataDir+'ral0'+runno+'.rooth30'+specNo+'.dat' + #loading data + rooth30_filename = dataDir+r'\ral0'+runno+'.rooth30'+specNo+'.dat' + rooth20_filename = dataDir+r'\ral0'+runno+'.rooth20'+specNo+'.dat' + try: + ws3000=Load(Filename=rooth30_filename, OutputWorkspace='ws3000') + except RuntimeError: + raise RuntimeError('could not find file: ' + rooth30_filename) + try: + ws2000=Load(Filename=rooth20_filename, OutputWorkspace='ws2000') + except RuntimeError: + raise RuntimeError('could not find file: ' + rooth20_filename) + + #Correcting for Gain and offset of the detectors + ws2000_corr=CreateWorkspace(A2000*ws2000.readX(0)[:]+B2000,ws2000.readY(0)[:]) + ws3000_corr=CreateWorkspace(A3000*ws3000.readX(0)[:]+B3000,ws3000.readY(0)[:]) + + #Summing total counts for normalisation + ws2000_total=0 + ws3000_total=0 + for count in range (0,8000): + ws2000_total=ws2000_corr.readY(0)[count]+ws2000_total + ws3000_total=ws3000_corr.readY(0)[count]+ws3000_total + print ws2000_total + print ws3000_total + #normalising + ws2000_corr=ws2000_corr/ws2000_total + ws3000_corr=ws3000_corr/ws3000_total + + #rebinning to adataDir detectors together + data =[100,ws2000.readX(0)[2]-ws2000.readX(0)[1],8000] + + ws2000_corr_rebin=Rebin(ws2000_corr,data) + ws3000_corr_rebin=Rebin(ws3000_corr,data) + + ws_ral=Plus(ws2000_corr_rebin,ws3000_corr_rebin) + + suf='_'+str(spec)+'_'+runno + + RenameWorkspaces(ws_ral,Suffix=suf) + RenameWorkspaces(ws2000_corr,Suffix=suf) + RenameWorkspaces(ws3000_corr,Suffix=suf) + + DeleteWorkspace(ws2000) + DeleteWorkspace(ws3000) + DeleteWorkspace(ws2000_corr_rebin) + DeleteWorkspace(ws3000_corr_rebin) + + def PyInit(self): + self.declareProperty(name="DataDirectory",defaultValue=r'M:\Data\Negative Muons\forMantid',doc="Data directory") + self.declareProperty(name="FirstRunNumber",defaultValue=1718,doc="First Run Number") + self.declareProperty(name="LastRunNumber",defaultValue=1719,doc="Last Run Number") + self.declareProperty(name="GainRIKENHighE",defaultValue=1.077,doc="Gain RIKEN High E") + self.declareProperty(name="OffsetRIKENHighE",defaultValue=-1,doc="OffSet RIKEN High E") + self.declareProperty(name="GainISISHighE",defaultValue=1.278,doc="Gain ISIS High E") + self.declareProperty(name="OffsetISISHighE",defaultValue=-12,doc="OffSet ISIS High E") + self.declareProperty(name="GainISISLowE",defaultValue=1.2,doc="Gain ISIS Low E") + self.declareProperty(name="OffsetISISLowE",defaultValue=0.0,doc="OffSet ISIS Low E") + + def category(self): + return "CorrectionFunctions;Muon" + + def PyExec(self): + + spec=1 + dataDir = self.getProperty("DataDirectory").value + first = self.getProperty("FirstRunNumber").value + last = self.getProperty("LastRunNumber").value+1 + GRHE=self.getProperty("GainRIKENHighE").value + ORHE=self.getProperty("OffsetRIKENHighE").value + GIHE=self.getProperty("GainISISHighE").value + OIHE=self.getProperty("OffsetISISHighE").value + GILE=self.getProperty("GainISISLowE").value + OILE=self.getProperty("OffsetISISLowE").value + + for run in range(first,last): + for spec in range(0,3): + runno=str(run) + self.combine(dataDir,runno,GRHE,ORHE,GIHE,OIHE,GILE,OILE,spec) + self.combine(dataDir,runno,GRHE,ORHE,GIHE,OIHE,GILE,OILE,10) + + + +AlgorithmFactory.subscribe(ApplyNegMuCorrection)