From 66050b92af9869caa6fb647a4b72afbbf950932f Mon Sep 17 00:00:00 2001
From: Norbert Herrmann <n.herrmann@physi.uni-heidelberg.de>
Date: Fri, 17 Jul 2020 21:42:08 +0200
Subject: [PATCH] add v20a addressing scheme to allow for different MRPC types
 in single module

---
 core/data/tof/CbmTofDetectorId.h              |  6 +++---
 core/data/tof/CbmTofDetectorId_v20a.cxx       | 16 ++++++++--------
 core/data/tof/CbmTofDetectorId_v20a.h         |  6 +++---
 reco/detectors/tof/CbmTofEventClusterizer.cxx |  2 +-
 4 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/core/data/tof/CbmTofDetectorId.h b/core/data/tof/CbmTofDetectorId.h
index f0d1e617fb..c0ca9f976a 100644
--- a/core/data/tof/CbmTofDetectorId.h
+++ b/core/data/tof/CbmTofDetectorId.h
@@ -23,7 +23,7 @@ class CbmTofDetectorInfo
  public:
 
  CbmTofDetectorInfo() : fDetectorSystem(0), fSMtype(0), fSModule(0), 
-    fCounter(0), fCounterType(0), fGap(0), fCell(0) {};
+    fCounter(0), fGap(0), fCell(0), fCounterType(0) {};
   
  CbmTofDetectorInfo(Int_t detsystem, Int_t smtype, Int_t smodule, 
 		    Int_t counter, Int_t gap, Int_t cell)
@@ -38,15 +38,15 @@ class CbmTofDetectorInfo
 CbmTofDetectorInfo(ECbmModuleId detsystem, Int_t smtype, Int_t smodule, 
             Int_t counter, Int_t counterType, Int_t gap, Int_t cell)
    : fDetectorSystem(ToIntegralType(detsystem)), fSMtype(smtype), fSModule(smodule),
-     fCounter(counter), fCounterType(counterType), fGap(gap), fCell(cell) {};
+     fCounter(counter), fGap(gap), fCell(cell), fCounterType(counterType) {};
   
   Int_t fDetectorSystem;
   Int_t fSMtype;
   Int_t fSModule;
   Int_t fCounter;
-  Int_t fCounterType;
   Int_t fGap;
   Int_t fCell;
+  Int_t fCounterType;
 };
 
 
diff --git a/core/data/tof/CbmTofDetectorId_v20a.cxx b/core/data/tof/CbmTofDetectorId_v20a.cxx
index a1fbc2b686..5fe62acade 100644
--- a/core/data/tof/CbmTofDetectorId_v20a.cxx
+++ b/core/data/tof/CbmTofDetectorId_v20a.cxx
@@ -6,8 +6,8 @@
 
 #include "CbmTofDetectorId_v20a.h"
 
-const Int_t CbmTofDetectorId_v20a::shiftarray[] = {0,4,11,15,21,25,26};
-const Int_t CbmTofDetectorId_v20a::bitarray[]   = {4,7, 4, 6, 4, 1, 6};
+const Int_t CbmTofDetectorId_v20a::shiftarray[] = {0,4,11,15,21,22,28	};
+const Int_t CbmTofDetectorId_v20a::bitarray[]   = {4,7, 4, 6, 1, 6, 4};
 
 
 CbmTofDetectorId_v20a::CbmTofDetectorId_v20a()
@@ -24,7 +24,7 @@ CbmTofDetectorId_v20a::CbmTofDetectorId_v20a()
 		  (maskarray[1] << shiftarray[1]) |
 		  (maskarray[2] << shiftarray[2]) |
 		  (maskarray[3] << shiftarray[3]) |
-		  (maskarray[4] << shiftarray[4]) |
+		  (0<< shiftarray[4]) |
 		  (maskarray[5] << shiftarray[5]) |
 		  (maskarray[6] << shiftarray[6])
   );
@@ -36,8 +36,8 @@ CbmTofDetectorInfo CbmTofDetectorId_v20a::GetDetectorInfo(const Int_t detectorId
    result_array[i] = (( detectorId >> shiftarray[i] ) & maskarray[i] );
   }
 
-  return CbmTofDetectorInfo(result_array[0], result_array[2], result_array[1], 
-			    result_array[3], result_array[4], result_array[5]);
+  return CbmTofDetectorInfo( (ECbmModuleId)result_array[0], result_array[2], result_array[1],
+			    result_array[3], result_array[4], result_array[5], result_array[6]);
 
 }
 
@@ -122,9 +122,9 @@ Int_t CbmTofDetectorId_v20a ::SetDetectorInfo(const CbmTofDetectorInfo detInfo)
            (((detInfo.fSMtype)         & maskarray[2]) << shiftarray[2]) | 
            (((detInfo.fSModule)        & maskarray[1]) << shiftarray[1]) | 
            (((detInfo.fCounter)        & maskarray[3]) << shiftarray[3])  | 
-           (((detInfo.fCounterType)    & maskarray[4]) << shiftarray[4])  |
-           (((detInfo.fGap)            & maskarray[5]) << shiftarray[5])  |
-           (((detInfo.fCell)           & maskarray[6]) << shiftarray[6])  
+           (((detInfo.fGap)            & maskarray[4]) << shiftarray[4])  |
+           (((detInfo.fCell)           & maskarray[5]) << shiftarray[5])  |
+           (((detInfo.fCounterType)    & maskarray[6]) << shiftarray[6])  
          ); 
 }
 
diff --git a/core/data/tof/CbmTofDetectorId_v20a.h b/core/data/tof/CbmTofDetectorId_v20a.h
index da47f03a3c..3887071e19 100644
--- a/core/data/tof/CbmTofDetectorId_v20a.h
+++ b/core/data/tof/CbmTofDetectorId_v20a.h
@@ -22,9 +22,9 @@
  ** Module ID on bits 4-11         00000000000000000000011111110000 <<4   127
  ** Module Type on bits 12-15      00000000000000000111100000000000 <<11  15
  ** Counter ID on bits 16-23       00000000000111111000000000000000 <<15  63
- *  Counter Type                   00000001111000000000000000000000 <<21  15 
- ** Side/Gap NR on bits 20-23      00000010000000000000000000000000 <<25  1
- ** Strip ID on bits 24-31         11111100000000000000000000000000 <<26  255
+ ** Side/Gap NR on bits 20-23      00000000001000000000000000000000 <<21  1
+ ** Strip ID on bits 24-31         00001111110000000000000000000000 <<22  255
+ *  Counter Type                   11110000000000000000000000000000 <<28  15
  **/
 
 
diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx
index f307e1023c..fe9a89fdb8 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.cxx
+++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx
@@ -307,7 +307,7 @@ InitStatus CbmTofEventClusterizer::Init() {
       if (fSel2Id > -1)
         fSel2Addr =
           CbmTofAddress::GetUniqueAddress(fSel2Sm, fSel2Rpc, 0, 0, fSel2Id);
-      fiBeamRefAddr = CbmTofAddress::GetUniqueAddress(
+		fiBeamRefAddr = CbmTofAddress::GetUniqueAddress(
         fiBeamRefSm, fiBeamRefDet, 0, 0, fiBeamRefType);
       break;
     case 1:
-- 
GitLab