1 | # Script is used to convert the Mantid binned VULCAN data to V-DRIVE binned GSAS data |
---|
2 | # in order to compare the final result |
---|
3 | # |
---|
4 | # Version 2.0 |
---|
5 | # Date 2014.08.14 |
---|
6 | |
---|
7 | |
---|
8 | calibrationfilename = "vulcan_foc_all_2bank_11p.cal" |
---|
9 | characterfilename = "VULCAN_Characterization_2Banks_v2.txt" |
---|
10 | #logbinfilename = "vdrive_log_bin.dat" |
---|
11 | |
---|
12 | def reduceVulcanRun(runnumber): |
---|
13 | """ Reduce a powder diffraction run with proper |
---|
14 | """ |
---|
15 | SNSPowderReduction( |
---|
16 | Instrument = "VULCAN", |
---|
17 | RunNumber = runnumber, |
---|
18 | Extension = "_event.nxs", |
---|
19 | PreserveEvents = True, |
---|
20 | CalibrationFile = calibrationfilename, |
---|
21 | CharacterizationRunsFile = characterfilename, |
---|
22 | Binning = "-0.001", |
---|
23 | SaveAS = "", |
---|
24 | OutputDirectory = "/home/wzz/Projects/MantidTests/Vulcan/Reduction/Generate_GSAS/temp", |
---|
25 | NormalizeByCurrent = False, |
---|
26 | FilterBadPulses=0, |
---|
27 | CompressTOFTolerance = 0.) |
---|
28 | |
---|
29 | newrun = ConvertUnits(InputWorkspace="VULCAN_%d"%(runnumber), OutputWorkspace="VULCAN_%d_SNSReduc"%(runnumber), |
---|
30 | Target="TOF", EMode="Elastic", AlignBins=False) |
---|
31 | |
---|
32 | return newrun |
---|
33 | |
---|
34 | |
---|
35 | |
---|
36 | def getRunNumber(nexusfilename): |
---|
37 | """ Run number |
---|
38 | """ |
---|
39 | filename = nexusfilename.split(".")[0] |
---|
40 | terms = filename.split("/") |
---|
41 | for t in terms: |
---|
42 | if t.count("IPTS") == 1: |
---|
43 | ipts = int(t.split("-")[1]) |
---|
44 | elif t.count("event") == 1: |
---|
45 | run = int(t.split("_")[1]) |
---|
46 | # ENDFOR |
---|
47 | |
---|
48 | return (ipts, run) |
---|
49 | |
---|
50 | |
---|
51 | def main(nexusfilename, refxfilename): |
---|
52 | """ main |
---|
53 | """ |
---|
54 | ipts, runnumber = getRunNumber(nexusfilename) |
---|
55 | |
---|
56 | vulcanws = reduceVulcanRun(runnumber) |
---|
57 | |
---|
58 | outfilename = "/tmp/mtd%s.gda" % (str(runnumber)) |
---|
59 | SaveVulcanGSS(InputWorkspace=vulcanws, BinFilename=refxfilename, |
---|
60 | OutputWorkspace="Proto2Bank", GSSFilename=outfilename, |
---|
61 | IPTS = ipts, GSSParmFilename="xxx.iparm") |
---|
62 | |
---|
63 | mtdgss = LoadGSS(Filename="/tmp/mtd%s.gda" % (str(runnumber))) |
---|
64 | vdrgss = LoadGSS(Filename="26299.gda") |
---|
65 | Minus(LHSWorkspace=vdrgss, RHSWorkspace=mtdgss, OutputWorkspace="diff_mv", AllowDifferentNumberSpectra=True) |
---|
66 | |
---|
67 | return |
---|
68 | |
---|
69 | |
---|
70 | if __name__ == "__main__": |
---|
71 | nexusfilename = "/SNS/VULCAN/IPTS-9846/0/26299/NeXus/VULCAN_26299_event.nxs" |
---|
72 | vdrivebinfname = "vdrive_log_bin.dat" |
---|
73 | main(nexusfilename, vdrivebinfname) |
---|