Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

ObjCryst::PowderPatternBackground Class Reference

Phase to compute a background contribution to a powder pattern using an interpolation. Currently only linear interpolation is available. (in the works: cubic spline interpolation background). More...

Inheritance diagram for ObjCryst::PowderPatternBackground:

Inheritance graph
[legend]
Collaboration diagram for ObjCryst::PowderPatternBackground:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 PowderPatternBackground ()
 PowderPatternBackground (const PowderPatternBackground &)
virtual ~PowderPatternBackground ()
virtual const string & GetClassName () const
 Name for this class ("RefinableObj", "Crystal",...).

virtual void SetParentPowderPattern (const PowderPattern &)
 Set the PowderPattern object which uses this component.

virtual const CrystVector_REAL & GetPowderPatternCalc () const
 Get the calculated powder pattern for this component.

virtual pair< const CrystVector_REAL *,
const RefinableObjClock * > 
GetPowderPatternIntegratedCalc () const
 Get the integrated values of the powder pattern.

void ImportUserBackground (const string &filename)
 Import background points from a file (with two columns 2theta (or tof), intensity).

void SetInterpPoints (const CrystVector_REAL tth, const CrystVector_REAL backgd)
const std::pair< const CrystVector_REAL *,
const CrystVector_REAL * > 
GetInterpPoints () const
virtual void XMLOutput (ostream &os, int indent=0) const
 Output to stream in well-formed XML.

virtual void XMLInput (istream &is, const XMLCrystTag &tag)
 Input From stream.

virtual void GetGeneGroup (const RefinableObj &obj, CrystVector_uint &groupIndex, unsigned int &firstGroup) const
 Get the gene group assigned to each parameter.

virtual const CrystVector_REAL & GetPowderPatternCalcVariance () const
 Get the variance associated to each point of the calculated powder pattern, for this component.

virtual pair< const CrystVector_REAL *,
const RefinableObjClock * > 
GetPowderPatternIntegratedCalcVariance () const
 Get the variance associated to each point of the calculated powder pattern, for this component (integrated version).

virtual bool HasPowderPatternCalcVariance () const
 Does this component have a variance associated with each calculated point ? i.e., do we use maximum likelihood to take into account incomplete models ?

virtual void TagNewBestConfig () const
 During a global optimization, tells the object that the current config is the latest "best" config.

void OptimizeBayesianBackground ()
 Optimize the background using a Bayesian approach.


Protected Member Functions

virtual void CalcPowderPattern () const
 Calc the powder pattern.

virtual void CalcPowderPatternIntegrated () const
 Calc the integrated powder pattern.

virtual void Prepare ()
virtual void GetBraggLimits (CrystVector_long *&min, CrystVector_long *&max) const
 Get the integration limits (first and last pixels) around each reflection, if this component has Bragg reflections.

virtual void SetMaxSinThetaOvLambda (const REAL max)
 exist but are ignored for all calculations.

void InitRefParList ()
void InitOptions ()
void InitSpline () const

Protected Attributes

int mBackgroundNbPoint
 Number of fitting points for background.

CrystVector_REAL mBackgroundInterpPointX
 Vector of 2theta values for the fitting points of the background.

CrystVector_REAL mBackgroundInterpPointIntensity
 Values of background at interpolating points.

CrystVector_long mPointOrder
 Subscript of the points, sorted the correct order, taking into account the type of radiation (monochromatic/TOF).

CrystVector_REAL mvSplinePixel
 Vector of pixel values between each interval, for faster CubicSpline calculations.

CubicSpline mvSpline
 Spline used for interpolation.

RefinableObjClock mClockBackgroundPoint
 Modification of the interpolated points.

RefinableObjClock mClockSpline
 Initialization of the spline.

REAL mMaxSinThetaOvLambda
 Maximum sin(theta)/lambda for all calculations (10 by default).

REAL mModelVariance
 Constant error (sigma) on the calculated pattern, due to an incomplete model.

RefObjOpt mInterpolationModel
 Type of interpolation performed: linear or cubic spline.


Friends

class PowderPattern

Detailed Description

Phase to compute a background contribution to a powder pattern using an interpolation. Currently only linear interpolation is available. (in the works: cubic spline interpolation background).


Constructor & Destructor Documentation

ObjCryst::PowderPatternBackground::PowderPatternBackground  ) 
 

ObjCryst::PowderPatternBackground::PowderPatternBackground const PowderPatternBackground  ) 
 

virtual ObjCryst::PowderPatternBackground::~PowderPatternBackground  )  [virtual]
 


Member Function Documentation

virtual void ObjCryst::PowderPatternBackground::CalcPowderPattern  )  const [protected, virtual]
 

Calc the powder pattern.

As always, recomputation is only done if necessary (ie if a parameter has changed since the last computation)

Implements ObjCryst::PowderPatternComponent.

virtual void ObjCryst::PowderPatternBackground::CalcPowderPatternIntegrated  )  const [protected, virtual]
 

Calc the integrated powder pattern.

This should be optimized so that the full powder pattern is not explicitely computed.

Implements ObjCryst::PowderPatternComponent.

virtual void ObjCryst::PowderPatternBackground::GetBraggLimits CrystVector_long *&  min,
CrystVector_long *&  max
const [protected, virtual]
 

Get the integration limits (first and last pixels) around each reflection, if this component has Bragg reflections.

Used for integrated R(w) factors. The limits currently go from -2*FWHM to +2*FWHM. returns a pointer to the min and max pixels arrays (null pointers if no reflection for this phase).

Implements ObjCryst::PowderPatternComponent.

virtual const string& ObjCryst::PowderPatternBackground::GetClassName  )  const [virtual]
 

Name for this class ("RefinableObj", "Crystal",...).

This is only useful to distinguish different classes when picking up objects from the RefinableObj Global Registry

Reimplemented from ObjCryst::PowderPatternComponent.

virtual void ObjCryst::PowderPatternBackground::GetGeneGroup const RefinableObj obj,
CrystVector_uint &  groupIndex,
unsigned int &  firstGroup
const [virtual]
 

Get the gene group assigned to each parameter.

Each parameter (a gene in terms of genetic algorithms) can be assigned to a gene group. Thus when mating two configurations, genes will be exchanged by groups. By default (in the base RefinabeObj class), each parameter is alone in its group. Derived classes can group genes for a better s** life.

The number identifying a gene group only has a meaning in a given object. It can also change on subsequent calls, and thus is not unique.

Parameters:
obj the , supplied by an algorithm class (OptimizationObj,..), which contains a list of parameters, some of which (but possibly all or none) are parameters belonging to this object.
groupIndex a vector of unsigned integers, one for each parameter in the input object, giving an unsigned integer value as gene group index. At the beginning this vector should contain only zeros (no group assigned).
firstGroup this is the number of groups which have already been assigned, plus one. The gene groups returned by this object will start from this value, and increment firstGroup for each gene group used, so that different RefinableObj cannot share a gene group.
Note:
this function is not optimized, and should only be called at the beginning of a refinement.

Reimplemented from ObjCryst::RefinableObj.

const std::pair<const CrystVector_REAL*,const CrystVector_REAL*> ObjCryst::PowderPatternBackground::GetInterpPoints  )  const
 

virtual const CrystVector_REAL& ObjCryst::PowderPatternBackground::GetPowderPatternCalc  )  const [virtual]
 

Get the calculated powder pattern for this component.

Note that the pattern is not scaled.

Implements ObjCryst::PowderPatternComponent.

virtual const CrystVector_REAL& ObjCryst::PowderPatternBackground::GetPowderPatternCalcVariance  )  const [virtual]
 

Get the variance associated to each point of the calculated powder pattern, for this component.

Warning:
: this is experimental, with the aim of using Maximum Likelihood to improve structure determination.

Implements ObjCryst::PowderPatternComponent.

virtual pair<const CrystVector_REAL*,const RefinableObjClock*> ObjCryst::PowderPatternBackground::GetPowderPatternIntegratedCalc  )  const [virtual]
 

Get the integrated values of the powder pattern.

Note:
: the integration intervals are those given by the parent PowderPattern, so that all PowderPatternComponent's intervals are taken into account
This avoids explicitely calculating the full profile powder pattern.

Implements ObjCryst::PowderPatternComponent.

virtual pair<const CrystVector_REAL*,const RefinableObjClock*> ObjCryst::PowderPatternBackground::GetPowderPatternIntegratedCalcVariance  )  const [virtual]
 

Get the variance associated to each point of the calculated powder pattern, for this component (integrated version).

Warning:
: this is experimental, with the aim of using Maximum Likelihood to improve structure determination.

Implements ObjCryst::PowderPatternComponent.

virtual bool ObjCryst::PowderPatternBackground::HasPowderPatternCalcVariance  )  const [virtual]
 

Does this component have a variance associated with each calculated point ? i.e., do we use maximum likelihood to take into account incomplete models ?

Implements ObjCryst::PowderPatternComponent.

void ObjCryst::PowderPatternBackground::ImportUserBackground const string &  filename  ) 
 

Import background points from a file (with two columns 2theta (or tof), intensity).

void ObjCryst::PowderPatternBackground::InitOptions  )  [protected]
 

void ObjCryst::PowderPatternBackground::InitRefParList  )  [protected]
 

void ObjCryst::PowderPatternBackground::InitSpline  )  const [protected]
 

void ObjCryst::PowderPatternBackground::OptimizeBayesianBackground  ) 
 

Optimize the background using a Bayesian approach.

The background parameters must be un-fixed before.

The minimization will a maximum of 50 Simplex runs (see the SimplexObj documentation), each with 200 cycles.

See the class documentation for PowderPatternBackgroundBayesianMinimiser.

virtual void ObjCryst::PowderPatternBackground::Prepare  )  [protected, virtual]
 

For internal use only.

This will be called by the parent PowderPattern object, before calculating the first powder pattern. Or maybe it should be called automatically by the object itself...

Implements ObjCryst::PowderPatternComponent.

void ObjCryst::PowderPatternBackground::SetInterpPoints const CrystVector_REAL  tth,
const CrystVector_REAL  backgd
 

virtual void ObjCryst::PowderPatternBackground::SetMaxSinThetaOvLambda const REAL  max  )  [protected, virtual]
 

exist but are ignored for all calculations.

All data above still

Implements ObjCryst::PowderPatternComponent.

virtual void ObjCryst::PowderPatternBackground::SetParentPowderPattern const PowderPattern  )  [virtual]
 

Set the PowderPattern object which uses this component.

This sets all necessary pattern parameters (2theta/tof range, wavelength, radiation type...) accordingly.

Implements ObjCryst::PowderPatternComponent.

virtual void ObjCryst::PowderPatternBackground::TagNewBestConfig  )  const [virtual]
 

During a global optimization, tells the object that the current config is the latest "best" config.

This can be used by the object to make more intellingent random moves (use with caution: highly experimental !).

Reimplemented from ObjCryst::RefinableObj.

virtual void ObjCryst::PowderPatternBackground::XMLInput istream &  is,
const XMLCrystTag tag
[virtual]
 

Input From stream.

Todo:
Add an bool XMLInputTag(is,tag) function to recognize all the tags from the stream. So that each inherited class can use the XMLInputTag function from its parent (ie take advantage of inheritance). The children class would first try to interpret the tag, then if unsuccessful would pass it to its parent (thus allowing overloading), etc...

Reimplemented from ObjCryst::RefinableObj.

virtual void ObjCryst::PowderPatternBackground::XMLOutput ostream &  os,
int  indent = 0
const [virtual]
 

Output to stream in well-formed XML.

Todo:
Use inheritance.. as for XMLInputTag()...

Reimplemented from ObjCryst::RefinableObj.


Friends And Related Function Documentation

friend class PowderPattern [friend]
 

Reimplemented from ObjCryst::PowderPatternComponent.


Member Data Documentation

CrystVector_REAL ObjCryst::PowderPatternBackground::mBackgroundInterpPointIntensity [protected]
 

Values of background at interpolating points.

CrystVector_REAL ObjCryst::PowderPatternBackground::mBackgroundInterpPointX [protected]
 

Vector of 2theta values for the fitting points of the background.

int ObjCryst::PowderPatternBackground::mBackgroundNbPoint [protected]
 

Number of fitting points for background.

RefinableObjClock ObjCryst::PowderPatternBackground::mClockBackgroundPoint [protected]
 

Modification of the interpolated points.

RefinableObjClock ObjCryst::PowderPatternBackground::mClockSpline [mutable, protected]
 

Initialization of the spline.

RefObjOpt ObjCryst::PowderPatternBackground::mInterpolationModel [protected]
 

Type of interpolation performed: linear or cubic spline.

REAL ObjCryst::PowderPatternBackground::mMaxSinThetaOvLambda [protected]
 

Maximum sin(theta)/lambda for all calculations (10 by default).

This keeps all data in memory, but only the part which is below the max is calculated.

REAL ObjCryst::PowderPatternBackground::mModelVariance [protected]
 

Constant error (sigma) on the calculated pattern, due to an incomplete model.

CrystVector_long ObjCryst::PowderPatternBackground::mPointOrder [mutable, protected]
 

Subscript of the points, sorted the correct order, taking into account the type of radiation (monochromatic/TOF).

CubicSpline ObjCryst::PowderPatternBackground::mvSpline [mutable, protected]
 

Spline used for interpolation.

Mutable since it copies information from mBackgroundInterpPointX and mBackgroundInterpPointIntensity.

CrystVector_REAL ObjCryst::PowderPatternBackground::mvSplinePixel [mutable, protected]
 

Vector of pixel values between each interval, for faster CubicSpline calculations.

Mutable since it copies information from mBackgroundInterpPointX.


The documentation for this class was generated from the following file:
Generated on Tue Nov 14 15:04:27 2006 for ObjCryst++ by doxygen 1.3.6