diff --git a/Code/Mantid/Framework/Nexus/inc/MantidNexus/NexusFileIO.h b/Code/Mantid/Framework/Nexus/inc/MantidNexus/NexusFileIO.h index 38b267003fe9..ffb24afd3a03 100644 --- a/Code/Mantid/Framework/Nexus/inc/MantidNexus/NexusFileIO.h +++ b/Code/Mantid/Framework/Nexus/inc/MantidNexus/NexusFileIO.h @@ -5,6 +5,7 @@ #include "MantidAPI/Progress.h" #include "MantidKernel/TimeSeriesProperty.h" #include "MantidDataObjects/EventWorkspace.h" +#include "MantidDataObjects/VectorColumn.h" #include #include #include @@ -180,6 +181,9 @@ namespace Mantid template std::string logValueType()const{return "unknown";} + template + void writeNexusVectorColumn(const std::string& columnName, + const boost::shared_ptr< const DataObjects::VectorColumn >& column) const; }; /** @@ -355,6 +359,15 @@ namespace Mantid status=NXclosegroup(fileID); } + template + void NexusFileIO::writeNexusVectorColumn(const std::string& columnName, + const boost::shared_ptr >& column) const + { + UNUSED_ARG(column); + int dims[1]; dims[0] = 3; + int fake_data[3]; fake_data[0] = 1; fake_data[1] = 2; fake_data[2] = 3; + NXwritedata(columnName.c_str(), NX_INT32, 1, dims, (void *)(&fake_data), false); + } } // namespace NeXus } // namespace Mantid diff --git a/Code/Mantid/Framework/Nexus/src/NexusFileIO.cpp b/Code/Mantid/Framework/Nexus/src/NexusFileIO.cpp index 1e04569298af..d7d2b4edebf8 100644 --- a/Code/Mantid/Framework/Nexus/src/NexusFileIO.cpp +++ b/Code/Mantid/Framework/Nexus/src/NexusFileIO.cpp @@ -24,6 +24,7 @@ #include "MantidDataObjects/TableWorkspace.h" #include "MantidDataObjects/PeaksWorkspace.h" #include "MantidDataObjects/TableColumn.h" +#include "MantidDataObjects/VectorColumn.h" #include "MantidDataObjects/RebinnedOutput.h" #include "MantidAPI/ITableWorkspace.h" #include "MantidAPI/AlgorithmHistory.h" @@ -480,7 +481,7 @@ using namespace DataObjects; for (size_t i = 0; i < itableworkspace->columnCount(); i++) { - boost::shared_ptr col = itableworkspace->getColumn(i); + Column_const_sptr col = itableworkspace->getColumn(i); std::string str = "column_" + boost::lexical_cast(i+1); @@ -554,6 +555,11 @@ using namespace DataObjects; NXclosedata(fileID); } + else if ( col->isType< std::vector >() ) + { + auto vecCol = boost::dynamic_pointer_cast< const VectorColumn >(col); + writeNexusVectorColumn(str, vecCol); + } // write out title NXopendata(fileID, str.c_str()); @@ -565,9 +571,6 @@ using namespace DataObjects; return((status==NX_ERROR)?3:0); } - - - //------------------------------------------------------------------------------------- /** Write out a combined chunk of event data *