From 754f2489bca6781201ea141b8243ce2c1e5db6fb Mon Sep 17 00:00:00 2001
From: Nicolas Koehler <nicolas.koehler@cern.ch>
Date: Tue, 1 Dec 2020 19:47:47 +0000
Subject: [PATCH] Remove more hardcoded numbers of tubes per layer

---
 .../src/MdtRdoToPrepDataToolCore.cxx               |  4 +++-
 .../MuonGeoModelTest/src/MuonGMCheck.cxx           |  6 ++++--
 .../MuonGeomRTT/test/test_muon_gm_check.sh         | 14 +++-----------
 .../ISF_FatrasToolsMS/src/SimHitCreatorMS.cxx      |  9 +++++++--
 4 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataToolCore.cxx
index 1d432258d6a..1456c710d27 100644
--- a/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataToolCore.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMDT_CnvTools/src/MdtRdoToPrepDataToolCore.cxx
@@ -25,6 +25,8 @@ using namespace Muon;
 
 namespace {
   static constexpr double const& inverseSpeedOfLight = 1 / Gaudi::Units::c_light; // need 1/299.792458
+  // the tube number of a tube in a tubeLayer is encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer)
+  static constexpr unsigned int const maxNTubesPerLayer = 120;
 }
 
 Muon::MdtRdoToPrepDataToolCore::MdtRdoToPrepDataToolCore(const std::string& t, const std::string& n, const IInterface* p) :
@@ -1468,7 +1470,7 @@ void MdtRdoToPrepDataToolCore::initDeadChannels(const MuonGM::MdtReadoutElement*
   std::vector<int>::iterator it = tubes.begin();
   for(int layer = 1; layer <= mydetEl->getNLayers(); layer++){
     for(int tube = 1; tube <= mydetEl->getNtubesperlayer(); tube++){
-      int want_id = layer*100 + tube;
+      int want_id = layer*maxNTubesPerLayer + tube;
       if (it != tubes.end() && *it == want_id) {
         ++it;
       }
diff --git a/MuonSpectrometer/MuonGeoModelTest/src/MuonGMCheck.cxx b/MuonSpectrometer/MuonGeoModelTest/src/MuonGMCheck.cxx
index 453e90ed14f..2b3587ef277 100644
--- a/MuonSpectrometer/MuonGeoModelTest/src/MuonGMCheck.cxx
+++ b/MuonSpectrometer/MuonGeoModelTest/src/MuonGMCheck.cxx
@@ -41,6 +41,8 @@ typedef std::istringstream mystream;
 
 namespace {
   static constexpr double const& invRad = 180/M_PI;
+  // the tube number of a tube in a tubeLayer is encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer)
+  static constexpr unsigned int const maxNTubesPerLayer = 120;
 }
 
 using namespace MuonGM;
@@ -1339,8 +1341,8 @@ void MuonGMCheck::checkreadoutmdtgeo()
 			     if(nGrandchildren <= 0) continue;
 			     bool tubefound = false;
 			     for(unsigned int kk=0; kk < cv->getNChildVols(); kk++) {
-			       int tubegeo = cv->getIdOfChildVol(kk) % 100;
-			       int layergeo = ( cv->getIdOfChildVol(kk) - tubegeo ) / 100;
+			       int tubegeo = cv->getIdOfChildVol(kk) % maxNTubesPerLayer;
+			       int layergeo = ( cv->getIdOfChildVol(kk) - tubegeo ) / maxNTubesPerLayer;
 			       if( tubegeo == tube && layergeo == tl ) {
 				 tubefound=true;
 				 break;
diff --git a/MuonSpectrometer/MuonValidation/MuonGeomValidation/MuonGeomRTT/test/test_muon_gm_check.sh b/MuonSpectrometer/MuonValidation/MuonGeomValidation/MuonGeomRTT/test/test_muon_gm_check.sh
index 54477b114d0..b407a3917c6 100755
--- a/MuonSpectrometer/MuonValidation/MuonGeomValidation/MuonGeomRTT/test/test_muon_gm_check.sh
+++ b/MuonSpectrometer/MuonValidation/MuonGeomValidation/MuonGeomRTT/test/test_muon_gm_check.sh
@@ -15,16 +15,8 @@ art.py createpoolfile
 
 set -x
 
-echo $AtlasVersion
-if [ ${AtlasVersion:0:4} == "21.0" ]; then
-    DetDesVer='"ATLAS-R2-2016-01-00-01"'
-elif [ ${AtlasVersion:0:4} == "21.3" ] || [ ${AtlasVersion:0:4} == "22.0" ]; then
-    DetDesVer='"ATLAS-R3-2021-01-00-00"'
-else
-    DetDesVer='"ATLAS-R2-2015-03-04-00"'
-fi
-
-
-athena.py -c 'DetDescrVersion = '$DetDesVer MuonGeoModelTest/MuonGeoModelCheck_jobOption.py
+athena.py -c "DetDescrVersion='ATLAS-R2-2016-01-00-01'" MuonGeoModelTest/MuonGeoModelCheck_jobOption.py
+athena.py -c "DetDescrVersion='ATLAS-R3-2021-01-00-01'" MuonGeoModelTest/MuonGeoModelCheck_jobOption.py
+athena.py -c "DetDescrVersion='ATLAS-R3S-2021-01-00-01'" MuonGeoModelTest/MuonGeoModelCheck_jobOption.py
 
 echo "art-result: $?"
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsMS/src/SimHitCreatorMS.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsMS/src/SimHitCreatorMS.cxx
index 45c752072f7..e034e829697 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsMS/src/SimHitCreatorMS.cxx
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsMS/src/SimHitCreatorMS.cxx
@@ -31,6 +31,11 @@
 #include "CLHEP/Random/RandLandau.h"
 #include "CLHEP/Random/RandGauss.h"
 
+namespace {
+  // the tube number of a tube in a tubeLayer ia encoded in the GeoSerialIdentifier (modulo maxNTubesPerLayer)
+  static constexpr unsigned int const maxNTubesPerLayer = 120;
+}
+
 //================ Constructor =================================================
 
 iFatras::SimHitCreatorMS::SimHitCreatorMS(const std::string& t,
@@ -510,8 +515,8 @@ void iFatras::SimHitCreatorMS::initDeadChannels(const MuonGM::MdtReadoutElement*
     for(int tube = 1; tube <= mydetEl->getNtubesperlayer(); tube++){
       bool tubefound = false;
       for(unsigned int kk=0; kk < cv->getNChildVols(); kk++) {
-        int tubegeo = cv->getIdOfChildVol(kk) % 100;
-        int layergeo = ( cv->getIdOfChildVol(kk) - tubegeo ) / 100;
+        int tubegeo = cv->getIdOfChildVol(kk) % maxNTubesPerLayer;
+        int layergeo = ( cv->getIdOfChildVol(kk) - tubegeo ) / maxNTubesPerLayer;
         if( tubegeo == tube && layergeo == layer ) {
           tubefound=true;
           break;
-- 
GitLab