Skip to content
Snippets Groups Projects
NexusGeometryParserTest.h 2 KiB
Newer Older
//----------------
// Includes
//----------------

#include <cxxtest/TestSuite.h>

#include "MantidGeometry/Instrument.h"
#include "MantidNexusGeometry/NexusGeometryParser.h"

#include <string>

using namespace Mantid;
using namespace NexusGeometry;

class NexusGeometryParserTest : public CxxTest::TestSuite {
    public:
        void testParseNexusGeometry(){
            // Initialise abstract instrument builder
            iAbstractBuilder_sptr iAbsBuilder_sptr(new iAbstractBuilder(this->testInstName));
            this->iAbsBuilder_sptr = iAbsBuilder_sptr;
            //Initialise the parser
            NexusGeometryParser parser(this->nexusFilename, this->iAbsBuilder_sptr);
            //Parse the nexus file
            TS_ASSERT_THROWS_NOTHING(
                this->exitStatus = parser.ParseNexusGeometry();
            )
            TS_ASSERT(this->exitStatus == NO_ERROR);

            //Check correct number of detectors, skip monitors
            TS_ASSERT(this->iAbsBuilder_sptr->_unAbstractInstrument()->getNumberDetectors(true) == 256);
            //Check correct position of two separate monitors (one from each detector panel)
            auto detector1 = this->iAbsBuilder_sptr->_unAbstractInstrument()->getDetector(2100000);
            auto detector2 = this->iAbsBuilder_sptr->_unAbstractInstrument()->getDetector(1100000);

            auto pos1 = detector1->getPos();
            auto pos2 = detector2->getPos();
            auto pos1PreCalc = Eigen::Vector3d(0.619826, -0.200000, 23.413000);
            auto pos2PreCalc = Eigen::Vector3d(-0.498000, -0.200000, 23.281000);
            for ( int i = 0; i < 3; ++i)
            {
                TS_ASSERT_DELTA(pos1[i], pos1PreCalc[i], 0.0001)
                TS_ASSERT_DELTA(pos2[i], pos2PreCalc[i], 0.0001)
            }
        }
        std::string testInstName = "testInstrument";
        H5std_string nexusFilename = "/home/michael/SMALLFAKE_example_geometry.hdf5";
        iAbstractBuilder_sptr iAbsBuilder_sptr; 
        ParsingErrors exitStatus;