19 #include <DD4hep/Alignments.h>
20 #include <DD4hep/DetElement.h>
21 #include <DD4hep/Volumes.h>
22 #include <RtypesCore.h>
26 std::unique_ptr<const Logger>
logger)
38 std::vector<std::shared_ptr<Acts::TrackingVolume>>
40 if (
m_cfg.centralVolumes.empty()) {
41 ACTS_VERBOSE(
"[L] No layers handed over for central volume!");
46 "[L] Received layers for central volume -> creating "
47 "cylindrical layers");
52 double rMin = 0, rMax = 0,
dz = 0;
55 for (
auto& detElement :
m_cfg.centralVolumes) {
58 convertTransform(&(detElement.nominal().worldTransformation()));
60 TGeoShape* geoShape = detElement.placement().ptr()->GetVolume()->GetShape();
62 if (geoShape !=
nullptr) {
63 TGeoTubeSeg* tube =
dynamic_cast<TGeoTubeSeg*
>(geoShape);
64 if (tube ==
nullptr) {
66 "[L] Cylinder layer has wrong shape - needs to be TGeoTubeSeg!");
75 throw std::logic_error(
76 std::string(
"Volume DetElement: ") + detElement.name() +
78 "added to its extension. Please check your detector "
84 transform, std::make_shared<const CylinderVolumeBounds>(cvBounds)));
90 const TGeoMatrix* tGeoTrans)
const {
92 const Double_t* rotation = tGeoTrans->GetRotationMatrix();
93 const Double_t*
translation = tGeoTrans->GetTranslation();
99 translation[1] * UnitConstants::cm,
100 translation[2] * UnitConstants::cm));