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")
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.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(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)
def check_fields(self): self.source_lambda = congruence.checkStrictlyPositiveNumber(self.source_lambda, "Wavelength") if self.source_position == 0: self.longitudinal_correction = congruence.checkNumber(self.longitudinal_correction, "Longitudinal Correction") self.transverse_correction = congruence.checkNumber(self.transverse_correction, "Transverse Correction") self.delta_theta = congruence.checkAngle(self.delta_theta, "\u0394" + "Theta") else: self.theta = congruence.checkAngle(self.theta, "Theta")
def check_data(self): super().check_data() congruence.checkNumber(self.horizontal_shift, "Horizontal Shift") congruence.checkNumber(self.vertical_shift, "Vertical Shift") if self.shape == 0: congruence.checkStrictlyPositiveNumber(self.width, "Width") congruence.checkStrictlyPositiveNumber(self.height, "Height") elif self.shape == 1: congruence.checkStrictlyPositiveNumber(self.radius, "Radius")
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")
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")
def checkFields(self): self.source_plane_distance = congruence.checkNumber(self.source_plane_distance, "Source plane distance") self.image_plane_distance = congruence.checkNumber(self.image_plane_distance, "Image plane distance") congruence.checkStrictlyPositiveNumber(self.delta_rn, u"\u03B4" + "rn" ) congruence.checkStrictlyPositiveNumber(self.diameter, "Z.P. Diameter") if (self.source_distance_flag == 1): congruence.checkPositiveNumber(self.source_distance, "Source Distance" ) if self.type_of_zp == PHASE_ZP: congruence.checkEmptyString(self.zone_plate_material, "Zone Plate Material") congruence.checkStrictlyPositiveNumber(self.zone_plate_thickness, "Zone Plate Thickness") congruence.checkEmptyString(self.substrate_material, "Substrate Material") congruence.checkStrictlyPositiveNumber(self.substrate_thickness, "Substrate Thickness")
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")
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)
def checkFields(self): congruence.checkDir(self.FILE) self.E_MIN = congruence.checkPositiveNumber(self.E_MIN, "Min Energy") self.E_MAX = congruence.checkStrictlyPositiveNumber( self.E_MAX, "Max Energy") congruence.checkLessOrEqualThan(self.E_MIN, self.E_MAX, "Minimum Energy", "Maximum Energy") self.S_MATERIAL = ShadowPhysics.checkCompoundName(self.S_MATERIAL) self.S_DENSITY = congruence.checkStrictlyPositiveNumber( float(self.S_DENSITY), "Density (substrate)") self.E_MATERIAL = ShadowPhysics.checkCompoundName(self.E_MATERIAL) self.E_DENSITY = congruence.checkStrictlyPositiveNumber( float(self.E_DENSITY), "Density (even sublayer)") self.O_MATERIAL = ShadowPhysics.checkCompoundName(self.O_MATERIAL) self.O_DENSITY = congruence.checkStrictlyPositiveNumber( float(self.O_DENSITY), "Density (odd sublayer)") if self.GRADE_DEPTH == 0: self.N_PAIRS = congruence.checkStrictlyPositiveNumber( int(self.N_PAIRS), "Number of bilayers") self.THICKNESS = congruence.checkStrictlyPositiveNumber( float(self.THICKNESS), "bilayer thickness t") self.GAMMA = congruence.checkStrictlyPositiveNumber( float(self.GAMMA), "gamma ratio") self.ROUGHNESS_EVEN = congruence.checkPositiveNumber( float(self.ROUGHNESS_EVEN), "Roughness even layer") self.ROUGHNESS_ODD = congruence.checkPositiveNumber( float(self.ROUGHNESS_ODD), "Roughness odd layer") else: congruence.checkDir(self.FILE_DEPTH) if self.GRADE_SURFACE == 1: congruence.checkDir(self.FILE_SHADOW) congruence.checkDir(self.FILE_THICKNESS) congruence.checkDir(self.FILE_GAMMA) elif self.GRADE_SURFACE == 2: self.AA0 = congruence.checkNumber(float(self.AA0), "zero-order coefficient") self.AA1 = congruence.checkNumber(float(self.AA1), "linear coefficient") self.AA2 = congruence.checkNumber(float(self.AA2), "2nd degree coefficient") self.AA3 = congruence.checkNumber(float(self.AA3), "3rd degree coefficient")
def checkFields(self): congruence.checkPositiveNumber(self.nlenses, "Number of lenses") congruence.checkPositiveNumber(self.slots_empty, "Number of empty slots") congruence.checkPositiveNumber(self.thickness, "Piling thickness") congruence.checkNumber(self.p, "P") congruence.checkNumber(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")
def checkFields(self): congruence.checkStrictlyPositiveNumber(self.electron_energy_in_GeV, "Energy") congruence.checkPositiveNumber(self.electron_energy_spread, "Energy Spread") congruence.checkStrictlyPositiveNumber(self.ring_current, "Ring Current") if self.type_of_properties == 0: congruence.checkPositiveNumber(self.moment_xx , "Moment xx") congruence.checkPositiveNumber(self.moment_xpxp , "Moment xpxp") congruence.checkPositiveNumber(self.moment_yy , "Moment yy") congruence.checkPositiveNumber(self.moment_ypyp , "Moment ypyp") elif self.type_of_properties == 1: congruence.checkPositiveNumber(self.electron_beam_size_h , "Horizontal Beam Size") congruence.checkPositiveNumber(self.electron_beam_divergence_h , "Vertical Beam Size") congruence.checkPositiveNumber(self.electron_beam_size_v , "Horizontal Beam Divergence") congruence.checkPositiveNumber(self.electron_beam_divergence_v , "Vertical Beam Divergence") elif self.type_of_properties == 2: congruence.checkPositiveNumber(self.horizontal_emittance , "Horizontal Emittance") congruence.checkPositiveNumber(self.vertical_emittance , "Vertical Emittance") self.checkLightSourceSpecificFields() if self.type_of_initialization == 2: congruence.checkNumber(self.moment_x , "x0") congruence.checkNumber(self.moment_xp , "xp0") congruence.checkNumber(self.moment_y , "y0") congruence.checkNumber(self.moment_yp , "yp0") congruence.checkNumber(self.moment_z , "z0") # WAVEFRONT self.checkWavefrontPhotonEnergy() 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.checkGreaterOrEqualThan(self.wf_distance, self.get_minimum_propagation_distance(), "Wavefront Propagation Distance", "Minimum Distance out of the Source: " + str(self.get_minimum_propagation_distance())) congruence.checkStrictlyPositiveNumber(self.wf_relative_precision, "Wavefront Propagation Relative Precision") congruence.checkStrictlyPositiveNumber(self.wf_number_of_points_for_trajectory_calculation, "Wavefront Propagation Number of points for trajectory calculation") congruence.checkPositiveNumber(self.wf_sampling_factor_for_adjusting_nx_ny, "Wavefront Propagation Sampling Factor for adjusting nx/ny")
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): 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 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 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)
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 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")
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") congruence.checkLessOrEqualThan(self.E_MIN, self.E_MAX, "From Energy", "To Energy") congruence.checkDir(self.SHADOW_FILE)
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.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.KH = congruence.checkPositiveNumber(self.KH, "Kh") self.KPHASE = congruence.checkNumber(self.KPHASE, "KPHASE") 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.GAPH_CENTER = congruence.checkPositiveNumber( self.GAPH_CENTER, "Slit center H") self.GAPV_CENTER = congruence.checkPositiveNumber( self.GAPV_CENTER, "Slit center V") self.PHOTONENERGYMIN = congruence.checkPositiveNumber( self.PHOTONENERGYMIN, "photon Energy Min") self.PHOTONENERGYMAX = congruence.checkStrictlyPositiveNumber( self.PHOTONENERGYMAX, "photon Energy Max") congruence.checkLessThan(self.PHOTONENERGYMIN, self.PHOTONENERGYMAX, "photon Energy Min", "photon Energy Max") self.PHOTONENERGYPOINTS = congruence.checkStrictlyPositiveNumber( self.PHOTONENERGYPOINTS, "photon Energy Points") if self.METHOD == 1: # URGENT congruence.checkLessThan(self.PHOTONENERGYPOINTS, 4701, "Number of energy points", "4701")
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.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.checkPositiveNumber( self.distance_from_waist_x, "Distance from waist x") self.distance_from_waist_z = congruence.checkPositiveNumber( self.distance_from_waist_z, "Distance from waist z") self.energy = congruence.checkPositiveNumber(self.energy, "Energy") self.magnetic_radius = congruence.checkNumber(self.magnetic_radius, "Magnetic radius") self.horizontal_half_divergence_from = congruence.checkPositiveNumber( self.horizontal_half_divergence_from, "Horizontal half-divergence from [+]") self.horizontal_half_divergence_to = congruence.checkPositiveNumber( self.horizontal_half_divergence_to, "Horizontal half-divergence to [-]") self.max_vertical_half_divergence_from = congruence.checkPositiveNumber( self.max_vertical_half_divergence_from, "Max vertical half-divergence from [+]") self.max_vertical_half_divergence_to = congruence.checkPositiveNumber( self.max_vertical_half_divergence_to, "Max vertical half-divergence to [-]") if self.optimize_source > 0: self.max_number_of_rejected_rays = congruence.checkPositiveNumber( self.max_number_of_rejected_rays, "Max number of rejected rays") congruence.checkFile(self.optimize_file_name)
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 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.EL1_FOR = congruence.checkEmptyString(self.EL1_FOR, "1st oe formula") if self.EL1_FLAG == 0: # filter self.EL1_THI = congruence.checkStrictlyPositiveNumber(self.EL1_THI, "1st oe filter thickness") self.EL1_HROT = congruence.checkNumber(self.EL1_HROT, "1st oe rotation H") self.EL1_VROT = congruence.checkNumber(self.EL1_VROT, "1st oe rotation V") elif self.EL1_FLAG == 1: # mirror self.EL1_ANG = congruence.checkStrictlyPositiveNumber(self.EL1_ANG, "1st oe mirror angle") self.EL1_ROU = congruence.checkPositiveNumber(self.EL1_ROU, "1st oe mirror roughness") self.EL1_HROT = congruence.checkNumber(self.EL1_HROT, "1st oe rotation H") self.EL1_VROT = congruence.checkNumber(self.EL1_VROT, "1st oe rotation V") self.EL1_HGAP = congruence.checkStrictlyPositiveNumber(self.EL1_HGAP, "1st oe H gap") self.EL1_VGAP = congruence.checkPositiveNumber(self.EL1_VGAP, "1st oe V Gap") elif self.EL1_FLAG == 2: # aperture self.EL1_HGAP = congruence.checkStrictlyPositiveNumber(self.EL1_HGAP, "1st oe H gap") self.EL1_VGAP = congruence.checkPositiveNumber(self.EL1_VGAP, "1st oe V Gap") elif self.EL1_FLAG == 3: # magnifier self.EL1_HMAG = congruence.checkStrictlyPositiveNumber(self.EL1_HMAG, "1st oe H magnification") self.EL1_VMAG = congruence.checkPositiveNumber(self.EL1_VMAG, "1st oe V magnification") elif self.EL1_FLAG == 4: # rotation self.EL1_HROT = congruence.checkNumber(self.EL1_HROT, "1st oe rotation H") self.EL1_VROT = congruence.checkNumber(self.EL1_VROT, "1st oe rotation V")
def check_fields(self): if self.SOURCE == 1: self.ENER_MIN = congruence.checkPositiveNumber(self.ENER_MIN, "Energy from") self.ENER_MAX = congruence.checkStrictlyPositiveNumber(self.ENER_MAX, "Energy to") congruence.checkLessThan(self.ENER_MIN, self.ENER_MAX, "Energy from", "Energy to") self.NPOINTS = congruence.checkStrictlyPositiveNumber(self.ENER_N, "Energy Points") elif self.SOURCE == 2: congruence.checkFile(self.SOURCE_FILE) if self.NELEMENTS >= 1: self.EL1_FOR = congruence.checkEmptyString(self.EL1_FOR, "1st oe formula") if self.EL1_FLAG == 0: # filter self.EL1_THI = congruence.checkStrictlyPositiveNumber(self.EL1_THI, "1st oe filter thickness") elif self.EL1_FLAG == 1: # mirror self.EL1_ANG = congruence.checkStrictlyPositiveNumber(self.EL1_ANG, "1st oe mirror angle") self.EL1_ROU = congruence.checkPositiveNumber(self.EL1_ROU, "1st oe mirror roughness") if not self.EL1_DEN.strip() == "?": self.EL1_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL1_DEN, "1st oe density")), "1st oe density")) if self.NELEMENTS >= 2: self.EL2_FOR = congruence.checkEmptyString(self.EL2_FOR, "2nd oe formula") if self.EL2_FLAG == 0: # filter self.EL2_THI = congruence.checkStrictlyPositiveNumber(self.EL2_THI, "2nd oe filter thickness") elif self.EL2_FLAG == 1: # mirror self.EL2_ANG = congruence.checkStrictlyPositiveNumber(self.EL2_ANG, "2nd oe mirror angle") self.EL2_ROU = congruence.checkPositiveNumber(self.EL2_ROU, "2nd oe mirror roughness") if not self.EL2_DEN.strip() == "?": self.EL2_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL2_DEN, "2nd oe density")), "2nd oe density")) if self.NELEMENTS >= 3: self.EL3_FOR = congruence.checkEmptyString(self.EL3_FOR, "3rd oe formula") if self.EL3_FLAG == 0: # filter self.EL3_THI = congruence.checkStrictlyPositiveNumber(self.EL3_THI, "3rd oe filter thickness") elif self.EL3_FLAG == 1: # mirror self.EL3_ANG = congruence.checkStrictlyPositiveNumber(self.EL3_ANG, "3rd oe mirror angle") self.EL3_ROU = congruence.checkPositiveNumber(self.EL3_ROU, "3rd oe mirror roughness") if not self.EL3_DEN.strip() == "?": self.EL3_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL3_DEN, "3rd oe density")), "3rd oe density")) if self.NELEMENTS >= 4: self.EL4_FOR = congruence.checkEmptyString(self.EL4_FOR, "4th oe formula") if self.EL4_FLAG == 0: # filter self.EL4_THI = congruence.checkStrictlyPositiveNumber(self.EL4_THI, "4th oe filter thickness") elif self.EL4_FLAG == 1: # mirror self.EL4_ANG = congruence.checkStrictlyPositiveNumber(self.EL4_ANG, "4th oe mirror angle") self.EL4_ROU = congruence.checkPositiveNumber(self.EL4_ROU, "4th oe mirror roughness") if not self.EL4_DEN.strip() == "?": self.EL4_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL4_DEN, "4th oe density")), "4th oe density")) if self.NELEMENTS >= 5: self.EL5_FOR = congruence.checkEmptyString(self.EL5_FOR, "5th oe formula") if self.EL5_FLAG == 0: # filter self.EL5_THI = congruence.checkStrictlyPositiveNumber(self.EL5_THI, "5th oe filter thickness") elif self.EL5_FLAG == 1: # mirror self.EL5_ANG = congruence.checkStrictlyPositiveNumber(self.EL5_ANG, "5th oe mirror angle") self.EL5_ROU = congruence.checkPositiveNumber(self.EL5_ROU, "5th oe mirror roughness") if not self.EL5_DEN.strip() == "?": self.EL5_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL5_DEN, "5th oe density")), "5th oe density"))
def check_data(self): congruence.checkStrictlyPositiveNumber(self.electron_energy_in_GeV , "Energy") congruence.checkStrictlyPositiveNumber(self.electron_energy_spread, "Energy Spread") congruence.checkStrictlyPositiveNumber(self.ring_current, "Ring Current") if self.type_of_properties == 0: congruence.checkPositiveNumber(self.moment_xx , "Moment xx") congruence.checkPositiveNumber(self.moment_xpxp , "Moment xpxp") congruence.checkPositiveNumber(self.moment_yy , "Moment yy") congruence.checkPositiveNumber(self.moment_ypyp , "Moment ypyp") elif self.type_of_properties == 1: congruence.checkPositiveNumber(self.electron_beam_size_h , "Horizontal Beam Size") congruence.checkPositiveNumber(self.electron_beam_divergence_h , "Vertical Beam Size") congruence.checkPositiveNumber(self.electron_beam_size_v , "Horizontal Beam Divergence") congruence.checkPositiveNumber(self.electron_beam_divergence_v , "Vertical Beam Divergence") elif self.type_of_properties == 2: congruence.checkPositiveNumber(self.electron_beam_emittance_h, "Horizontal Beam Emittance") congruence.checkPositiveNumber(self.electron_beam_emittance_v, "Vertical Beam Emittance") congruence.checkNumber(self.electron_beam_alpha_h, "Horizontal Beam Alpha") congruence.checkNumber(self.electron_beam_alpha_v, "Vertical Beam Alpha") congruence.checkNumber(self.electron_beam_beta_h, "Horizontal Beam Beta") congruence.checkNumber(self.electron_beam_beta_v, "Vertical Beam Beta") congruence.checkNumber(self.electron_beam_eta_h, "Horizontal Beam Dispersion Eta") congruence.checkNumber(self.electron_beam_eta_v, "Vertical Beam Dispersion Eta") congruence.checkNumber(self.electron_beam_etap_h, "Horizontal Beam Dispersion Eta'") congruence.checkNumber(self.electron_beam_etap_v, "Vertical Beam Dispersion Eta'") self.check_magnetic_structure()
def check_data(self): super().check_data() congruence.checkNumber(self.focal_x, "Horizontal Focal Length") congruence.checkNumber(self.focal_y, "Vertical Focal Length")
def check_fields(self): if self.NELEMENTS >= 1: self.EL1_FOR = congruence.checkEmptyString(self.EL1_FOR, "1st oe formula") if self.EL1_FLAG == 0: # filter self.EL1_THI = congruence.checkStrictlyPositiveNumber(self.EL1_THI, "1st oe filter thickness") elif self.EL1_FLAG == 1: # mirror self.EL1_ANG = congruence.checkStrictlyPositiveNumber(self.EL1_ANG, "1st oe mirror angle") self.EL1_ROU = congruence.checkPositiveNumber(self.EL1_ROU, "1st oe mirror roughness") if not self.EL1_DEN.strip() == "?": self.EL1_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL1_DEN, "1st oe density")), "1st oe density")) if self.NELEMENTS >= 2: self.EL2_FOR = congruence.checkEmptyString(self.EL2_FOR, "2nd oe formula") if self.EL2_FLAG == 0: # filter self.EL2_THI = congruence.checkStrictlyPositiveNumber(self.EL2_THI, "2nd oe filter thickness") elif self.EL2_FLAG == 1: # mirror self.EL2_ANG = congruence.checkStrictlyPositiveNumber(self.EL2_ANG, "2nd oe mirror angle") self.EL2_ROU = congruence.checkPositiveNumber(self.EL2_ROU, "2nd oe mirror roughness") if not self.EL2_DEN.strip() == "?": self.EL2_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL2_DEN, "2nd oe density")), "2nd oe density")) if self.NELEMENTS >= 3: self.EL3_FOR = congruence.checkEmptyString(self.EL3_FOR, "3rd oe formula") if self.EL3_FLAG == 0: # filter self.EL3_THI = congruence.checkStrictlyPositiveNumber(self.EL3_THI, "3rd oe filter thickness") elif self.EL3_FLAG == 1: # mirror self.EL3_ANG = congruence.checkStrictlyPositiveNumber(self.EL3_ANG, "3rd oe mirror angle") self.EL3_ROU = congruence.checkPositiveNumber(self.EL3_ROU, "3rd oe mirror roughness") if not self.EL3_DEN.strip() == "?": self.EL3_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL3_DEN, "3rd oe density")), "3rd oe density")) if self.NELEMENTS >= 4: self.EL4_FOR = congruence.checkEmptyString(self.EL4_FOR, "4th oe formula") if self.EL4_FLAG == 0: # filter self.EL4_THI = congruence.checkStrictlyPositiveNumber(self.EL4_THI, "4th oe filter thickness") elif self.EL4_FLAG == 1: # mirror self.EL4_ANG = congruence.checkStrictlyPositiveNumber(self.EL4_ANG, "4th oe mirror angle") self.EL4_ROU = congruence.checkPositiveNumber(self.EL4_ROU, "4th oe mirror roughness") if not self.EL4_DEN.strip() == "?": self.EL4_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL4_DEN, "4th oe density")), "4th oe density")) if self.NELEMENTS >= 5: self.EL5_FOR = congruence.checkEmptyString(self.EL5_FOR, "5th oe formula") if self.EL5_FLAG == 0: # filter self.EL5_THI = congruence.checkStrictlyPositiveNumber(self.EL5_THI, "5th oe filter thickness") elif self.EL5_FLAG == 1: # mirror self.EL5_ANG = congruence.checkStrictlyPositiveNumber(self.EL5_ANG, "5th oe mirror angle") self.EL5_ROU = congruence.checkPositiveNumber(self.EL5_ROU, "5th oe mirror roughness") if not self.EL5_DEN.strip() == "?": self.EL5_DEN = str(congruence.checkStrictlyPositiveNumber(float(congruence.checkNumber(self.EL5_DEN, "5th oe density")), "5th oe density"))
def check_fields(self): if self.NELEMENTS >= 1: self.EL1_FOR = congruence.checkEmptyString(self.EL1_FOR, "1st oe formula") if self.EL1_FLAG == 0: # filter self.EL1_THI = congruence.checkStrictlyPositiveNumber( self.EL1_THI, "1st oe filter thickness") elif self.EL1_FLAG == 1: # mirror self.EL1_ANG = congruence.checkStrictlyPositiveNumber( self.EL1_ANG, "1st oe mirror angle") self.EL1_ROU = congruence.checkPositiveNumber( self.EL1_ROU, "1st oe mirror roughness") if not self.EL1_DEN.strip() == "?": self.EL1_DEN = str( congruence.checkStrictlyPositiveNumber( float( congruence.checkNumber(self.EL1_DEN, "1st oe density")), "1st oe density")) if self.NELEMENTS >= 2: self.EL2_FOR = congruence.checkEmptyString(self.EL2_FOR, "2nd oe formula") if self.EL2_FLAG == 0: # filter self.EL2_THI = congruence.checkStrictlyPositiveNumber( self.EL2_THI, "2nd oe filter thickness") elif self.EL2_FLAG == 1: # mirror self.EL2_ANG = congruence.checkStrictlyPositiveNumber( self.EL2_ANG, "2nd oe mirror angle") self.EL2_ROU = congruence.checkPositiveNumber( self.EL2_ROU, "2nd oe mirror roughness") if not self.EL2_DEN.strip() == "?": self.EL2_DEN = str( congruence.checkStrictlyPositiveNumber( float( congruence.checkNumber(self.EL2_DEN, "2nd oe density")), "2nd oe density")) if self.NELEMENTS >= 3: self.EL3_FOR = congruence.checkEmptyString(self.EL3_FOR, "3rd oe formula") if self.EL3_FLAG == 0: # filter self.EL3_THI = congruence.checkStrictlyPositiveNumber( self.EL3_THI, "3rd oe filter thickness") elif self.EL3_FLAG == 1: # mirror self.EL3_ANG = congruence.checkStrictlyPositiveNumber( self.EL3_ANG, "3rd oe mirror angle") self.EL3_ROU = congruence.checkPositiveNumber( self.EL3_ROU, "3rd oe mirror roughness") if not self.EL3_DEN.strip() == "?": self.EL3_DEN = str( congruence.checkStrictlyPositiveNumber( float( congruence.checkNumber(self.EL3_DEN, "3rd oe density")), "3rd oe density")) if self.NELEMENTS >= 4: self.EL4_FOR = congruence.checkEmptyString(self.EL4_FOR, "4th oe formula") if self.EL4_FLAG == 0: # filter self.EL4_THI = congruence.checkStrictlyPositiveNumber( self.EL4_THI, "4th oe filter thickness") elif self.EL4_FLAG == 1: # mirror self.EL4_ANG = congruence.checkStrictlyPositiveNumber( self.EL4_ANG, "4th oe mirror angle") self.EL4_ROU = congruence.checkPositiveNumber( self.EL4_ROU, "4th oe mirror roughness") if not self.EL4_DEN.strip() == "?": self.EL4_DEN = str( congruence.checkStrictlyPositiveNumber( float( congruence.checkNumber(self.EL4_DEN, "4th oe density")), "4th oe density")) if self.NELEMENTS >= 5: self.EL5_FOR = congruence.checkEmptyString(self.EL5_FOR, "5th oe formula") if self.EL5_FLAG == 0: # filter self.EL5_THI = congruence.checkStrictlyPositiveNumber( self.EL5_THI, "5th oe filter thickness") elif self.EL5_FLAG == 1: # mirror self.EL5_ANG = congruence.checkStrictlyPositiveNumber( self.EL5_ANG, "5th oe mirror angle") self.EL5_ROU = congruence.checkPositiveNumber( self.EL5_ROU, "5th oe mirror roughness") if not self.EL5_DEN.strip() == "?": self.EL5_DEN = str( congruence.checkStrictlyPositiveNumber( float( congruence.checkNumber(self.EL5_DEN, "5th oe density")), "5th oe density"))