diff --git a/Code/Mantid/Framework/DataHandling/CMakeLists.txt b/Code/Mantid/Framework/DataHandling/CMakeLists.txt index 88bfc8d118be8be54cbfdd8084c941073a0ea4ba..16b4fc49a8aaa9ce1a2c28cd85d9957d9671a1ed 100644 --- a/Code/Mantid/Framework/DataHandling/CMakeLists.txt +++ b/Code/Mantid/Framework/DataHandling/CMakeLists.txt @@ -69,6 +69,7 @@ set ( SRC_FILES src/LoadNexusMonitors.cpp src/LoadNexusProcessed.cpp src/LoadPDFgetNFile.cpp + src/LoadPSI.cpp src/LoadParameterFile.cpp src/LoadPreNexus.cpp src/LoadPreNexusMonitors.cpp @@ -213,6 +214,7 @@ set ( INC_FILES inc/MantidDataHandling/LoadNexusMonitors.h inc/MantidDataHandling/LoadNexusProcessed.h inc/MantidDataHandling/LoadPDFgetNFile.h + inc/MantidDataHandling/LoadPSI.h inc/MantidDataHandling/LoadParameterFile.h inc/MantidDataHandling/LoadPreNexus.h inc/MantidDataHandling/LoadPreNexusMonitors.h @@ -287,7 +289,6 @@ set ( INC_FILES ) set ( TEST_FILES - LoadDAETest.h #LoadSNSNexusTest.h # TODO has no active tests in it #Needs fixing to not rely on network. SNSLiveEventDataListenerTest.h ADARAPacketTest.h @@ -315,6 +316,7 @@ set ( TEST_FILES LoadAsciiTest.h LoadCalFileTest.h LoadCanSAS1dTest.h + LoadDAETest.h LoadDaveGrpTest.h LoadDetectorInfoTest.h LoadDetectorsGroupingFileTest.h @@ -335,7 +337,7 @@ set ( TEST_FILES LoadLogsFromSNSNexusTest.h LoadMappingTableTest.h LoadMaskTest.h - LoadMcStasNexusTest.h + LoadMcStasNexusTest.h LoadMuonLogTest.h LoadMuonNexus1Test.h LoadMuonNexus2Test.h @@ -343,8 +345,9 @@ set ( TEST_FILES LoadNexusLogsTest.h LoadNexusMonitorsTest.h LoadNexusProcessedTest.h - LoadNexusTest.h + LoadNexusTest.h LoadPDFgetNFileTest.h + LoadPSITest.h LoadParameterFileTest.h LoadPreNexusMonitorsTest.h LoadPreNexusTest.h @@ -400,7 +403,7 @@ set ( TEST_FILES SaveRKHTest.h SaveSPETest.h SaveToSNSHistogramNexusTest.h - SetSampleMaterialTest.h + SetSampleMaterialTest.h SetScalingPSDTest.h StartLiveDataTest.h UpdateInstrumentFromFileTest.h diff --git a/Code/Mantid/Framework/DataHandling/inc/MantidDataHandling/LoadPSI.h b/Code/Mantid/Framework/DataHandling/inc/MantidDataHandling/LoadPSI.h new file mode 100644 index 0000000000000000000000000000000000000000..0821fa96c2bbf479a22db17ff569901e15813b39 --- /dev/null +++ b/Code/Mantid/Framework/DataHandling/inc/MantidDataHandling/LoadPSI.h @@ -0,0 +1,64 @@ +#ifndef MANTID_DATAHANDLING_LOADPSI_H_ +#define MANTID_DATAHANDLING_LOADPSI_H_ + +#include "MantidKernel/System.h" +#include "MantidAPI/Algorithm.h" +#include "MantidAPI/IDataFileChecker.h" +#include "MantidNexus/NexusClasses.h" + +namespace Mantid { +namespace DataHandling { + +/** LoadPSI : TODO: DESCRIPTION + + Copyright © 2013 ISIS Rutherford Appleton Laboratory & NScD Oak Ridge National Laboratory + + This file is part of Mantid. + + Mantid is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + Mantid is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + File change history is stored at: <https://github.com/mantidproject/mantid> + Code Documentation is available at: <http://doxygen.mantidproject.org> + */ +class DLLExport LoadPSI: public API::Algorithm { +public: + LoadPSI(); + virtual ~LoadPSI(); + + virtual const std::string name() const; + virtual int version() const; + virtual const std::string category() const; + +private: + virtual void initDocs(); + void init(); + void exec(); + NeXus::NXEntry openNexusFile(); + void setInstrumentName(NeXus::NXEntry& entry); + void initWorkSpace(NeXus::NXEntry& entry); + + std::string m_instrumentName; + API::MatrixWorkspace_sptr m_localWorkspace; + + size_t m_numberOfTubes; // number of tubes - X + size_t m_numberOfPixelsPerTube; //number of pixels per tube - Y + size_t m_numberOfChannels; // time channels - Z + size_t m_numberOfHistograms; + +}; + +} // namespace DataHandling +} // namespace Mantid + +#endif /* MANTID_DATAHANDLING_LOADPSI_H_ */ diff --git a/Code/Mantid/Framework/DataHandling/src/LoadPSI.cpp b/Code/Mantid/Framework/DataHandling/src/LoadPSI.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a14259e86a2b87c70d4c771f4034f701c7644337 --- /dev/null +++ b/Code/Mantid/Framework/DataHandling/src/LoadPSI.cpp @@ -0,0 +1,149 @@ +/*WIKI* + TODO: Enter a full wiki-markup description of your algorithm here. You can then use the Build/wiki_maker.py script to generate your full wiki page. + *WIKI*/ + +#include "MantidDataHandling/LoadPSI.h" +#include "MantidAPI/FileProperty.h" +#include "MantidKernel/UnitFactory.h" + +namespace Mantid { +namespace DataHandling { + +using namespace Kernel; +using namespace API; +using namespace NeXus; + +// Register the algorithm into the AlgorithmFactory +DECLARE_ALGORITHM(LoadPSI) + +//---------------------------------------------------------------------------------------------- +/** Constructor + */ +LoadPSI::LoadPSI() : + m_instrumentName("") { +} + +//---------------------------------------------------------------------------------------------- +/** Destructor + */ +LoadPSI::~LoadPSI() { +} + +//---------------------------------------------------------------------------------------------- +/// Algorithm's name for identification. @see Algorithm::name +const std::string LoadPSI::name() const { + return "LoadPSI"; +} +; + +/// Algorithm's version for identification. @see Algorithm::version +int LoadPSI::version() const { + return 1; +} +; + +/// Algorithm's category for identification. @see Algorithm::category +const std::string LoadPSI::category() const { + return "DataHandling"; +} + +//---------------------------------------------------------------------------------------------- +/// Sets documentation strings for this algorithm +void LoadPSI::initDocs() { + this->setWikiSummary("Loads PSI nexus file."); + this->setOptionalMessage("Loads PSI nexus file."); +} + +//---------------------------------------------------------------------------------------------- +/** Initialize the algorithm's properties. + */ +void LoadPSI::init() { + std::vector<std::string> exts; + exts.push_back(".nxs"); + exts.push_back(".hdf"); + declareProperty(new FileProperty("Filename", "", FileProperty::Load, exts), + "The name of the Nexus file to load"); + declareProperty( + new WorkspaceProperty<>("OutputWorkspace", "", Direction::Output), + "The name to use for the output workspace"); +} + +//---------------------------------------------------------------------------------------------- +/** Execute the algorithm. + */ +void LoadPSI::exec() { + + NXEntry entry = openNexusFile(); + setInstrumentName(entry); + + + + +} + +NXEntry LoadPSI::openNexusFile() { + std::string filename = getPropertyValue("Filename"); + NXRoot root(filename); + return root.openFirstEntry(); +} + +void LoadPSI::setInstrumentName(NeXus::NXEntry& entry) { + + // format: /entry0/FOCUS/name + + std::vector<NXClassInfo> v = entry.groups(); + for (auto it = v.begin(); it < v.end(); it++) { + if (it->nxclass == "NXinstrument") { + std::string nexusInstrumentEntryName = it->nxname; + std::string insNamePath = nexusInstrumentEntryName + "/name"; + m_instrumentName = entry.getString(insNamePath); + if (m_instrumentName == "") { + std::string message( + "Cannot read the instrument name from the Nexus file!"); + g_log.error(message); + throw std::runtime_error(message); + } else { + g_log.debug() << "Instrument Name: " << m_instrumentName + << " in NxPath: " << insNamePath << std::endl; + break; + } + + } + } + +} + +void LoadPSI::initWorkSpace(NeXus::NXEntry& entry) { + + // read in the data + NXData dataGroup = entry.openNXData("merged/counts"); + NXInt data = dataGroup.openIntData(); + + m_numberOfTubes = static_cast<size_t>(data.dim0()); + m_numberOfPixelsPerTube = static_cast<size_t>(data.dim1()); + m_numberOfChannels = static_cast<size_t>(data.dim2()); + + // dim0 * m_numberOfPixelsPerTube is the total number of detectors + m_numberOfHistograms = m_numberOfTubes * m_numberOfPixelsPerTube; + + g_log.debug() << "NumberOfTubes: " << m_numberOfTubes << std::endl; + g_log.debug() << "NumberOfPixelsPerTube: " << m_numberOfPixelsPerTube << std::endl; + g_log.debug() << "NumberOfChannels: " << m_numberOfChannels << std::endl; + + // Now create the output workspace + // Might need to get this value from the number of monitors in the Nexus file + // params: + // workspace type, + // total number of spectra + (number of monitors = 0), + // bin boundaries = m_numberOfChannels + 1 + // Z/time dimension + m_localWorkspace = WorkspaceFactory::Instance().create("Workspace2D", + m_numberOfHistograms, m_numberOfChannels + 1, m_numberOfChannels); + m_localWorkspace->getAxis(0)->unit() = UnitFactory::Instance().create( + "TOF"); + m_localWorkspace->setYUnitLabel("Counts"); + +} + +} // namespace DataHandling +} // namespace Mantid diff --git a/Code/Mantid/Framework/DataHandling/test/LoadPSITest.h b/Code/Mantid/Framework/DataHandling/test/LoadPSITest.h new file mode 100644 index 0000000000000000000000000000000000000000..de128f0e786296401d0fdaf8ef3c35640b9f997e --- /dev/null +++ b/Code/Mantid/Framework/DataHandling/test/LoadPSITest.h @@ -0,0 +1,81 @@ +#ifndef MANTID_DATAHANDLING_LOADPSITEST_H_ +#define MANTID_DATAHANDLING_LOADPSITEST_H_ + +#include <cxxtest/TestSuite.h> + +#include "MantidDataHandling/LoadPSI.h" + +using namespace Mantid::API; +using Mantid::DataHandling::LoadPSI; + +class LoadPSITest: public CxxTest::TestSuite { +public: + // This pair of boilerplate methods prevent the suite being created statically + // This means the constructor isn't called when running other tests + static LoadPSITest *createSuite() { + return new LoadPSITest(); + } + static void destroySuite(LoadPSITest *suite) { + delete suite; + } + + LoadPSITest() : + m_testFile("TODO.nxs") + { + } + void testName() { + LoadPSI alg; + TS_ASSERT_EQUALS( alg.name(), "LoadPSI"); + } + + void testVersion() { + LoadPSI alg; + TS_ASSERT_EQUALS( alg.version(), 1); + } + + void test_Init() { + LoadPSI alg; + TS_ASSERT_THROWS_NOTHING(alg.initialize()) + TS_ASSERT(alg.isInitialized()) + } + + void test_exec() { + // Name of the output workspace. + std::string outWSName("LoadPSITest_OutputWS"); + + LoadPSI alg; + TS_ASSERT_THROWS_NOTHING(alg.initialize()) + TS_ASSERT(alg.isInitialized()) + TS_ASSERT_THROWS_NOTHING( + alg.setPropertyValue("REPLACE_PROPERTY_NAME_HERE!!!!", "value")); + TS_ASSERT_THROWS_NOTHING( + alg.setPropertyValue("OutputWorkspace", outWSName)); + TS_ASSERT_THROWS_NOTHING(alg.execute() + ; ); + TS_ASSERT(alg.isExecuted()); + + // Retrieve the workspace from data service. TODO: Change to your desired type + Workspace_sptr ws; + TS_ASSERT_THROWS_NOTHING( + ws = AnalysisDataService::Instance().retrieveWS < Workspace + > (outWSName)); + TS_ASSERT(ws); + if (!ws) + return; + + // TODO: Check the results + + // Remove workspace from the data service. + AnalysisDataService::Instance().remove(outWSName); + } + + void test_Something() { + TSM_ASSERT("You forgot to write a test!", 0); + } + +private: + std::string m_testFile; + +}; + +#endif /* MANTID_DATAHANDLING_LOADPSITEST_H_ */ diff --git a/Code/Mantid/instrument/FOCUS_Definition.xml b/Code/Mantid/instrument/FOCUS_Definition.xml new file mode 100644 index 0000000000000000000000000000000000000000..afc8bde2050b050c3aae8e1baf626e9943423839 --- /dev/null +++ b/Code/Mantid/instrument/FOCUS_Definition.xml @@ -0,0 +1,441 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- For help on the notation used to specify an Instrument Definition File see http://www.mantidproject.org/IDF --> +<instrument name="FOCUS" valid-from="1900-01-31 23:59:59" valid-to="2100-01-31 23:59:59" last-modified="2013-05-10 15:02:25"> + <!-- Author: ricardo.leal@ill.fr --> + <defaults> + <length unit="meter" /> + <angle unit="degree" /> + <reference-frame> + <!-- The z-axis is set parallel to and in the direction of the beam. the + y-axis points up and the coordinate system is right handed. --> + <along-beam axis="z" /> + <pointing-up axis="y" /> + <handedness val="right" /> + </reference-frame> + </defaults> + <component type="moderator"> + <location z="-2" /> + </component> + <type name="moderator" is="Source"></type> + <!-- Sample position --> + <component type="sample-position"> + <location y="0.0" x="0.0" z="0.0" /> + </component> + <type name="sample-position" is="SamplePos" /> + <idlist idname="detectors"> + <id start="1" end="375" /> + </idlist> + <!-- Detector list def --> + <component type="detectors" idlist="detectors"> + <location /> + </component> + <!-- Detector Banks --> + <type name="detectors"> + <component type="bank1"> + <location /> + </component> + <component type="lowerBank"> + <location /> + </component> + <component type="upperBank"> + <location /> + </component> + </type> + <!-- Definition of every bank --> + <type name="bank1"> + <component type="pack"> + <location r="2.500000" t="-9.640000" p="0.000000" name="det1"></location> + <location r="2.500000" t="-10.420000" p="0.000000" name="det2"></location> + <location r="2.500000" t="-11.220000" p="0.000000" name="det3"></location> + <location r="2.500000" t="-12.000000" p="0.000000" name="det4"></location> + <location r="2.500000" t="-12.780000" p="0.000000" name="det5"></location> + <location r="2.500000" t="-13.570000" p="0.000000" name="det6"></location> + <location r="2.500000" t="-14.360000" p="0.000000" name="det7"></location> + <location r="2.500000" t="-9.640000" p="0.000000" name="det8"></location> + <location r="2.500000" t="-10.420000" p="0.000000" name="det9"></location> + <location r="2.500000" t="-11.220000" p="0.000000" name="det10"></location> + <location r="2.500000" t="-17.500000" p="0.000000" name="det11"></location> + <location r="2.500000" t="-18.290000" p="0.000000" name="det12"></location> + <location r="2.500000" t="-19.080000" p="0.000000" name="det13"></location> + <location r="2.500000" t="-19.860000" p="0.000000" name="det14"></location> + <location r="2.500000" t="-20.640000" p="0.000000" name="det15"></location> + <location r="2.500000" t="-21.440000" p="0.000000" name="det16"></location> + <location r="2.500000" t="-22.220000" p="0.000000" name="det17"></location> + <location r="2.500000" t="-23.010000" p="0.000000" name="det18"></location> + <location r="2.500000" t="-23.790000" p="0.000000" name="det19"></location> + <location r="2.500000" t="-24.570000" p="0.000000" name="det20"></location> + <location r="2.500000" t="-25.370000" p="0.000000" name="det21"></location> + <location r="2.500000" t="-26.150000" p="0.000000" name="det22"></location> + <location r="2.500000" t="-26.940000" p="0.000000" name="det23"></location> + <location r="2.500000" t="-27.720000" p="0.000000" name="det24"></location> + <location r="2.500000" t="-28.510000" p="0.000000" name="det25"></location> + <location r="2.500000" t="-29.300000" p="0.000000" name="det26"></location> + <location r="2.500000" t="-30.080000" p="0.000000" name="det27"></location> + <location r="2.500000" t="-30.870000" p="0.000000" name="det28"></location> + <location r="2.500000" t="-31.650000" p="0.000000" name="det29"></location> + <location r="2.500000" t="-32.440000" p="0.000000" name="det30"></location> + <location r="2.500000" t="-33.230000" p="0.000000" name="det31"></location> + <location r="2.500000" t="-34.010000" p="0.000000" name="det32"></location> + <location r="2.500000" t="-34.800000" p="0.000000" name="det33"></location> + <location r="2.500000" t="-35.580000" p="0.000000" name="det34"></location> + <location r="2.500000" t="-36.370000" p="0.000000" name="det35"></location> + <location r="2.500000" t="-37.160000" p="0.000000" name="det36"></location> + <location r="2.500000" t="-37.940000" p="0.000000" name="det37"></location> + <location r="2.500000" t="-38.730000" p="0.000000" name="det38"></location> + <location r="2.500000" t="-39.520000" p="0.000000" name="det39"></location> + <location r="2.500000" t="-40.300000" p="0.000000" name="det40"></location> + <location r="2.500000" t="-41.090000" p="0.000000" name="det41"></location> + <location r="2.500000" t="-41.870000" p="0.000000" name="det42"></location> + <location r="2.500000" t="-42.660000" p="0.000000" name="det43"></location> + <location r="2.500000" t="-43.450000" p="0.000000" name="det44"></location> + <location r="2.500000" t="-44.230000" p="0.000000" name="det45"></location> + <location r="2.500000" t="-45.020000" p="0.000000" name="det46"></location> + <location r="2.500000" t="-45.800000" p="0.000000" name="det47"></location> + <location r="2.500000" t="-46.590000" p="0.000000" name="det48"></location> + <location r="2.500000" t="-47.380000" p="0.000000" name="det49"></location> + <location r="2.500000" t="-48.160000" p="0.000000" name="det50"></location> + <location r="2.500000" t="-48.950000" p="0.000000" name="det51"></location> + <location r="2.500000" t="-49.730000" p="0.000000" name="det52"></location> + <location r="2.500000" t="-50.520000" p="0.000000" name="det53"></location> + <location r="2.500000" t="-51.310000" p="0.000000" name="det54"></location> + <location r="2.500000" t="-52.090000" p="0.000000" name="det55"></location> + <location r="2.500000" t="-52.880000" p="0.000000" name="det56"></location> + <location r="2.500000" t="-53.670000" p="0.000000" name="det57"></location> + <location r="2.500000" t="-54.450000" p="0.000000" name="det58"></location> + <location r="2.500000" t="-55.240000" p="0.000000" name="det59"></location> + <location r="2.500000" t="-56.020000" p="0.000000" name="det60"></location> + <location r="2.500000" t="-56.810000" p="0.000000" name="det61"></location> + <location r="2.500000" t="-57.600000" p="0.000000" name="det62"></location> + <location r="2.500000" t="-58.380000" p="0.000000" name="det63"></location> + <location r="2.500000" t="-59.170000" p="0.000000" name="det64"></location> + <location r="2.500000" t="-59.950000" p="0.000000" name="det65"></location> + <location r="2.500000" t="-60.740000" p="0.000000" name="det66"></location> + <location r="2.500000" t="-61.530000" p="0.000000" name="det67"></location> + <location r="2.500000" t="-62.310000" p="0.000000" name="det68"></location> + <location r="2.500000" t="-63.100000" p="0.000000" name="det69"></location> + <location r="2.500000" t="-63.880000" p="0.000000" name="det70"></location> + <location r="2.500000" t="-64.680000" p="0.000000" name="det71"></location> + <location r="2.500000" t="-65.460000" p="0.000000" name="det72"></location> + <location r="2.500000" t="-66.240000" p="0.000000" name="det73"></location> + <location r="2.500000" t="-67.030000" p="0.000000" name="det74"></location> + <location r="2.500000" t="-67.810000" p="0.000000" name="det75"></location> + <location r="2.500000" t="-71.230000" p="0.000000" name="det76"></location> + <location r="2.500000" t="-72.020000" p="0.000000" name="det77"></location> + <location r="2.500000" t="-72.810000" p="0.000000" name="det78"></location> + <location r="2.500000" t="-73.590000" p="0.000000" name="det79"></location> + <location r="2.500000" t="-74.380000" p="0.000000" name="det80"></location> + <location r="2.500000" t="-75.160000" p="0.000000" name="det81"></location> + <location r="2.500000" t="-75.950000" p="0.000000" name="det82"></location> + <location r="2.500000" t="-76.740000" p="0.000000" name="det83"></location> + <location r="2.500000" t="-77.520000" p="0.000000" name="det84"></location> + <location r="2.500000" t="-78.310000" p="0.000000" name="det85"></location> + <location r="2.500000" t="-79.090000" p="0.000000" name="det86"></location> + <location r="2.500000" t="-79.880000" p="0.000000" name="det87"></location> + <location r="2.500000" t="-80.670000" p="0.000000" name="det88"></location> + <location r="2.500000" t="-81.450000" p="0.000000" name="det89"></location> + <location r="2.500000" t="-82.240000" p="0.000000" name="det90"></location> + <location r="2.500000" t="-83.020000" p="0.000000" name="det91"></location> + <location r="2.500000" t="-83.820000" p="0.000000" name="det92"></location> + <location r="2.500000" t="-84.600000" p="0.000000" name="det93"></location> + <location r="2.500000" t="-85.380000" p="0.000000" name="det94"></location> + <location r="2.500000" t="-86.170000" p="0.000000" name="det95"></location> + <location r="2.500000" t="-86.950000" p="0.000000" name="det96"></location> + <location r="2.500000" t="-87.750000" p="0.000000" name="det97"></location> + <location r="2.500000" t="-88.530000" p="0.000000" name="det98"></location> + <location r="2.500000" t="-89.310000" p="0.000000" name="det99"></location> + <location r="2.500000" t="-90.100000" p="0.000000" name="det100"></location> + <location r="2.500000" t="-90.890000" p="0.000000" name="det101"></location> + <location r="2.500000" t="-91.670000" p="0.000000" name="det102"></location> + <location r="2.500000" t="-92.460000" p="0.000000" name="det103"></location> + <location r="2.500000" t="-93.240000" p="0.000000" name="det104"></location> + <location r="2.500000" t="-94.030000" p="0.000000" name="det105"></location> + <location r="2.500000" t="-94.820000" p="0.000000" name="det106"></location> + <location r="2.500000" t="-95.600000" p="0.000000" name="det107"></location> + <location r="2.500000" t="-96.390000" p="0.000000" name="det108"></location> + <location r="2.500000" t="-97.170000" p="0.000000" name="det109"></location> + <location r="2.500000" t="-97.970000" p="0.000000" name="det110"></location> + <location r="2.500000" t="-98.750000" p="0.000000" name="det111"></location> + <location r="2.500000" t="-99.530000" p="0.000000" name="det112"></location> + <location r="2.500000" t="-100.320000" p="0.000000" name="det113"></location> + <location r="2.500000" t="-101.100000" p="0.000000" name="det114"></location> + <location r="2.500000" t="-101.900000" p="0.000000" name="det115"></location> + <location r="2.500000" t="-102.680000" p="0.000000" name="det116"></location> + <location r="2.500000" t="-103.460000" p="0.000000" name="det117"></location> + <location r="2.500000" t="-104.250000" p="0.000000" name="det118"></location> + <location r="2.500000" t="-105.030000" p="0.000000" name="det119"></location> + <location r="2.500000" t="-105.830000" p="0.000000" name="det120"></location> + <location r="2.500000" t="-106.610000" p="0.000000" name="det121"></location> + <location r="2.500000" t="-107.390000" p="0.000000" name="det122"></location> + <location r="2.500000" t="-108.180000" p="0.000000" name="det123"></location> + <location r="2.500000" t="-108.970000" p="0.000000" name="det124"></location> + <location r="2.500000" t="-109.760000" p="0.000000" name="det125"></location> + <location r="2.500000" t="-110.540000" p="0.000000" name="det126"></location> + <location r="2.500000" t="-111.320000" p="0.000000" name="det127"></location> + <location r="2.500000" t="-112.110000" p="0.000000" name="det128"></location> + <location r="2.500000" t="-112.900000" p="0.000000" name="det129"></location> + <location r="2.500000" t="-113.690000" p="0.000000" name="det130"></location> + <location r="2.500000" t="-114.470000" p="0.000000" name="det131"></location> + <location r="2.500000" t="-115.250000" p="0.000000" name="det132"></location> + <location r="2.500000" t="-116.050000" p="0.000000" name="det133"></location> + <location r="2.500000" t="-116.830000" p="0.000000" name="det134"></location> + <location r="2.500000" t="-117.620000" p="0.000000" name="det135"></location> + <location r="2.500000" t="-118.400000" p="0.000000" name="det136"></location> + <location r="2.500000" t="-119.180000" p="0.000000" name="det137"></location> + <location r="2.500000" t="-119.980000" p="0.000000" name="det138"></location> + <location r="2.500000" t="-120.760000" p="0.000000" name="det139"></location> + <location r="2.500000" t="-121.550000" p="0.000000" name="det140"></location> + <location r="2.500000" t="-122.330000" p="0.000000" name="det141"></location> + <location r="2.500000" t="-123.120000" p="0.000000" name="det142"></location> + <location r="2.500000" t="-123.910000" p="0.000000" name="det143"></location> + <location r="2.500000" t="-124.690000" p="0.000000" name="det144"></location> + <location r="2.500000" t="-125.480000" p="0.000000" name="det145"></location> + <location r="2.500000" t="-126.260000" p="0.000000" name="det146"></location> + <location r="2.500000" t="-127.050000" p="0.000000" name="det147"></location> + <location r="2.500000" t="-127.840000" p="0.000000" name="det148"></location> + <location r="2.500000" t="-128.620000" p="0.000000" name="det149"></location> + <location r="2.500000" t="-129.400000" p="0.000000" name="det150"></location> + </component> + </type> + <type name="lowerBank"> + <component type="pack"> + <location x="-0.760234" y="-0.647048" z="2.292024" name="det151"></location> + <location x="-0.793157" y="-0.647048" z="2.280840" name="det152"></location> + <location x="-0.825915" y="-0.647048" z="2.269183" name="det153"></location> + <location x="-0.858502" y="-0.647048" z="2.257056" name="det154"></location> + <location x="-0.890912" y="-0.647048" z="2.244461" name="det155"></location> + <location x="-0.957104" y="-0.647048" z="2.217043" name="det156"></location> + <location x="-0.988927" y="-0.647048" z="2.203033" name="det157"></location> + <location x="-1.020545" y="-0.647048" z="2.188565" name="det158"></location> + <location x="-1.051951" y="-0.647048" z="2.173644" name="det159"></location> + <location x="-1.083139" y="-0.647048" z="2.158272" name="det160"></location> + <location x="-1.146690" y="-0.647048" z="2.125190" name="det161"></location> + <location x="-1.177171" y="-0.647048" z="2.108459" name="det162"></location> + <location x="-1.207407" y="-0.647048" z="2.091291" name="det163"></location> + <location x="-1.237394" y="-0.647048" z="2.073689" name="det164"></location> + <location x="-1.267123" y="-0.647048" z="2.055658" name="det165"></location> + <location x="-1.327549" y="-0.647048" z="2.017162" name="det166"></location> + <location x="-1.356456" y="-0.647048" z="1.997838" name="det167"></location> + <location x="-1.385081" y="-0.647048" z="1.978100" name="det168"></location> + <location x="-1.413419" y="-0.647048" z="1.957952" name="det169"></location> + <location x="-1.441464" y="-0.647048" z="1.937398" name="det170"></location> + <location x="-1.498305" y="-0.647048" z="1.893783" name="det171"></location> + <location x="-1.525417" y="-0.647048" z="1.872013" name="det172"></location> + <location x="-1.552213" y="-0.647048" z="1.849855" name="det173"></location> + <location x="-1.578687" y="-0.647048" z="1.827314" name="det174"></location> + <location x="-1.604834" y="-0.647048" z="1.804394" name="det175"></location> + <location x="-1.642270" y="-0.647048" z="1.770389" name="det176"></location> + <location x="-1.667591" y="-0.647048" z="1.746559" name="det177"></location> + <location x="-1.692566" y="-0.647048" z="1.722368" name="det178"></location> + <location x="-1.717190" y="-0.647048" z="1.697819" name="det179"></location> + <location x="-1.741458" y="-0.647048" z="1.672918" name="det180"></location> + <location x="-1.776111" y="-0.647048" z="1.636081" name="det181"></location> + <location x="-1.799484" y="-0.647048" z="1.610338" name="det182"></location> + <location x="-1.822484" y="-0.647048" z="1.584261" name="det183"></location> + <location x="-1.845106" y="-0.647048" z="1.557856" name="det184"></location> + <location x="-1.867345" y="-0.647048" z="1.531128" name="det185"></location> + <location x="-1.899001" y="-0.647048" z="1.491685" name="det186"></location> + <location x="-1.920282" y="-0.647048" z="1.464188" name="det187"></location> + <location x="-1.941165" y="-0.647048" z="1.436387" name="det188"></location> + <location x="-1.961646" y="-0.647048" z="1.408288" name="det189"></location> + <location x="-1.981720" y="-0.647048" z="1.379897" name="det190"></location> + <location x="-2.010183" y="-0.647048" z="1.338093" name="det191"></location> + <location x="-2.029242" y="-0.647048" z="1.309010" name="det192"></location> + <location x="-2.047879" y="-0.647048" z="1.279657" name="det193"></location> + <location x="-2.066092" y="-0.647048" z="1.250038" name="det194"></location> + <location x="-2.083876" y="-0.647048" z="1.220160" name="det195"></location> + <location x="-2.108972" y="-0.647048" z="1.176251" name="det196"></location> + <location x="-2.125690" y="-0.647048" z="1.145763" name="det197"></location> + <location x="-2.141967" y="-0.647048" z="1.115037" name="det198"></location> + <location x="-2.157799" y="-0.647048" z="1.084081" name="det199"></location> + <location x="-2.173185" y="-0.647048" z="1.052899" name="det200"></location> + <location x="-2.274186" y="-0.647048" z="0.812038" name="det201"></location> + <location x="-2.285643" y="-0.647048" z="0.779209" name="det202"></location> + <location x="-2.296625" y="-0.647048" z="0.746219" name="det203"></location> + <location x="-2.307131" y="-0.647048" z="0.713073" name="det204"></location> + <location x="-2.317159" y="-0.647048" z="0.679780" name="det205"></location> + <location x="-2.330888" y="-0.647048" z="0.631104" name="det206"></location> + <location x="-2.339733" y="-0.647048" z="0.597478" name="det207"></location> + <location x="-2.348093" y="-0.647048" z="0.563727" name="det208"></location> + <location x="-2.355966" y="-0.647048" z="0.529860" name="det209"></location> + <location x="-2.363351" y="-0.647048" z="0.495883" name="det210"></location> + <location x="-2.373218" y="-0.647048" z="0.446280" name="det211"></location> + <location x="-2.379398" y="-0.647048" z="0.412063" name="det212"></location> + <location x="-2.385084" y="-0.647048" z="0.377760" name="det213"></location> + <location x="-2.390276" y="-0.647048" z="0.343380" name="det214"></location> + <location x="-2.394972" y="-0.647048" z="0.308928" name="det215"></location> + <location x="-2.400917" y="-0.647048" z="0.258703" name="det216"></location> + <location x="-2.404393" y="-0.647048" z="0.224107" name="det217"></location> + <location x="-2.407370" y="-0.647048" z="0.189464" name="det218"></location> + <location x="-2.409849" y="-0.647048" z="0.154782" name="det219"></location> + <location x="-2.411828" y="-0.647048" z="0.120068" name="det220"></location> + <location x="-2.413813" y="-0.647048" z="0.069532" name="det221"></location> + <location x="-2.414564" y="-0.647048" z="0.034770" name="det222"></location> + <location x="-2.414815" y="-0.647048" z="0.000000" name="det223"></location> + <location x="-2.414564" y="-0.647048" z="-0.034770" name="det224"></location> + <location x="-2.413813" y="-0.647048" z="-0.069532" name="det225"></location> + <location x="-2.411828" y="-0.647048" z="-0.120068" name="det226"></location> + <location x="-2.409849" y="-0.647048" z="-0.154782" name="det227"></location> + <location x="-2.407370" y="-0.647048" z="-0.189464" name="det228"></location> + <location x="-2.404393" y="-0.647048" z="-0.224107" name="det229"></location> + <location x="-2.400917" y="-0.647048" z="-0.258703" name="det230"></location> + <location x="-2.394972" y="-0.647048" z="-0.308928" name="det231"></location> + <location x="-2.390276" y="-0.647048" z="-0.343380" name="det232"></location> + <location x="-2.385084" y="-0.647048" z="-0.377760" name="det233"></location> + <location x="-2.379398" y="-0.647048" z="-0.412063" name="det234"></location> + <location x="-2.373218" y="-0.647048" z="-0.446280" name="det235"></location> + <location x="-2.363351" y="-0.647048" z="-0.495883" name="det236"></location> + <location x="-2.355966" y="-0.647048" z="-0.529860" name="det237"></location> + <location x="-2.348093" y="-0.647048" z="-0.563727" name="det238"></location> + <location x="-2.339733" y="-0.647048" z="-0.597478" name="det239"></location> + <location x="-2.330888" y="-0.647048" z="-0.631104" name="det240"></location> + <location x="-2.317159" y="-0.647048" z="-0.679780" name="det241"></location> + <location x="-2.307131" y="-0.647048" z="-0.713073" name="det242"></location> + <location x="-2.296625" y="-0.647048" z="-0.746219" name="det243"></location> + <location x="-2.285643" y="-0.647048" z="-0.779209" name="det244"></location> + <location x="-2.274186" y="-0.647048" z="-0.812038" name="det245"></location> + <location x="-2.256681" y="-0.647048" z="-0.859487" name="det246"></location> + <location x="-2.244072" y="-0.647048" z="-0.891891" name="det247"></location> + <location x="-2.230998" y="-0.647048" z="-0.924110" name="det248"></location> + <location x="-2.217461" y="-0.647048" z="-0.956137" name="det249"></location> + <location x="-2.203464" y="-0.647048" z="-0.987966" name="det250"></location> + <location x="-2.182290" y="-0.647048" z="-1.033895" name="det251"></location> + <location x="-2.167178" y="-0.647048" z="-1.065209" name="det252"></location> + <location x="-2.151616" y="-0.647048" z="-1.096303" name="det253"></location> + <location x="-2.135607" y="-0.647048" z="-1.127169" name="det254"></location> + <location x="-2.119157" y="-0.647048" z="-1.157802" name="det255"></location> + <location x="-2.094445" y="-0.647048" z="-1.201928" name="det256"></location> + <location x="-2.076922" y="-0.647048" z="-1.231960" name="det257"></location> + <location x="-2.058968" y="-0.647048" z="-1.261737" name="det258"></location> + <location x="-2.040587" y="-0.647048" z="-1.291252" name="det259"></location> + <location x="-2.021784" y="-0.647048" z="-1.320500" name="det260"></location> + <location x="-1.993686" y="-0.647048" z="-1.362551" name="det261"></location> + <location x="-1.973861" y="-0.647048" z="-1.391116" name="det262"></location> + <location x="-1.953626" y="-0.647048" z="-1.419392" name="det263"></location> + <location x="-1.932986" y="-0.647048" z="-1.447374" name="det264"></location> + <location x="-1.911946" y="-0.647048" z="-1.475056" name="det265"></location> + </component> + </type> + <type name="upperBank"> + <component type="pack"> + <location x="-0.760234" y="0.647048" z="2.292024" name="det266"></location> + <location x="-0.793157" y="0.647048" z="2.280840" name="det267"></location> + <location x="-0.825915" y="0.647048" z="2.269183" name="det268"></location> + <location x="-0.858502" y="0.647048" z="2.257056" name="det269"></location> + <location x="-0.890912" y="0.647048" z="2.244461" name="det270"></location> + <location x="-0.957104" y="0.647048" z="2.217043" name="det271"></location> + <location x="-0.988927" y="0.647048" z="2.203033" name="det272"></location> + <location x="-1.020545" y="0.647048" z="2.188565" name="det273"></location> + <location x="-1.051951" y="0.647048" z="2.173644" name="det274"></location> + <location x="-1.083139" y="0.647048" z="2.158272" name="det275"></location> + <location x="-1.146690" y="0.647048" z="2.125190" name="det276"></location> + <location x="-1.177171" y="0.647048" z="2.108459" name="det277"></location> + <location x="-1.207407" y="0.647048" z="2.091291" name="det278"></location> + <location x="-1.237394" y="0.647048" z="2.073689" name="det279"></location> + <location x="-1.267123" y="0.647048" z="2.055658" name="det280"></location> + <location x="-1.327549" y="0.647048" z="2.017162" name="det281"></location> + <location x="-1.356456" y="0.647048" z="1.997838" name="det282"></location> + <location x="-1.385081" y="0.647048" z="1.978100" name="det283"></location> + <location x="-1.413419" y="0.647048" z="1.957952" name="det284"></location> + <location x="-1.441464" y="0.647048" z="1.937398" name="det285"></location> + <location x="-1.498305" y="0.647048" z="1.893783" name="det286"></location> + <location x="-1.525417" y="0.647048" z="1.872013" name="det287"></location> + <location x="-1.552213" y="0.647048" z="1.849855" name="det288"></location> + <location x="-1.578687" y="0.647048" z="1.827314" name="det289"></location> + <location x="-1.604834" y="0.647048" z="1.804394" name="det290"></location> + <location x="-1.642270" y="0.647048" z="1.770389" name="det291"></location> + <location x="-1.667591" y="0.647048" z="1.746559" name="det292"></location> + <location x="-1.692566" y="0.647048" z="1.722368" name="det293"></location> + <location x="-1.717190" y="0.647048" z="1.697819" name="det294"></location> + <location x="-1.741458" y="0.647048" z="1.672918" name="det295"></location> + <location x="-1.776111" y="0.647048" z="1.636081" name="det296"></location> + <location x="-1.799484" y="0.647048" z="1.610338" name="det297"></location> + <location x="-1.822484" y="0.647048" z="1.584261" name="det298"></location> + <location x="-1.845106" y="0.647048" z="1.557856" name="det299"></location> + <location x="-1.867345" y="0.647048" z="1.531128" name="det300"></location> + <location x="-1.899001" y="0.647048" z="1.491685" name="det301"></location> + <location x="-1.920282" y="0.647048" z="1.464188" name="det302"></location> + <location x="-1.941165" y="0.647048" z="1.436387" name="det303"></location> + <location x="-1.961646" y="0.647048" z="1.408288" name="det304"></location> + <location x="-1.981720" y="0.647048" z="1.379897" name="det305"></location> + <location x="-2.010183" y="0.647048" z="1.338093" name="det306"></location> + <location x="-2.029242" y="0.647048" z="1.309010" name="det307"></location> + <location x="-2.047879" y="0.647048" z="1.279657" name="det308"></location> + <location x="-2.066092" y="0.647048" z="1.250038" name="det309"></location> + <location x="-2.083876" y="0.647048" z="1.220160" name="det310"></location> + <location x="-2.108972" y="0.647048" z="1.176251" name="det311"></location> + <location x="-2.125690" y="0.647048" z="1.145763" name="det312"></location> + <location x="-2.141967" y="0.647048" z="1.115037" name="det313"></location> + <location x="-2.157799" y="0.647048" z="1.084081" name="det314"></location> + <location x="-2.173185" y="0.647048" z="1.052899" name="det315"></location> + <location x="-2.194759" y="0.647048" z="1.007157" name="det316"></location> + <location x="-2.209033" y="0.647048" z="0.975451" name="det317"></location> + <location x="-2.222849" y="0.647048" z="0.943543" name="det318"></location> + <location x="-2.236204" y="0.647048" z="0.911440" name="det319"></location> + <location x="-2.249095" y="0.647048" z="0.879147" name="det320"></location> + <location x="-2.373218" y="0.647048" z="0.446280" name="det321"></location> + <location x="-2.379398" y="0.647048" z="0.412063" name="det322"></location> + <location x="-2.385084" y="0.647048" z="0.377760" name="det323"></location> + <location x="-2.390276" y="0.647048" z="0.343380" name="det324"></location> + <location x="-2.394972" y="0.647048" z="0.308928" name="det325"></location> + <location x="-2.400917" y="0.647048" z="0.258703" name="det326"></location> + <location x="-2.404393" y="0.647048" z="0.224107" name="det327"></location> + <location x="-2.407370" y="0.647048" z="0.189464" name="det328"></location> + <location x="-2.409849" y="0.647048" z="0.154782" name="det329"></location> + <location x="-2.411828" y="0.647048" z="0.120068" name="det330"></location> + <location x="-2.413813" y="0.647048" z="0.069532" name="det331"></location> + <location x="-2.414564" y="0.647048" z="0.034770" name="det332"></location> + <location x="-2.414815" y="0.647048" z="0.000000" name="det333"></location> + <location x="-2.414564" y="0.647048" z="-0.034770" name="det334"></location> + <location x="-2.413813" y="0.647048" z="-0.069532" name="det335"></location> + <location x="-2.411828" y="0.647048" z="-0.120068" name="det336"></location> + <location x="-2.409849" y="0.647048" z="-0.154782" name="det337"></location> + <location x="-2.407370" y="0.647048" z="-0.189464" name="det338"></location> + <location x="-2.404393" y="0.647048" z="-0.224107" name="det339"></location> + <location x="-2.400917" y="0.647048" z="-0.258703" name="det340"></location> + <location x="-2.394972" y="0.647048" z="-0.308928" name="det341"></location> + <location x="-2.390276" y="0.647048" z="-0.343380" name="det342"></location> + <location x="-2.385084" y="0.647048" z="-0.377760" name="det343"></location> + <location x="-2.379398" y="0.647048" z="-0.412063" name="det344"></location> + <location x="-2.373218" y="0.647048" z="-0.446280" name="det345"></location> + <location x="-2.363351" y="0.647048" z="-0.495883" name="det346"></location> + <location x="-2.355966" y="0.647048" z="-0.529860" name="det347"></location> + <location x="-2.348093" y="0.647048" z="-0.563727" name="det348"></location> + <location x="-2.339733" y="0.647048" z="-0.597478" name="det349"></location> + <location x="-2.330888" y="0.647048" z="-0.631104" name="det350"></location> + <location x="-2.317159" y="0.647048" z="-0.679780" name="det351"></location> + <location x="-2.307131" y="0.647048" z="-0.713073" name="det352"></location> + <location x="-2.296625" y="0.647048" z="-0.746219" name="det353"></location> + <location x="-2.285643" y="0.647048" z="-0.779209" name="det354"></location> + <location x="-2.274186" y="0.647048" z="-0.812038" name="det355"></location> + <location x="-2.256681" y="0.647048" z="-0.859487" name="det356"></location> + <location x="-2.244072" y="0.647048" z="-0.891891" name="det357"></location> + <location x="-2.230998" y="0.647048" z="-0.924110" name="det358"></location> + <location x="-2.217461" y="0.647048" z="-0.956137" name="det359"></location> + <location x="-2.203464" y="0.647048" z="-0.987966" name="det360"></location> + <location x="-2.182290" y="0.647048" z="-1.033895" name="det361"></location> + <location x="-2.167178" y="0.647048" z="-1.065209" name="det362"></location> + <location x="-2.151616" y="0.647048" z="-1.096303" name="det363"></location> + <location x="-2.135607" y="0.647048" z="-1.127169" name="det364"></location> + <location x="-2.119157" y="0.647048" z="-1.157802" name="det365"></location> + <location x="-2.094445" y="0.647048" z="-1.201928" name="det366"></location> + <location x="-2.076922" y="0.647048" z="-1.231960" name="det367"></location> + <location x="-2.058968" y="0.647048" z="-1.261737" name="det368"></location> + <location x="-2.040587" y="0.647048" z="-1.291252" name="det369"></location> + <location x="-2.021784" y="0.647048" z="-1.320500" name="det370"></location> + <location x="-1.993686" y="0.647048" z="-1.362551" name="det371"></location> + <location x="-1.973861" y="0.647048" z="-1.391116" name="det372"></location> + <location x="-1.953626" y="0.647048" z="-1.419392" name="det373"></location> + <location x="-1.932986" y="0.647048" z="-1.447374" name="det374"></location> + <location x="-1.911946" y="0.647048" z="-1.475056" name="det375"></location> + </component> + </type> + <type name="pack" is="detector"> + <cuboid id="pack-pixel-shape"> + <left-front-bottom-point z="-0.005" y="-0.2" x="-0.01" /> + <left-front-top-point z="-0.005" y="0.2" x="-0.01" /> + <left-back-bottom-point z="-0.005" y="-0.2" x="0.01" /> + <right-front-bottom-point z="0.005" y="-0.2" x="-0.01" /> + </cuboid> + <algebra val="pack-pixel-shape" /> + </type> +</instrument> diff --git a/Code/Mantid/instrument/Facilities.xml b/Code/Mantid/instrument/Facilities.xml index 3125b7b45a30691c6c9ee81a6e7e894b9c0e60ca..eae6469139e26e9144709fbbc6fdb88eb0acf1c4 100644 --- a/Code/Mantid/instrument/Facilities.xml +++ b/Code/Mantid/instrument/Facilities.xml @@ -480,6 +480,13 @@ </facility> + +<facility name="PSI" FileExtensions=".nxs,.hdf"> + <instrument name="FOCUS at SINQ"> + <technique>Neutron time-of-flight Spectroscopy</technique> + </instrument> +</facility> + <facility name="TEST" FileExtensions=".nxs,.dat,.xml"> <livedata listener="MockILiveListener"/>