File MaterialMapUtils.hpp

namespace Acts

Set the Geometry Context PLUGIN.

Set the Calibration Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedMaterialMap and to avoid code duplication.

Set the Mangetic Field Context PLUGIN.

Convenience functions to ease creation of and Acts::InterpolatedBFieldMap and to avoid code duplication.

Currently implemented for the two most common formats: rz and xyz.

Functions

MaterialMapper<detail::Grid<Material::ParametersVector, detail::EquidistantAxis, detail::EquidistantAxis>> materialMapperRZ(const std::function<size_t(std::array<size_t, 2> binsRZ, std::array<size_t, 2> nBinsRZ)> &materialVectorToGridMapper, std::vector<double> rPos, std::vector<double> zPos, std::vector<Material> material, double lengthUnit = UnitConstants::mm)

Method to setup the MaterialMapper.

e.g.: we have small grid with the values: r={2,3}, z ={4,5}, the corresponding indices are i (belonging to r) and j (belonging to z), the globalIndex is M (belonging to the values of the Material) and the map is:

r

i

z

j

M

2

0

4

0

0

2

0

5

1

1

3

1

4

0

2

3

1

5

1

3

In this case the function would look like:
[](std::array<size_t, 2> binsRZ, std::array<size_t, 2> nBinsRZ) {
   return (binsRZ.at(0) * nBinsRZ.at(1) + binsRZ.at(1));
}

Note

The values do not need to be sorted or unique (this will be done inside the function)

Note

The values do not need to be sorted or unique (this will be done inside the function)

Note

The function localToGlobalBin determines how the material was stored in the vector in respect to the grid values

Parameters
  • materialVectorToGridMapper[in] Function mapping the vector of material to the map of material values

  • rPos[in] Values of the grid points in r

  • zPos[in] Values of the grid points in z

  • material[in] The material classification values in r and z for all given grid points stored in a vector

  • lengthUnit[in] The unit of the grid points

MaterialMapper<detail::Grid<Material::ParametersVector, detail::EquidistantAxis, detail::EquidistantAxis, detail::EquidistantAxis>> materialMapperXYZ(const std::function<size_t(std::array<size_t, 3> binsXYZ, std::array<size_t, 3> nBinsXYZ)> &materialVectorToGridMapper, std::vector<double> xPos, std::vector<double> yPos, std::vector<double> zPos, std::vector<Material> material, double lengthUnit = UnitConstants::mm)

Method to setup the MaterialMapper.

e.g.: we have small grid with the values: x={2,3}, y={3,4}, z ={4,5}, the corresponding indices are i (belonging to x), j (belonging to y) and k (belonging to z), the globalIndex is M (belonging to the values of the Material) and the map is:

x

i

y

j

z

k

M

2

0

3

0

4

0

0

2

0

3

0

5

1

1

2

0

4

1

4

0

2

2

0

4

1

5

1

3

3

1

3

0

4

0

4

3

1

3

0

5

1

5

3

1

4

1

4

0

6

3

1

4

1

5

1

7

In this case the function would look like:
[](std::array<size_t, 3> binsXYZ, std::array<size_t, 3> nBinsXYZ) {
  return (binsXYZ.at(0) * (nBinsXYZ.at(1) * nBinsXYZ.at(2))
       + binsXYZ.at(1) * nBinsXYZ.at(2)
       + binsXYZ.at(2));
}

Note

The values do not need to be sorted or unique (this will be done inside the function)

Note

The values do not need to be sorted or unique (this will be done inside the function)

Note

The values do not need to be sorted or unique (this will be done inside the function)

Note

The function localToGlobalBin determines how the material was stored in the vector in respect to the grid values

Parameters
  • materialVectorToGridMapper[in] Function mapping the vector of material to the map of material values

  • xPos[in] Values of the grid points in x

  • yPos[in] Values of the grid points in y

  • zPos[in] Values of the grid points in z

  • material[in] The material classification values in x, y and z for all given grid points stored in a vector

  • lengthUnit[in] The unit of the grid points