39int main(
int argc,
char** argv) {
40 const std::string compact_path = argc > 1 ? argv[1] : std::string{G4OCCT_DD4HEP_SIMPLE_COMPACT};
43 if (!std::filesystem::exists(compact_path)) {
44 throw std::runtime_error(
"Compact XML not found: " + compact_path);
49 dd4hep::Detector& detector = dd4hep::Detector::getInstance();
50 detector.fromCompact(compact_path);
52 const auto& children = detector.world().children();
53 std::size_t support_count = 0;
54 std::size_t sensor_count = 0;
56 for (
const auto& [name, child] : children) {
57 if (!child.isValid() || !child.placement().isValid()) {
58 throw std::runtime_error(
"Invalid detector element placement for: " + name);
60 if (name.rfind(
"VXDLayer0Support_", 0) == 0) {
62 }
else if (name.rfind(
"VXDLayer0Sensor_", 0) == 0) {
67 RequireChild(children,
"VXDLayer0Support_0");
68 RequireChild(children,
"VXDLayer0Support_9");
69 RequireChild(children,
"VXDLayer0Sensor_0");
70 RequireChild(children,
"VXDLayer0Sensor_9");
72 if (support_count != 10 || sensor_count != 10) {
73 throw std::runtime_error(
"Expected 10 support ladders and 10 sensor ladders, got " +
74 std::to_string(support_count) +
" support and " +
75 std::to_string(sensor_count) +
" sensor");
78 std::cout <<
"Loaded " << compact_path <<
" with " << support_count
79 <<
" STEP support ladders and " << sensor_count
80 <<
" STEP sensor ladders from the SimpleDetector layer-0 port.\n";
82 dd4hep::Detector::destroyInstance();
84 }
catch (
const std::exception& ex) {
85 dd4hep::Detector::destroyInstance();
86 std::cerr <<
"exampleDD4hepSimpleDetector: " << ex.what() <<
'\n';