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
Exemple #2
0
    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])
Exemple #6
0
    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
Exemple #8
0
 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)
Exemple #9
0
 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)