20 const Config&
cfg,
const std::shared_ptr<const Acts::IMaterialDecorator>&
21 ) -> std::pair<TrackingGeometryPtr, ContextDecorators> {
24 if (
cfg.surfaceType > 1) {
25 throw std::invalid_argument(
26 "The surface type could either be 0 for plane surface or 1 for disc "
29 if (
cfg.binValue > 2) {
30 throw std::invalid_argument(
"The axis value could only be 0, 1, or 2.");
33 if (
cfg.surfaceType == 1 and
cfg.bounds[0] >=
cfg.bounds[1]) {
34 throw std::invalid_argument(
35 "The minR should be smaller than the maxR for disc surface bounds.");
38 if (
cfg.positions.size() !=
cfg.stereos.size()) {
39 throw std::invalid_argument(
40 "The number of provided positions must match the number of "
41 "provided stereo angles.");
49 std::sort(positions.begin(), positions.end());
53 nominalContext, detectorStore, positions, stereos,
cfg.offsets,
55 static_cast<ActsExamples::Telescope::TelescopeSurfaceType>(
57 static_cast<Acts::BinningValue>(
cfg.binValue));
60 return std::make_pair<TrackingGeometryPtr, ContextDecorators>(