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