00001
00002
00003
00004
00005
00006
00007 #ifndef MAKELISTSCOMPATIBLE_HEADER
00008 #define MAKELISTSCOMPATIBLE_HEADER
00009
00010
00011 #include "hkl_unmerge.hh"
00012 #include "reindexscore.hh"
00013 #include "hkl_symmetry.hh"
00014 #include "hkl_datatypes.hh"
00015 #include "Output.hh"
00016 #include "controls.hh"
00017 #include "globalcontrols.hh"
00018
00019
00020 namespace scala {
00021
00022
00023
00024 std::vector<ReindexOp> AlternativeReindexList
00025 (const Scell& ref_cell, const Scell& test_cell,
00026 const hkl_symmetry& TestSym,
00027 const double& LatticeTolerance, const int& AllowI2);
00028
00029
00030 class MakeHKL_listscompatible
00031 {
00032 public:
00033 MakeHKL_listscompatible() : altIndex(false),status(0) {}
00034
00035 MakeHKL_listscompatible(hkl_unmerge_list& ref_list,
00036 hkl_unmerge_list& test_list,
00037 const GlobalControls& GC,
00038 const all_controls& controls,
00039 phaser_io::Output& output);
00040
00041
00042
00043 void init(hkl_unmerge_list& ref_list,
00044 hkl_unmerge_list& test_list,
00045 const GlobalControls& GC,
00046 const bool& CheckIndex,
00047 const all_controls& controls,
00048 phaser_io::Output& output);
00049
00050 void init(hkl_merged_list& ref_mrgd_list,
00051 hkl_unmerge_list& test_list,
00052 const GlobalControls& GC,
00053 const all_controls& controls,
00054 phaser_io::Output& output);
00055
00056
00057 void MakeBatchNumbersUnique(hkl_unmerge_list& ref_list,
00058 hkl_unmerge_list& test_list);
00059
00060 int Status() const {return status;}
00061 ReindexScore BestReindexScore() const;
00062 std::vector<ReindexScore> BestReindexScores() const {return ReindexScoreList;}
00063 bool AltIndex() const {return altIndex;}
00064 bool IsOffset() const;
00065 std::vector<int> RunOffsets() const {return runOffsets;}
00066
00067 private:
00068 void ReportDifferentCells(const Scell& RefCell,
00069 const Scell& TestCell,
00070 const double& Tolerance,
00071 phaser_io::Output& output);
00072
00073 std::vector<ReindexOp> CheckSymmetry(const hkl_symmetry& RefSymm,
00074 const hkl_symmetry& TestSymm,
00075 const Scell& RefCell,
00076 const Scell& TestCell,
00077 const double& Tolerance,
00078 const int& AllowI2,
00079 phaser_io::Output& output);
00080
00081 bool SameLaueGroup;
00082 bool ChangeIndex;
00083 int status;
00084 std::vector<ReindexScore> ReindexScoreList;
00085 bool altIndex;
00086
00087 std::vector<int> runOffsets;
00088 };
00089 }
00090
00091 #endif