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