diff --git a/InnerDetector/InDetDetDescr/PixelGeoModelXml/PixelGeoModelXml/PixelGmxInterface.h b/InnerDetector/InDetDetDescr/PixelGeoModelXml/PixelGeoModelXml/PixelGmxInterface.h index 00920ca532eaefd080391bc9975fe3574c6f9c4a..ee3ef2292e9933e0b03b1b274139e5c5a889d2be 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModelXml/PixelGeoModelXml/PixelGmxInterface.h +++ b/InnerDetector/InDetDetDescr/PixelGeoModelXml/PixelGeoModelXml/PixelGmxInterface.h @@ -42,10 +42,10 @@ public: std::map<std::string, int> &index, int sequentialId, GeoVFullPhysVol *fpv) override; - // virtual void addAlignable(int level, - // std::map<std::string, int> &index, - // GeoVFullPhysVol *fpv, - // GeoAlignableTransform *transform) override final; + virtual void addAlignable(int level, + std::map<std::string, int> &index, + GeoVFullPhysVol *fpv, + GeoAlignableTransform *transform) override final; std::shared_ptr<const PixelDiodeMatrix> buildMatrix(double phiPitch, double etaPitch, double phiPitchLong, double phiPitchEnd, diff --git a/InnerDetector/InDetDetDescr/PixelGeoModelXml/src/PixelGmxInterface.cxx b/InnerDetector/InDetDetDescr/PixelGeoModelXml/src/PixelGmxInterface.cxx index 52838a82cc2ac4044e24c4a375df28a17617867a..8308f4444cf884ee9af38c6e1bb4ba25eb0ca069 100644 --- a/InnerDetector/InDetDetDescr/PixelGeoModelXml/src/PixelGmxInterface.cxx +++ b/InnerDetector/InDetDetDescr/PixelGeoModelXml/src/PixelGmxInterface.cxx @@ -487,5 +487,51 @@ void PixelGmxInterface::buildReadoutGeometryFromSqlite(IRDBAccessSvc * rdbAccess } +void PixelGmxInterface::addAlignable(int level, + std::map<std::string, int> &index, + GeoVFullPhysVol *fpv, + GeoAlignableTransform *transform) +{ + ATH_MSG_DEBUG("addAlignable called"); + const PixelID *pixelIdHelper = dynamic_cast<const PixelID *> (m_commonItems->getIdHelper()); + Identifier id; + switch (level) { + case 0: + id = pixelIdHelper->wafer_id(index["barrel_endcap"], + index["layer_wheel"], + index["phi_module"], + index["eta_module"], + index["side"]); + break; + case 1: + id = pixelIdHelper->wafer_id(index["barrel_endcap"], + index["layer_wheel"], + index["phi_module"], + index["eta_module"], + 0); + break; + case 2: + id = pixelIdHelper->wafer_id(index["barrel_endcap"], + index["layer_wheel"], + 0, + 0, + 0); + break; + case 3: + id = pixelIdHelper->wafer_id(index["barrel_endcap"], + 0, + 0, + 0, + 0); + break; + default: + throw GaudiException("Unknown level " + std::to_string(level) + " for alignment in addAlignable", + "PixelGmxInterface::addAlignable", StatusCode::FAILURE); + break; + } + m_detectorManager->addAlignableTransform(level, id, transform, fpv); +} + + } // namespace ITk } // namespace InDetDD