#include <PowderPattern.h>
Inheritance diagram for ObjCryst::PowderPatternDiffraction::
Public Methods | |
PowderPatternDiffraction () | |
PowderPatternDiffraction (const PowderPatternDiffraction &) | |
virtual | ~PowderPatternDiffraction () |
virtual PowderPatternDiffraction * | CreateCopy () const |
So-called virtual copy constructor. | |
virtual const string | GetClassName () const |
Name for this class ("RefinableObj", "Crystal",...). This is only useful to distinguish different classes when picking up objects from the RefinableObj Global Registry. | |
virtual void | SetParentPowderPattern (const PowderPattern &) |
Set the PowderPattern object which uses this component. This sets all necessary spectrum parameters (2theta range, wavelength, radiation type...) accordingly. | |
virtual const CrystVector_double & | GetPowderPatternCalc () const |
Get the calculated powder spectrum for this component. Note that the spectrum is not scaled. | |
void | SetReflectionProfilePar (const ReflectionProfileType prof, const double fwhmCagliotiW, const double fwhmCagliotiU=0, const double fwhmCagliotiV=0, const double eta0=0.5, const double eta1=0.) |
Set reflection profile parameters. More... | |
void | SetUseFastLessPreciseFunc (const bool useItOrNot) |
Use faster, less precise functions ? Good for global optimizations. Currently does nothing. | |
virtual void | SetUseOnlyLowAngleData (const bool useOnlyLowAngle, const double angle=0) |
Set an option so that only low-angle reflections (theta < angle) are used. See DiffractionData::mUseOnlyLowAngleData
| |
virtual void | GenHKLFullSpace () |
virtual void | XMLOutput (ostream &os, int indent=0) const |
Output to stream in well-formed XML. More... | |
virtual void | XMLInput (istream &is, const XMLCrystTag &tag) |
Input From stream. More... | |
Protected Methods | |
virtual void | CalcPowderPattern () const |
Calc the powder spectrum. As always, recomputation is only done if necessary (ie if a parameter has changed since the last computation). | |
void | CalcPowderReflProfile () const |
Calc reflection profiles for ALL reflections (powder diffraction). | |
void | CalcLorentzPolarCorr () const |
Calc Lorentz-Polarisation-APerture correction. | |
virtual void | CalcIhkl () const |
Compute the intensity for all reflections (taking into account corrections, but not the multiplicity). | |
virtual void | SetRadiation (const Radiation &rad) |
Set the radiation. This is called by PowderPattern. | |
virtual void | Prepare () |
This will be called by the parent PowderPattern object, before calculating the first powder spectrum. Or maybe it should be called automatically by the object itself... | |
virtual void | InitOptions () |
Protected Attributes | |
RefinableObjClock | mClockProfilePar |
Last time the reflection parameters were changed. | |
RefinableObjClock | mClockLorentzPolarSlitCorrPar |
Last time the. | |
RefinableObjClock | mClockLorentzPolarSlitCorrCalc |
Last time the Lorentz-Polar-Slit correction was computed. | |
RefinableObjClock | mClockProfileCalc |
Last time the reflection profiles were computed. | |
RefinableObjClock | mClockIhklCalc |
Last time intensities were computed. | |
RefObjOpt | mReflectionProfileType |
Gaussian ? Lorentzian ? Pseudo-Voigt ? | |
double | mFullProfileWidthFactor |
The 'full' profile of each reflection os taken equal to the FWHM, multiplied by this factor. | |
double | mCagliotiU |
FWHM parameters, following Caglioti's law. | |
double | mCagliotiV |
FWHM parameters, following Caglioti's law. | |
double | mCagliotiW |
FWHM parameters, following Caglioti's law. | |
double | mPseudoVoigtEta0 |
Pseudo-Voigt mixing parameter : eta=eta0 +2*theta*eta1 eta=1 -> pure Lorentzian ; eta=0 -> pure Gaussian. | |
double | mPseudoVoigtEta1 |
Pseudo-Voigt mixing parameter : eta=eta0 +2*theta*eta1 eta=1 -> pure Lorentzian ; eta=0 -> pure Gaussian. | |
bool | mUseAsymmetricProfile |
Use asymmetric profiles ? (unused yet). | |
CrystVector_double | mLorentzPolarSlitCorr |
Calculated corrections for all reflections. Calc F^2 must be multiplied by this factor to yield intensities. More... | |
bool | mNeedLorentzCorr |
Need to apply Lorentz correction ? | |
bool | mNeedPolarCorr |
Need to apply Polarization correction ? This should be false for (unpolarized) neutrons. | |
bool | mNeedSlitApertureCorr |
Need to apply Slit aperture correction ? | |
double | mPolarAfactor |
the A factor in the polarization correction. Default value=1, corresponding to an X-Ray tube without monochromator. | |
CrystVector_double | mIhklCalc |
Computed intensities for all reflections. | |
CrystMatrix_double | mSavedPowderReflProfile |
Reflection profiles for ALL reflections during the last powder spectrum generation. | |
long | mSavedPowderReflProfileNbPoint |
Number of points used to describe each individual profile. | |
CrystVector_long | mReflectionProfileFirstPixel |
The 1st pixel for each reflection. | |
bool | mUseOnlyLowAngleData |
Flag forcing the use of only low-angle reflections. More... | |
double | mUseOnlyLowAngleDataLimit |
Limit (theta angle, in radian) for the above option. TO BE REMOVED. | |
CrystVector_long | mUseOnlyLowAngleData_SavedH |
Saved H, K and L arrays when using only low-angle data TO BE REMOVED. | |
CrystVector_long | mUseOnlyLowAngleData_SavedK |
Saved H, K and L arrays when using only low-angle data TO BE REMOVED. | |
CrystVector_long | mUseOnlyLowAngleData_SavedL |
Saved H, K and L arrays when using only low-angle data TO BE REMOVED. |
|
Set reflection profile parameters. :TODO: assymmetric profiles
|
|
Input From stream.
Reimplemented from ObjCryst::RefinableObj. |
|
Output to stream in well-formed XML.
Reimplemented from ObjCryst::RefinableObj. |
|
Calculated corrections for all reflections. Calc F^2 must be multiplied by this factor to yield intensities.
Thus we have :
with |
|
Flag forcing the use of only low-angle reflections. Mainly for use during global optimizations, or more generally when the program is far from the real structure. In this case high-angle reflection are not significant and only lead to slower calculations and also in fooling the optimization (bad agreement at low angle and good with the more numerous high-angle reflections). By default this is set to false. Practically, this means that any reflections below DiffractionData::mLowAngleReflectionLimit is simply ignored, not calculated, not taken into account in statistics. TO BE REMOVED |