15 m_materialProperties(),
16 m_binUtility(nullptr),
17 m_fullComposition(false),
24 const std::vector<std::vector<MaterialComposition> >& composition,
26 : m_binUtility(binutility.
clone()),
27 m_thicknessBins(thicknessBins),
33 m_composition(composition),
34 m_fullComposition(fComposition),
43 m_binUtility(clm.m_binUtility->
clone()),
44 m_thicknessBins(clm.m_thicknessBins),
45 m_x0Bins(clm.m_x0Bins),
46 m_l0Bins(clm.m_l0Bins),
49 m_rhoBins(clm.m_rhoBins),
50 m_composition(clm.m_composition),
51 m_fullComposition(clm.m_fullComposition),
52 m_elementTable(clm.m_elementTable)
61 m_materialProperties.clear();
74 resizeMaterialProperties();
96 size_t bin0 = m_binUtility->bin(gp, 0);
98 size_t bin1 = (m_binUtility->max(1) == 0) ? 0 : m_binUtility->bin(gp, 1);
99 return material(bin0,
bin1);
103 size_t bin0,
size_t bin1)
const
108 const double thickness = m_thicknessBins.value(bin0,
bin1);
110 if (thickness == 0.)
return nullptr;
117 if (m_fullComposition && m_elementTable.get()) {
119 for (
const auto& eFraction : m_composition[
bin1][bin0]) {
120 double fraction = eFraction.fraction();
122 m_elementTable->element(eFraction.element());
124 x0 += material->
X0 * fraction;
125 l0 += material->
L0 * fraction;
126 a += material->
A * fraction;
127 z += material->
Z * fraction;
128 rho += material->
rho * fraction;
132 x0 = m_x0Bins.value(bin0,
bin1);
133 l0 = m_l0Bins.value(bin0,
bin1);
134 a = m_aBins.value(bin0,
bin1);
135 z = m_zBins.value(bin0,
bin1);
136 rho = m_rhoBins.value(bin0,
bin1);
147 p.set (std::make_unique<Trk::MaterialProperties>
154 sl <<
"Trk::CompoundLayerMaterial : \n";
155 sl <<
" - Number of Material bins (1/2) : " << m_binUtility->max(0) + 1
156 <<
" / " << m_binUtility->max(1) + 1 <<
"\n";
161 sl <<
"Trk::CompoundLayerMaterial : " << std::endl;
162 sl <<
" - Number of Material bins (1/2) : " << m_binUtility->max(0) + 1
163 <<
" / " << m_binUtility->max(1) + 1 << std::endl;
170 m_materialProperties.clear();
171 m_materialProperties.resize (m_thicknessBins.valueBinMatrix.size());
172 for (
size_t i = 0;
i < m_materialProperties.size();
i++) {
173 m_materialProperties[
i].resize (m_thicknessBins.valueBinMatrix[
i].size());