Beispiel #1
0
    def check_fields(self):
        congruence.checkStrictlyPositiveNumber(self.nCRL, "Number of Lenses")
        congruence.checkPositiveNumber(self.delta, "delta")
        congruence.checkPositiveNumber(self.attenLen, "Attenuation length")
        congruence.checkPositiveNumber(self.diamCRL, "CRL diameter")

        congruence.checkPositiveNumber(self.distance, "Distance to next")
Beispiel #2
0
    def check_fields(self):
        self.alpha = congruence.checkAngle(self.alpha, "Incidence Angle")
        self.length = congruence.checkStrictlyPositiveNumber(
            self.length, "Length")

        if self.use_figure_error == 1:
            congruence.checkFileName(self.figure_error_file)

        if self.use_roughness == 1:
            congruence.checkFileName(self.roughness_file)

        if self.calculation_type == 1:
            congruence.checkStrictlyPositiveNumber(self.number_of_points,
                                                   "Number of Points")

        if self.use_multipool == 1:
            congruence.checkStrictlyPositiveNumber(self.n_pools,
                                                   "Nr. Parallel Processes")

            if self.force_cpus == 0:
                if self.number_of_cpus == 1:
                    raise Exception(
                        "Parallel processing not available with 1 CPU")
                elif self.n_pools >= self.number_of_cpus:
                    raise Exception(
                        "Max number of parallel processes allowed on this computer ("
                        + str(self.number_of_cpus) + ")")
Beispiel #3
0
 def check_fields(self):
     self.ENERGY = congruence.checkStrictlyPositiveNumber(
         self.ENERGY, "Electron Energy")
     self.CURRENT = congruence.checkStrictlyPositiveNumber(
         self.CURRENT, "Current")
     self.ENERGY_SPREAD = congruence.checkStrictlyPositiveNumber(
         self.ENERGY_SPREAD, "Energy Spread")
     self.SIGX = congruence.checkPositiveNumber(self.SIGX, "Sigma X")
     self.SIGY = congruence.checkPositiveNumber(self.SIGY, "Sigma Y")
     self.SIGX1 = congruence.checkPositiveNumber(self.SIGX1, "Sigma X'")
     self.SIGY1 = congruence.checkPositiveNumber(self.SIGY1, "Sigma Y'")
     self.PERIOD = congruence.checkStrictlyPositiveNumber(
         self.PERIOD, "Period length")
     self.NP = congruence.checkStrictlyPositiveNumber(
         self.NP, "Number of periods")
     self.EMIN = congruence.checkPositiveNumber(self.EMIN,
                                                "E1 minimum energy")
     self.EMAX = congruence.checkStrictlyPositiveNumber(
         self.EMAX, "E1 maximum energy")
     congruence.checkLessThan(self.EMIN, self.EMAX, "E1 minimum energy",
                              "E1 maximum energy")
     self.N = congruence.checkStrictlyPositiveNumber(
         self.N, "Number of Energy Points")
     self.HARMONIC_FROM = congruence.checkStrictlyPositiveNumber(
         self.HARMONIC_FROM, "Minimum harmonic number")
     self.HARMONIC_TO = congruence.checkStrictlyPositiveNumber(
         self.HARMONIC_TO, "Maximum harmonic number")
     congruence.checkLessThan(self.HARMONIC_FROM, self.HARMONIC_TO,
                              "Minimum harmonic number",
                              "Maximum harmonic number")
     self.HARMONIC_STEP = congruence.checkStrictlyPositiveNumber(
         self.HARMONIC_STEP, "Harmonic step size")
     self.NEKS = congruence.checkPositiveNumber(self.NEKS, "Intrinsic NEKS")
Beispiel #4
0
    def manage_acceptance_slits(self, shadow_oe):
        if self.add_acceptance_slits == 1:
            congruence.checkStrictlyPositiveNumber(self.auto_slit_width_xaxis,
                                                   "Slit width/x-axis")
            congruence.checkStrictlyPositiveNumber(self.auto_slit_height_zaxis,
                                                   "Slit height/z-axis")

            n_screen = 1
            i_screen = numpy.zeros(10)  # after
            i_abs = numpy.zeros(10)
            i_slit = numpy.zeros(10)
            i_stop = numpy.zeros(10)
            k_slit = numpy.zeros(10)
            thick = numpy.zeros(10)
            file_abs = ['', '', '', '', '', '', '', '', '', '']
            rx_slit = numpy.zeros(10)
            rz_slit = numpy.zeros(10)
            sl_dis = numpy.zeros(10)
            file_scr_ext = ['', '', '', '', '', '', '', '', '', '']
            cx_slit = numpy.zeros(10)
            cz_slit = numpy.zeros(10)

            i_screen[0] = 1
            i_slit[0] = 1

            rx_slit[0] = self.auto_slit_width_xaxis
            rz_slit[0] = self.auto_slit_height_zaxis
            cx_slit[0] = self.auto_slit_center_xaxis
            cz_slit[0] = self.auto_slit_center_zaxis

            shadow_oe._oe.set_screens(n_screen, i_screen, i_abs, sl_dis,
                                      i_slit, i_stop, k_slit, thick,
                                      numpy.array(file_abs), rx_slit, rz_slit,
                                      cx_slit, cz_slit,
                                      numpy.array(file_scr_ext))
Beispiel #5
0
    def check_fields(self):
        self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR,
                                                      "formula")
        if self.MAT_FLAG == 1:
            self.DENSITY = congruence.checkStrictlyPositiveNumber(
                self.DENSITY, "density")

        if self.GRID > 0:
            self.GRIDSTART = congruence.checkPositiveNumber(
                self.GRIDSTART, "Starting Energy")

            if self.GRID == 1:
                self.GRIDEND = congruence.checkStrictlyPositiveNumber(
                    self.GRIDEND, "Energy to")
                congruence.checkLessThan(self.GRIDSTART, self.GRIDEND,
                                         "Starting Energy", "Energy to")
                self.GRIDN = congruence.checkStrictlyPositiveNumber(
                    self.GRIDN, "Number of points")

        if self.CALCULATE >= 7 and self.CALCULATE <= 9:
            self.ROUGH = congruence.checkPositiveNumber(
                self.ROUGH, "Roughness")
            self.THETA1 = congruence.checkPositiveNumber(
                self.THETA1, "Starting Graz angle")

            if self.THETAGRID == 1:
                self.THETA2 = congruence.checkStrictlyPositiveNumber(
                    self.THETA2, "Graz angle to")
                congruence.checkLessThan(self.THETA1, self.THETA2,
                                         "Starting Graz angle",
                                         "Graz angle to")
                self.THETAN = congruence.checkStrictlyPositiveNumber(
                    self.THETAN, "Number of angular points")
        else:
            self.THETAGRID = 0
    def generate_energy_spectrum(self):
        if self.input_beam is None: return

        try:
            if self.input_beam.getOEHistory(oe_number=0)._shadow_source_end.src.FSOURCE_DEPTH == 1:
                raise Exception("Source has no depth, calcution could be inconsistent")

            if self.kind_of_calculation == 1:
                congruence.checkFile(self.user_file)
            else:
                congruence.checkStrictlyPositiveNumber(self.factor, "Proportionality factor (k) [to eV/Å]")
                congruence.checkStrictlyPositiveNumber(self.central_value, "Central Energy/Wavelength Value [eV/Å]")

            beam_out = self.input_beam.duplicate()

            if self.kind_of_calculation == 0:
                for index in range(0, len(beam_out._beam.rays)):
                    if self.units == 0:
                        beam_out._beam.rays[index, 10] =  ShadowPhysics.getShadowKFromEnergy(self.central_value + self.factor*beam_out._beam.rays[index, 1])
                    else:
                        beam_out._beam.rays[index, 10] =  ShadowPhysics.getShadowKFromWavelength(self.central_value + self.factor*beam_out._beam.rays[index, 1])
            else:
                self.load_energy_distribution()

                for index in range(0, len(beam_out._beam.rays)):
                    if self.units == 0:
                        beam_out._beam.rays[index, 10] = ShadowPhysics.getShadowKFromEnergy(self.get_value_from_y(beam_out._beam.rays[index, 1]))
                    else:
                        beam_out._beam.rays[index, 10] =  ShadowPhysics.getShadowKFromWavelength(self.get_value_from_y(beam_out._beam.rays[index, 1]))

            self.send("Beam", beam_out)
        except Exception as exception:
                QtGui.QMessageBox.critical(self, "Error", str(exception), QtGui.QMessageBox.Ok)
    def checkFields(self):
        congruence.checkPositiveNumber(self.energy_per_pulse,
                                       "Energy per pulse")
        congruence.checkPositiveNumber(self.horizontal_sigma_at_waist,
                                       "\u03c3x at waist")
        congruence.checkPositiveNumber(self.vertical_sigma_at_waist,
                                       "\u03c3y at waist")
        congruence.checkPositiveNumber(self.pulse_duration, "Pulse duration")
        congruence.checkPositiveNumber(
            self.transverse_gauss_hermite_mode_order_x,
            "Transverse Gauss-Hermite mode order x")
        congruence.checkPositiveNumber(
            self.transverse_gauss_hermite_mode_order_y,
            "Transverse Gauss-Hermite mode order y")

        # WAVEFRONT

        congruence.checkStrictlyPositiveNumber(
            self.wf_photon_energy, "Wavefront Propagation Photon Energy")
        congruence.checkStrictlyPositiveNumber(
            self.wf_h_slit_gap, "Wavefront Propagation H Slit Gap")
        congruence.checkStrictlyPositiveNumber(
            self.wf_v_slit_gap, "Wavefront Propagation V Slit Gap")
        congruence.checkStrictlyPositiveNumber(
            self.wf_h_slit_points, "Wavefront Propagation H Slit Points")
        congruence.checkStrictlyPositiveNumber(
            self.wf_v_slit_points, "Wavefront Propagation V Slit Points")
        congruence.checkPositiveNumber(self.wf_distance,
                                       "Wavefront Propagation Distance")
        congruence.checkPositiveNumber(
            self.wf_sampling_factor_for_adjusting_nx_ny,
            "Wavefront Propagation Sampling Factor for adjusting nx/ny")
Beispiel #8
0
    def checkFields(self):
        self.number_of_rays = congruence.checkPositiveNumber(self.number_of_rays, "Number of rays")
        self.seed = congruence.checkPositiveNumber(self.seed, "Seed")
        self.e_min = congruence.checkPositiveNumber(self.e_min, "Minimum energy")
        self.e_max = congruence.checkPositiveNumber(self.e_max, "Maximum energy")
        congruence.checkLessThan(self.e_min, self.e_max,  "Minimum energy",  "Maximum energy")

        self.max_number_of_rejected_rays = congruence.checkPositiveNumber(self.max_number_of_rejected_rays,
                                                                         "Max Number of Rejected Rays")
        self.slit_distance = congruence.checkPositiveNumber(self.slit_distance, "Horizontal half-divergence from [+]")
        self.min_x = congruence.checkNumber(self.min_x, "Min X/Min Xp")
        self.max_x = congruence.checkNumber(self.max_x, "Max X/Max Xp")
        self.min_z = congruence.checkNumber(self.min_z, "Min X/Min Xp")
        self.max_z = congruence.checkNumber(self.max_z, "Max X/Max Xp")
        self.energy = congruence.checkPositiveNumber(self.energy, "Energy")
        self.electron_current = congruence.checkPositiveNumber(self.electron_current, "Electron Current")
        self.sigma_x = congruence.checkPositiveNumber(self.sigma_x, "Sigma x")
        self.sigma_z = congruence.checkPositiveNumber(self.sigma_z, "Sigma z")
        self.emittance_x = congruence.checkPositiveNumber(self.emittance_x, "Emittance x")
        self.emittance_z = congruence.checkPositiveNumber(self.emittance_z, "Emittance z")
        self.distance_from_waist_x = congruence.checkNumber(self.distance_from_waist_x, "Distance from waist x")
        self.distance_from_waist_z = congruence.checkNumber(self.distance_from_waist_z, "Distance from waist z")
        self.number_of_periods = congruence.checkStrictlyPositiveNumber(self.number_of_periods, "Number of periods")
        self.k_value = congruence.checkStrictlyPositiveNumber(self.k_value, "K value")
        self.id_period = congruence.checkStrictlyPositiveNumber(self.id_period, "ID period")

        if self.optimize_source_combo == 1:
            congruence.checkFile(self.file_with_phase_space_volume)

        if self.type_combo == 1:
            congruence.checkFile(self.file_with_b_vs_y)
        elif self.type_combo == 2:
            congruence.checkFile(self.file_with_harmonics)
    def get_size_parameters(self):
        if self.active == 1:
            if not self.mu_function == 1:
                congruence.checkStrictlyPositiveNumber(self.mu, "\u03bc or D")
            if self.cb_distribution.currentText(
            ) != Distribution.DELTA and not self.sigma_function == 1:
                congruence.checkStrictlyPositiveNumber(self.sigma, "\u03c3")
            if self.cb_distribution.currentText(
            ) == Distribution.DELTA and not self.fit_global_parameters.measured_dataset.phases[
                    self.index].use_structure:
                raise Exception(
                    "Delta Distribution cannot be used when the structural model is not activated"
                )

        return SizeParameters(
            shape=self.cb_shape.currentText(),
            distribution=self.cb_distribution.currentText(),
            mu=OWGenericWidget.get_fit_parameter_from_widget(
                self, "mu", self.get_parameters_prefix()),
            sigma=None
            if self.cb_distribution.currentText() == Distribution.DELTA else
            OWGenericWidget.get_fit_parameter_from_widget(
                self, "sigma", self.get_parameters_prefix()),
            truncation=OWGenericWidget.get_fit_parameter_from_widget(
                self, "truncation", self.get_parameters_prefix()) if
            (self.cb_distribution.currentText() == Distribution.LOGNORMAL
             and self.cb_shape.currentText() == Shape.WULFF) else None,
            cube_face=self.cb_cube_face.currentText() if
            (self.cb_distribution.currentText() == Distribution.LOGNORMAL
             and self.cb_shape.currentText() == Shape.WULFF) else None,
            add_saxs=self.add_saxs if self.cb_distribution.currentText()
            == Distribution.DELTA else False,
            normalize_to=self.normalize_to if
            self.cb_distribution.currentText() == Distribution.DELTA else None,
            active=self.active == 1)
Beispiel #10
0
    def checkFields(self):
        self.number_of_rays = congruence.checkPositiveNumber(self.number_of_rays, "Number of rays")
        self.seed = congruence.checkPositiveNumber(self.seed, "Seed")
        self.e_min = congruence.checkPositiveNumber(self.e_min, "Minimum energy")
        self.e_max = congruence.checkPositiveNumber(self.e_max, "Maximum energy")
        congruence.checkLessThan(self.e_min, self.e_max,  "Minimum energy",  "Maximum energy")

        self.max_number_of_rejected_rays = congruence.checkPositiveNumber(self.max_number_of_rejected_rays,
                                                                         "Max Number of Rejected Rays")
        self.slit_distance = congruence.checkPositiveNumber(self.slit_distance, "Horizontal half-divergence from [+]")
        self.min_x = congruence.checkNumber(self.min_x, "Min X/Min Xp")
        self.max_x = congruence.checkNumber(self.max_x, "Max X/Max Xp")
        self.min_z = congruence.checkNumber(self.min_z, "Min X/Min Xp")
        self.max_z = congruence.checkNumber(self.max_z, "Max X/Max Xp")
        self.energy = congruence.checkPositiveNumber(self.energy, "Energy")
        self.electron_current = congruence.checkPositiveNumber(self.electron_current, "Electron Current")
        self.sigma_x = congruence.checkPositiveNumber(self.sigma_x, "Sigma x")
        self.sigma_z = congruence.checkPositiveNumber(self.sigma_z, "Sigma z")
        self.emittance_x = congruence.checkPositiveNumber(self.emittance_x, "Emittance x")
        self.emittance_z = congruence.checkPositiveNumber(self.emittance_z, "Emittance z")
        self.distance_from_waist_x = congruence.checkNumber(self.distance_from_waist_x, "Distance from waist x")
        self.distance_from_waist_z = congruence.checkNumber(self.distance_from_waist_z, "Distance from waist z")
        self.number_of_periods = congruence.checkStrictlyPositiveNumber(self.number_of_periods, "Number of periods")
        self.k_value = congruence.checkStrictlyPositiveNumber(self.k_value, "K value")
        self.id_period = congruence.checkStrictlyPositiveNumber(self.id_period, "ID period")

        if self.optimize_source_combo == 1:
            congruence.checkFile(self.file_with_phase_space_volume)

        if self.type_combo == 1:
            congruence.checkUrl(self.file_with_b_vs_y)
        elif self.type_combo == 2:
            congruence.checkUrl(self.file_with_harmonics)
    def check_data(self):
        super().check_data()

        congruence.checkStrictlyPositiveNumber(self.tangential_radius,
                                               "Tangential Radius")
        congruence.checkStrictlyPositiveNumber(self.sagittal_radius,
                                               "Sagittal Radius")
Beispiel #12
0
    def check_fields(self):
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(
            self.NPERIODS, "Number of Periods")
        self.ENERGY = congruence.checkStrictlyPositiveNumber(
            self.ENERGY, "Beam Energy")
        self.PHOT_ENERGY_MIN = congruence.checkPositiveNumber(
            self.PHOT_ENERGY_MIN, "Min Photon Energy")
        self.PHOT_ENERGY_MAX = congruence.checkStrictlyPositiveNumber(
            self.PHOT_ENERGY_MAX, "Max Photon Energy")
        congruence.checkLessThan(self.PHOT_ENERGY_MIN, self.PHOT_ENERGY_MAX,
                                 "Min Photon Energy", "Max Photon Energy")
        self.NPOINTS = congruence.checkStrictlyPositiveNumber(
            self.NPOINTS, "Number of Energy Points")
        self.CURRENT = congruence.checkStrictlyPositiveNumber(
            self.CURRENT, "Electron Beam Current")

        if self.FIELD == 0:
            self.ULAMBDA = congruence.checkStrictlyPositiveNumber(
                self.ULAMBDA, "Wiggler period")
            self.K = congruence.checkStrictlyPositiveNumber(self.K, "K")
            self.NTRAJPOINTS = congruence.checkStrictlyPositiveNumber(
                self.NTRAJPOINTS, "Number of traj points per period")
        elif self.FIELD == 1:
            self.ULAMBDA = congruence.checkStrictlyPositiveNumber(
                self.ULAMBDA, "Wiggler period")
            self.NTRAJPOINTS = congruence.checkStrictlyPositiveNumber(
                self.NTRAJPOINTS, "Number of traj points per period")
            congruence.checkFile(self.FILE)
        elif self.FIELD == 2:
            congruence.checkFile(self.FILE)
    def check_fields(self):
        if self.kind_of_profile_y < 2:
            self.dimension_y = congruence.checkStrictlyPositiveNumber(self.dimension_y, "Dimension Y")
            self.step_y = congruence.checkStrictlyPositiveNumber(self.step_y, "Step Y")
            if self.kind_of_profile_y == 0: self.power_law_exponent_beta_y = congruence.checkPositiveNumber(self.power_law_exponent_beta_y, "Beta Value Y")
            if self.kind_of_profile_y == 1: self.correlation_length_y = congruence.checkStrictlyPositiveNumber(self.correlation_length_y, "Correlation Length Y")
            self.rms_y = congruence.checkPositiveNumber(self.rms_y, "Rms Y")
            self.montecarlo_seed_y = congruence.checkPositiveNumber(self.montecarlo_seed_y, "Monte Carlo initial seed y")
        else:
            congruence.checkFile(self.heigth_profile_1D_file_name_y)
            self.conversion_factor_y_x = congruence.checkStrictlyPositiveNumber(self.conversion_factor_y_x, "Conversion from file to workspace units(Abscissa)")
            self.conversion_factor_y_y = congruence.checkStrictlyPositiveNumber(self.conversion_factor_y_y, "Conversion from file to workspace units (Height Profile Values)")
            if self.renormalize_y == 1:
                self.rms_y = congruence.checkPositiveNumber(self.rms_y, "Rms Y")

        if self.kind_of_profile_x < 2:
            self.dimension_x = congruence.checkStrictlyPositiveNumber(self.dimension_x, "Dimension X")
            self.step_x = congruence.checkStrictlyPositiveNumber(self.step_x, "Step X")
            if self.kind_of_profile_x == 0: self.power_law_exponent_beta_x = congruence.checkPositiveNumber(self.power_law_exponent_beta_x, "Beta Value X")
            if self.kind_of_profile_x == 1: self.correlation_length_x = congruence.checkStrictlyPositiveNumber(self.correlation_length_x, "Correlation Length X")
            self.rms_x = congruence.checkPositiveNumber(self.rms_x, "Rms X")
            self.montecarlo_seed_x = congruence.checkPositiveNumber(self.montecarlo_seed_x, "Monte Carlo initial seed X")
        else:
            congruence.checkFile(self.heigth_profile_1D_file_name_x)
            self.conversion_factor_x_x = congruence.checkStrictlyPositiveNumber(self.conversion_factor_x_x, "Conversion from file to workspace units(Abscissa)")
            self.conversion_factor_x_y = congruence.checkStrictlyPositiveNumber(self.conversion_factor_x_y, "Conversion from file to workspace units (Height Profile Values)")
            if self.renormalize_x == 1:
                self.rms_x = congruence.checkPositiveNumber(self.rms_x, "Rms X")

        congruence.checkDir(self.heigth_profile_file_name)
Beispiel #14
0
 def checkFields(self):
     self.SYMBOL = ShadowPhysics.checkCompoundName(self.SYMBOL)
     self.DENSITY = congruence.checkStrictlyPositiveNumber(self.DENSITY, "Density")
     self.E_MIN  = congruence.checkPositiveNumber(self.E_MIN , "Minimum Energy")
     self.E_MAX  = congruence.checkStrictlyPositiveNumber(self.E_MAX , "Maximum Energy")
     self.E_STEP = congruence.checkStrictlyPositiveNumber(self.E_STEP, "Energy step")
     congruence.checkLessOrEqualThan(self.E_MIN, self.E_MAX, "Minimum Energy", "Maximum Energy")
     congruence.checkDir(self.SHADOW_FILE)
Beispiel #15
0
 def checkWavefrontPhotonEnergy(self):
     if self.wf_use_harmonic == 0:
         congruence.checkStrictlyPositiveNumber(
             self.wf_harmonic_number,
             "Wavefront Propagation Harmonic Number")
     else:
         congruence.checkStrictlyPositiveNumber(
             self.wf_photon_energy, "Wavefront Propagation Photon Energy")
Beispiel #16
0
 def checkFields(self):
     self.SYMBOL = ShadowPhysics.checkCompoundName(self.SYMBOL)
     self.DENSITY = congruence.checkStrictlyPositiveNumber(self.DENSITY, "Density")
     self.E_MIN  = congruence.checkPositiveNumber(self.E_MIN , "Minimum Energy")
     self.E_MAX  = congruence.checkStrictlyPositiveNumber(self.E_MAX , "Maximum Energy")
     self.E_STEP = congruence.checkStrictlyPositiveNumber(self.E_STEP, "Energy step")
     if self.E_MIN > self.E_MAX: raise Exception("Minimum Energy cannot be bigger than Maximum Energy")
     congruence.checkDir(self.SHADOW_FILE)
    def check_data(self):
        super().check_data()

        congruence.checkStrictlyPositiveNumber(
            self.distance_from_first_focus_to_mirror_center,
            "Distance from first focus to mirror center (p)")
        congruence.checkStrictlyPositiveNumber(
            self.distance_from_mirror_center_to_second_focus,
            "Distance from mirror center to second focus (q)")
Beispiel #18
0
    def manage_acceptance_slits(self, shadow_oe):
        if self.add_acceptance_slits==1:
            congruence.checkStrictlyPositiveNumber(self.auto_slit_width_xaxis, "Slit width/x-axis")
            congruence.checkStrictlyPositiveNumber(self.auto_slit_height_zaxis, "Slit height/z-axis")

            shadow_oe.add_acceptance_slits(self.auto_slit_width_xaxis,
                                           self.auto_slit_height_zaxis,
                                           self.auto_slit_center_xaxis,
                                           self.auto_slit_center_zaxis)
Beispiel #19
0
 def check_fields(self):
     self.TEMPERATURE = congruence.checkPositiveNumber(
         self.TEMPERATURE, "Temperature")
     self.E_MIN = congruence.checkPositiveNumber(self.E_MIN, "Min Energy")
     self.E_MAX = congruence.checkStrictlyPositiveNumber(
         self.E_MAX, "Max Energy")
     congruence.checkLessThan(self.E_MIN, self.E_MAX, "Min Energy",
                              "Max Energy")
     self.NPOINTS = congruence.checkStrictlyPositiveNumber(
         self.NPOINTS, "Number of Points")
Beispiel #20
0
    def check_fields(self):
        self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR, "formula")

        if self.GRID > 0:
            self.GRIDSTART = congruence.checkPositiveNumber(self.GRIDSTART, "Starting Energy")

            if self.GRID == 1:
                self.GRIDEND = congruence.checkStrictlyPositiveNumber(self.GRIDEND, "Energy to")
                congruence.checkLessThan(self.GRIDSTART, self.GRIDEND, "Starting Energy", "Energy to")
                self.GRIDN = congruence.checkStrictlyPositiveNumber(self.GRIDN, "Number of points")
    def update_debye_waller(self, thermal_parameters):
        if self.use_debye_waller_factor == 1 and not self.debye_waller_factor_function == 1:
            congruence.checkStrictlyPositiveNumber(self.debye_waller_factor,
                                                   "B")

        debye_waller_factor = None if self.use_debye_waller_factor == 0 else OWGenericWidget.get_fit_parameter_from_widget(
            self, "debye_waller_factor", self.get_parameters_prefix())

        thermal_parameters.set_debye_waller_factor(self.phase_index,
                                                   debye_waller_factor)
Beispiel #22
0
    def check_fields(self):
        self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(self.ELECTRONENERGY, "Electron Energy")
        if not self.METHOD == 1: self.ELECTRONENERGYSPREAD = congruence.checkPositiveNumber(self.ELECTRONENERGYSPREAD, "Electron Energy Spread")
        self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(self.ELECTRONCURRENT, "Electron Current")
        self.ELECTRONBEAMSIZEH = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEH, "Electron Beam Size H")
        self.ELECTRONBEAMSIZEV = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEV, "Electron Beam Size V")
        self.ELECTRONBEAMDIVERGENCEH = congruence.checkNumber(self.ELECTRONBEAMDIVERGENCEH, "Electron Beam Divergence H")
        self.ELECTRONBEAMDIVERGENCEV = congruence.checkNumber(self.ELECTRONBEAMDIVERGENCEV, "Electron Beam Divergence V")

        self.PHOTONENERGYMIN = congruence.checkNumber(self.PHOTONENERGYMIN, "Photon Energy Min")
        self.PHOTONENERGYMAX = congruence.checkNumber(self.PHOTONENERGYMAX, "Photon Energy Max")
        self.PHOTONENERGYPOINTS = congruence.checkStrictlyPositiveNumber(self.PHOTONENERGYPOINTS, "Number of Photon Energy Points")

        self.PERIODID = congruence.checkStrictlyPositiveNumber(self.PERIODID, "Period ID")
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
        self.KV = congruence.checkPositiveNumber(self.KV, "Kv")
        self.DISTANCE = congruence.checkStrictlyPositiveNumber(self.DISTANCE, "Distance to slit")

        self.HARMONICNUMBER = congruence.checkStrictlyPositiveNumber(self.HARMONICNUMBER, "Harminic number")

        self.GAPH = congruence.checkPositiveNumber(self.GAPH, "Slit gap H")
        self.GAPV = congruence.checkPositiveNumber(self.GAPV, "Slit gap V")
        self.HSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.HSLITPOINTS, "Number of slit mesh points in H")
        self.VSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.VSLITPOINTS, "Number of slit mesh points in V")

        if  self.METHOD == 1: # URGENT
            congruence.checkLessOrEqualThan(self.HSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
            congruence.checkLessOrEqualThan(self.VSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
Beispiel #23
0
    def check_fields(self):
        self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(
            self.ELECTRONENERGY, "Electron Energy")
        self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(
            self.ELECTRONCURRENT, "Electron Current")

        self.PERIODID = congruence.checkStrictlyPositiveNumber(
            self.PERIODID, "Period ID")
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(
            self.NPERIODS, "Number of Periods")
        self.KV = congruence.checkPositiveNumber(self.KV, "Kv")
        self.DISTANCE = congruence.checkStrictlyPositiveNumber(
            self.DISTANCE, "Distance to slit")

        self.PHOTONENERGYMIN = congruence.checkNumber(self.PHOTONENERGYMIN,
                                                      "Photon Energy Min")
        self.PHOTONENERGYMAX = congruence.checkNumber(self.PHOTONENERGYMAX,
                                                      "Photon Energy Max")
        congruence.checkGreaterOrEqualThan(self.PHOTONENERGYPOINTS, 2,
                                           "Number of Photon Energy Points",
                                           " 2")

        self.HSLITPOINTS = congruence.checkStrictlyPositiveNumber(
            self.HSLITPOINTS, "Number of slit mesh points in H")
        self.VSLITPOINTS = congruence.checkStrictlyPositiveNumber(
            self.VSLITPOINTS, "Number of slit mesh points in V")

        self.NTRAJPOINTS = congruence.checkStrictlyPositiveNumber(
            self.NTRAJPOINTS, "Number Trajectory points")

        self.PASSEPARTOUT = congruence.checkStrictlyPositiveNumber(
            self.PASSEPARTOUT, "Passepartout in units of sigma' at Emin")
 def check_fields_aux(self):
     if len(self.crl_error_profiles) == 0:
         raise ValueError("No Thickness error profile specified")
     if self.crl_material_data == 0:
         self.crl_material = congruence.checkEmptyString(
             self.crl_material, "Chemical Formula")
     else:
         congruence.checkStrictlyPositiveNumber(
             self.crl_delta, "Refractive Index (\u03b4)")
     congruence.checkPositiveNumber(self.crl_scaling_factor,
                                    "Thickness Error Scaling Factor")
Beispiel #25
0
    def check_fields(self):
        self.HMILLER = congruence.checkNumber(self.HMILLER, "h miller index")
        self.KMILLER = congruence.checkNumber(self.KMILLER, "k miller index")
        self.LMILLER = congruence.checkNumber(self.LMILLER, "l miller index")

        self.TEMPER = congruence.checkNumber(self.TEMPER, "Temperature factor")

        self.ENERGY = congruence.checkPositiveNumber(self.ENERGY, "Energy from")
        self.ENERGY_END = congruence.checkStrictlyPositiveNumber(self.ENERGY_END, "Energy to")
        congruence.checkLessThan(self.ENERGY, self.ENERGY_END, "Energy from", "Energy to")
        self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.NPOINTS, "Number of Points")
Beispiel #26
0
 def check_fields(self):
     self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR,
                                                   "formula")
     self.GRIDSTART = congruence.checkPositiveNumber(
         self.GRIDSTART, "Q from")
     self.GRIDEND = congruence.checkStrictlyPositiveNumber(
         self.GRIDEND, "Q to")
     congruence.checkLessThan(self.GRIDSTART, self.GRIDEND, "Q from",
                              "Q to")
     self.GRIDN = congruence.checkStrictlyPositiveNumber(
         self.GRIDN, "Number of q Points")
Beispiel #27
0
    def checkFields(self):
        congruence.checkPositiveNumber(self.p, "Distance Source - KB center")
        congruence.checkPositiveNumber(self.q, "Distance KB center - Image plane")

        congruence.checkPositiveNumber(self.separation, "Separation between the Mirrors")
        congruence.checkStrictlyPositiveNumber(self.photon_energy_ev, "Photon Energy")

        congruence.checkFile(self.reflectivity_file)

        self.crystal_1_box.checkFields()
        self.crystal_2_box.checkFields()
Beispiel #28
0
    def check_fields(self):
        self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR, "formula")
        if self.MAT_FLAG == 1:
            self.DENSITY = congruence.checkStrictlyPositiveNumber(self.DENSITY, "density")

        if self.GRID > 0:
            self.GRIDSTART = congruence.checkPositiveNumber(self.GRIDSTART, "Starting Energy")

            if self.GRID == 1:
                self.GRIDEND = congruence.checkStrictlyPositiveNumber(self.GRIDEND, "Energy to")
                congruence.checkLessThan(self.GRIDSTART, self.GRIDEND, "Starting Energy", "Energy to")
                self.GRIDN = congruence.checkStrictlyPositiveNumber(self.GRIDN, "Number of points")
Beispiel #29
0
    def checkLightSourceSpecificFields(self):
        if self.magnetic_field_from == 0:
            congruence.checkPositiveNumber(self.K_horizontal, "Horizontal K")
            congruence.checkPositiveNumber(self.K_vertical, "Vertical K")
        else:
            congruence.checkPositiveNumber(self.B_horizontal, "Horizontal B")
            congruence.checkPositiveNumber(self.B_vertical, "Vertical B")

        congruence.checkStrictlyPositiveNumber(self.period_length,
                                               "Period Length")
        congruence.checkStrictlyPositiveNumber(self.number_of_periods,
                                               "Number of Periods")
Beispiel #30
0
    def check_fields(self):
        self.MILLER_INDEX_H = congruence.checkNumber(self.MILLER_INDEX_H,
                                                     "Miller index H")
        self.MILLER_INDEX_K = congruence.checkNumber(self.MILLER_INDEX_K,
                                                     "Miller index K")
        self.MILLER_INDEX_L = congruence.checkNumber(self.MILLER_INDEX_L,
                                                     "Miller index L")
        self.TEMPER = congruence.checkNumber(self.TEMPER, "Temperature factor")

        if self.SCAN == 0 or self.SCAN == 3:
            self.SCANFROM = congruence.checkPositiveNumber(
                self.SCANFROM, "Min Scan value")
            self.SCANTO = congruence.checkStrictlyPositiveNumber(
                self.SCANTO, "Max Scan value")
        else:
            self.SCANFROM = congruence.checkNumber(self.SCANFROM,
                                                   "Min Scan value")
            self.SCANTO = congruence.checkNumber(self.SCANTO, "Max Scan value")

        congruence.checkLessThan(self.SCANFROM, self.SCANTO, "Min Scan value",
                                 "Max Scan value")
        self.SCANPOINTS = congruence.checkStrictlyPositiveNumber(
            self.SCANPOINTS, "Scan points")

        if self.SCAN < 4:
            self.ENERGY = congruence.checkStrictlyPositiveNumber(
                self.ENERGY, "Fix value")
        else:
            self.ENERGY = congruence.checkNumber(self.ENERGY, "Fix value")

        if self.MOSAIC == 0:  #perfect
            self.ASYMMETRY_ANGLE = congruence.checkNumber(
                self.ASYMMETRY_ANGLE, "Asymmetry angle")
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(
                self.THICKNESS, "Crystal thickness")
        elif self.MOSAIC == 1:  #mosaic
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(
                self.THICKNESS, "Crystal thickness")
            self.MOSAIC_FWHM = congruence.checkNumber(self.MOSAIC_FWHM,
                                                      "Mosaicity")
        elif self.MOSAIC == 2 or self.MOSAIC == 3:  #bent ML/PP
            self.ASYMMETRY_ANGLE = congruence.checkNumber(
                self.ASYMMETRY_ANGLE, "Asymmetry angle")
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(
                self.THICKNESS, "Crystal thickness")
            self.RSAG = congruence.checkStrictlyPositiveNumber(
                self.RSAG, "R Sagittal")
            self.RMER = congruence.checkStrictlyPositiveNumber(
                self.RMER, "R meridional")

            if self.ANISOTROPY == 0:
                self.POISSON = congruence.checkStrictlyPositiveNumber(
                    self.POISSON, "Poisson Ratio")
            elif self.ANISOTROPY == 2:
                congruence.checkEmptyString(self.CUT, "Valong; Vnorm; Vperp")
            elif self.ANISOTROPY == 3:
                congruence.checkFile(self.FILECOMPLIANCE)
Beispiel #31
0
    def checkFields(self):
        congruence.checkPositiveNumber(self.source_plane_distance,
                                       "Distance from Source")
        congruence.checkPositiveNumber(self.image_plane_distance,
                                       "Image Plane Distance")
        congruence.checkStrictlyPositiveNumber(self.input_diameter,
                                               "Input Diameter")
        congruence.checkStrictlyPositiveAngle(self.angular_acceptance,
                                              "Angular Acceptance")
        congruence.checkStrictlyPositiveNumber(self.output_diameter,
                                               "Output Diameter")
        congruence.checkPositiveNumber(self.residual_divergence,
                                       "Residual Output Divergence")
        congruence.checkStrictlyPositiveNumber(self.lens_length,
                                               "Lens Total Length")

        if self.output_diameter <= self.input_diameter:
            raise Exception(
                "Output Diameter should be greater than Input diameter")

        slit_distance = self.get_slits_distance()

        if self.lens_length < slit_distance:
            raise Exception(
                "Lens total Length should be greater than or equal to " +
                str(slit_distance))

        congruence.checkStrictlyPositiveNumber(self.transmittance,
                                               "Lens Transmittance")
Beispiel #32
0
 def check_fields(self):
     self.ENERGY = congruence.checkStrictlyPositiveNumber(
         self.ENERGY, "Beam Energy")
     self.CUR = congruence.checkStrictlyPositiveNumber(
         self.CUR, "Beam Current")
     self.PERIOD = congruence.checkStrictlyPositiveNumber(
         self.PERIOD, "Period")
     self.N = congruence.checkStrictlyPositiveNumber(
         self.N, "Number of Periods")
     self.KX = congruence.checkNumber(self.KX, "Kx")
     self.KY = congruence.checkNumber(self.KY, "Ky")
     self.EMIN = congruence.checkPositiveNumber(self.EMIN, "Min Energy")
     self.EMAX = congruence.checkStrictlyPositiveNumber(
         self.EMAX, "Max Energy")
     congruence.checkLessThan(self.EMIN, self.EMAX, "Min Energy",
                              "Max Energy")
     self.NEE = congruence.checkStrictlyPositiveNumber(
         self.NEE, "Number of energy steps")
     self.D = congruence.checkPositiveNumber(self.D, "Distance")
     self.XPC = congruence.checkNumber(self.XPC, "X-pos")
     self.YPC = congruence.checkNumber(self.YPC, "Y-pos")
     self.XPS = congruence.checkNumber(self.XPS, "X slit")
     self.YPS = congruence.checkNumber(self.YPS, "Y Slit")
     self.NXP = congruence.checkStrictlyPositiveNumber(
         self.NXP, "Integration points X")
     self.NYP = congruence.checkStrictlyPositiveNumber(
         self.NYP, "Integration points Y")
Beispiel #33
0
    def checkFields(self):
        congruence.checkPositiveNumber(self.p, "Distance Source - KB center")
        congruence.checkPositiveNumber(self.q,
                                       "Distance KB center - Image plane")

        congruence.checkPositiveNumber(self.separation,
                                       "Separation between the Mirrors")
        congruence.checkStrictlyPositiveNumber(self.photon_energy_ev,
                                               "Photon Energy")

        congruence.checkFile(self.reflectivity_file)

        self.crystal_1_box.checkFields()
        self.crystal_2_box.checkFields()
Beispiel #34
0
 def check_fields(self):
     self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY, "Energy")
     self.MILLER_INDEX_H = congruence.checkNumber(self.MILLER_INDEX_H, "Miller index H")
     self.MILLER_INDEX_K = congruence.checkNumber(self.MILLER_INDEX_K, "Miller index K")
     self.MILLER_INDEX_L = congruence.checkNumber(self.MILLER_INDEX_L, "Miller index L")
     self.ASYMMETRY_ANGLE = congruence.checkNumber(self.ASYMMETRY_ANGLE, "Asymmetry angle")
     self.THICKNESS = congruence.checkStrictlyPositiveNumber(self.THICKNESS, "Crystal thickness")
     self.TEMPERATURE = congruence.checkNumber(self.TEMPERATURE, "Crystal temperature")
     self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.NPOINTS, "Number of points")
     
     if self.SCALE == 1:
         self.XFROM = congruence.checkNumber(self.XFROM, "Theta min")
         self.XTO = congruence.checkNumber(self.XTO, "Theta max")
         congruence.checkLessThan(self.XFROM, self.XTO, "Theta min", "Theta max")
    def check_fields(self):
        self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(self.ELECTRONENERGY, "Electron Energy")
        if not self.METHOD == 1: self.ELECTRONENERGYSPREAD = congruence.checkPositiveNumber(self.ELECTRONENERGYSPREAD, "Electron Energy Spread")
        self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(self.ELECTRONCURRENT, "Electron Current")
        self.ELECTRONBEAMSIZEH = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEH, "Electron Beam Size H")
        self.ELECTRONBEAMSIZEV = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEV, "Electron Beam Size V")
        self.ELECTRONBEAMDIVERGENCEH = congruence.checkNumber(self.ELECTRONBEAMDIVERGENCEH, "Electron Beam Divergence H")
        self.ELECTRONBEAMDIVERGENCEV = congruence.checkNumber(self.ELECTRONBEAMDIVERGENCEV, "Electron Beam Divergence V")

        self.PERIODID = congruence.checkStrictlyPositiveNumber(self.PERIODID, "Period ID")
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
        self.KV = congruence.checkPositiveNumber(self.KV, "Kv")
        self.DISTANCE = congruence.checkStrictlyPositiveNumber(self.DISTANCE, "Distance to slit")

        if self.SETRESONANCE == 0:
            self.GAPH = congruence.checkPositiveNumber(self.GAPH, "Slit gap H")
            self.GAPV = congruence.checkPositiveNumber(self.GAPV, "Slit gap V")
            self.PHOTONENERGYMIN = congruence.checkNumber(self.PHOTONENERGYMIN, "Photon Energy Min")
            self.PHOTONENERGYMAX = congruence.checkNumber(self.PHOTONENERGYMAX, "Photon Energy Max")
            congruence.checkGreaterOrEqualThan(self.PHOTONENERGYPOINTS, 2, "Number of Photon Energy Points", " 2")
        else:
            self.HARMONICNUMBER = congruence.checkStrictlyPositiveNumber(self.HARMONICNUMBER, "Harmonic number")

        self.HSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.HSLITPOINTS, "Number of slit mesh points in H")
        self.VSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.VSLITPOINTS, "Number of slit mesh points in V")

        if  self.METHOD == 1: # URGENT
            congruence.checkLessOrEqualThan(self.HSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
            congruence.checkLessOrEqualThan(self.VSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
    def check_fields(self):
        self.dimension_x = congruence.checkStrictlyPositiveNumber(self.dimension_x, "Dimension X")
        self.step_x = congruence.checkStrictlyPositiveNumber(self.step_x, "Step X")
        if self.step_x > self.dimension_x/2:
            raise Exception("Step Width should be smaller than or equal to Width/2")
        if self.modify_y == 1:
            self.scale_factor_y = congruence.checkStrictlyPositiveNumber(self.scale_factor_y, "Scale Factor")
        elif self.modify_y == 2:
            self.new_length = congruence.checkStrictlyPositiveNumber(self.new_length, "New Length")

        if self.renormalize_y == 1:
            self.rms_y = congruence.checkPositiveNumber(self.rms_y, "Rms Y")

        congruence.checkDir(self.heigth_profile_file_name)
Beispiel #37
0
    def check_fields(self):
        self.number_of_points_x = congruence.checkStrictlyPositiveNumber(self.number_of_points_x, "Number of Points X")
        self.number_of_points_y = congruence.checkStrictlyPositiveNumber(self.number_of_points_y, "Number of Points Y")

        self.dimension_x = congruence.checkStrictlyPositiveNumber(self.dimension_x, "Dimension X")
        self.dimension_y = congruence.checkStrictlyPositiveNumber(self.dimension_y, "Dimension Y")

        self.estimated_slope_error = congruence.checkPositiveNumber(self.estimated_slope_error, "Estimated slope error")
        self.montecarlo_seed = congruence.checkPositiveNumber(self.montecarlo_seed, "Monte Carlo initial seed")

        self.harmonic_maximum_index = congruence.checkPositiveNumber(self.harmonic_maximum_index,
                                                                    "Harmonic Maximum Index")

        congruence.checkDir(self.waviness_file_name)
    def check_fields(self):
        if self.focal_length_calc == 1:
            congruence.checkPositiveNumber(self.ghy_focallength,
                                           "Focal Length value")

        if self.distance_to_image_calc == 1:
            congruence.checkPositiveNumber(self.ghy_distance,
                                           "Distance to image value")

        if self.ghy_diff_plane == 0 or self.ghy_diff_plane == 2:
            congruence.checkStrictlyPositiveNumber(
                self.ghy_nbins_x, "Number of bins for I(Sagittal) histogram")
        if self.ghy_diff_plane == 1 or self.ghy_diff_plane == 2:
            congruence.checkStrictlyPositiveNumber(
                self.ghy_nbins_z, "Number of bins for I(Tangential) histogram")

        if self.ghy_files is None or len(
                self.ghy_files) == 0 or (len(self.ghy_files) == 1
                                         and self.ghy_files[0] == ""):
            raise ValueError("Height Error Profiles list is empty")

        congruence.checkStrictlyPositiveNumber(self.ghy_npeak,
                                               "Number of diffraction peaks")
        congruence.checkStrictlyPositiveNumber(self.ghy_fftnpts,
                                               "Number of points for FFT")
Beispiel #39
0
    def checkFields(self):
        congruence.checkPositiveNumber(self.grazing_angles_mrad, "Grazing Angle")

        if self.has_finite_dimensions == 0:
            congruence.checkStrictlyPositiveNumber(self.mirror_width, "Mirror Width")
            congruence.checkStrictlyPositiveNumber(self.mirror_length, "Mirror Length")
        elif self.has_surface_error != 0:
            raise Exception("With surface error file, dimensions cannot be infinite")

        if self.reflectivity_kind != 0:
            congruence.checkFile(self.reflectivity_files)

        if self.has_surface_error == 1:
            congruence.checkFile(self.surface_error_files)
    def __init__(self, s_max=9.0, n_step=4096, fft_type=FFTTypes.REAL_ONLY):
        congruence.checkStrictlyPositiveNumber(s_max, "S_max")
        congruence.checkStrictlyPositiveNumber(n_step, "N_step")

        n_step = int(n_step)

        if not ((n_step & (n_step - 1)) == 0):
            raise ValueError("N_step should be a power of 2")
        if not (fft_type == FFTTypes.REAL_ONLY or fft_type == FFTTypes.FULL):
            raise ValueError("FFT type not recognized")

        self.s_max = s_max
        self.n_step = n_step
        self.fft_type = fft_type
    def parse_peak(cls, line, line_index=0, diffraction_pattern_index=0):
        try:
            congruence.checkEmptyString(line, "Pseudo-Voigt Peak")
        except:
            return None

        if line.strip().startswith("#"):
            return None
        else:
            parameter_prefix = PseudoVoigtPeak.get_parameters_prefix() + str(diffraction_pattern_index + 1) + "_" + str(line_index+1) + "_"

            line_id = "(d.p. " + str(diffraction_pattern_index+1) +", line " + str(line_index+1) + ")"

            psuedo_voigt_peak = PseudoVoigtPeak()

            data = line.strip().split(",")

            if len(data) < 4: raise ValueError("Pseudo-Voigt Peak, malformed line: " + str(line_index+1))

            try:
                twotheta_0 = FitParameter.parse_parameter_on_row(data[0], parameter_prefix, "twotheta0")
                eta        = FitParameter.parse_parameter_on_row(data[1], parameter_prefix, "eta")
                fwhm       = FitParameter.parse_parameter_on_row(data[2], parameter_prefix, "fwhm")
                intensity  = FitParameter.parse_parameter_on_row(data[3], parameter_prefix, "intensity")
            except:
                raise "Row " + line_id + " is malformed"

            if not twotheta_0.function:
                congruence.checkStrictlyPositiveAngle(twotheta_0.value, "2\u03b80 " + line_id)
                if twotheta_0.boundary.is_free(): twotheta_0.boundary = Boundary(min_value=0.0)

            if not eta.function:
                if not 0.0 < eta.value < 1.0: raise ValueError("\u03b7 " + line_id + " must be between 0 and 1")
                if eta.boundary.is_free(): eta.boundary = Boundary(min_value=0.0, max_value=1.0)

            if not fwhm.function:
                congruence.checkStrictlyPositiveNumber(fwhm.value, "fwhm " + line_id)
                if fwhm.boundary.is_free(): fwhm.boundary = Boundary(min_value=0.0)

            if not intensity.function:
                congruence.checkStrictlyPositiveNumber(intensity.value, "intensity " + line_id)
                if intensity.boundary.is_free():  intensity.boundary  = Boundary(min_value=0.0)

            psuedo_voigt_peak.twotheta_0 = twotheta_0
            psuedo_voigt_peak.eta        = eta
            psuedo_voigt_peak.fwhm       = fwhm
            psuedo_voigt_peak.intensity  = intensity

            return psuedo_voigt_peak
Beispiel #42
0
    def checkFields(self):
        congruence.checkPositiveNumber(self.p, "P")
        congruence.checkPositiveNumber(self.q, "Q")

        if self.has_finite_diameter == 0:
            congruence.checkStrictlyPositiveNumber(self.diameter, "Diameter")

        if self.ri_calculation_mode == 1:
            congruence.checkFile(self.prerefl_file)
        else:
            congruence.checkPositiveNumber(self.refraction_index, "Refraction Index")
            congruence.checkPositiveNumber(self.attenuation_coefficient, "Attenuation Coefficient")

        congruence.checkStrictlyPositiveNumber(self.radius, "Radius")
        congruence.checkPositiveNumber(self.interthickness, "Lens Thickness")
Beispiel #43
0
    def checkFields(self):
        if type(self.DESCRIPTOR) == str: # back compatibility with old version
            try:
                self.DESCRIPTOR = self.crystals.index(self.DESCRIPTOR)
            except:
                self.DESCRIPTOR = 0

        self.H_MILLER_INDEX = congruence.checkNumber(self.H_MILLER_INDEX, "H miller index")
        self.K_MILLER_INDEX = congruence.checkNumber(self.K_MILLER_INDEX, "K miller index")
        self.L_MILLER_INDEX = congruence.checkNumber(self.L_MILLER_INDEX, "L miller index")
        self.TEMPERATURE_FACTOR = congruence.checkNumber(self.TEMPERATURE_FACTOR, "Temperature factor")
        self.E_MIN  = congruence.checkPositiveNumber(self.E_MIN , "Minimum energy")
        self.E_MAX  = congruence.checkStrictlyPositiveNumber(self.E_MAX , "Maximum Energy")
        self.E_STEP = congruence.checkStrictlyPositiveNumber(self.E_STEP, "Energy step")
        if self.E_MIN > self.E_MAX: raise Exception("From Energy cannot be bigger than To Energy")
        congruence.checkDir(self.SHADOW_FILE)
Beispiel #44
0
    def check_fields(self):
        self.H = congruence.checkNumber(self.H, "h main")
        self.K = congruence.checkNumber(self.K, "k main")
        self.L = congruence.checkNumber(self.L, "l main")
        self.HMAX = congruence.checkNumber(self.HMAX, "h max")
        self.KMAX = congruence.checkNumber(self.KMAX, "k max")
        self.LMAX = congruence.checkNumber(self.LMAX, "l max")
        self.FHEDGE = congruence.checkNumber(self.FHEDGE, "Fh less than")

        if self.DISPLAY == 1 or self.DISPLAY == 3:
            self.LAMBDA = congruence.checkStrictlyPositiveNumber(self.LAMBDA, "Wavelength")
            self.DELTALAMBDA = congruence.checkStrictlyPositiveNumber(self.DELTALAMBDA, "Delta Wavelength")

        if self.DISPLAY == 2 or self.DISPLAY == 3:
            self.PHI = congruence.checkNumber(self.PHI, "Phi")
            self.DELTAPHI = congruence.checkStrictlyPositiveNumber(self.DELTALAMBDA, "Delta Phi")
    def checkFields(self):
        self.r_a = congruence.checkPositiveNumber(self.r_a, "Distance Source-Grating")
        self.r_b = congruence.checkPositiveNumber(self.r_b, "Distance Grating-Exit Slits")
        self.k = congruence.checkStrictlyPositiveNumber(self.k, "Line Densityg")

        if self.units_in_use == 0:
            self.photon_energy = congruence.checkPositiveNumber(self.photon_energy, "Photon Energy")
        elif self.units_in_use == 1:
            self.photon_wavelength = congruence.checkPositiveNumber(self.photon_wavelength, "Photon Wavelength")
Beispiel #46
0
 def check_fields(self):
     self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY, "Electron Energy")
     self.CURRENT = congruence.checkStrictlyPositiveNumber(self.CURRENT, "Current")
     self.ENERGY_SPREAD = congruence.checkStrictlyPositiveNumber(self.ENERGY_SPREAD, "Energy Spread")
     self.SIGX  = congruence.checkPositiveNumber(self.SIGX , "Sigma X")
     self.SIGY  = congruence.checkPositiveNumber(self.SIGY , "Sigma Y")
     self.SIGX1 = congruence.checkPositiveNumber(self.SIGX1, "Sigma X'")
     self.SIGY1 = congruence.checkPositiveNumber(self.SIGY1, "Sigma Y'")
     self.PERIOD = congruence.checkStrictlyPositiveNumber(self.PERIOD, "Period length")
     self.NP = congruence.checkStrictlyPositiveNumber(self.NP, "Number of periods")
     self.EMIN = congruence.checkPositiveNumber(self.EMIN, "E1 minimum energy")
     self.EMAX = congruence.checkStrictlyPositiveNumber(self.EMAX, "E1 maximum energy")
     congruence.checkLessThan(self.EMIN, self.EMAX, "E1 minimum energy", "E1 maximum energy")
     self.N = congruence.checkStrictlyPositiveNumber(self.N, "Number of Energy Points")
     self.HARMONIC_FROM = congruence.checkStrictlyPositiveNumber(self.HARMONIC_FROM, "Minimum harmonic number")
     self.HARMONIC_TO = congruence.checkStrictlyPositiveNumber(self.HARMONIC_TO, "Maximum harmonic number")
     congruence.checkLessThan(self.HARMONIC_FROM, self.HARMONIC_TO, "Minimum harmonic number", "Maximum harmonic number")
     self.HARMONIC_STEP = congruence.checkStrictlyPositiveNumber(self.HARMONIC_STEP, "Harmonic step size")
     self.NEKS  = congruence.checkPositiveNumber(self.NEKS , "Intrinsic NEKS")
Beispiel #47
0
    def check_fields(self):
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
        self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY, "Beam Energy")
        self.PHOT_ENERGY_MIN = congruence.checkPositiveNumber(self.PHOT_ENERGY_MIN, "Min Photon Energy")
        self.PHOT_ENERGY_MAX = congruence.checkStrictlyPositiveNumber(self.PHOT_ENERGY_MAX, "Max Photon Energy")
        congruence.checkLessThan(self.PHOT_ENERGY_MIN, self.PHOT_ENERGY_MAX, "Min Photon Energy", "Max Photon Energy")
        self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.NPOINTS, "Number of Energy Points")
        self.CURRENT = congruence.checkStrictlyPositiveNumber(self.CURRENT, "Electron Beam Current")

        if self.FIELD == 0:
            self.ULAMBDA = congruence.checkStrictlyPositiveNumber(self.ULAMBDA, "Wiggler period")
            self.K = congruence.checkStrictlyPositiveNumber(self.K, "K")
            self.NTRAJPOINTS = congruence.checkStrictlyPositiveNumber(self.NTRAJPOINTS, "Number of traj points per period")
        elif self.FIELD == 1:
            self.ULAMBDA = congruence.checkStrictlyPositiveNumber(self.ULAMBDA, "Wiggler period")
            self.NTRAJPOINTS = congruence.checkStrictlyPositiveNumber(self.NTRAJPOINTS, "Number of traj points per period")
            congruence.checkUrl(self.FILE)
        elif self.FIELD == 2:
            congruence.checkUrl(self.FILE)
Beispiel #48
0
 def check_fields(self):
     congruence.checkFile(self.FILE)
     self.LAMBDA = congruence.checkStrictlyPositiveNumber(self.LAMBDA, "Lambda")
     self.U = congruence.checkNumber(self.U, "U")
     self.V = congruence.checkNumber(self.V, "V")
     self.W = congruence.checkNumber(self.W, "W")
     self.X = congruence.checkNumber(self.X, "X")
     self.LS = congruence.checkNumber(self.LS, "LS")
     self.THMIN = congruence.checkPositiveAngle(self.THMIN, "TwoTheta from")
     self.THMAX = congruence.checkPositiveAngle(self.THMAX, "TwoTheta to")
     self.STEP = congruence.checkStrictlyPositiveAngle(self.STEP, "TwoTheta step")
     congruence.checkGreaterThan(self.THMAX, self.THMIN, "TwoTheta to", "TwoTheta from")
Beispiel #49
0
    def check_fields(self):
        self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR, "formula")
        if self.MAT_FLAG == 1:
            self.DENSITY = congruence.checkStrictlyPositiveNumber(self.DENSITY, "density")

        if self.GRID > 0:
            self.GRIDSTART = congruence.checkPositiveNumber(self.GRIDSTART, "Starting Energy")

            if self.GRID == 1:
                self.GRIDEND = congruence.checkStrictlyPositiveNumber(self.GRIDEND, "Energy to")
                congruence.checkLessThan(self.GRIDSTART, self.GRIDEND, "Starting Energy", "Energy to")
                self.GRIDN = congruence.checkStrictlyPositiveNumber(self.GRIDN, "Number of points")

        if self.CALCULATE >= 7 and self.CALCULATE <= 9:
            self.ROUGH = congruence.checkPositiveNumber(self.ROUGH, "Roughness")
            self.THETA1 = congruence.checkPositiveNumber(self.THETA1, "Starting Graz angle")

            if self.THETAGRID == 1:
                self.THETA2 = congruence.checkStrictlyPositiveNumber(self.THETA2, "Graz angle to")
                congruence.checkLessThan(self.THETA1, self.THETA2, "Starting Graz angle", "Graz angle to")
                self.THETAN = congruence.checkStrictlyPositiveNumber(self.THETAN, "Number of angular points")
        else:
            self.THETAGRID = 0
Beispiel #50
0
 def check_fields(self):
     self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY, "Beam Energy")
     self.CUR = congruence.checkStrictlyPositiveNumber(self.CUR, "Beam Current")
     self.PERIOD = congruence.checkStrictlyPositiveNumber(self.PERIOD, "Period")
     self.N = congruence.checkStrictlyPositiveNumber(self.N, "Number of Periods")
     self.KX = congruence.checkNumber(self.KX, "Kx")
     self.KY = congruence.checkNumber(self.KY, "Ky")
     self.EMIN = congruence.checkPositiveNumber(self.EMIN, "Min Energy")
     self.EMAX = congruence.checkStrictlyPositiveNumber(self.EMAX, "Max Energy")
     congruence.checkLessThan(self.EMIN, self.EMAX, "Min Energy", "Max Energy")
     self.NEE = congruence.checkStrictlyPositiveNumber(self.NEE, "Number of energy steps")
     self.D = congruence.checkPositiveNumber(self.D, "Distance")
     self.XPC = congruence.checkNumber(self.XPC, "X-pos")
     self.YPC = congruence.checkNumber(self.YPC, "Y-pos")
     self.XPS = congruence.checkNumber(self.XPS, "X slit")
     self.YPS = congruence.checkNumber(self.YPS, "Y Slit")
     self.NXP = congruence.checkStrictlyPositiveNumber(self.NXP, "Integration points X")
     self.NYP = congruence.checkStrictlyPositiveNumber(self.NYP, "Integration points Y")
    def checkFields(self):
        congruence.checkPositiveNumber(self.source_plane_distance, "Distance from Source")
        congruence.checkPositiveNumber(self.image_plane_distance, "Image Plane Distance")
        congruence.checkStrictlyPositiveNumber(self.input_diameter, "Input Diameter")
        congruence.checkStrictlyPositiveAngle(self.angular_acceptance, "Angular Acceptance")
        congruence.checkStrictlyPositiveNumber(self.output_diameter, "Output Diameter")
        congruence.checkPositiveNumber(self.residual_divergence, "Residual Output Divergence")
        congruence.checkStrictlyPositiveNumber(self.lens_length, "Lens Total Length")

        if self.output_diameter <= self.input_diameter:
            raise Exception("Output Diameter should be greater than Input diameter")

        slit_distance = self.get_slits_distance()

        if self.lens_length < slit_distance:
            raise Exception("Lens total Length should be greater than or equal to " + str(slit_distance))

        congruence.checkStrictlyPositiveNumber(self.transmittance, "Lens Transmittance")
Beispiel #52
0
    def check_fields(self):
        self.MILLER_INDEX_H = congruence.checkNumber(self.MILLER_INDEX_H, "Miller index H")
        self.MILLER_INDEX_K = congruence.checkNumber(self.MILLER_INDEX_K, "Miller index K")
        self.MILLER_INDEX_L = congruence.checkNumber(self.MILLER_INDEX_L, "Miller index L")
        self.TEMPER = congruence.checkNumber(self.TEMPER, "Temperature factor")

        if self.SCAN == 0 or self.SCAN == 3:
            self.SCANFROM = congruence.checkPositiveNumber(self.SCANFROM, "Min Scan value")
            self.SCANTO = congruence.checkStrictlyPositiveNumber(self.SCANTO, "Max Scan value")
        else:
            self.SCANFROM = congruence.checkNumber(self.SCANFROM, "Min Scan value")
            self.SCANTO = congruence.checkNumber(self.SCANTO, "Max Scan value")

        congruence.checkLessThan(self.SCANFROM, self.SCANTO, "Min Scan value", "Max Scan value")
        self.SCANPOINTS = congruence.checkStrictlyPositiveNumber(self.SCANPOINTS, "Scan points")

        if self.SCAN < 4:
            self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY , "Fix value")
        else:
            self.ENERGY = congruence.checkNumber(self.ENERGY , "Fix value")

        if self.MOSAIC == 0: #perfect
            self.ASYMMETRY_ANGLE = congruence.checkNumber(self.ASYMMETRY_ANGLE, "Asymmetry angle")
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(self.THICKNESS, "Crystal thickness")
        elif self.MOSAIC == 1: #mosaic
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(self.THICKNESS, "Crystal thickness")
            self.MOSAIC_FWHM = congruence.checkNumber(self.MOSAIC_FWHM, "Mosaicity")
        elif self.MOSAIC == 2 or self.MOSAIC == 3: #bent ML/PP
            self.ASYMMETRY_ANGLE = congruence.checkNumber(self.ASYMMETRY_ANGLE, "Asymmetry angle")
            self.THICKNESS = congruence.checkStrictlyPositiveNumber(self.THICKNESS, "Crystal thickness")
            self.RSAG = congruence.checkStrictlyPositiveNumber(self.RSAG, "R Sagittal")
            self.RMER = congruence.checkStrictlyPositiveNumber(self.RMER, "R meridional")

            if self.ANISOTROPY == 0:
                self.POISSON = congruence.checkStrictlyPositiveNumber(self.POISSON, "Poisson Ratio")
            elif self.ANISOTROPY == 2:
                congruence.checkEmptyString(self.CUT, "Valong; Vnorm; Vperp")
            elif self.ANISOTROPY == 3:
                congruence.checkFile(self.FILECOMPLIANCE)
Beispiel #53
0
    def check_fields(self):
        if self.F12_FLAG == 1:
            congruence.checkEmptyString(self.SUBSTRATE, "Substrate")
            congruence.checkEmptyString(self.ODD_MATERIAL, "Odd layer material")
            congruence.checkEmptyString(self.EVEN_MATERIAL, "Even layer material")

        if self.SCAN == 0: # ga
            self.ENERGY = congruence.checkStrictlyPositiveNumber(self.ENERGY, "Photon energy")
        else:
            self.THETA = congruence.checkStrictlyPositiveNumber(self.THETA, "Grazing angle")

        self.SCAN_STEP = congruence.checkStrictlyPositiveNumber(self.SCAN_STEP, "Scanning variable step")
        self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.NPOINTS, "Number of scanning points")

        if self.MODE == 0: # periodic layers
            self.ODD_THICKNESS = congruence.checkStrictlyPositiveNumber(self.ODD_THICKNESS, "Thickness for odd material")
            self.EVEN_THICKNESS = congruence.checkStrictlyPositiveNumber(self.EVEN_THICKNESS, "Thickness for even material")
            self.NLAYERS = congruence.checkStrictlyPositiveNumber(self.NLAYERS, "Number of layer pairs")
        else:
            congruence.checkFile(self.FILE)
Beispiel #54
0
 def check_fields(self):
     self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(self.ELECTRONENERGY, "Electron Energy")
     if not self.METHOD == 1: self.ELECTRONENERGYSPREAD = congruence.checkPositiveNumber(self.ELECTRONENERGYSPREAD, "Electron Energy Spread")
     self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(self.ELECTRONCURRENT, "Electron Current")
     self.ELECTRONBEAMSIZEH = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEH, "Electron Beam Size H")
     self.ELECTRONBEAMSIZEV = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEV, "Electron Beam Size V")
     self.ELECTRONBEAMDIVERGENCEH = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEH, "Electron Beam Divergence H")
     self.ELECTRONBEAMDIVERGENCEV = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEV, "Electron Beam Divergence V")
     self.PERIODID = congruence.checkStrictlyPositiveNumber(self.PERIODID, "Period ID")
     self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
     self.DISTANCE = congruence.checkPositiveNumber(self.DISTANCE, "Distance to slit")
     self.GAPH = congruence.checkPositiveNumber(self.GAPH, "Slit gap H")
     self.GAPV = congruence.checkPositiveNumber(self.GAPV, "Slit gap V")
     self.KMIN = congruence.checkPositiveNumber(self.KMIN, "K Min")
     self.KMAX = congruence.checkStrictlyPositiveNumber(self.KMAX, "K Max")
     congruence.checkLessThan(self.KMIN, self.KMAX, "K Min", "K Max")
     self.KPOINTS = congruence.checkStrictlyPositiveNumber(self.KPOINTS, "Number of K Points")
Beispiel #55
0
    def plot_results(self):
        #self.error(self.error_id)

        try:
            plotted = False

            sys.stdout = EmittingStream(textWritten=self.writeStdOut)
            if self.trace_shadow:
                grabber = TTYGrabber()
                grabber.start()

            if ShadowCongruence.checkEmptyBeam(self.input_beam):
                ShadowPlot.set_conversion_active(self.getConversionActive())

                self.number_of_bins = congruence.checkStrictlyPositiveNumber(self.number_of_bins, "Number of Bins")

                x, y, auto_x_title, auto_y_title, xum, yum = self.get_titles()

                self.plot_xy(x, y, title=self.title, xtitle=auto_x_title, ytitle=auto_y_title, xum=xum, yum=yum)

                plotted = True
            if self.trace_shadow:
                grabber.stop()

                for row in grabber.ttyData:
                    self.writeStdOut(row)

            time.sleep(0.5)  # prevents a misterious dead lock in the Orange cycle when refreshing the histogram

            return plotted
        except Exception as exception:
            QtGui.QMessageBox.critical(self, "Error",
                                       str(exception),
                                       QtGui.QMessageBox.Ok)

            #self.error_id = self.error_id + 1
            #self.error(self.error_id, "Exception occurred: " + str(exception))
            return False
    def check_fields(self):
        self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(self.ELECTRONENERGY, "Electron Energy")
        if not self.METHOD == 1: self.ELECTRONENERGYSPREAD = congruence.checkPositiveNumber(self.ELECTRONENERGYSPREAD, "Electron Energy Spread")
        self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(self.ELECTRONCURRENT, "Electron Current")
        self.ELECTRONBEAMSIZEH = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEH, "Electron Beam Size H")
        self.ELECTRONBEAMSIZEV = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEV, "Electron Beam Size V")
        self.ELECTRONBEAMDIVERGENCEH = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEH, "Electron Beam Divergence H")
        self.ELECTRONBEAMDIVERGENCEV = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEV, "Electron Beam Divergence V")
        self.PERIODID = congruence.checkStrictlyPositiveNumber(self.PERIODID, "Period ID")
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
        self.KV = congruence.checkPositiveNumber(self.KV, "Kv")
        self.DISTANCE = congruence.checkPositiveNumber(self.DISTANCE, "Distance to slit")
        self.GAPH = congruence.checkPositiveNumber(self.GAPH, "Slit gap H")
        self.GAPV = congruence.checkPositiveNumber(self.GAPV, "Slit gap V")
        self.HSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.HSLITPOINTS, "Number of slit mesh points in H")
        self.VSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.VSLITPOINTS, "Number of slit mesh points in V")

        if sys.platform == 'linux' and self.METHOD == 2:
            raise Exception("SRW calculation code not supported under Linux")
    def check_fields(self):

        self.ELECTRONENERGY = congruence.checkStrictlyPositiveNumber(self.ELECTRONENERGY, "Electron Energy")
        if not self.METHOD == 1: self.ELECTRONENERGYSPREAD = congruence.checkPositiveNumber(self.ELECTRONENERGYSPREAD, "Electron Energy Spread")
        self.ELECTRONCURRENT = congruence.checkStrictlyPositiveNumber(self.ELECTRONCURRENT, "Electron Current")
        self.ELECTRONBEAMSIZEH = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEH, "Electron Beam Size H")
        self.ELECTRONBEAMSIZEV = congruence.checkPositiveNumber(self.ELECTRONBEAMSIZEV, "Electron Beam Size V")
        self.ELECTRONBEAMDIVERGENCEH = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEH, "Electron Beam Divergence H")
        self.ELECTRONBEAMDIVERGENCEV = congruence.checkPositiveNumber(self.ELECTRONBEAMDIVERGENCEV, "Electron Beam Divergence V")
        self.PERIODID = congruence.checkStrictlyPositiveNumber(self.PERIODID, "Period ID")
        self.NPERIODS = congruence.checkStrictlyPositiveNumber(self.NPERIODS, "Number of Periods")
        self.KV = congruence.checkPositiveNumber(self.KV, "Kv")
        self.DISTANCE = congruence.checkPositiveNumber(self.DISTANCE, "Distance to slit")
        self.GAPH = congruence.checkPositiveNumber(self.GAPH, "Slit gap H")
        self.GAPV = congruence.checkPositiveNumber(self.GAPV, "Slit gap V")
        self.HSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.HSLITPOINTS, "Number of slit mesh points in H")
        self.VSLITPOINTS = congruence.checkStrictlyPositiveNumber(self.VSLITPOINTS, "Number of slit mesh points in V")

        if  self.METHOD == 1: # URGENT
            congruence.checkLessOrEqualThan(self.HSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
            congruence.checkLessOrEqualThan(self.VSLITPOINTS, 51, "Number of slit mesh points for URGENT "," 51")
Beispiel #58
0
    def check_fields(self):
        if self.RB_CHOICE == 0:
            self.MACHINE_R_M = congruence.checkStrictlyPositiveNumber(self.MACHINE_R_M, "Magnetic Radius")
        else:
            self.BFIELD_T = congruence.checkStrictlyPositiveNumber(self.BFIELD_T, "Magnetic Field")

        self.BEAM_ENERGY_GEV = congruence.checkStrictlyPositiveNumber(self.BEAM_ENERGY_GEV, "Beam Energy")
        self.CURRENT_A = congruence.checkStrictlyPositiveNumber(self.CURRENT_A, "Beam Current")
        self.HOR_DIV_MRAD = congruence.checkPositiveNumber(self.HOR_DIV_MRAD, "Horizontal div Theta")

        self.PHOT_ENERGY_MIN = congruence.checkPositiveNumber(self.PHOT_ENERGY_MIN, "Min Photon Energy")
        self.PHOT_ENERGY_MAX = congruence.checkStrictlyPositiveNumber(self.PHOT_ENERGY_MAX, "Max Photon Energy")
        congruence.checkLessThan(self.PHOT_ENERGY_MIN, self.PHOT_ENERGY_MAX, "Min Photon Energy", "Max Photon Energy")
        self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.NPOINTS, "Number of Energy Points")

        self.PSI_MRAD_PLOT = congruence.checkNumber(self.PSI_MRAD_PLOT, "Max Psi for angular plots")

        if self.VER_DIV == 2:
            self.PSI_MIN = congruence.checkNumber(self.PSI_MIN, "Min Photon Energy")
            self.PSI_MAX = congruence.checkNumber(self.PSI_MAX, "Max Photon  Max")
            congruence.checkLessThan(self.PSI_MIN, self.PSI_MAX, "Psi Min", "Psi Max")
        elif self.VER_DIV == 3:
            self.PSI_MIN = congruence.checkNumber(self.PSI_MIN, "Min Photon Energy")
Beispiel #59
0
 def check_fields(self):
     self.DESCRIPTOR = congruence.checkEmptyString(self.DESCRIPTOR, "formula")
     self.GRIDSTART = congruence.checkPositiveNumber(self.GRIDSTART, "Q from")
     self.GRIDEND = congruence.checkStrictlyPositiveNumber(self.GRIDEND, "Q to")
     congruence.checkLessThan(self.GRIDSTART, self.GRIDEND, "Q from", "Q to")
     self.GRIDN = congruence.checkStrictlyPositiveNumber(self.GRIDN, "Number of q Points")