Ticket #9993 (closed: fixed)
Create PoldiPeakCollection from unit cell, point group
Reported by: | Michael Wedel | Owned by: | Michael Wedel |
---|---|---|---|
Priority: | major | Milestone: | Release 3.3 |
Component: | Diffraction | Keywords: | POLDI |
Cc: | Blocked By: | ||
Blocking: | Tester: | Andrei Savici |
Description
For indexing POLDI peaks, it would be useful to generate a list of symmetry independent miller indices from a unit cell metric, centering and point group.
This information may come for example from a file.
I looked at the way pointgroups are represented in Mantid::Geometry and it's very easy to check whether two reflections are symmetry equivalents. I would like to extend the interface of PointGroup a bit with these functions:
std::vector<V3D> getEquivalentReflections(V3D hkl); V3D getReflectionFamily(V3D hkl);
The latter function would return the same V3D for all reflections that are equivalent. For example in a cubic point group it would return (1 0 0) for all of these: (1 0 0), (0 1 0), (0 0 1), (-1 0 0), (0 -1 0), (0 0 -1).
Under the hood all transformations are done using matrix operations as defined in the international tables for crystallography.
Change History
comment:2 Changed 6 years ago by Michael Wedel
- Status changed from assigned to inprogress
Refs #9993. Added SymmetryOperation interface.
Two operations implemented as example: Identity and Inversion.
Changeset: 424b6b66999feb9370e9d3716adea9c3faf0428d
comment:3 Changed 6 years ago by Michael Wedel
Refs #9993. Added more symmetry operations
Changed PointGroup interface. Changed unit test for 6/mmm, since (1 2 3) is a special hkl in that group. The test now uses (7 2 3).
Changeset: b3b488c2c643e7c29bedaab47ae65759f061d7d7
comment:4 Changed 6 years ago by Michael Wedel
Refs #9993. Removed superfluous symmetry operations.
They were not used anywhere in the PointGroup code, but maybe they will come back later.
Changeset: ac100250757325864304ef3d9d27542e789449ef
comment:5 Changed 6 years ago by Michael Wedel
Refs #9993. Added unit tests for all symmetry operations.
Re-structered tests a bit, so that each operation can be tests with a single call to testSymmetryOperation with the expected parameters.
Changeset: 7b029811f1f968c6b2cbc1a0fdb3455476c36684
comment:6 Changed 6 years ago by Michael Wedel
Refs #9993. Symmetry operations have identifier now
Changeset: 2b09c2d96661c37fec13f78bb333248c38c1dabe
comment:7 Changed 6 years ago by Michael Wedel
Refs #9993. Added documentation for SymmetryOperation
Changeset: c3c6b4d12d11d588ca253bcbf6106bb4d40f7bc0
comment:8 Changed 6 years ago by Michael Wedel
Refs #9993. Improved unit tests for SymmetryOperation
Identifiers are checked agains regex, added more meaningful output on error through the use of TSM_...
Changeset: 60a88e04fb605de8020c39b86a0ec7fccd69768b
comment:9 Changed 6 years ago by Michael Wedel
Refs #9993. Hiding symmetry operation storage of PointGroup
Changeset: cc98321525f2a4303ada2cfa147dac91bb8dfac6
comment:10 Changed 6 years ago by Michael Wedel
Refs #9993. Checkpointing work
Changeset: 734b8e82bedbf49d905d9b08c5d89d877d4912ed
comment:11 Changed 6 years ago by Michael Wedel
Refs #9993. Completing work on PointGroup
Added documentation and some more tests.
Changeset: 044e49906f4a8b87b2d950f2692cc4b3cfc59887
comment:12 Changed 6 years ago by Michael Wedel
Refs #9993. Integrating point group extension into PoldiPeakCollection
Changeset: 9cc715387daebcb046f915e71524491f78de3337
comment:13 Changed 6 years ago by Michael Wedel
Refs #9993. Extended MillerIndices for interoperability with V3D
Changeset: 2285058997be5af3bb9f4eefbca5fd82ae9acc9f
comment:14 Changed 6 years ago by Michael Wedel
Refs #9993. Added unit tests for PoldiPeakCollection
Changeset: f7af4be8be78c732dc3e8e3233bc65ad8ef77070
comment:15 Changed 6 years ago by Michael Wedel
Refs #9993. Added another unit test.
Changeset: 0f5d9434e782c788a1d4ffa376608e35edd80e5a
comment:16 Changed 6 years ago by Michael Wedel
Refs #9993. Pointgroups now belong to a crystal system
Changeset: a85e80012c61456a6fb77c3622cb3e1f613acc9f
comment:17 Changed 6 years ago by Michael Wedel
Refs #9993. Added CrystalStructure-class
Things like unit cell, point group, lattice centering often occur together and this class reflects their connection.
Changeset: 0507acb278666ccd95ac70f05d04aaef3bc99cb8
comment:18 Changed 6 years ago by Michael Wedel
Refs #9993. Adapted PoldiPeakCollection to use CrystalStructure
Changeset: efd761f9d6ab3e1fd9827483c0105b712cb31656
comment:19 Changed 6 years ago by Michael Wedel
Refs #9993. Making comparison operator const
Changeset: d9223bfb71e5e249ba6b4b9c6c0d3fa226388b57
comment:20 Changed 6 years ago by Michael Wedel
Refs #9993. Including <stdexcept> in CrystalStructure.cpp
Changeset: 3964f5c952a9f7c9addcec9e94c86be9d7819ea5
comment:21 Changed 6 years ago by Michael Wedel
Refs #9993. Changing CrystalStructure-constructor for VC
Changeset: c5bba0de2508cf520ca3ed30efb6cbc1599203d4
comment:22 Changed 6 years ago by Michael Wedel
Refs #9993. Replacing std::to_string with boost::lexical_cast
Changeset: 3718bab8df5a78b52be458aeab5f38519a735f9a
comment:23 Changed 6 years ago by Michael Wedel
Refs #9993. Replacing wrong code in unit test
Out-of-bounds vector access made the test fail in VC.
Changeset: 14196c11d454d483a7a21c9dbb0b10b7b1fe81da
comment:24 Changed 6 years ago by Michael Wedel
Errornous merge - sorry for the confusion.
comment:25 Changed 6 years ago by Michael Wedel
Refs #9993. Merge master into branch to solve merge conflicts
Conflicts:
Code/Mantid/Framework/SINQ/inc/MantidSINQ/PoldiUtilities/MillerIndices.h Code/Mantid/Framework/SINQ/inc/MantidSINQ/PoldiUtilities/PoldiPeakCollection.h Code/Mantid/Framework/SINQ/src/PoldiUtilities/MillerIndices.cpp Code/Mantid/Framework/SINQ/src/PoldiUtilities/PoldiPeakCollection.cpp Code/Mantid/Framework/SINQ/test/MillerIndicesTest.h Code/Mantid/Framework/SINQ/test/PoldiPeakCollectionTest.h
Changeset: 617f53bd930f49e626e8556d5117f745ae1a6bd6
comment:26 Changed 6 years ago by Michael Wedel
Testing information
There is no algorithm to try out in this ticket, so it's mainly code review. SymmetryOperation and CrystalStructure are new classes, but PointGroup is used by other components. Even though I did not touch the existing interface, it's probably a good idea to take a detailed look there.
comment:27 Changed 6 years ago by Michael Wedel
- Status changed from inprogress to verify
- Resolution set to fixed
comment:28 Changed 6 years ago by Andrei Savici
- Status changed from verify to verifying
- Tester set to Andrei Savici
comment:29 Changed 6 years ago by Andrei Savici
- Status changed from verifying to closed
Merge remote-tracking branch 'origin/feature/9993_poldi_symmetry_independent_hkl'
Full changeset: 5226f7e8cd4bff6d6a018c9cee4b379d2ca2999e
comment:30 Changed 6 years ago by Andrei Savici
comment:31 Changed 5 years ago by Stuart Campbell
This ticket has been transferred to github issue 10835