31 class TGeoDetectorElement;
34 using namespace Acts::UnitLiterals;
51 using RangeConfig = std::pair<BinningValue, std::pair<double, double>>;
56 std::string volumeName =
"";
58 std::vector<std::string> sensorNames = {};
60 std::string localAxes =
"XYZ";
62 std::vector<RangeConfig> parseRanges = {};
64 std::vector<SplitConfig> splitConfigs = {};
66 std::pair<double, double> envelope = {0_mm, 0_mm};
77 envelope(std::pair<double, double>(1_mm, 1_mm)) {}
84 std::string configurationName =
"undefined";
88 std::shared_ptr<const ITGeoIdentifierProvider> identifierProvider =
nullptr;
90 std::shared_ptr<const LayerCreator> layerCreator =
nullptr;
92 std::shared_ptr<const ProtoLayerHelper> protoLayerHelper =
nullptr;
96 std::array<double, 3> layerSplitToleranceR = {-1., -1., -1.};
98 std::array<double, 3> layerSplitToleranceZ = {-1., -1., -1.};
100 bool autoSurfaceBinning =
false;
109 std::unique_ptr<const Logger> logger =
134 const std::string& identification() const final;
138 void setConfiguration(const
Config& config);
141 Config getConfiguration() const;
144 void setLogger(std::unique_ptr<const
Logger> newLogger);
148 detectorElements() const;
155 std::array<std::
string, 3> m_layerTypes = {
"Negative",
"Central",
"Positive"};
175 void registerSplit(std::vector<double>&
parameters,
double test,
176 double tolerance, std::pair<double, double>& range)
const;
181 std::pair<double, double>& range)
const {
184 range.first =
std::min(range.first, test);
185 range.second =
std::max(range.second, test);
187 for (
auto& splitPar : parameters) {
188 if (
std::abs(test - splitPar) < tolerance) {
193 parameters.push_back(test);
201 inline const std::vector<std::shared_ptr<const TGeoDetectorElement>>&
203 return m_elementStore;
207 return m_cfg.configurationName;