Skip to content
Snippets Groups Projects
Commit 47f1007c authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

merge fct

parent 55045a17
No related branches found
No related tags found
1 merge request!154further simplification of ProcessedSample
......@@ -125,12 +125,18 @@ ProcessedSample::ProcessedSample(const MultiLayer& sample, const SimulationOptio
, m_slices{slicify(sample, options).setBField(sample.externalField())}
, m_layouts{collectLayouts(sample, m_slices, m_polarized)}
{
mergeRegionMap();
SliceStack fresnelStack = m_slices;
if (options.useAvgMaterials())
// modify fresnelStack
SampleUtils::Preprocessor::regionalAverage(fresnelStack, m_region_map);
if (options.useAvgMaterials()) { // modify fresnelStack
std::map<size_t, std::vector<HomogeneousRegion>> region_map;
for (const ProcessedLayout& layout: m_layouts) {
for (const auto& entry : layout.regionMap()) {
const size_t i = entry.first;
const auto& regions = entry.second;
region_map[i].insert(region_map[i].cbegin(), regions.cbegin(), regions.cend());
}
}
SampleUtils::Preprocessor::regionalAverage(fresnelStack, region_map);
}
const bool useCache = !options.isIntegrate();
if (m_slices.containsMagneticMaterial())
m_fresnel_map = std::make_unique<MatrixFresnelMap>(
......@@ -227,16 +233,3 @@ double ProcessedSample::crossCorrSpectralFun(const kvector_t kvec, size_t j, siz
+ (sigma_j / sigma_k) * rough_k->getSpectralFun(kvec))
* std::exp(-1 * std::abs(z_j - z_k) / m_crossCorrLength);
}
//! Modifies m_region_map.
void ProcessedSample::mergeRegionMap()
{
for (const ProcessedLayout& layout: m_layouts) {
for (const auto& entry : layout.regionMap()) {
size_t i = entry.first;
auto& regions = entry.second;
m_region_map[i].insert(m_region_map[i].begin(), regions.begin(), regions.end());
}
}
}
......@@ -64,15 +64,12 @@ public:
double crossCorrSpectralFun(const kvector_t kvec, size_t j, size_t k) const;
private:
void mergeRegionMap();
const bool m_polarized;
const double m_crossCorrLength;
const kvector_t m_ext_field;
const SliceStack m_slices;
std::vector<ProcessedLayout> m_layouts;
std::unique_ptr<IFresnelMap> m_fresnel_map;
std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
};
#endif // BORNAGAIN_SAMPLE_PROCESSED_PROCESSEDSAMPLE_H
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment