From d68fa2335f227b8132713193bcf5be06bcea9a7b Mon Sep 17 00:00:00 2001
From: Nora <n.bluhme@gsi.de>
Date: Thu, 21 Mar 2024 19:32:39 +0000
Subject: [PATCH] BBA: fine granularity for mcbm setup

---
 reco/alignment/CbmBbaAlignmentTask.cxx | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/reco/alignment/CbmBbaAlignmentTask.cxx b/reco/alignment/CbmBbaAlignmentTask.cxx
index 4fe3516ad5..32fd5c4c33 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;
 
-- 
GitLab