Mantid
Loading...
Searching...
No Matches
NXcanSASDefinitions.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
9#include <map>
10#include <string>
11
12namespace Mantid {
13namespace DataHandling {
14
15namespace NXcanSAS {
16
18namespace StandardProperties {
19static const std::string INPUT_WORKSPACE = "InputWorkspace";
20static const std::string FILENAME = "Filename";
21static const std::string RADIATION_SOURCE = "RadiationSource";
22static const std::string DETECTOR_NAMES = "DetectorNames";
23static const std::string TRANSMISSION = "Transmission";
24static const std::string TRANSMISSION_CAN = "TransmissionCan";
25static const std::string SAMPLE_TRANS_RUN_NUMBER = "SampleTransmissionRunNumber";
26static const std::string SAMPLE_DIRECT_RUN_NUMBER = "SampleDirectRunNumber";
27static const std::string CAN_SCATTER_RUN_NUMBER = "CanScatterRunNumber";
28static const std::string CAN_DIRECT_RUN_NUMBER = "CanDirectRunNumber";
29static const std::string BKG_SUB_WORKSPACE = "BackgroundSubtractionWorkspace";
30static const std::string BKG_SUB_SCALE = "BackgroundSubtractionScaleFactor";
31static const std::string GEOMETRY = "Geometry";
32static const std::string SAMPLE_HEIGHT = "SampleHeight";
33static const std::string SAMPLE_WIDTH = "SampleWidth";
34static const std::string SAMPLE_THICKNESS = "SampleThickness";
35} // namespace StandardProperties
36
37namespace PolProperties {
38static const std::string INPUT_SPIN_STATES = "InputSpinStates";
39static const std::string POLARIZER_COMP_NAME = "PolarizerComponentName";
40static const std::string ANALYZER_COMP_NAME = "AnalyzerComponentName";
41static const std::string FLIPPER_COMP_NAMES = "FlipperComponentNames";
42static const std::string MAG_FIELD_STRENGTH_LOGNAME = "MagneticFieldStrengthLogName";
43static const std::string MAG_FIELD_DIR = "MagneticFieldDirection";
44inline std::map<std::string, std::string> POL_COMPONENTS = {
45 {"polarizer", POLARIZER_COMP_NAME}, {"analyzer", ANALYZER_COMP_NAME}, {"flipper", FLIPPER_COMP_NAMES}};
46} // namespace PolProperties
47
48namespace SpinStateNXcanSAS {
49static const std::string SPIN_PARA = "+1";
50static const std::string SPIN_ANTIPARA = "-1";
51static const std::string SPIN_ZERO = "0";
52} // namespace SpinStateNXcanSAS
53
54// NXcanSAS file extension
55const std::string NX_CANSAS_EXTENSION = ".h5";
56
57// NXcanSAS Tag Definitions
58const std::string sasUnitAttr = "units";
59const std::string sasSignal = "signal";
60const std::string sasSeparator = ",";
61const std::string sasAngstrom = "A";
62const std::string sasNone = "none";
63const std::string sasIntensity = "1/cm";
64const std::string sasMomentumTransfer = "1/A";
65const std::string sasNxclass = "NX_class";
66const std::string sasCanSASclass = "canSAS_class";
67
74const std::string sasUncertaintyAttr = "uncertainty";
75const std::string sasUncertaintiesAttr = "uncertainties";
76
77// SASentry
78const std::string sasEntryClassAttr = "SASentry";
79const std::string nxEntryClassAttr = "NXentry";
80const std::string sasEntryGroupName = "sasentry";
81const std::string sasEntryVersionAttr = "version";
82const std::string sasEntryVersionAttrValue = "1.1";
83const std::string sasEntryDefinition = "definition";
84const std::string sasEntryDefinitionFormat = "NXcanSAS";
85const std::string sasEntryTitle = "title";
86const std::string sasEntryRun = "run";
87const std::string sasEntryRunInLogs = "run_number";
88const std::string sasEntryDefaultSuffix = "01";
89
90// SASdata
91const std::string sasDataClassAttr = "SASdata";
92const std::string nxDataClassAttr = "NXdata";
93const std::string sasDataGroupName = "sasdata";
94const std::string sasDataIAxesAttr = "I_axes";
95const std::string sasDataIUncertaintyAttr = "I_uncertainty";
96const std::string sasDataIUncertaintiesAttr = "I_uncertainties";
97const std::string sasDataQIndicesAttr = "Q_indices";
98const std::string sasDataQUncertaintyAttr = "Q_uncertainty";
99const std::string sasDataQUncertaintiesAttr = "Q_uncertainties";
100const std::string sasDataMaskIndicesAttr = "Mask_indices";
101
102const std::string sasDataQ = "Q";
103const std::string sasDataQx = "Qx";
104const std::string sasDataQy = "Qy";
105const std::string sasDataQdev = "Qdev";
106
107const std::string sasDataI = "I";
108const std::string sasDataIdev = "Idev";
109const std::string sasDataMask = "Mask";
110
111// SASinstrument
112const std::string sasInstrumentClassAttr = "SASinstrument";
113const std::string nxInstrumentClassAttr = "NXinstrument";
114const std::string sasInstrumentGroupName = "sasinstrument";
115const std::string sasInstrumentName = "name";
116
117const std::string sasInstrumentSourceClassAttr = "SASsource";
118const std::string nxInstrumentSourceClassAttr = "NXsource";
119
120const std::string sasInstrumentSourceGroupName = "sassource";
121const std::string sasInstrumentSourceRadiation = "type";
122
123const std::string sasInstrumentApertureClassAttr = "SASaperture";
124const std::string nxInstrumentApertureClassAttr = "NXaperture";
125
126const std::string sasInstrumentApertureGroupName = "sasaperture";
127const std::string sasInstrumentApertureShape = "shape";
128const std::string sasInstrumentApertureGapWidth = "x_gap";
129const std::string sasInstrumentApertureGapHeight = "y_gap";
130
131const std::string sasInstrumentCollimationClassAttr = "SAScollimation";
132const std::string nxInstrumentCollimationClassAttr = "NXcollimator";
133
134const std::string sasInstrumentCollimationGroupName = "sascollimation";
135
136const std::string sasInstrumentDetectorClassAttr = "SASdetector";
137const std::string nxInstrumentDetectorClassAttr = "NXdetector";
138
139const std::string sasInstrumentDetectorGroupName = "sasdetector";
140const std::string sasInstrumentDetectorName = "name";
141const std::string sasInstrumentDetectorSdd = "SDD";
143
144const std::string sasInstrumentSampleClassAttr = "SASsample";
145const std::string nxInstrumentSampleClassAttr = "NXsample";
146
147const std::string sasInstrumentSampleGroupAttr = "sassample";
148const std::string sasInstrumentSampleId = "ID";
149const std::string sasInstrumentSampleThickness = "thickness";
150
151const std::string sasBeamAndSampleSizeUnitAttrValue = "mm";
152
153const std::string sasInstrumentIDF = "idf";
154
155// SASpolarization
156// WIP: Initial proposal: https://wiki.cansas.org/index.php?title=NXcanSAS_v1.1
157const std::string sasDataPout = "Pout";
158const std::string sasDataPin = "Pin";
159const std::string sasDataPoutIndicesAttr = "Pout_indices";
160const std::string sasDataPinIndicesAttr = "Pin_indices";
161constexpr int sasDataPoutIndicesValue = 1;
162constexpr int sasDataPinIndicesValue = 0;
163const std::string sasDataPolarizationUnitAttr = "none";
164
166 explicit InstrumentPolarizer(const std::string &type, const std::string &name) : m_type(type), m_name(name) {};
167 std::string sasPolarizerClassAttr() const { return "SAS" + m_type; }
168 std::string sasPolarizerGroupAttr() const { return "sas" + m_type; }
169 std::string nxPolarizerClassAttr() const { return (m_type == "flipper") ? "NX" + m_type : "NXpolarizer"; }
170 static std::string sasPolarizerName() { return "name"; }
171 static std::string sasPolarizerDeviceType() { return "type"; }
172 static std::string sasPolarizerIDFDeviceType() { return "device-type"; }
173 static std::string sasPolarizerDistance() { return "distance"; }
174 static std::string sasPolarizerDistanceUnitAttr() { return "m"; }
175 const std::string &getComponentName() const { return m_name; }
176 const std::string &getComponentType() const { return m_type; }
177
178private:
179 std::string m_type;
180 std::string m_name;
181};
182
183const std::string sasSampleMagneticField = "magnetic_field";
184const std::string sasSampleEMFieldDirectionAttr = "direction";
185const std::string sasSampleEMFieldDirectionSphericalAttr = "direction_spherical";
186const std::string sasSampleEMFieldDirectionPolar = "polar_angle";
187const std::string sasSampleEMFieldDirectionAzimuthal = "azimuthal_angle";
188const std::string sasSampleEMFieldDirectionRotation = "rotation_angle";
189const std::string sasSampleEMFieldDirectionUnitsAttr = "degrees";
190
191// SASprocess
192const std::string sasProcessClassAttr = "SASprocess";
193const std::string nxProcessClassAttr = "NXprocess";
194const std::string sasProcessGroupName = "sasprocess";
195const std::string sasProcessName = "name";
196const std::string sasProcessNameValue = "Mantid_generated_NXcanSAS";
197const std::string sasProcessDate = "date";
198const std::string sasProcessTermSvn = "svn";
199const std::string sasProcessTermCan = "can_trans_run";
200const std::string sasProcessTermUserFile = "user_file";
201const std::string sasProcessUserFileInLogs = "UserFile";
202const std::string sasProcessTermBatchFile = "batch_file";
203const std::string sasProcessBatchFileInLogs = "BatchFile";
204
205// SASnote
206const std::string sasNoteClassAttr = "SASnote";
207const std::string nxNoteClassAttr = "NXnote";
208const std::string sasNoteGroupName = "sasnote";
209const std::string sasProcessTermSampleTrans = "sample_trans_run";
210const std::string sasProcessTermSampleDirect = "sample_direct_run";
211const std::string sasProcessTermCanScatter = "can_scatter_run";
212const std::string sasProcessTermCanDirect = "can_direct_run";
213const std::string sasProcessTermScaledBgSubWorkspace = "scaled_bgsub_workspace";
214const std::string sasProcessTermScaledBgSubScaleFactor = "scaled_bgsub_scale_factor";
215
216// SAStransmission_spectrum
217const std::string sasTransmissionSpectrumClassAttr = "SAStransmission_spectrum";
218const std::string nxTransmissionSpectrumClassAttr = "NXdata";
219const std::string sasTransmissionSpectrumGroupName = "sastransmission_spectrum";
220const std::string sasTransmissionSpectrumTIndices = "T_indices";
221const std::string sasTransmissionSpectrumTUncertainty = "T_uncertainty";
222const std::string sasTransmissionSpectrumTUncertainties = "T_uncertainties";
223const std::string sasTransmissionSpectrumNameAttr = "name";
226const std::string sasTransmissionSpectrumTimeStampAttr = "timestamp";
227const std::string sasTransmissionSpectrumLambda = "lambda";
228const std::string sasTransmissionSpectrumT = "T";
229const std::string sasTransmissionSpectrumTdev = "Tdev";
230} // namespace NXcanSAS
231} // namespace DataHandling
232} // namespace Mantid
std::string name
Definition Run.cpp:60
std::map< std::string, std::string > POL_COMPONENTS
const std::string sasInstrumentApertureGapWidth
const std::string sasTransmissionSpectrumNameAttr
const std::string sasProcessTermScaledBgSubScaleFactor
const std::string sasTransmissionSpectrumNameCanAttrValue
const std::string sasInstrumentApertureGapHeight
const std::string sasInstrumentSampleClassAttr
const std::string sasSampleEMFieldDirectionAttr
const std::string sasInstrumentSourceRadiation
const std::string sasDataQUncertaintiesAttr
const std::string sasTransmissionSpectrumTdev
const std::string sasInstrumentApertureClassAttr
const std::string sasInstrumentCollimationGroupName
const std::string nxTransmissionSpectrumClassAttr
const std::string sasSampleEMFieldDirectionUnitsAttr
const std::string sasTransmissionSpectrumTIndices
const std::string sasUncertaintyAttr
Standards state that "uncertainties" should be used, however different facilities interpret the stand...
const std::string sasTransmissionSpectrumTUncertainties
const std::string nxInstrumentCollimationClassAttr
const std::string sasSampleEMFieldDirectionAzimuthal
const std::string sasTransmissionSpectrumLambda
const std::string sasInstrumentDetectorClassAttr
const std::string sasInstrumentSampleThickness
const std::string sasInstrumentSourceGroupName
const std::string nxInstrumentSourceClassAttr
const std::string sasBeamAndSampleSizeUnitAttrValue
const std::string sasSampleEMFieldDirectionSphericalAttr
const std::string sasTransmissionSpectrumNameSampleAttrValue
const std::string sasInstrumentCollimationClassAttr
const std::string nxInstrumentApertureClassAttr
const std::string nxInstrumentSampleClassAttr
const std::string sasInstrumentDetectorSddUnitAttrValue
const std::string sasDataPolarizationUnitAttr
const std::string sasTransmissionSpectrumTUncertainty
const std::string sasInstrumentSourceClassAttr
const std::string nxInstrumentDetectorClassAttr
const std::string sasInstrumentApertureGroupName
const std::string sasDataIUncertaintiesAttr
const std::string sasSampleEMFieldDirectionRotation
const std::string sasTransmissionSpectrumTimeStampAttr
const std::string sasTransmissionSpectrumGroupName
const std::string sasProcessTermScaledBgSubWorkspace
const std::string sasInstrumentDetectorGroupName
const std::string sasTransmissionSpectrumClassAttr
const std::string sasInstrumentSampleGroupAttr
const std::string sasSampleEMFieldDirectionPolar
Helper class which provides the Collimation Length for SANS instruments.
InstrumentPolarizer(const std::string &type, const std::string &name)