Ticket #9993 (closed: fixed)

Opened 6 years ago

Last modified 5 years ago

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:1 Changed 6 years ago by Nick Draper

  • Status changed from new to assigned

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.

Last edited 6 years ago by Michael Wedel (previous) (diff)

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

Ticket #10135 deals with exposing some of the classes to python, and with writing a documentation. Ticket #10134 deals with merging POLDI related algorithms and concepts with single crystal peaks and peaks workspaces

comment:31 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 10835

Note: See TracTickets for help on using tickets.