diff --git a/reco/alignment/CbmBbaAlignmentTask.cxx b/reco/alignment/CbmBbaAlignmentTask.cxx
index 4fe3516ad5c83023b8811931dd2c206c96a607fb..32fd5c4c3329bbc5b1f0c60cadc0bd65584cc6ed 100644
--- a/reco/alignment/CbmBbaAlignmentTask.cxx
+++ b/reco/alignment/CbmBbaAlignmentTask.cxx
@@ -470,6 +470,12 @@ void CbmBbaAlignmentTask::Finish()
       s.fSensorId = n.fHitAddress;
       // TODO: get the station index from n.fHitSystemId, n.fHitAddress
       s.fTrackingStation = n.fMaterialLayer;
+      if (s.fSystemId == ECbmModuleId::kTrd || s.fSystemId == ECbmModuleId::kTrd2d) {
+        s.fSensorId = s.fTrackingStation;
+      }
+      else if (s.fSystemId == ECbmModuleId::kTof) {
+        s.fSensorId = CbmTofAddress::GetRpcFullId(n.fHitAddress);
+      }
       sensorSet.insert(s);
     }
   }
@@ -482,9 +488,16 @@ void CbmBbaAlignmentTask::Finish()
   for (auto& t : fTracks) {
     for (auto& n : t.fUnalignedTrack.fNodes) {
       Sensor s;
-      s.fSystemId = n.fHitSystemId;
-      s.fSensorId = n.fHitAddress;
-      auto iter   = sensorSet.find(s);
+      s.fSystemId        = n.fHitSystemId;
+      s.fSensorId        = n.fHitAddress;
+      s.fTrackingStation = n.fMaterialLayer;
+      if (s.fSystemId == ECbmModuleId::kTrd || s.fSystemId == ECbmModuleId::kTrd2d) {
+        s.fSensorId = s.fTrackingStation;
+      }
+      else if (s.fSystemId == ECbmModuleId::kTof) {
+        s.fSensorId = CbmTofAddress::GetRpcFullId(n.fHitAddress);
+      }
+      auto iter = sensorSet.find(s);
       assert(iter != sensorSet.end());
       int iSensor   = std::distance(sensorSet.begin(), iter);
       n.fReference1 = iSensor;
@@ -492,7 +505,7 @@ void CbmBbaAlignmentTask::Finish()
     t.fAlignedTrack = t.fUnalignedTrack;
   }
 
-  if (1) {  // one alignment body per tracking station
+  if (0) {  // one alignment body per tracking station
 
     fNalignmentBodies = fNtrackingStations;