def add_kratio(self, transition, val, unc=0.0, standard=None): """ Adds an experimental k-ratio to this measurement. :arg transition: transition or set of transition for this k-ratio :type transition: :class:`.Transition` or :class:`.transitionset` :arg val: k-ratio value :type val: :class:`float` :arg unc: uncertainty on the k-ratio value (default: 0.0) :type unc: :class:`float` :arg standard: material of the standard geometry of the standard. If ``None``, the standard is assumed to be a pure (100% of the element in the specified transition) :type standard: instance of :class:`._Material` """ if transition in self._kratios: raise ValueError, 'A k-ratio is already defined for transition: %s' % transition if val < 0.0: raise ValueError, 'k-ratio value must be greater than 0.0' if unc < 0.0: raise ValueError, 'k-ratio uncertainty must be greater than 0.0' if standard is None: standard = pure(transition.z) self._kratios[transition] = (val, unc) self._standards[transition] = standard
def add_kratio(self, transition, val, unc=0.0, standard=None): """ Adds an experimental k-ratio to this measurement. :arg transition: transition or set of transition for this k-ratio :type transition: :class:`.Transition` or :class:`.transitionset` :arg val: k-ratio value :type val: :class:`float` :arg unc: uncertainty on the k-ratio value (default: 0.0) :type unc: :class:`float` :arg standard: material of the standard geometry of the standard. If ``None``, the standard is assumed to be a pure (100% of the element in the specified transition) :type standard: instance of :class:`._Material` """ if transition in self._kratios: raise ValueError, 'A k-ratio is already defined for transition: %s' % transition if val < 0.0: raise ValueError, 'k-ratio value must be greater than 0.0' if unc < 0.0: raise ValueError, 'k-ratio uncertainty must be greater than 0.0' if standard is None: standard = pure(transition.z) self._kratios[transition] = (val, unc) self._standards[transition] = standard
def testextract_unknown_intensities(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options("meas", unkgeometry) intensities = create_intensity_dict(Ka(29), et=(4.0, 0.0)) results = Results(options, {"xray": PhotonIntensityResult(intensities)}) unkintensities = self.m.extract_unknown_intensities(results) self.assertEqual(1, len(unkintensities)) self.assertAlmostEqual(4.0, unkintensities[0], 4)
def testextract_unknown_intensities(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options('meas', unkgeometry) intensities = create_intensity_dict(Ka(29), et=(4.0, 0.0)) results = Results(options, {'xray': PhotonIntensityResult(intensities)}) unkintensities = self.m.extract_unknown_intensities(results) self.assertEqual(1, len(unkintensities)) self.assertAlmostEqual(4.0, unkintensities[0], 4)
def setUp(self): TestCase.setUp(self) geometry = MultiLayers(pure(29)) geometry.add_layer(Material("AuPd", {79: 0.5, 46: 0.5}), 100e-9) baseops = Options() baseops.detectors['xray'] = PhotonIntensityDetector((0, 1), (0, 3)) meas = Measurement(baseops) meas.add_kratio(Ka(29), 0.2470, 0.004) getter = lambda geometry: geometry.layers[0].thickness_m setter = lambda geometry, val: setattr(geometry.layers[0], 'thickness_m', val) param = Parameter(getter, setter, 100e-9, 10e-9, 500e-9) self.exp = Experiment(geometry, [meas], [param])
def add_kratio(self, transition, val, unc=0.0, standard=None): """ Adds a k-ratio to this measurement. :arg transition: transition or set of transition for this k-ratio :type transition: :class:`.Transition` or :class:`.transitionset` :arg val: k-ratio value :type val: :class:`float` :arg unc: uncertainty on the k-ratio value (default: 0.0) :type unc: :class:`float` :arg standard: geometry of the standard. Although standard are usually bulk sample, it may occur that the standard geometry is not a substrate. Specifying a geometry also allows to define exact simulation parameters for the standard. If ``None``, a substrate geometry is created. The standard is assumed to be a pure (100% of the element in the specified transition) :type standard: instance of :class:`._Geometry` :raise: :exc:`ValueError` if a k-ratio or rule is already defined for the atomic number of the specified transition """ z = transition.z if z in self._transitions: raise ValueError, 'A k-ratio is already defined for element: %s' % ep.symbol( z) if z in self._rules: raise ValueError, 'A rule is already defined for element: %s' % ep.symbol( z) if val < 0.0: raise ValueError, 'k-ratio value must be greater than 0.0' if unc < 0.0: raise ValueError, 'k-ratio uncertainty must be greater than 0.0' if standard is None: standard = Substrate(pure(z)) self._transitions[z] = transition self._kratios[z] = (val, unc) self._standards[z] = standard
def add_kratio(self, transition, val, unc=0.0, standard=None): """ Adds a k-ratio to this measurement. :arg transition: transition or set of transition for this k-ratio :type transition: :class:`.Transition` or :class:`.transitionset` :arg val: k-ratio value :type val: :class:`float` :arg unc: uncertainty on the k-ratio value (default: 0.0) :type unc: :class:`float` :arg standard: geometry of the standard. Although standard are usually bulk sample, it may occur that the standard geometry is not a substrate. Specifying a geometry also allows to define exact simulation parameters for the standard. If ``None``, a substrate geometry is created. The standard is assumed to be a pure (100% of the element in the specified transition) :type standard: instance of :class:`._Geometry` :raise: :exc:`ValueError` if a k-ratio or rule is already defined for the atomic number of the specified transition """ z = transition.z if z in self._transitions: raise ValueError, 'A k-ratio is already defined for element: %s' % ep.symbol(z) if z in self._rules: raise ValueError, 'A rule is already defined for element: %s' % ep.symbol(z) if val < 0.0: raise ValueError, 'k-ratio value must be greater than 0.0' if unc < 0.0: raise ValueError, 'k-ratio uncertainty must be greater than 0.0' if standard is None: standard = Substrate(pure(z)) self._transitions[z] = transition self._kratios[z] = (val, unc) self._standards[z] = standard
def testsetter(self): geometry = Inclusion(pure(29), pure(30), 250e-9) self.param.setter(geometry, 160e-9) self.assertAlmostEqual(160e-9, geometry.inclusion_diameter_m, 13)
def testgetter(self): geometry = Inclusion(pure(29), pure(30), 250e-9) self.assertAlmostEqual(250e-9, self.param.getter(geometry), 13)
def testcreate_unknown_options(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options("meas", unkgeometry) self.assertEqual("meas", options.name)
def testcreate_unknown_options(self): unkgeometry = Substrate(pure(49)) options = self.m.create_unknown_options('meas', unkgeometry) self.assertEqual('meas', options.name)