|
FOX/ObjCryst++
1.10.X (development)
|
Generic class to compute components (eg the contribution of a given phase, or background) of a powder pattern. More...
Inheritance diagram for ObjCryst::PowderPatternComponent:
Collaboration diagram for ObjCryst::PowderPatternComponent:Public Member Functions | |
| PowderPatternComponent (const PowderPatternComponent &) | |
| virtual const string & | GetClassName () const |
| Name for this class ("RefinableObj", "Crystal",...). More... | |
| const PowderPattern & | GetParentPowderPattern () const |
| Get the PowderPattern object which uses this component. More... | |
| PowderPattern & | GetParentPowderPattern () |
| Get the PowderPattern object which uses this component. More... | |
| virtual void | SetParentPowderPattern (PowderPattern &)=0 |
| Set the PowderPattern object which uses this component. More... | |
| virtual const CrystVector_REAL & | GetPowderPatternCalc () const =0 |
| Get the calculated powder pattern for this component. More... | |
|
virtual std::map< RefinablePar *, CrystVector_REAL > & | GetPowderPattern_FullDeriv (std::set< RefinablePar * > &vPar) |
| virtual pair< const CrystVector_REAL *, const RefinableObjClock * > | GetPowderPatternIntegratedCalc () const =0 |
| Get the integrated values of the powder pattern. More... | |
|
virtual std::map< RefinablePar *, CrystVector_REAL > & | GetPowderPatternIntegrated_FullDeriv (std::set< RefinablePar * > &vPar) |
| bool | IsScalable () const |
| Is this component scalable ? More... | |
| virtual const CrystVector_REAL & | GetPowderPatternCalcVariance () const =0 |
| Get the variance associated to each point of the calculated powder pattern, for this component. More... | |
| virtual pair< const CrystVector_REAL *, const RefinableObjClock * > | GetPowderPatternIntegratedCalcVariance () const =0 |
| Get the variance associated to each point of the calculated powder pattern, for this component (integrated version). More... | |
| virtual bool | HasPowderPatternCalcVariance () const =0 |
| Does this component have a variance associated with each calculated point ? i.e., do we use maximum likelihood to take into account incomplete models ? | |
| const RefinableObjClock & | GetClockPowderPatternCalc () const |
| Last time the powder pattern was calculated. | |
| const list< pair< const REAL,const string > > & | GetPatternLabelList () const |
| Get a list of labels for the pattern (usually reflection indexes). More... | |
Public Member Functions inherited from ObjCryst::RefinableObj | |
| RefinableObj () | |
| Constructor. | |
| RefinableObj (const bool internalUseOnly) | |
| Constructor. More... | |
| RefinableObj (const RefinableObj &old) | |
| Defined not implemented... More... | |
| virtual | ~RefinableObj () |
| Destructor. | |
| virtual const string & | GetName () const |
| Name of the object. | |
| virtual void | SetName (const string &name) |
| Name of the object. | |
| void | operator= (const RefinableObj &old) |
| Defined not implemented... More... | |
| void | PrepareForRefinement () const |
| Find which parameters are used and not fixed, for a refinement /optimization. More... | |
| void | FixAllPar () |
| Fix All parameters. | |
| void | UnFixAllPar () |
| UnFix All parameters. | |
| void | SetParIsFixed (const long parIndex, const bool fix) |
| Fix/un-fix one parameter from its #. | |
| void | SetParIsFixed (const string &parName, const bool fix) |
| Fix/un-fix one parameter from its name. | |
| void | SetParIsFixed (const RefParType *type, const bool fix) |
| Fix/un-fix one family of parameters. | |
| void | SetParIsUsed (const string &parName, const bool use) |
| Set whether a parameter is used. | |
| void | SetParIsUsed (const RefParType *type, const bool use) |
| Set whether a family of parameters is used. | |
| long | GetNbPar () const |
| Total number of refinable parameter in the object. More... | |
| long | GetNbParNotFixed () const |
| Total number of non-fixed parameters. Is initialized by PrepareForRefinement() | |
| RefinablePar & | GetPar (const long i) |
| Access all parameters in the order they were inputted. | |
| const RefinablePar & | GetPar (const long i) const |
| Access all parameters in the order they were inputted. | |
| RefinablePar & | GetPar (const string &name) |
| Access all parameters from their name. | |
| const RefinablePar & | GetPar (const string &name) const |
| Access all parameters from their name. | |
| RefinablePar & | GetPar (const REAL *) |
| Access parameter from its adress. | |
| const RefinablePar & | GetPar (const REAL *) const |
| Access parameter from its adress. | |
| RefinablePar & | GetParNotFixed (const long i) |
| Access all parameters in the order they were inputted, skipping fixed parameters. More... | |
| const RefinablePar & | GetParNotFixed (const long i) const |
| Access all parameters in the order they were inputed, skipping fixed parameters. More... | |
| void | AddPar (const RefinablePar &newRefPar) |
| Add a refinable parameter. More... | |
| void | AddPar (RefinablePar *newRefPar) |
| Add a refinable parameter. More... | |
| void | AddPar (RefinableObj &newRefParList, const bool copyParam=false) |
| Add all the parameters in another RefinableObj. More... | |
| vector< RefinablePar * >::iterator | RemovePar (RefinablePar *refPar) |
| Remove a refinable parameter. More... | |
| virtual void | Print () const |
| unsigned long | CreateParamSet (const string name="") const |
| Save the current set of refined values in a new set. More... | |
| void | ClearParamSet (const unsigned long id) const |
| Erase the param set with the given id, releasing memory. | |
| void | SaveParamSet (const unsigned long id) const |
| Save the current set of refined values over a previously-created set of saved values. More... | |
| void | RestoreParamSet (const unsigned long id) |
| Restore a saved set of values. More... | |
| const CrystVector_REAL & | GetParamSet (const unsigned long setId) const |
| Access one save refpar set. More... | |
| CrystVector_REAL & | GetParamSet (const unsigned long setId) |
| Access one save refpar set. More... | |
| REAL | GetParamSet_ParNotFixedHumanValue (const unsigned long setId, const long parNumber) const |
| Access the (human) value of one refined parameter in a saved set of parameters. More... | |
| const void | EraseAllParamSet () |
| Erase all saved refpar sets. More... | |
| const string & | GetParamSetName (const unsigned long setId) const |
| Get the name associated to a refpar set. More... | |
| void | SetLimitsAbsolute (const string &parName, const REAL min, const REAL max) |
| Change the limits for a given parameter, giving absolute new limits. | |
| void | SetLimitsAbsolute (const RefParType *type, const REAL min, const REAL max) |
| Change the limits for a category of parameters, giving absolute new limits. | |
| void | SetLimitsRelative (const string &parName, const REAL min, const REAL max) |
| Change the limits for a given parameter, giving relative new limits (eg giving -.1 and +.1 will set new limits at the current value + min and current value + max) Thus min should logically be <0 and max >0. More... | |
| void | SetLimitsRelative (const RefParType *type, const REAL min, const REAL max) |
| Change the limits for a category of parameters, giving relative new limits (eg giving -.1 and +.1 will set new limits at the current value + min and current value + max). More... | |
| void | SetLimitsProportional (const string &parName, const REAL min, const REAL max) |
| Change the limits for a given parameter, proportionnaly to the current value. More... | |
| void | SetLimitsProportional (const RefParType *type, const REAL min, const REAL max) |
| Change the limits for a category of parameters, proportionnaly to their current value. More... | |
| void | SetGlobalOptimStep (const RefParType *type, const REAL step) |
| Change the maximum step to use during Global Optimization algorithms. | |
| ObjRegistry< RefinableObj > & | GetSubObjRegistry () |
| Access to the registry of RefinableObj used by this object. | |
| const ObjRegistry< RefinableObj > & | GetSubObjRegistry () const |
| Access to the registry of RefinableObj used by this object. | |
| virtual void | RegisterClient (RefinableObj &) const |
| Register a new object using this object. More... | |
| virtual void | DeRegisterClient (RefinableObj &) const |
| Deregister an object (which not any more) using this object. | |
|
virtual const ObjRegistry < RefinableObj > & | GetClientRegistry () const |
| Get the list of clients. | |
|
virtual ObjRegistry < RefinableObj > & | GetClientRegistry () |
| Get the list of clients. | |
| bool | IsBeingRefined () const |
| Is the object being refined ? (Can be refined by one algorithm at a time only.) | |
| virtual void | BeginOptimization (const bool allowApproximations=false, const bool enableRestraints=false) |
| This should be called by any optimization class at the begining of an optimization. More... | |
| virtual void | EndOptimization () |
| This should be called by any optimization class at the end of an optimization. More... | |
| virtual void | SetApproximationFlag (const bool allow) |
| Enable or disable numerical approximations. More... | |
| virtual void | RandomizeConfiguration () |
| Randomize Configuration (before a global optimization). More... | |
| virtual void | GlobalOptRandomMove (const REAL mutationAmplitude, const RefParType *type=gpRefParTypeObjCryst) |
| Make a random move of the current configuration. More... | |
| void | BeginGlobalOptRandomMove () |
| Raise a flag, to be sure not to make a random change more than once in each RefinableObj. More... | |
| virtual REAL | GetLogLikelihood () const |
| Get -log(likelihood) of the current configuration for the object. More... | |
| virtual unsigned int | GetNbLSQFunction () const |
| Number of LSQ functions. | |
| virtual const CrystVector_REAL & | GetLSQCalc (const unsigned int) const |
| Get the current calculated value for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQObs (const unsigned int) const |
| Get the observed values for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQWeight (const unsigned int) const |
| Get the weight values for the LSQ function. | |
| virtual const CrystVector_REAL & | GetLSQDeriv (const unsigned int, RefinablePar &) |
| Get the first derivative values for the LSQ function, for a given parameter. More... | |
| virtual std::map< RefinablePar *, CrystVector_REAL > & | GetLSQ_FullDeriv (const unsigned int, std::set< RefinablePar * > &vPar) |
| Get the first derivative for the LSQ function for each parameter supplied in a list. More... | |
| void | ResetParList () |
| Re-init the list of refinable parameters, removing all parameters. More... | |
| 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... | |
| virtual void | UpdateDisplay () const |
| If there is an interface, this should be automatically be called each time there is a 'new, significant' configuration to report. More... | |
| unsigned int | GetNbOption () const |
| Number of Options for this object. | |
| RefObjOpt & | GetOption (const unsigned int i) |
| Access to the options. | |
| const RefObjOpt & | GetOption (const unsigned int i) const |
| const access to the options | |
| virtual void | GetGeneGroup (const RefinableObj &obj, CrystVector_uint &groupIndex, unsigned int &firstGroup) const |
| Get the gene group assigned to each parameter. More... | |
| void | SetDeleteRefParInDestructor (const bool b) |
| Set this object not to delete its list of parameters when destroyed. More... | |
| const RefinableObjClock & | GetRefParListClock () const |
| What was the last time a RefinablePar was added/removed ? More... | |
| virtual REAL | GetRestraintCost () const |
| Get the restraint cost (overall penalty of all restraints) More... | |
| void | AddRestraint (Restraint *pNewRestraint) |
| Add a new restraint. More... | |
| vector< Restraint * >::iterator | RemoveRestraint (Restraint *pRestraint) |
| Remove a restraint from the list of known restraints. More... | |
| virtual void | TagNewBestConfig () const |
| During a global optimization, tells the object that the current config is the latest "best" config. More... | |
| const RefinableObjClock & | GetClockMaster () const |
| This clocks records any change in the object. See refinableObj::mClockMaster. | |
Protected Member Functions | |
| const RefinableObjClock & | GetClockPowderPatternCalcVariance () const |
| Last time the variance on the pattern was actually calculated. | |
| virtual void | CalcPowderPattern () const =0 |
| Calc the powder pattern. More... | |
| virtual void | CalcPowderPattern_FullDeriv (std::set< RefinablePar * > &vPar) |
| virtual void | CalcPowderPatternIntegrated_FullDeriv (std::set< RefinablePar * > &vPar) |
| Calc the integrated powder pattern. More... | |
| virtual const CrystVector_long & | GetBraggLimits () const =0 |
| Get the pixel positions separating the integration intervals around reflections. More... | |
| const RefinableObjClock & | GetClockBraggLimits () const |
| Get last time the Bragg Limits were changed. | |
| virtual void | SetMaxSinThetaOvLambda (const REAL max)=0 |
| Set the maximum value for sin(theta)/lambda. More... | |
| virtual void | Prepare ()=0 |
Protected Member Functions inherited from ObjCryst::RefinableObj | |
| long | FindPar (const string &name) const |
| Find a refinable parameter with a given name. | |
| long | FindPar (const REAL *) const |
| Find a refinable parameter from the adress of its value. | |
| void | AddSubRefObj (RefinableObj &) |
| void | RemoveSubRefObj (RefinableObj &) |
| void | AddOption (RefObjOpt *opt) |
|
map< unsigned long, pair < CrystVector_REAL, string > >::iterator | FindParamSet (unsigned long id) const |
| Find a parameter set with a given id (and check if it is there) | |
Protected Attributes | |
| CrystVector_REAL | mPowderPatternCalc |
| The calculated component of a powder pattern. More... | |
| CrystVector_REAL | mPowderPatternIntegratedCalc |
| The calculated powder pattern, integrated. | |
| CrystVector_REAL | mPowderPatternCalcVariance |
| The variance associated to each point of the calculated powder pattern. | |
| CrystVector_REAL | mPowderPatternIntegratedCalcVariance |
| The variance associated to each point of the calculated powder pattern, integrated. | |
| CrystVector_long | mIntegratedReflLimits |
| Interval limits around each reflection, for integrated R-factors. | |
| bool | mIsScalable |
| Scalable ? (crystal phase = scalable, background= not scalable) | |
| RefinableObjClock | mClockPowderPatternCalc |
| When was the powder pattern last computed ? | |
| RefinableObjClock | mClockPowderPatternIntegratedCalc |
| When was the 'integrated' powder pattern last computed ? | |
| RefinableObjClock | mClockPowderPatternVarianceCalc |
| When was the powder pattern variance last computed ? | |
| RefinableObjClock | mClockPowderPatternIntegratedVarianceCalc |
| When was the 'integrated' powder pattern variance last computed ? | |
| PowderPattern * | mpParentPowderPattern |
| The PowderPattern object in which this component is included. | |
| RefinableObjClock | mClockBraggLimits |
| Get last time the Bragg Limits were changed. | |
|
list< pair< const REAL,const string > > | mvLabel |
| The labels associated to different points of the pattern. | |
|
std::map< RefinablePar *, CrystVector_REAL > | mPowderPattern_FullDeriv |
|
std::map< RefinablePar *, CrystVector_REAL > | mPowderPatternIntegrated_FullDeriv |
Protected Attributes inherited from ObjCryst::RefinableObj | |
| string | mName |
| Name for this RefinableObject. Should be unique, at least in the same scope.+. | |
| vector< RefinablePar * > | mvpRefPar |
| Vector of pointers to the refinable parameters. | |
| vector< Restraint * > | mvpRestraint |
| Vector of pointers to the restraints for this object. More... | |
| map< unsigned long, pair < CrystVector_REAL, string > > | mvpSavedValuesSet |
| Map of (index,pointers to arrays) used to save sets of values for all parameters. More... | |
| long | mNbRefParNotFixed |
| Total of not-fixed parameters. | |
| CrystVector_long | mRefparNotFixedIndex |
| Index of not-fixed parameters. | |
| int | mOptimizationDepth |
| Is the object being refined or optimized ? if mOptimizationDepth=0, no optimization is taking place. More... | |
| ObjRegistry< RefinableObj > | mSubObjRegistry |
| Registry of RefinableObject needed for this object (owned by this object or not) | |
| ObjRegistry< RefinableObj > | mClientObjRegistry |
| Registry of RefinableObject using this object. More... | |
| ObjRegistry< RefObjOpt > | mOptionRegistry |
| List of options for this object. More... | |
| bool | mDeleteRefParInDestructor |
| If true (the default), then all RefinablePar will be deleted when the the object is deleted. More... | |
| RefinableObjClock | mRefParListClock |
| Last time the RefinableParList was modified (a parameter added or removed). | |
| bool | mRandomMoveIsDone |
| CrystVector_REAL | mLSQDeriv |
| Temporary array used to return derivative values of the LSQ function for given parameters. More... | |
| std::map< unsigned int, std::map< RefinablePar *, CrystVector_REAL > > | mLSQ_FullDeriv |
| Temporary map to return the derivative of the LSQ function versus a list of parameters. More... | |
| RefinableObjClock | mClockMaster |
| Master clock, which is changed whenever the object has been altered. More... | |
Friends | |
| class | PowderPattern |
Generic class to compute components (eg the contribution of a given phase, or background) of a powder pattern.
This is an abstract base class.
Most functions are protected, only to be accessed, internally or from the friend class PowderPattern.
Definition at line 48 of file PowderPattern.h.
|
protectedpure virtual |
Calc the powder pattern.
As always, recomputation is only done if necessary (ie if a parameter has changed since the last computation)
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
protectedvirtual |
Calc the integrated powder pattern.
This should be optimized so that the full powder pattern is not explicitely computed.
Reimplemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
Definition at line 155 of file PowderPattern.cpp.
|
protectedpure virtual |
Get the pixel positions separating the integration intervals around reflections.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
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::RefinableObj.
Reimplemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
Definition at line 88 of file PowderPattern.cpp.
| const PowderPattern & ObjCryst::PowderPatternComponent::GetParentPowderPattern | ( | ) | const |
Get the PowderPattern object which uses this component.
This allows to know the observed powder pattern to evaluate the background.
Definition at line 94 of file PowderPattern.cpp.
| PowderPattern & ObjCryst::PowderPatternComponent::GetParentPowderPattern | ( | ) |
Get the PowderPattern object which uses this component.
This allows to know the observed powder pattern to evaluate the background.
Definition at line 111 of file PowderPattern.cpp.
| const list< pair< const REAL, const string > > & ObjCryst::PowderPatternComponent::GetPatternLabelList | ( | ) | const |
Get a list of labels for the pattern (usually reflection indexes).
This returns the list generated during the last computation of the powder pattern.
Definition at line 127 of file PowderPattern.cpp.
|
pure virtual |
Get the calculated powder pattern for this component.
Note that the pattern is not scaled.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
pure virtual |
Get the variance associated to each point of the calculated powder pattern, for this component.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
pure virtual |
Get the integrated values of the powder pattern.
This avoids explicitely calculating the full profile powder pattern.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
pure virtual |
Get the variance associated to each point of the calculated powder pattern, for this component (integrated version).
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
| bool ObjCryst::PowderPatternComponent::IsScalable | ( | ) | const |
Is this component scalable ?
This is used by the PowderPattern class, which fits all pattern components using scale factors. Some components may not need to be scaled: background components, which are assumed to be absolute.
Definition at line 116 of file PowderPattern.cpp.
|
protectedpure virtual |
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...
Reimplemented from ObjCryst::RefinableObj.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
protectedpure virtual |
Set the maximum value for sin(theta)/lambda.
All data above still exist but are ignored for all calculations.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
pure virtual |
Set the PowderPattern object which uses this component.
This sets all necessary pattern parameters (2theta/tof range, wavelength, radiation type...) accordingly.
Implemented in ObjCryst::PowderPatternDiffraction, and ObjCryst::PowderPatternBackground.
|
mutableprotected |
The calculated component of a powder pattern.
It is mutable since it is completely defined by other parameters (eg it is not an 'independent parameter')
Definition at line 145 of file PowderPattern.h.