コード例 #1
0
    def plot_eff_vs_wave_meta(self):
        """plots the efficiency for a set of wavelengths,

        Args:
            sigma: Full sigma calculation fo the detector
            ranges: Ranges calculation
            blades: detector blades
            result: Efficiency
            figure: figure to plot in

        Returns:
        	plotted figure
            reference: figure 3.13 On Francesco's Thesis
        """
        sigmalist = np.arange(0.0011, 20, 0.1)
        sigmaeq = []
        for sigma in sigmalist:
            # transformation for meeting requirements of functions
            sigma = [[sigma], ]
            sigmaeq.append(B10.B10().full_sigma_calculation(sigma, self.angle))
        ranges = self.calculate_ranges()
        blades = self.blades
        result = self.calculate_eff()
        wavelength = self.wavelength
        y = efftools.metadata_diffthick_vs_wave(sigmaeq, blades, ranges, len(blades))
        self.metadata.update({'effVsWave': [sigmalist, y]})
        print("plot_eff_vs_wave_meta")
コード例 #2
0
    def plot_eff_vs_wave(self):
        """plots the efficiency for a set of wavelengths,

        Args:
            sigma: Full sigma calculation fo the detector
            ranges: Ranges calculation
            blades: detector blades
            result: Efficiency
            figure: figure to plot in

        Returns:
        	plotted figure
            reference: figure 3.13 On Francesco's Thesis
        """
        sigmalist = np.arange(0.0011, 20, 0.1)
        sigmaeq = []
        for sigma in sigmalist:
            # transformation for meeting requirements of functions
            sigma = [
                [sigma],
            ]
            sigmaeq.append(B10.B10().full_sigma_calculation(sigma, self.angle))
        ranges = self.calculate_ranges()
        blades = self.blades
        result = self.calculate_eff()
        wavelength = self.wavelength
        y = efftools.metadata_diffthick_vs_wave(sigmaeq, blades, ranges,
                                                len(blades))
        cx = plt.figure(1)
        plt.subplot(111)
        self.metadata.update({'effVsWave': [sigmalist, y]})
        plt.plot(sigmalist, np.array(y), color='g')
        if len(self.wavelength) == 1:
            if self.single:
                plt.plot([wavelength[0][0], wavelength[0][1]],
                         [0, result[0][1]],
                         '--',
                         color='k')
                plt.plot([0, wavelength[0][0]], [result[0][1], result[0][1]],
                         '--',
                         color='k')
            else:
                plt.plot([wavelength[0][0], wavelength[0][0]],
                         [0, np.array(result[1])],
                         '--',
                         color='k')
                plt.plot([0, wavelength[0][0]],
                         [np.array(result[1]),
                          np.array(result[1])],
                         '--',
                         color='k')

        plt.grid(True)
        plt.xlabel(r'Neutron wavelength ($\AA$)')
        plt.ylabel('Detector efficiency (%)')
        #  ticks = cx.get_yticks() * 100
        # cx.set_yticklabels(ticks)
        return cx
コード例 #3
0
    def plot_wave_vs_eff(self, sigmaeq, sigmalist, ranges, blades, result,
                         wavelength, figure):
        """plots the efficiency for a set of wavelengths,

        Args:
            sigma: Full sigma calculation fo the detector
            ranges: Ranges calculation
            blades: detector blades
            result: Efficiency
            figure: figure to plot in

        Returns:
        	plotted figure
            reference: figure 3.13 On Francesco's Thesis
        """
        if sigmaeq == None:
            sigmaeq = self.calculate_sigma()
        if ranges == None:
            sigmaeq = self.calculate_ranges()
        if self.single:
            y = efftools.metadata_singleLayer_vs_wave(sigmaeq,
                                                      blades[0].backscatter,
                                                      ranges, len(blades))
        else:
            y = efftools.metadata_diffthick_vs_wave(sigmaeq, blades, ranges,
                                                    len(blades))
        cx = figure.add_subplot(111)
        self.metadata.update({'effVsWave': [sigmalist, y]})
        cx.plot(sigmalist, y, color='g')
        if self.single:
            cx.plot([wavelength[0][0], wavelength[0][0]], [0, result[1][0]],
                    '--',
                    color='k')
            cx.plot([0, wavelength[0][0]], [result[1][0], result[1][0]],
                    '--',
                    color='k')
        else:
            cx.plot([wavelength[0][0], wavelength[0][0]], [0, result[1]],
                    '--',
                    color='k')
            cx.plot([0, wavelength[0][0]], [result[1], result[1]],
                    '--',
                    color='k')
        cx.grid(True)
        cx.set_xlabel('Neutron wavelength (Angstrom)')
        cx.set_ylabel('Detector efficiency (%)')
        #  ticks = cx.get_yticks() * 100
        # cx.set_yticklabels(ticks)
        return cx