Algorithm class to find the correct indexing from observed peak positions. More...


Public Member Functions | |
| CellExplorer (const PeakList &dhkl, const CrystalSystem lattice, const unsigned int nbSpurious) | |
| void | Evolution (unsigned int ng, const bool randomize=true, const float f=0.7, const float cr=0.5, unsigned int np=100) |
| void | SetLengthMinMax (const float min, const float max) |
| void | SetAngleMinMax (const float min, const float max) |
| void | SetVolumeMinMax (const float min, const float max) |
| void | SetNbSpurious (const unsigned int nb) |
| void | SetD2Error (const float err) |
| Allowed error on 1/d (squared!), used for dicvol. | |
| void | SetMinMaxZeroShift (const float min, const float max) |
| void | SetCrystalSystem (const CrystalSystem system) |
| void | SetCrystalCentering (const CrystalCentering cent) |
| 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 const string & | GetName () const |
| Name of the object. | |
| virtual void | Print () const |
| 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. | |
| 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. | |
| void | LSQRefine (int nbCycle=1, bool useLevenbergMarquardt=true, const bool silent=false) |
| void | DicVol (const float minScore=10, const unsigned int minDepth=3, const float stopOnScore=50.0, const unsigned int stopOnDepth=6) |
| Run DicVOl algorithm, store only solutions with score >minScore or depth>=minDepth, stop at the end of one volume interval (~400 A^3) if best score>stopOnScore, or if one solution was found at depth>=stopOnDepth. | |
| void | ReduceSolutions (const bool updateReportThreshold=false) |
| Sort all solutions by score, remove duplicates. | |
| float | GetBestScore () const |
|
const std::list< std::pair < RecUnitCell, float > > & | GetSolutions () const |
|
std::list< std::pair < RecUnitCell, float > > & | GetSolutions () |
Private Member Functions | |
| unsigned int | RDicVol (RecUnitCell uc0, RecUnitCell uc1, unsigned int depth, unsigned long &nbCalc, const float minV, const float maxV, vector< unsigned int > vdepth=vector< unsigned int >()) |
| void | Init () |
Private Attributes | |
|
std::list< std::pair < RecUnitCell, float > > | mvSolution |
| Max number of obs reflections to use. | |
| unsigned int | mnpar |
| const PeakList * | mpPeakList |
| float | mLengthMin |
| float | mLengthMax |
| float | mAngleMin |
| float | mAngleMax |
| float | mVolumeMin |
| float | mVolumeMax |
| float | mZeroShiftMin |
| float | mZeroShiftMax |
| float | mMin [7] |
| Min values for all parameters (7=unit cell +zero). | |
| float | mAmp [7] |
| Max amplitude (max=min+amplitude) for all parameters All parameters are treated as periodic for DE (??). | |
| CrystalSystem | mlattice |
| Lattice type for which we search. | |
| CrystalCentering | mCentering |
| Centering type. | |
| unsigned int | mNbSpurious |
| float | mD2Error |
| LSQNumObj | mLSQObj |
| CrystVector_REAL | mObs |
| CrystVector_REAL | mCalc |
| CrystVector_REAL | mWeight |
| CrystVector_REAL | mDeriv |
| RecUnitCell | mRecUnitCell |
| Reciprocal unit cell used for least squares refinement. | |
| float | mBestScore |
| Current best score. | |
| std::vector< unsigned int > | mvNbSolutionDepth |
| Number of solutions found during dicvol search, at each depth. | |
| float | mMinScoreReport |
| unsigned int | mMaxDicVolDepth |
| unsigned int | mDicVolDepthReport |
| float | mCosAngMax |
| Stored value of cos(max ang) for tricilinic search - we do not want to recompute the cos at every dicvol iteration. | |
| unsigned int | mNbLSQExcept |
| Number of exceptions caught during LSQ, in a given search - above 20 LSQ is disabled. | |
Algorithm class to find the correct indexing from observed peak positions.
Definition at line 212 of file Indexing.h.
| void ObjCryst::CellExplorer::BeginOptimization | ( | const bool | allowApproximations = false, |
|
| const bool | enableRestraints = false | |||
| ) | [virtual] |
This should be called by any optimization class at the begining of an optimization.
This will also check that everything is ready, eg call the RefinableObj::Prepare() function. This also affects all sub-objects.
| allowApproximations,: | if true, then the object can use faster but less precise functions during the optimization. This is useful for global optimization not using derivatives. | |
| enableRestraints,: |
Reimplemented from ObjCryst::RefinableObj.
Definition at line 1473 of file Indexing.cpp.
| void ObjCryst::CellExplorer::DicVol | ( | const float | minScore = 10, |
|
| const unsigned int | minDepth = 3, |
|||
| const float | stopOnScore = 50.0, |
|||
| const unsigned int | stopOnDepth = 6 | |||
| ) |
Run DicVOl algorithm, store only solutions with score >minScore or depth>=minDepth, stop at the end of one volume interval (~400 A^3) if best score>stopOnScore, or if one solution was found at depth>=stopOnDepth.
If stopOnDepth==0, do not stop for any depth
Definition at line 2113 of file Indexing.cpp.
| const CrystVector_REAL & ObjCryst::CellExplorer::GetLSQDeriv | ( | const unsigned int | n, | |
| RefinablePar & | par | |||
| ) | [virtual] |
Get the first derivative values for the LSQ function, for a given parameter.
Note that the default method in the base RefinableObj class is to use numerical derivatives, so it should be overridden for better precision.
Reimplemented from ObjCryst::RefinableObj.
Definition at line 1443 of file Indexing.cpp.
| void ObjCryst::CellExplorer::ReduceSolutions | ( | const bool | updateReportThreshold = false |
) |
Sort all solutions by score, remove duplicates.
| updateReportThreshold,: | if true, when too many solutions are produced, the threshold above which solutions are reported will be updated to get less solutions. |
Definition at line 2615 of file Indexing.cpp.
1.6.1