Exemplo n.º 1
0
 def PyExec(self):
     input_ws = self.getProperty("InputWorkspace").value
     eff_ws = self.getProperty("DetectorEfficiencyWorkspace").value
     transposed = Transpose(InputWorkspace=eff_ws, StoreInADS=False)
     efficiencies = transposed.extractY().flatten()
     errors = transposed.extractE().flatten()
     n_hist = input_ws.getNumberHistograms()
     if n_hist % efficiencies.size != 0:
         raise ValueError(
             'Number of histograms in input workspace is not a multiple of number of entries in detector efficiency '
             'workspace.')
     n_time_indexes = n_hist / efficiencies.size
     to_multiply = CreateWorkspace(DataY=np.repeat(efficiencies,
                                                   n_time_indexes),
                                   DataE=np.repeat(errors, n_time_indexes),
                                   DataX=np.zeros(n_hist),
                                   NSpec=n_hist,
                                   StoreInADS=False)
     output = Multiply(
         LHSWorkspace=input_ws,
         RHSWorkspace=to_multiply,
         OutputWorkspace=self.getPropertyValue("OutputWorkspace"))
     # In the output we should mask the detectors where calibration constant is masked
     det_IDs = ''
     n_pixels_per_tube = eff_ws.getNumberHistograms()
     for spectrum in range(n_pixels_per_tube):
         if eff_ws.hasMaskedBins(spectrum):
             masked = eff_ws.maskedBinsIndices(spectrum)
             for bin in masked:
                 det_IDs += str(bin * n_pixels_per_tube + spectrum +
                                1) + ','
     if det_IDs:
         MaskDetectors(Workspace=output, DetectorList=det_IDs[:-1])
     self.setProperty("OutputWorkspace", output)
 def PyExec(self):
     input_ws = self.getProperty("InputWorkspace").value
     eff_ws = self.getProperty("DetectorEfficiencyWorkspace").value
     transposed = Transpose(InputWorkspace=eff_ws, StoreInADS=False)
     efficiencies = transposed.extractY().flatten()
     errors = transposed.extractE().flatten()
     n_hist = input_ws.getNumberHistograms()
     if n_hist % efficiencies.size != 0:
         raise ValueError('Number of histograms in input workspace is not a multiple of number of entries in detector efficiency '
                          'workspace.')
     n_time_indexes = n_hist / efficiencies.size
     to_multiply = CreateWorkspace(DataY=np.repeat(efficiencies, n_time_indexes), DataE=np.repeat(errors, n_time_indexes),
                                   DataX=np.zeros(n_hist), NSpec=n_hist, StoreInADS=False)
     output = Multiply(LHSWorkspace=input_ws, RHSWorkspace=to_multiply, OutputWorkspace=self.getPropertyValue("OutputWorkspace"))
     # In the output we should mask the detectors where calibration constant is masked
     det_IDs = ''
     n_pixels_per_tube = eff_ws.getNumberHistograms()
     for spectrum in range(n_pixels_per_tube):
         if eff_ws.hasMaskedBins(spectrum):
             masked = eff_ws.maskedBinsIndices(spectrum)
             for bin in masked:
                 det_IDs += str(bin * n_pixels_per_tube + spectrum + 1) + ','
     if det_IDs:
         MaskDetectors(Workspace=output, DetectorList=det_IDs[:-1])
     self.setProperty("OutputWorkspace", output)
 def PyExec(self):
     input_ws = self.getProperty("InputWorkspace").value
     eff_ws = self.getProperty("DetectorEfficiencyWorkspace").value
     transposed = Transpose(InputWorkspace=eff_ws, StoreInADS=False)
     efficiencies = transposed.extractY().flatten()
     errors = transposed.extractE().flatten()
     n_hist = input_ws.getNumberHistograms()
     if n_hist % efficiencies.size != 0:
         raise ValueError('Number of histograms in input workspace is not a multiple of number of entries in detector efficiency '
                          'workspace.')
     n_time_indexes = n_hist / efficiencies.size
     to_multiply = CreateWorkspace(DataY=np.repeat(efficiencies, n_time_indexes),DataE=np.repeat(errors, n_time_indexes),
                                   DataX=np.zeros(n_hist), NSpec=n_hist, StoreInADS=False)
     output = Multiply(LHSWorkspace=input_ws, RHSWorkspace=to_multiply, OutputWorkspace=self.getPropertyValue("OutputWorkspace"))
     self.setProperty("OutputWorkspace", output)
Exemplo n.º 4
0
 def PyExec(self):
     input_ws = self.getProperty("InputWorkspace").value
     eff_ws = self.getProperty("DetectorEfficiencyWorkspace").value
     transposed = Transpose(InputWorkspace=eff_ws, StoreInADS=False)
     efficiencies = transposed.extractY().flatten()
     errors = transposed.extractE().flatten()
     n_hist = input_ws.getNumberHistograms()
     if n_hist % efficiencies.size != 0:
         raise ValueError(
             'Number of histograms in input workspace is not a multiple of number of entries in detector efficiency '
             'workspace.')
     n_time_indexes = n_hist / efficiencies.size
     to_multiply = CreateWorkspace(DataY=np.repeat(efficiencies,
                                                   n_time_indexes),
                                   DataE=np.repeat(errors, n_time_indexes),
                                   DataX=np.zeros(n_hist),
                                   NSpec=n_hist,
                                   StoreInADS=False)
     output = Multiply(
         LHSWorkspace=input_ws,
         RHSWorkspace=to_multiply,
         OutputWorkspace=self.getPropertyValue("OutputWorkspace"))
     self.setProperty("OutputWorkspace", output)