@@ -26,7 +26,10 @@ Result<> ReadH5EspritData::operator()()
26
26
// -----------------------------------------------------------------------------
27
27
Result<> ReadH5EspritData::copyRawEbsdData (int index)
28
28
{
29
- const auto & imageGeom = m_DataStructure.getDataRefAs <ImageGeom>(m_InputValues->ImageGeometryPath );
29
+ const DataPath imagePath (m_InputValues->ImageGeometryPath );
30
+ const DataPath cellAMPath = imagePath.createChildPath (m_InputValues->CellAttributeMatrixName );
31
+
32
+ const auto & imageGeom = m_DataStructure.getDataRefAs <ImageGeom>(imagePath);
30
33
const usize totalPoints = imageGeom.getNumXCells () * imageGeom.getNumYCells ();
31
34
const usize offset = index * totalPoints;
32
35
@@ -35,28 +38,28 @@ Result<> ReadH5EspritData::copyRawEbsdData(int index)
35
38
const auto * phi1 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::phi1));
36
39
const auto * phi = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::PHI));
37
40
const auto * phi2 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::phi2));
38
- auto & eulerAngles = m_DataStructure.getDataRefAs <Float32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::Esprit::EulerAngles));
41
+ auto & eulerAngles = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath .createChildPath (EbsdLib::Esprit::EulerAngles));
39
42
40
43
const auto * m1 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::MAD));
41
- auto & mad = m_DataStructure.getDataRefAs <Float32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::MAD));
44
+ auto & mad = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::MAD));
42
45
43
46
const auto * nIndBands = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::NIndexedBands));
44
- auto & nIndexBands = m_DataStructure.getDataRefAs <Int32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::NIndexedBands));
47
+ auto & nIndexBands = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::NIndexedBands));
45
48
46
49
const auto * p1 = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::Phase));
47
- auto & phase = m_DataStructure.getDataRefAs <Int32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::Phase));
50
+ auto & phase = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::Phase));
48
51
49
52
const auto * radBandCnt = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::RadonBandCount));
50
- auto & radonBandCount = m_DataStructure.getDataRefAs <Int32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::RadonBandCount));
53
+ auto & radonBandCount = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::RadonBandCount));
51
54
52
55
const auto * radQual = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::RadonQuality));
53
- auto & radonQuality = m_DataStructure.getDataRefAs <Float32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::RadonQuality));
56
+ auto & radonQuality = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::RadonQuality));
54
57
55
58
const auto * xBm = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::XBEAM));
56
- auto & xBeam = m_DataStructure.getDataRefAs <Int32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::XBEAM));
59
+ auto & xBeam = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::XBEAM));
57
60
58
61
const auto * yBm = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::YBEAM));
59
- auto & yBeam = m_DataStructure.getDataRefAs <Int32Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::YBEAM));
62
+ auto & yBeam = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::YBEAM));
60
63
61
64
for (size_t i = 0 ; i < totalPoints; i++)
62
65
{
@@ -91,7 +94,7 @@ Result<> ReadH5EspritData::copyRawEbsdData(int index)
91
94
std::vector<usize> pDimsV (2 );
92
95
pDimsV[0 ] = pDims[0 ];
93
96
pDimsV[1 ] = pDims[1 ];
94
- auto & patternData = m_DataStructure.getDataRefAs <UInt8Array>(m_InputValues-> CellAttributeMatrixPath .createChildPath (EbsdLib::H5Esprit::RawPatterns));
97
+ auto & patternData = m_DataStructure.getDataRefAs <UInt8Array>(cellAMPath .createChildPath (EbsdLib::H5Esprit::RawPatterns));
95
98
const usize numComponents = patternData.getNumberOfComponents ();
96
99
for (usize i = 0 ; i < totalPoints; i++)
97
100
{
@@ -105,3 +108,88 @@ Result<> ReadH5EspritData::copyRawEbsdData(int index)
105
108
106
109
return {};
107
110
}
111
+
112
+ // -----------------------------------------------------------------------------
113
+ Result<> ReadH5EspritData::copyRawEbsdData (const std::string& scanName)
114
+ {
115
+ const DataPath imagePath ({scanName});
116
+ const DataPath cellAMPath = imagePath.createChildPath (m_InputValues->CellAttributeMatrixName );
117
+
118
+ const auto & imageGeom = m_DataStructure.getDataRefAs <ImageGeom>(imagePath);
119
+ const usize totalPoints = imageGeom.getNumXCells () * imageGeom.getNumYCells ();
120
+
121
+ {
122
+ const float32 degToRad = m_EspritInputValues->DegreesToRadians ? Constants::k_PiOver180F : 1 .0f ;
123
+ const auto * phi1 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::phi1));
124
+ const auto * phi = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::PHI));
125
+ const auto * phi2 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::phi2));
126
+ auto & eulerAngles = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath.createChildPath (EbsdLib::Esprit::EulerAngles));
127
+
128
+ const auto * m1 = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::MAD));
129
+ auto & mad = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::MAD));
130
+
131
+ const auto * nIndBands = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::NIndexedBands));
132
+ auto & nIndexBands = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::NIndexedBands));
133
+
134
+ const auto * p1 = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::Phase));
135
+ auto & phase = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::Phase));
136
+
137
+ const auto * radBandCnt = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::RadonBandCount));
138
+ auto & radonBandCount = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::RadonBandCount));
139
+
140
+ const auto * radQual = reinterpret_cast <float32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::RadonQuality));
141
+ auto & radonQuality = m_DataStructure.getDataRefAs <Float32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::RadonQuality));
142
+
143
+ const auto * xBm = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::XBEAM));
144
+ auto & xBeam = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::XBEAM));
145
+
146
+ const auto * yBm = reinterpret_cast <int32*>(m_Reader->getPointerByName (EbsdLib::H5Esprit::YBEAM));
147
+ auto & yBeam = m_DataStructure.getDataRefAs <Int32Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::YBEAM));
148
+
149
+ for (size_t i = 0 ; i < totalPoints; i++)
150
+ {
151
+ // Condense the Euler Angles from 3 separate arrays into a single 1x3 array
152
+ eulerAngles[3 * i] = phi1[i] * degToRad;
153
+ eulerAngles[3 * i + 1 ] = phi[i] * degToRad;
154
+ eulerAngles[3 * i + 2 ] = phi2[i] * degToRad;
155
+
156
+ mad[i] = m1[i];
157
+
158
+ nIndexBands[i] = nIndBands[i];
159
+
160
+ phase[i] = p1[i];
161
+
162
+ radonBandCount[i] = radBandCnt[i];
163
+
164
+ radonQuality[i] = radQual[i];
165
+
166
+ xBeam[i] = xBm[i];
167
+
168
+ yBeam[i] = yBm[i];
169
+ }
170
+ }
171
+
172
+ if (m_InputValues->ReadPatternData )
173
+ {
174
+ const uint8* patternDataPtr = m_Reader->getPatternData ();
175
+ std::array<int32, 2 > pDims = {{0 , 0 }};
176
+ m_Reader->getPatternDims (pDims);
177
+ if (pDims[0 ] != 0 && pDims[1 ] != 0 )
178
+ {
179
+ std::vector<usize> pDimsV (2 );
180
+ pDimsV[0 ] = pDims[0 ];
181
+ pDimsV[1 ] = pDims[1 ];
182
+ auto & patternData = m_DataStructure.getDataRefAs <UInt8Array>(cellAMPath.createChildPath (EbsdLib::H5Esprit::RawPatterns));
183
+ const usize numComponents = patternData.getNumberOfComponents ();
184
+ for (usize i = 0 ; i < totalPoints; i++)
185
+ {
186
+ for (usize j = 0 ; j < numComponents; ++j)
187
+ {
188
+ patternData[numComponents * i + j] = patternDataPtr[numComponents * i + j];
189
+ }
190
+ }
191
+ }
192
+ }
193
+
194
+ return {};
195
+ }
0 commit comments