Commit 26567532 authored by Zhang, Yuanpeng's avatar Zhang, Yuanpeng
Browse files

add in exception raising for auto restarting

parent 80cf2ec8
Loading
Loading
Loading
Loading
+104 −76
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ else:
    strip_v_bt = input_config["Params"]["PostProc"]["StripVPeaksBkgType"]
    # <----- Config: Live post processing parameters

    try:
        accum_prtc = simpleapi.mtd[str(input)].run().getProtonCharge()
        if accum_prtc > 0.:
            mantid.logger.information(f"Accumulated proton charge: {accum_prtc}")
@@ -81,18 +82,19 @@ else:
                OutputWorkspace=output,
                RecalculatePCharge=True
            )
    except:
        raise Exception("Failed in proton charge normalization.")
    
    simpleapi.LoadNexus(
        Filename="/SNS/PG3/shared/livereduce/tmp/proc_tmp.nxs",
        OutputWorkspace="pproc_in"
    )

    
    try:
        simpleapi.PDLoadCharacterizations(
            Filename=char_backgrounds + ',' + char_inplane,
            OutputWorkspace='characterizations'
        )
    
        simpleapi.PDDetermineCharacterizations(
            InputWorkspace="pproc_in",
            Characterizations='characterizations',
@@ -101,8 +103,10 @@ else:
        manager = mantid.PropertyManagerDataService.retrieve(
            '__pd_reduction_properties'
        )
    mantid.logger.information("In post processing ...")
    except:
        raise Exception("Failed in characterization determination.")

    mantid.logger.information("In post processing ...")
    
    def getRunId(manager, key):
        value = manager[key].value[0]
@@ -111,7 +115,6 @@ else:
        else:
            return 'PG3_' + str(value)
    
    
    def smooth(wksp):
        simpleapi.ConvertUnits(InputWorkspace=wksp, OutputWorkspace=wksp,
                               Target='TOF', EMode='Elastic')
@@ -124,7 +127,6 @@ else:
        simpleapi.ConvertUnits(InputWorkspace=wksp, OutputWorkspace=wksp,
                               Target='dSpacing', EMode='Elastic')
    
    
    processingParams = {'CalibrationWorkspace': 'PG3_cal',
                        'GroupingWorkspace': 'PG3_group',
                        'MaskWorkspace': 'PG3_mask',
@@ -171,22 +173,30 @@ else:
        )
    
    if can is not None:
        try:
            simpleapi.RebinToWorkspace(
                WorkspaceToRebin=can,
                WorkspaceToMatch=output,
                OutputWorkspace=can
            )
        except:  # noqa
            raise Exception("Failed in rebinning.")

        simpleapi.SaveNexus(
            InputWorkspace=can,
            Filename=f"/SNS/PG3/shared/livereduce/tmp/can_{can}_final.nxs")
        simpleapi.SaveNexus(
            InputWorkspace=output,
            Filename=f"/SNS/PG3/shared/livereduce/tmp/live_check.nxs")

        try:
            simpleapi.Minus(
                LHSWorkspace=output,
                RHSWorkspace=can,
                OutputWorkspace=output
            )
        except:  # noqa
            raise Exception("Failed in background subtraction.")
    
    van = getRunId(manager, 'vanadium')
    if van is not None and not simpleapi.mtd.doesExist(van):
@@ -240,6 +250,8 @@ else:
            )

            mantid.logger.information("subtracting vanadium background")

            try:
                simpleapi.RebinToWorkspace(
                    WorkspaceToRebin=vanback,
                    WorkspaceToMatch=van,
@@ -251,9 +263,12 @@ else:
                    OutputWorkspace=van,
                    ClearRHSWorkspace=True
                )
            except:  # noqa
                raise Exception("Failed in bkg subtraction for vanadium.")
    
            simpleapi.DeleteWorkspace(Workspace=vanback)

        try:
            simpleapi.ConvertUnits(
                InputWorkspace=van,
                OutputWorkspace=van,
@@ -268,21 +283,31 @@ else:
                PeakPositionTolerance=strip_v_pp_tol
            )
            smooth(van)
        except:  # noqa
            raise Exception("Failed in preparing vanadium normalization.")
    
    if van is not None:
        try:
            simpleapi.RebinToWorkspace(
                WorkspaceToRebin=van,
                WorkspaceToMatch=output,
                OutputWorkspace=van
            )
        except:  # noqa
            raise Exception("Failed in rebinning vanadium.")

        simpleapi.SaveNexus(
            InputWorkspace=van,
            Filename=f"/SNS/PG3/shared/livereduce/tmp/van_{van}_final.nxs")

        try:
            simpleapi.Divide(
                LHSWorkspace=output,
                RHSWorkspace=van,
                OutputWorkspace=output
            )
        except:  # noqa
            raise Exception("Failed in vanadium normalization.")
    
    div = simpleapi.SavePlot1D(
        InputWorkspace=output,
@@ -297,7 +322,10 @@ else:
        except ImportError:
            from finddata import publish_plot

        try:
            request = publish_plot('PG3', runNumber, files={'file': div})
        except:  # noqa
            raise Exception("Failed in data plot publishing.")

        mantid.logger.information("post returned %d" % request.status_code)
        mantid.logger.information("resulting document:")
+53 −44
Original line number Diff line number Diff line
@@ -74,10 +74,13 @@ else:
    
    mantid.logger.information('Number events = %d' % input.getNumberEvents())

    try:
        simpleapi.PDLoadCharacterizations(
            Filename=char_backgrounds + ',' + char_inplane,
            OutputWorkspace='characterizations'
        )
    except:  # noqa
        raise Exception("Characterization determination failed.")

    simpleapi.SaveNexus(
        InputWorkspace=input,
@@ -88,6 +91,7 @@ else:
        OutputWorkspace="proc_in"
    )
    
    try:
        simpleapi.PDDetermineCharacterizations(
            InputWorkspace="proc_in",
            Characterizations='characterizations',
@@ -96,7 +100,10 @@ else:
        manager = mantid.PropertyManagerDataService.retrieve(
            '__pd_reduction_properties'
        )
    except:  # noqa
        raise Exception("Characterization determination failed.")

    try:
        simpleapi.Rebin(InputWorkspace=input,
                        OutputWorkspace=input,
                        Params=(manager['tof_min'].value,
@@ -126,3 +133,5 @@ else:
            InputWorkspace=output,
            OutputWorkspace=output,
            Params=f"{d_min_v + 0.01}, 0.001, {d_max_v}")
    except:
        raise Exception("Failed in align and focus.")