From b1813a0238d1aee36a6aed38806fb4982977e5ac Mon Sep 17 00:00:00 2001 From: Fabio Cossutti Date: Sat, 8 Mar 2025 19:26:16 +0100 Subject: [PATCH 1/4] Squashed commit of the following: commit d34a0096269f45bfef17b21f30809d8f76ee2218 Author: Fabio Cossutti Date: Sat Mar 8 19:05:21 2025 +0100 Remove update of geometry configuration README, as it is separately done in #47531 commit 4bc544aede15609becc1a588179266425b43706d Author: Fabio Cossutti Date: Thu Mar 6 17:51:14 2025 +0100 Move to scenarios D118 and D119, rebasing onto #47353, make MTDTopology for ETL independent on BTL scenario commit 91cc88c3d501d9459553882f4d1f1698093c38ed Author: Leonardo Lanteri Date: Wed Mar 5 16:56:28 2025 +0100 added v9/v10 with a working navigation algorithm commit fa6593d5693d23c5a98fbea3e26a554aa8564b68 Author: Leonardo Lanteri Date: Fri Feb 21 10:57:29 2025 +0100 updated etl/v10/etl.xml with the vv1.7 of etl geometry commit a5f73dc26472d7163f7409814d0d48dcd16d9264 Author: Fabio Cossutti Date: Tue Feb 18 17:04:03 2025 +0100 Add ETL v9/v10 on top of BTL v4 Co-authored-by: Leonardo Lanteri --- .../GeometryDD4hepExtendedRun4D118Reco_cff.py | 61 + .../GeometryDD4hepExtendedRun4D118_cff.py | 17 + .../GeometryDD4hepExtendedRun4D119Reco_cff.py | 61 + .../GeometryDD4hepExtendedRun4D119_cff.py | 17 + .../GeometryExtendedRun4D118Reco_cff.py | 61 + .../python/GeometryExtendedRun4D118_cff.py | 15 + .../GeometryExtendedRun4D119Reco_cff.py | 61 + .../python/GeometryExtendedRun4D119_cff.py | 15 + .../python/defaultPhase2ConditionsEra_cff.py | 4 +- .../Geometry/python/dictRun4Geometry.py | 58 + .../PyReleaseValidation/python/relval_Run4.py | 2 + .../python/upgradeWorkflowComponents.py | 18 + .../StandardSequences/python/GeometryConf.py | 4 + DataFormats/ForwardDetId/src/ETLDetId.cc | 5 +- .../dd4hep/cmsExtendedGeometryRun4D118.xml | 124 + .../dd4hep/cmsExtendedGeometryRun4D119.xml | 124 + .../cmsExtendedGeometryRun4D118XML_cfi.py | 128 + .../cmsExtendedGeometryRun4D119XML_cfi.py | 128 + Geometry/MTDCommonData/data/etl/v10/etl.xml | 4434 ++++++++++++++++ Geometry/MTDCommonData/data/etl/v9/etl.xml | 4725 +++++++++++++++++ .../data/mtdParameters/v7/mtdParameters.xml | 16 + .../mtdParameters/v7/mtdStructureTopology.xml | 30 + .../data/mtdParameters/v8/mtdParameters.xml | 16 + .../mtdParameters/v8/mtdStructureTopology.xml | 30 + .../MTDCommonData/interface/MTDTopologyMode.h | 18 +- .../MTDCommonData/src/ETLNumberingScheme.cc | 66 +- Geometry/MTDCommonData/src/MTDTopologyMode.cc | 4 + .../interface/MTDTopology.h | 2 +- .../plugins/MTDTopologyEP.cc | 111 +- .../src/MTDParametersFromDD.cc | 112 +- .../MTDGeometryBuilder/src/MTDTopology.cc | 64 +- .../src/ETLDetLayerGeometryBuilder.cc | 5 +- .../DetLayers/test/MTDRecoGeometryAnalyzer.cc | 11 +- RecoMTD/DetLayers/test/TestETLNavigation.cc | 34 +- 34 files changed, 10426 insertions(+), 155 deletions(-) create mode 100644 Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118Reco_cff.py create mode 100644 Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118_cff.py create mode 100644 Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119Reco_cff.py create mode 100644 Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119_cff.py create mode 100644 Configuration/Geometry/python/GeometryExtendedRun4D118Reco_cff.py create mode 100644 Configuration/Geometry/python/GeometryExtendedRun4D118_cff.py create mode 100644 Configuration/Geometry/python/GeometryExtendedRun4D119Reco_cff.py create mode 100644 Configuration/Geometry/python/GeometryExtendedRun4D119_cff.py create mode 100644 Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D118.xml create mode 100644 Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D119.xml create mode 100644 Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D118XML_cfi.py create mode 100644 Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D119XML_cfi.py create mode 100644 Geometry/MTDCommonData/data/etl/v10/etl.xml create mode 100644 Geometry/MTDCommonData/data/etl/v9/etl.xml create mode 100644 Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml create mode 100644 Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml create mode 100644 Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml create mode 100644 Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118Reco_cff.py new file mode 100644 index 0000000000000..1ccedfefdea60 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtendedRun4D118_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118_cff.py new file mode 100644 index 0000000000000..301569f432e1c --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D118_cff.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D118.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119Reco_cff.py new file mode 100644 index 0000000000000..ebab95e320019 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtendedRun4D119_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119_cff.py new file mode 100644 index 0000000000000..598ce7bcf81b2 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D119_cff.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hep_cff import * +DDDetectorESProducer.confGeomXMLFiles = cms.FileInPath("Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D119.xml") + +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D118Reco_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D118Reco_cff.py new file mode 100644 index 0000000000000..08ea89cf9f550 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D118Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtendedRun4D118_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D118_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D118_cff.py new file mode 100644 index 0000000000000..61f6ca4e5d19e --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D118_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometryRun4D118XML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D119Reco_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D119Reco_cff.py new file mode 100644 index 0000000000000..5a7872b51e250 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D119Reco_cff.py @@ -0,0 +1,61 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtendedRun4D119_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import * +from Geometry.TrackerGeometryBuilder.TrackerAdditionalParametersPerDet_cfi import * +from Geometry.TrackerGeometryBuilder.trackerParameters_cff import * +from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import * +from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import * +trackerGeometry.applyAlignment = True + +# calo +from Geometry.CaloEventSetup.HGCalTopology_cfi import * +from Geometry.HGCalGeometry.HGCalGeometryESProducer_cfi import * +from Geometry.CaloEventSetup.CaloTopology_cfi import * +from Geometry.CaloEventSetup.CaloGeometryBuilder_cfi import * +CaloGeometryBuilder = cms.ESProducer("CaloGeometryBuilder", + SelectedCalos = cms.vstring("HCAL", + "ZDC", + "EcalBarrel", + "TOWER", + "HGCalEESensitive", + "HGCalHESiliconSensitive", + "HGCalHEScintillatorSensitive" + ) +) +from Geometry.EcalAlgo.EcalBarrelGeometry_cfi import * +from Geometry.HcalEventSetup.HcalGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerGeometry_cfi import * +from Geometry.HcalEventSetup.CaloTowerTopology_cfi import * +from Geometry.HcalCommonData.hcalDDDRecConstants_cfi import * +from Geometry.HcalEventSetup.hcalTopologyIdeal_cfi import * +from Geometry.CaloEventSetup.EcalTrigTowerConstituents_cfi import * +from Geometry.EcalMapping.EcalMapping_cfi import * +from Geometry.EcalMapping.EcalMappingRecord_cfi import * + +# muon +from Geometry.MuonNumbering.muonNumberingInitialization_cfi import * +from RecoMuon.DetLayers.muonDetLayerGeometry_cfi import * +from Geometry.GEMGeometryBuilder.gemGeometry_cff import * +from Geometry.CSCGeometryBuilder.idealForDigiCscGeometry_cff import * +from Geometry.DTGeometryBuilder.idealForDigiDtGeometry_cff import * + +# forward +from Geometry.ForwardGeometry.zdcTopologyEP_cfi import * +from Geometry.ForwardGeometry.ZdcGeometry_cfi import * + +# timing +from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import * +from Geometry.MTDGeometryBuilder.mtdParameters_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * +from Geometry.MTDNumberingBuilder.mtdTopology_cfi import * +from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import * +from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import * +mtdGeometry.applyAlignment = False + diff --git a/Configuration/Geometry/python/GeometryExtendedRun4D119_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D119_cff.py new file mode 100644 index 0000000000000..69ecd4653e902 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D119_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometryRun4D119XML_cfi import * +from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import * +from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import * +from Geometry.EcalCommonData.ecalSimulationParameters_cff import * +from Geometry.HcalCommonData.hcalDDDSimConstants_cff import * +from Geometry.HGCalCommonData.hgcalParametersInitialization_cfi import * +from Geometry.HGCalCommonData.hgcalNumberingInitialization_cfi import * +from Geometry.MuonNumbering.muonGeometryConstants_cff import * +from Geometry.MuonNumbering.muonOffsetESProducer_cff import * +from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import * diff --git a/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py b/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py index 9fa25a87a4bb1..0ff51f959d9bd 100644 --- a/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py +++ b/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py @@ -2,7 +2,9 @@ from Configuration.AlCa.autoCond import autoCond from Configuration.StandardSequences.Eras import eras -DEFAULT_VERSION = "Run4D110" +#DEFAULT_VERSION = "Run4D110" +DEFAULT_VERSION = "Run4D200" +#DEFAULT_VERSION = "Run4D201" def get_era_and_conditions(version_key): """Retrieve the era and global tag for a given version key. diff --git a/Configuration/Geometry/python/dictRun4Geometry.py b/Configuration/Geometry/python/dictRun4Geometry.py index 2ce2b0cc21dda..4b382d02ec849 100644 --- a/Configuration/Geometry/python/dictRun4Geometry.py +++ b/Configuration/Geometry/python/dictRun4Geometry.py @@ -1559,6 +1559,62 @@ ], "era" : "phase2_timing, phase2_timing_layer, phase2_etlV4", }, + "I19" : { + 1 : [ + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v9/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml', + ], + 3 : [ + 'Geometry/MTDSimData/data/v5/mtdsens.xml' + ], + 4 : [ + 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml' + ], + "sim" : [ + 'from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import *', + ], + "reco" :[ + 'from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import *', + 'from Geometry.MTDGeometryBuilder.mtdParameters_cff import *', + 'from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import *', + 'from Geometry.MTDNumberingBuilder.mtdTopology_cfi import *', + 'from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import *', + 'from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import *', + 'mtdGeometry.applyAlignment = False' + ], + "era" : "phase2_timing, phase2_timing_layer, phase2_etlV4", + }, + "I20" : { + 1 : [ + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v10/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml', + ], + 3 : [ + 'Geometry/MTDSimData/data/v5/mtdsens.xml' + ], + 4 : [ + 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml' + ], + "sim" : [ + 'from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import *', + ], + "reco" :[ + 'from RecoMTD.DetLayers.mtdDetLayerGeometry_cfi import *', + 'from Geometry.MTDGeometryBuilder.mtdParameters_cff import *', + 'from Geometry.MTDNumberingBuilder.mtdNumberingGeometry_cff import *', + 'from Geometry.MTDNumberingBuilder.mtdTopology_cfi import *', + 'from Geometry.MTDGeometryBuilder.mtdGeometry_cfi import *', + 'from Geometry.MTDGeometryBuilder.idealForDigiMTDGeometry_cff import *', + 'mtdGeometry.applyAlignment = False' + ], + "era" : "phase2_timing, phase2_timing_layer, phase2_etlV4", + }, } allDicts = [ commonDict, trackerDict, caloDict, muonDict, forwardDict, timingDict ] @@ -1586,6 +1642,8 @@ ("O9","T35","C20","M14","F8","I17") : "D115", ("O10","T35","C25","M15","F9","I17") : "D116", ("O10","T35","C25","M15","F9","I18") : "D117", + ("O10","T35","C25","M15","F9","I19") : "D118", + ("O10","T35","C25","M15","F9","I20") : "D119", } deprecatedDets = set([ "D1", "D2", "D3", "D5", "D6" , "D7", "D4", "D8" , "D9", "D12", "D13", "D15", "D10", "D11", "D14", "D16", "D17", "D18", "D19", "D20", "D21", "D22", "D23", "D24", "D25", "D26", "D27", "D28", "D29", "D30", "D31", "D32", "D33", "D34", "D36", "D37", "D38", "D39", "D40", "D42", "D35", "D41", "D43", "D44", "D45", "D46", "D48", "D47", "D50", "D51", "D52", "D53", "D54", "D55", "D56", "D57", "D58", "D59", "D61", "D62", "D63", "D64", "D65", "D66", "D67", "D69", "D71", "D72", "D73", "D74", "D75", "D78", "D79", "D87", "D89", "D90", "D49", "D60", "D68", "D70", "D76", "D77", "D80", "D81", "D82", "D83", "D84", "D85","D86","D88","D91","D92","D93","D94","D97"]) diff --git a/Configuration/PyReleaseValidation/python/relval_Run4.py b/Configuration/PyReleaseValidation/python/relval_Run4.py index edcc86ebcfc15..bb2b881023042 100644 --- a/Configuration/PyReleaseValidation/python/relval_Run4.py +++ b/Configuration/PyReleaseValidation/python/relval_Run4.py @@ -37,6 +37,8 @@ numWFIB.extend([32034.0]) #Run4D115 numWFIB.extend([32434.0]) #Run4D116 numWFIB.extend([32834.0]) #Run4D117 +numWFIB.extend([33234.0]) #Run4D118 +numWFIB.extend([33634.0]) #Run4D119 #Additional sample for short matrix and IB #Default Phase-2 Det NoPU diff --git a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py index 91c950ad3958d..2c061b3a3d167 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -97,6 +97,10 @@ 'Run4D116PU', 'Run4D117', 'Run4D117PU', + 'Run4D118', + 'Run4D118PU', + 'Run4D119', + 'Run4D119PU', ] # pre-generation of WF numbers @@ -3293,6 +3297,20 @@ def condition(self, fragment, stepList, key, hasHarvest): 'Era' : 'Phase2C17I13M9', 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], }, + 'Run4D118' : { + 'Geom' : 'ExtendedRun4D118', + 'HLTmenu': '@relvalRun4', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C17I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, + 'Run4D119' : { + 'Geom' : 'ExtendedRun4D119', + 'HLTmenu': '@relvalRun4', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C17I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, } # standard PU sequences diff --git a/Configuration/StandardSequences/python/GeometryConf.py b/Configuration/StandardSequences/python/GeometryConf.py index 773ec9b8a92fa..ccf8efed0e9c8 100644 --- a/Configuration/StandardSequences/python/GeometryConf.py +++ b/Configuration/StandardSequences/python/GeometryConf.py @@ -132,4 +132,8 @@ 'DD4hepExtendedRun4D116' : 'DD4hepExtendedRun4D116,DD4hepExtendedRun4D116Reco', 'ExtendedRun4D117' : 'ExtendedRun4D117,ExtendedRun4D117Reco', 'DD4hepExtendedRun4D117' : 'DD4hepExtendedRun4D117,DD4hepExtendedRun4D117Reco', + 'ExtendedRun4D118' : 'ExtendedRun4D118,ExtendedRun4D118Reco', + 'DD4hepExtendedRun4D118' : 'DD4hepExtendedRun4D118,DD4hepExtendedRun4D118Reco', + 'ExtendedRun4D119' : 'ExtendedRun4D119,ExtendedRun4D119Reco', + 'DD4hepExtendedRun4D119' : 'DD4hepExtendedRun4D119,DD4hepExtendedRun4D119Reco', } diff --git a/DataFormats/ForwardDetId/src/ETLDetId.cc b/DataFormats/ForwardDetId/src/ETLDetId.cc index e0ce3d86b0ecb..94cb955f95de6 100644 --- a/DataFormats/ForwardDetId/src/ETLDetId.cc +++ b/DataFormats/ForwardDetId/src/ETLDetId.cc @@ -5,8 +5,9 @@ std::ostream& operator<<(std::ostream& os, const ETLDetId& id) { os << (MTDDetId&)id; os << " ETL " << std::endl << " Side : " << id.mtdSide() << std::endl - << " Ring : " << id.mtdRR() << " " - << " Disc/Side/Sector = " << id.nDisc() << " " << id.discSide() << " " << id.sector() << std::endl + << " Disc : " << id.nDisc() << std::endl + << " Side : " << id.discSide() << std::endl + << " Sector : " << id.sector() << std::endl << " Module : " << id.module() << std::endl << " Module type : " << id.modType() << std::endl << " Sensor : " << id.sensor() << std::endl; diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D118.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D118.xml new file mode 100644 index 0000000000000..17956314df701 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D118.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D119.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D119.xml new file mode 100644 index 0000000000000..bbc9236eb7525 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D119.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D118XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D118XML_cfi.py new file mode 100644 index 0000000000000..47ebda6e1b358 --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D118XML_cfi.py @@ -0,0 +1,128 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2030/v1/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_OT800_IT615_2022_10/pixbar.xml', + 'Geometry/TrackerCommonData/data/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_03/tracker.xml', + 'Geometry/TrackerCommonData/data/PhaseII/OuterTracker616_2020_04/otst.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerbar.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerStructureTopology.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackersens.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml', + 'Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo/2021/v1/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/v2/hcalRecNumbering.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v17/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v17/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2030/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v4/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v9/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/v1/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv15.xml', + 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/v5/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D119XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D119XML_cfi.py new file mode 100644 index 0000000000000..397d52916e89b --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D119XML_cfi.py @@ -0,0 +1,128 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generateRun4Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +XMLIdealGeometryESSource = cms.ESSource("XMLIdealGeometryESSource", + geomXMLFiles = cms.vstring( + 'Geometry/CMSCommonData/data/materials/2030/v1/materials.xml', + 'Geometry/TrackerCommonData/data/trackermaterial/2021/v2/trackermaterial.xml', + 'Geometry/CMSCommonData/data/rotations.xml', + 'Geometry/CMSCommonData/data/extend/v2/cmsextent.xml', + 'Geometry/CMSCommonData/data/cavernData/2021/v1/cavernData.xml', + 'Geometry/CMSCommonData/data/cms/2030/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2030/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2030/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2030/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2030/v1/cmsBeam.xml', + 'Geometry/CMSCommonData/data/muonMB.xml', + 'Geometry/CMSCommonData/data/muonMagnet.xml', + 'Geometry/CMSCommonData/data/cavern/2021/v1/cavern.xml', + 'Geometry/CMSCommonData/data/cavernFloor/2017/v1/cavernFloor.xml', + 'Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml', + 'Geometry/TrackerCommonData/data/pixfwdCommon.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/pixfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_OT800_IT615_2022_10/pixbar.xml', + 'Geometry/TrackerCommonData/data/trackermaterial.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_03/tracker.xml', + 'Geometry/TrackerCommonData/data/PhaseII/OuterTracker616_2020_04/otst.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerbar.xml', + 'Geometry/TrackerCommonData/data/PhaseII/TiltedTracker404/trackerfwd.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerStructureTopology.xml', + 'Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackersens.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml', + 'Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_2021_02/trackerProdCuts.xml', + 'Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml', + 'Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml', + 'Geometry/EcalCommonData/data/eregalgo/2030/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2030/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2030/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo/2021/v1/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo/v1/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/v2/hcalRecNumbering.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v17/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v17/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v17/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v17/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v17/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v17/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v17/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v17/hgcalConsData.xml', + 'Geometry/MuonCommonData/data/mbCommon/2021/v1/mbCommon.xml', + 'Geometry/MuonCommonData/data/mb1/2015/v2/mb1.xml', + 'Geometry/MuonCommonData/data/mb2/2015/v2/mb2.xml', + 'Geometry/MuonCommonData/data/mb3/2015/v3/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2030/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2030/v4/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2030/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2030/v4/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/2030/v1/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2030/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v5/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2030/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2030/v5/forwardshield.xml', + 'Geometry/ForwardCommonData/data/zdcmaterials/2021/v1/zdcmaterials.xml', + 'Geometry/ForwardCommonData/data/lumimaterials.xml', + 'Geometry/ForwardCommonData/data/zdcrotations.xml', + 'Geometry/ForwardCommonData/data/lumirotations.xml', + 'Geometry/ForwardCommonData/data/zdc/2030/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v10/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/v1/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2030/v2c/CaloUtil.xml', + 'Geometry/HGCalSimData/data/hgcsensv15.xml', + 'Geometry/MuonSimData/data/PhaseII/v2/muonSens.xml', + 'Geometry/DTGeometryBuilder/data/dtSpecsFilter/2021/v1/dtSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecsFilter.xml', + 'Geometry/CSCGeometryBuilder/data/cscSpecs.xml', + 'Geometry/RPCGeometryBuilder/data/2030/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/v5/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2030/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2030/v2/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/v5/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/MTDCommonData/data/etl/v10/etl.xml b/Geometry/MTDCommonData/data/etl/v10/etl.xml new file mode 100644 index 0000000000000..1af0a995197c3 --- /dev/null +++ b/Geometry/MTDCommonData/data/etl/v10/etl.xml @@ -0,0 +1,4434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 309, 343, 377, 409, 439, + 471, 505, 541, 289, 578, 617, 701, 739, 773, 803, 827, 841 + + + + 1, 7, 27, 55, 87, 123, 163, 205, 245, 281, 317, 353, 387, 417, 447, + 481, 515, 555, 591, 631, 673, 713, 751, 785, 815, 839, 851 + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 311, 349, 383, 415, 445, + 477, 511, 549, 585, 625, 669, 709, 747, 781, 811, 835, 849 + + + + 1, 7, 21, 41, 65, 89, 109, 129, 149, 167, 185, 205, 225, 245, 269, + 293, 313, 327, 333, 333, 333, 333, 333, 333, 333, 333, 333 + + + + 4, 4, 0, 0, 0, 0, 0, 0, 2, 6, 12, 12, 14, 16, 14, 12, 10, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 4, 0, 0, 0, 0, 0, 0, 0, 4, 6, 10, 12, 16, 16, 12, 12, 6, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 8, 12, 14, 16, 14, 12, 8, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 0, 0, 0, 0, 4, 8, 12, 12, 16, 16, 12, 12, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,0 ,0, 0 ,0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+1*[Module_X]+1*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+18*[Module_X]+18*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + + + + ([x_start_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+1*[DeltaY_ServiceModule]+1*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_back_1]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+51*[DeltaY_ServiceModule]+52*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+1*[Module_X]+1*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + + + + ([x_start_back_1]+1*[Module_X]+1*[DeltaX]), ([y_start_back_1]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_back_1]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_back_1]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_back_1]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_back_1]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+1*[Module_X]+1*[DeltaX]), ([y_start_back_1]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + diff --git a/Geometry/MTDCommonData/data/etl/v9/etl.xml b/Geometry/MTDCommonData/data/etl/v9/etl.xml new file mode 100644 index 0000000000000..e131bae39b259 --- /dev/null +++ b/Geometry/MTDCommonData/data/etl/v9/etl.xml @@ -0,0 +1,4725 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 309, 343, 377, 409, 439, + 471, 505, 541, 289, 578, 617, 701, 739, 773, 803, 827, 841 + + + + 1, 7, 27, 55, 87, 123, 163, 205, 245, 281, 317, 353, 387, 417, 447, + 481, 515, 555, 591, 631, 673, 713, 751, 785, 815, 839, 851 + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 311, 349, 383, 415, 445, + 477, 511, 549, 585, 625, 669, 709, 747, 781, 811, 835, 849 + + + + 1, 7, 27, 55, 87, 123, 163, 205, 245, 281, 317, 353, 387, 417, 447, + 481, 515, 555, 591, 631, 673, 713, 751, 785, 815, 839, 851 + + + + 4, 4, 0, 0, 0, 0, 0, 0, 2, 6, 12, 12, 14, 16, 14, 12, 10, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 4, 0, 0, 0, 0, 0, 0, 0, 4, 6, 10, 12, 16, 16, 12, 12, 6, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 4, 4, 0, 0, 0, 0, 0, 0, 2, 4, 8, 12, 14, 16, 14, 12, 8, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + 4, 0, 0, 0, 0, 0, 0, 0, 4, 6, 10, 12, 16, 16, 12, 12, 6, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+1*[Module_X]+1*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+18*[Module_X]+18*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + + + + ([x_start_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+1*[DeltaY_ServiceModule]+1*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_back_1]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+51*[DeltaY_ServiceModule]+52*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+1*[Module_X]+1*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + + + ([x_start_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+1*[DeltaY_ServiceModule]+1*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+2*[DeltaY_ServiceModule]+2*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+5*[DeltaY_ServiceModule]+5*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+9*[DeltaY_ServiceModule]+9*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+14*[DeltaY_ServiceModule]+14*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+17*[DeltaY_ServiceModule]+17*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+5*[Module_X]+5*[DeltaX]), ([y_start_back_1]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+8*[Module_X]+8*[DeltaX]), ([y_start_back_1]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_back_1]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+35*[DeltaY_ServiceModule]+35*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+48*[DeltaY_ServiceModule]+48*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]), ([y_start_back_1]+49*[DeltaY_ServiceModule]+49*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+50*[DeltaY_ServiceModule]+50*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_back_1]+51*[DeltaY_ServiceModule]+52*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml b/Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml new file mode 100644 index 0000000000000..c9517bff4792c --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v7/mtdParameters.xml @@ -0,0 +1,16 @@ + + + + + + 4, 4, 4, 24 + + + 0, 0, 0, 0, 0, 10, 40, 80, 1, 16, 1, 1 + + + 0, 0, 0, 0, 12, 24, 6, 12, 16, 16, 1, 1 + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml b/Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml new file mode 100644 index 0000000000000..bdc7dca59a176 --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v7/mtdStructureTopology.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml b/Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml new file mode 100644 index 0000000000000..c9517bff4792c --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v8/mtdParameters.xml @@ -0,0 +1,16 @@ + + + + + + 4, 4, 4, 24 + + + 0, 0, 0, 0, 0, 10, 40, 80, 1, 16, 1, 1 + + + 0, 0, 0, 0, 12, 24, 6, 12, 16, 16, 1, 1 + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml b/Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml new file mode 100644 index 0000000000000..ef9e639f354a6 --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v8/mtdStructureTopology.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/interface/MTDTopologyMode.h b/Geometry/MTDCommonData/interface/MTDTopologyMode.h index 704571ad19f21..8bf22fc7cd93d 100644 --- a/Geometry/MTDCommonData/interface/MTDTopologyMode.h +++ b/Geometry/MTDCommonData/interface/MTDTopologyMode.h @@ -20,10 +20,12 @@ namespace MTDTopologyMode { btlv1etlv5 = 6, btlv2etlv5 = 7, btlv3etlv8 = 8, - btlv4etlv8 = 9 + btlv4etlv8 = 9, + btlv4etlv9 = 10, + btlv4etlv10 = 11 }; - enum class EtlLayout { v5 = 3, v8 = 4 }; + enum class EtlLayout { v5 = 3, v8 = 4, v9 = 5, v10 = 6 }; Mode MTDStringToEnumParser(const std::string&); @@ -31,6 +33,12 @@ namespace MTDTopologyMode { inline BTLDetId::CrysLayout crysLayoutFromTopoMode(const int& topoMode) { switch (topoMode) { + case static_cast(Mode::btlv4etlv10): + return BTLDetId::CrysLayout::v4; + break; + case static_cast(Mode::btlv4etlv9): + return BTLDetId::CrysLayout::v4; + break; case static_cast(Mode::btlv4etlv8): return BTLDetId::CrysLayout::v4; break; @@ -50,6 +58,12 @@ namespace MTDTopologyMode { inline EtlLayout etlLayoutFromTopoMode(const int& topoMode) { switch (topoMode) { + case static_cast(Mode::btlv4etlv10): + return EtlLayout::v10; + break; + case static_cast(Mode::btlv4etlv9): + return EtlLayout::v9; + break; case static_cast(Mode::btlv4etlv8): return EtlLayout::v8; break; diff --git a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc index fd076d0cb0b42..8bc6ee45e9b14 100644 --- a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc +++ b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc @@ -1,4 +1,4 @@ -//#define EDM_ML_DEBUG +#define EDM_ML_DEBUG #include "FWCore/MessageLogger/interface/MessageLogger.h" @@ -33,49 +33,59 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { } const bool prev8(baseNumber.getLevelName(2).find("Sensor") != std::string::npos); - - const uint32_t modCopy(baseNumber.getCopyNumber(2)); - uint32_t sensor = 0; + const bool prev9(baseNumber.getLevelName(2).find("Half_") == std::string::npos); + + std::stringstream ss; + auto dump_levels = [&]() { + for (size_t ii = 0; ii < nLevels; ii++) { + ss << ii << ": " << baseNumber.getLevelName(ii) << " "; + } + ss << "\nReturning 0"; + return ss.str(); + }; + + uint32_t modCopy(baseNumber.getCopyNumber(2)); + if (!prev9) { + modCopy = baseNumber.getCopyNumber(3); + } + uint32_t modtyp(0); + if (prev9) { + modtyp = (baseNumber.getLevelName(2).find("_Left") != std::string::npos) ? 1 : 2; + } else { + modtyp = baseNumber.getCopyNumber(2); + } + uint32_t sensor(0); if (!prev8) { sensor = baseNumber.getCopyNumber(1); } - - int modtyp(0); + // for v9 keep the same sensor order inside a module as in v8 + if (!prev9 && modtyp == 2) { + sensor = (sensor == 1) ? 2 : 1; + } uint32_t discN, sectorS, sectorN; - discN = (baseNumber.getLevelName(4).find("Disc1") != std::string::npos) ? 0 : 1; - sectorS = (baseNumber.getLevelName(3).find("Front") != std::string::npos) ? 0 : 1; - sectorN = baseNumber.getCopyNumber(3); + uint32_t offset = prev9 ? 3 : 4; + discN = (baseNumber.getLevelName(offset + 1).find("Disc1") != std::string::npos) ? 0 : 1; + sectorS = (baseNumber.getLevelName(offset).find("Front") != std::string::npos) ? 0 : 1; + sectorN = baseNumber.getCopyNumber(offset); ETLDetId tmpId; - int ringCopy = static_cast(tmpId.encodeSector(discN, sectorS, sectorN)); - - modtyp = (baseNumber.getLevelName(2).find("_Left") != std::string::npos) ? 1 : 2; + uint32_t ringCopy = static_cast(tmpId.encodeSector(discN, sectorS, sectorN)); - int nSide(7); - const std::string_view& sideName(baseNumber.getLevelName(nSide)); - if (sideName.find("CALOECTSFront") != std::string::npos) { + uint32_t nSide(999); + if (baseNumber.getLevelName(7).find("CALOECTSFront") != std::string::npos) { nSide = 8; + } else if (baseNumber.getLevelName(8).find("CALOECTSFront") != std::string::npos) { + nSide = 9; } else { - edm::LogWarning("MTDGeom") << "ETLNumberingScheme::getUnitID(): incorrect volume stack: \n" - << baseNumber.getLevelName(0) << ", " << baseNumber.getLevelName(1) << ", " - << baseNumber.getLevelName(2) << ", " << baseNumber.getLevelName(3) << ", " - << baseNumber.getLevelName(4) << ", " << baseNumber.getLevelName(5) << ", " - << baseNumber.getLevelName(6) << ", " << baseNumber.getLevelName(7) << ", " - << baseNumber.getLevelName(8) << ", " << baseNumber.getLevelName(9) << ", " - << baseNumber.getLevelName(10) << ", " << baseNumber.getLevelName(11) << "\nReturning 0"; + edm::LogWarning("MTDGeom") << "ETLNumberingScheme::getUnitID(): incorrect volume stack: \n" << dump_levels(); return 0; } const uint32_t sideCopy(baseNumber.getCopyNumber(nSide)); const uint32_t zside(sideCopy == 1 ? 1 : 0); #ifdef EDM_ML_DEBUG - edm::LogInfo("MTDGeom") << baseNumber.getLevelName(0) << ", " << baseNumber.getLevelName(1) << ", " - << baseNumber.getLevelName(2) << ", " << baseNumber.getLevelName(3) << ", " - << baseNumber.getLevelName(4) << ", " << baseNumber.getLevelName(5) << ", " - << baseNumber.getLevelName(6) << ", " << baseNumber.getLevelName(7) << ", " - << baseNumber.getLevelName(8) << ", " << baseNumber.getLevelName(9) << ", " - << baseNumber.getLevelName(10) << ", " << baseNumber.getLevelName(11); + edm::LogInfo("MTDGeom") << dump_levels(); #endif // error checking diff --git a/Geometry/MTDCommonData/src/MTDTopologyMode.cc b/Geometry/MTDCommonData/src/MTDTopologyMode.cc index d2d86e0afa7d2..4705d3e21d7e9 100644 --- a/Geometry/MTDCommonData/src/MTDTopologyMode.cc +++ b/Geometry/MTDCommonData/src/MTDTopologyMode.cc @@ -13,6 +13,10 @@ namespace MTDTopologyMode { output = Mode::btlv3etlv8; } else if (value == prefix + "btlv4etlv8") { output = Mode::btlv4etlv8; + } else if (value == prefix + "btlv4etlv9") { + output = Mode::btlv4etlv9; + } else if (value == prefix + "btlv4etlv10") { + output = Mode::btlv4etlv10; } else { throw cms::Exception("MTDTopologyModeError") << "the value " << value << " is not defined."; } diff --git a/Geometry/MTDGeometryBuilder/interface/MTDTopology.h b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h index 4ea6d97362571..b446be7eea111 100644 --- a/Geometry/MTDGeometryBuilder/interface/MTDTopology.h +++ b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h @@ -27,7 +27,7 @@ class MTDTopology { using BTLValues = BTLLayout; struct ETLfaceLayout { - uint32_t idDiscSide_; // disc face identifier + uint32_t idDiscSide_; // disc face identifier: 0 disc1 F, 1 disc1 B, 2 disc2 F, 3 disc2 B uint32_t idDetType1_; // module type id identifier for first row std::array, 2> start_copy_; // start copy per row, first of type idDetType1_ diff --git a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc index 0b060b6986a3d..d88ea6375ee4e 100644 --- a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc +++ b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc @@ -1,4 +1,4 @@ -//#define EDM_ML_DEBUG +#define EDM_ML_DEBUG #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" @@ -99,29 +99,106 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM MTDTopology::ETLfaceLayout tmpFace; - // Front Face (0), starting with type Right (2) + if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) <= + static_cast(MTDTopologyMode::EtlLayout::v8)) { + // Disc1 Front Face (0), starting with type Right (2) - tmpFace.idDiscSide_ = 0; // ETL front side - tmpFace.idDetType1_ = 2; // ETL module type right + tmpFace.idDiscSide_ = 0; // ETL front side, Disc1 + tmpFace.idDetType1_ = 2; // ETL module type right - tmpFace.start_copy_[0] = ptp.vitems_[3].vpars_; // start_copy_FR - tmpFace.start_copy_[1] = ptp.vitems_[2].vpars_; // start_copy_FL - tmpFace.offset_[0] = ptp.vitems_[7].vpars_; // offset_FR - tmpFace.offset_[1] = ptp.vitems_[6].vpars_; // offset_FL + tmpFace.start_copy_[0] = ptp.vitems_[3].vpars_; // start_copy_FR + tmpFace.start_copy_[1] = ptp.vitems_[2].vpars_; // start_copy_FL + tmpFace.offset_[0] = ptp.vitems_[7].vpars_; // offset_FR + tmpFace.offset_[1] = ptp.vitems_[6].vpars_; // offset_FL - etlVals.emplace_back(tmpFace); + etlVals.emplace_back(tmpFace); - // Back Face (1), starting with type Left (1) + // Disc1 Back Face (1), starting with type Left (1) - tmpFace.idDiscSide_ = 1; // ETL back side - tmpFace.idDetType1_ = 1; // ETL module type left + tmpFace.idDiscSide_ = 1; // ETL back side, Disc1 + tmpFace.idDetType1_ = 1; // ETL module type left - tmpFace.start_copy_[0] = ptp.vitems_[4].vpars_; // start_copy_BL - tmpFace.start_copy_[1] = ptp.vitems_[5].vpars_; // start_copy_BR - tmpFace.offset_[0] = ptp.vitems_[8].vpars_; // offset_BL - tmpFace.offset_[1] = ptp.vitems_[9].vpars_; // offset_BR + tmpFace.start_copy_[0] = ptp.vitems_[4].vpars_; // start_copy_BL + tmpFace.start_copy_[1] = ptp.vitems_[5].vpars_; // start_copy_BR + tmpFace.offset_[0] = ptp.vitems_[8].vpars_; // offset_BL + tmpFace.offset_[1] = ptp.vitems_[9].vpars_; // offset_BR - etlVals.emplace_back(tmpFace); + etlVals.emplace_back(tmpFace); + + // Disc2 Front Face (0), starting with type Right (2) + + tmpFace.idDiscSide_ = 2; // ETL front side, Disc2 + tmpFace.idDetType1_ = 2; // ETL module type right + + tmpFace.start_copy_[0] = ptp.vitems_[3].vpars_; // start_copy_FR + tmpFace.start_copy_[1] = ptp.vitems_[2].vpars_; // start_copy_FL + tmpFace.offset_[0] = ptp.vitems_[7].vpars_; // offset_FR + tmpFace.offset_[1] = ptp.vitems_[6].vpars_; // offset_FL + + etlVals.emplace_back(tmpFace); + + // Disc2 Back Face (1), starting with type Left (1) + + tmpFace.idDiscSide_ = 3; // ETL back side, Disc2 + tmpFace.idDetType1_ = 1; // ETL module type left + + tmpFace.start_copy_[0] = ptp.vitems_[4].vpars_; // start_copy_BL + tmpFace.start_copy_[1] = ptp.vitems_[5].vpars_; // start_copy_BR + tmpFace.offset_[0] = ptp.vitems_[8].vpars_; // offset_BL + tmpFace.offset_[1] = ptp.vitems_[9].vpars_; // offset_BR + + etlVals.emplace_back(tmpFace); + + } else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) > + static_cast(MTDTopologyMode::EtlLayout::v8)) { + // Disc1 Front Face (0), starting with type Right (2) + + tmpFace.idDiscSide_ = 0; // ETL front side, Disc1 + tmpFace.idDetType1_ = 2; // etl module type HalfFront2 + + tmpFace.start_copy_[0] = ptp.vitems_[2].vpars_; // start_copy_FR + tmpFace.start_copy_[1] = ptp.vitems_[2].vpars_; // start_copy_FL + tmpFace.offset_[0] = ptp.vitems_[6].vpars_; // offset_FR + tmpFace.offset_[1] = ptp.vitems_[6].vpars_; // offset_FL + + etlVals.emplace_back(tmpFace); + + // Disc1 Back Face (1), starting with type Left (1) + + tmpFace.idDiscSide_ = 1; // ETL back side, Disc1 + tmpFace.idDetType1_ = 2; // ETL module type HalfBack2 + + tmpFace.start_copy_[0] = ptp.vitems_[3].vpars_; // start_copy_BL + tmpFace.start_copy_[1] = ptp.vitems_[3].vpars_; // start_copy_BR + tmpFace.offset_[0] = ptp.vitems_[7].vpars_; // offset_BL + tmpFace.offset_[1] = ptp.vitems_[7].vpars_; // offset_BR + + etlVals.emplace_back(tmpFace); + + // Disc2 Front Face (0), starting with type Right (2) + + tmpFace.idDiscSide_ = 2; // ETL front side, Disc2 + tmpFace.idDetType1_ = 2; // etl module type HalfFront2 + + tmpFace.start_copy_[0] = ptp.vitems_[4].vpars_; // start_copy_FR + tmpFace.start_copy_[1] = ptp.vitems_[4].vpars_; // start_copy_FL + tmpFace.offset_[0] = ptp.vitems_[8].vpars_; // offset_FR + tmpFace.offset_[1] = ptp.vitems_[8].vpars_; // offset_FL + + etlVals.emplace_back(tmpFace); + + // Disc2 Back Face (1), starting with type Left (1) + + tmpFace.idDiscSide_ = 3; // ETL back side, Disc2 + tmpFace.idDetType1_ = 2; // ETL module type HalfBack2 + + tmpFace.start_copy_[0] = ptp.vitems_[5].vpars_; // start_copy_BL + tmpFace.start_copy_[1] = ptp.vitems_[5].vpars_; // start_copy_BR + tmpFace.offset_[0] = ptp.vitems_[9].vpars_; // offset_BL + tmpFace.offset_[1] = ptp.vitems_[9].vpars_; // offset_BR + + etlVals.emplace_back(tmpFace); + } #ifdef EDM_ML_DEBUG edm::LogVerbatim("MTDTopologyEP") << " Topology mode = " << mtdTopologyMode << "\n"; diff --git a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc index 2f16a2d75099f..b3a2bd53471cb 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc @@ -1,4 +1,4 @@ -//#define EDM_ML_DEBUG +#define EDM_ML_DEBUG #include "Geometry/MTDGeometryBuilder/interface/MTDParametersFromDD.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" @@ -59,28 +59,36 @@ bool MTDParametersFromDD::build(const DDCompactView* cvp, PMTDParameters& ptp) { throw cms::Exception("MTDParametersFromDD") << "Not found " << attribute.c_str() << " but needed."; } + std::vector etlLayout; if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v5 || MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v8) { - std::array etlLayout{{ - "StartCopyNo_Front_Left", - "StartCopyNo_Front_Right", - "StartCopyNo_Back_Left", - "StartCopyNo_Back_Right", - "Offset_Front_Left", - "Offset_Front_Right", - "Offset_Back_Left", - "Offset_Back_Right", - }}; - int sector(10); - for (const auto& name : etlLayout) { - auto const& v = cvp->vector(name); - if (!v.empty()) { - sector++; - std::vector ipos = dbl_to_int(v); - putOne(sector, ipos, ptp); - } else { - throw cms::Exception("MTDParametersFromDD") << "Not found " << name << " but needed."; - } + etlLayout.emplace_back("StartCopyNo_Front_Left"); + etlLayout.emplace_back("StartCopyNo_Front_Right"); + etlLayout.emplace_back("StartCopyNo_Back_Left"); + etlLayout.emplace_back("StartCopyNo_Back_Right"); + etlLayout.emplace_back("Offset_Front_Left"); + etlLayout.emplace_back("Offset_Front_Right"); + etlLayout.emplace_back("Offset_Back_Left"); + etlLayout.emplace_back("Offset_Back_Right"); + } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v9) { + etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); + etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); + etlLayout.emplace_back("StartCopyNo_Front_Disc_2"); + etlLayout.emplace_back("StartCopyNo_Back_Disc_2"); + etlLayout.emplace_back("Offset_Front_Disc_1"); + etlLayout.emplace_back("Offset_Back_Disc_1"); + etlLayout.emplace_back("Offset_Front_Disc_2"); + etlLayout.emplace_back("Offset_Back_Disc_2"); + } + int sector(10); + for (const auto& name : etlLayout) { + auto const& v = cvp->vector(name); + if (!v.empty()) { + sector++; + std::vector ipos = dbl_to_int(v); + putOne(sector, ipos, ptp); + } else { + throw cms::Exception("MTDParametersFromDD") << "Not found " << name << " but needed."; } } @@ -134,37 +142,45 @@ bool MTDParametersFromDD::build(const cms::DDCompactView* cvp, PMTDParameters& p throw cms::Exception("MTDParametersFromDD") << "Not found " << attribute.c_str() << " but needed."; } + std::vector etlLayout; if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v5 || MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v8) { - std::array etlLayout{{ - "StartCopyNo_Front_Left", - "StartCopyNo_Front_Right", - "StartCopyNo_Back_Left", - "StartCopyNo_Back_Right", - "Offset_Front_Left", - "Offset_Front_Right", - "Offset_Back_Left", - "Offset_Back_Right", - }}; - int sector(10); // add vector index with offset, to distinguish from subdet - for (const auto& name : etlLayout) { - bool found(false); - for (auto const& it : vmap) { - if (dd4hep::dd::compareEqual(dd4hep::dd::noNamespace(it.first), name)) { - sector++; - std::vector ipos; - ipos.reserve(it.second.size()); - for (const auto& i : it.second) - ipos.emplace_back(std::round(i)); - putOne(sector, ipos, ptp); - found = true; - break; - } - } - if (!found) { - throw cms::Exception("MTDParametersFromDD") << "Not found " << name << " but needed."; + etlLayout.emplace_back("StartCopyNo_Front_Left"); + etlLayout.emplace_back("StartCopyNo_Front_Right"); + etlLayout.emplace_back("StartCopyNo_Back_Left"); + etlLayout.emplace_back("StartCopyNo_Back_Right"); + etlLayout.emplace_back("Offset_Front_Left"); + etlLayout.emplace_back("Offset_Front_Right"); + etlLayout.emplace_back("Offset_Back_Left"); + etlLayout.emplace_back("Offset_Back_Right"); + } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v9) { + etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); + etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); + etlLayout.emplace_back("StartCopyNo_Front_Disc_2"); + etlLayout.emplace_back("StartCopyNo_Back_Disc_2"); + etlLayout.emplace_back("Offset_Front_Disc_1"); + etlLayout.emplace_back("Offset_Back_Disc_1"); + etlLayout.emplace_back("Offset_Front_Disc_2"); + etlLayout.emplace_back("Offset_Back_Disc_2"); + } + int sector(10); // add vector index with offset, to distinguish from subdet + for (const auto& name : etlLayout) { + bool found(false); + for (auto const& it : vmap) { + if (dd4hep::dd::compareEqual(dd4hep::dd::noNamespace(it.first), name)) { + sector++; + std::vector ipos; + ipos.reserve(it.second.size()); + for (const auto& i : it.second) + ipos.emplace_back(std::round(i)); + putOne(sector, ipos, ptp); + found = true; + break; } } + if (!found) { + throw cms::Exception("MTDParametersFromDD") << "Not found " << name << " but needed."; + } } return true; diff --git a/Geometry/MTDGeometryBuilder/src/MTDTopology.cc b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc index a7387b0119c42..339569d8ece54 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDTopology.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc @@ -124,7 +124,7 @@ size_t MTDTopology::hshiftETL(const uint32_t detid, const int horizontalShift) c int sensor = start_mod.sensor(); int module = start_mod.module(); uint32_t modtyp = start_mod.modType(); - uint32_t discside = start_mod.discSide(); + uint32_t discface = start_mod.discSide() + 2 * (start_mod.nDisc() - 1); int geomDetIndex; // distinguish numbering in prev8 / v8 geometries @@ -138,18 +138,18 @@ size_t MTDTopology::hshiftETL(const uint32_t detid, const int horizontalShift) c // ilayout number coincides at present with disc face, use this - size_t iHome = (modtyp == etlVals_[discside].idDetType1_) ? 0 : 1; - size_t iLeft = (etlVals_[discside].idDetType1_ == 1) ? 0 : 1; + size_t iHome = (modtyp == etlVals_[discface].idDetType1_) ? 0 : 1; + size_t iLeft = (etlVals_[discface].idDetType1_ == 1) ? 0 : 1; // for left type modules the position according to the default order is module - 1, for the rigth type modules the total number of left modules must be added - size_t nmodOffset = (modtyp == 1) ? 0 : etlVals_[discside].start_copy_[iLeft].back() - 1; + size_t nmodOffset = (modtyp == 1) ? 0 : etlVals_[discface].start_copy_[iLeft].back() - 1; - for (size_t iloop = 0; iloop < etlVals_[discside].start_copy_[iHome].size() - 1; iloop++) { - if (geomDetIndex >= etlVals_[discside].start_copy_[iHome][iloop] && - geomDetIndex < etlVals_[discside].start_copy_[iHome][iloop + 1]) { - if (geomDetIndex + hsh >= etlVals_[discside].start_copy_[iHome][iloop] && - geomDetIndex + hsh < etlVals_[discside].start_copy_[iHome][iloop + 1]) { + for (size_t iloop = 0; iloop < etlVals_[discface].start_copy_[iHome].size() - 1; iloop++) { + if (geomDetIndex >= etlVals_[discface].start_copy_[iHome][iloop] && + geomDetIndex < etlVals_[discface].start_copy_[iHome][iloop + 1]) { + if (geomDetIndex + hsh >= etlVals_[discface].start_copy_[iHome][iloop] && + geomDetIndex + hsh < etlVals_[discface].start_copy_[iHome][iloop + 1]) { return geomDetIndex + hsh - 1 + nmodOffset; } break; @@ -173,7 +173,7 @@ size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, siz int sensor = start_mod.sensor(); int module = start_mod.module(); uint32_t modtyp = start_mod.modType(); - uint32_t discside = start_mod.discSide(); + uint32_t discface = start_mod.discSide() + 2 * (start_mod.nDisc() - 1); int geomDetIndex; // distinguish numbering in prev8 / v8 geometries @@ -187,25 +187,25 @@ size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, siz // ilayout number coincides at present with disc face, use this - size_t iHome = (modtyp == etlVals_[discside].idDetType1_) ? 0 : 1; + size_t iHome = (modtyp == etlVals_[discface].idDetType1_) ? 0 : 1; size_t iOther = (iHome == 0) ? 1 : 0; - size_t iLeft = (etlVals_[discside].idDetType1_ == 1) ? 0 : 1; + size_t iLeft = (etlVals_[discface].idDetType1_ == 1) ? 0 : 1; // for right type modules the offset of the total number of left modules needs to be added, // what matters here is the other type, i.e. if the starting module is left the vertical shift moves towards a right type, and viceversa - size_t nmodOffset = (modtyp == 1) ? etlVals_[discside].start_copy_[iLeft].back() - 1 : 0; + size_t nmodOffset = (modtyp == 1) ? etlVals_[discface].start_copy_[iLeft].back() - 1 : 0; - size_t iBin(etlVals_[discside].start_copy_[iHome].size()); // never allowed - for (size_t iloop = 0; iloop < etlVals_[discside].start_copy_[iHome].size() - 1; iloop++) { - if (geomDetIndex >= etlVals_[discside].start_copy_[iHome][iloop] && - geomDetIndex < etlVals_[discside].start_copy_[iHome][iloop + 1]) { + size_t iBin(etlVals_[discface].start_copy_[iHome].size()); // never allowed + for (size_t iloop = 0; iloop < etlVals_[discface].start_copy_[iHome].size() - 1; iloop++) { + if (geomDetIndex >= etlVals_[discface].start_copy_[iHome][iloop] && + geomDetIndex < etlVals_[discface].start_copy_[iHome][iloop + 1]) { iBin = iloop; break; } } - if (iBin == etlVals_[discside].start_copy_[iHome].size()) { + if (iBin == etlVals_[discface].start_copy_[iHome].size()) { edm::LogWarning("MTDTopology") << "Module number not compatible with layout, abort"; return failIndex_; } @@ -219,30 +219,30 @@ size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, siz if (iHome == 1 && vsh > 0) { iBinOther = iBin + 1; } - if (iBinOther < 0 || iBinOther >= static_cast(etlVals_[discside].start_copy_[iOther].size()) - 1) { + if (iBinOther < 0 || iBinOther >= static_cast(etlVals_[discface].start_copy_[iOther].size()) - 1) { return failIndex_; } // determine the position of the other type corresponding to the same column of the home type - int vpos = etlVals_[discside].offset_[iHome][iBin] + geomDetIndex - etlVals_[discside].start_copy_[iHome][iBin] + 1; - if (vpos <= etlVals_[discside].offset_[iOther][iBinOther]) { - closest = etlVals_[discside].start_copy_[iOther][iBinOther]; - } else if (vpos > etlVals_[discside].offset_[iOther][iBinOther] + - etlVals_[discside].start_copy_[iOther][iBinOther + 1] - - etlVals_[discside].start_copy_[iOther][iBinOther] || - (vpos == etlVals_[discside].offset_[iOther][iBinOther] + - etlVals_[discside].start_copy_[iOther][iBinOther + 1] - - etlVals_[discside].start_copy_[iOther][iBinOther] && - iBinOther + 1 == static_cast(etlVals_[discside].start_copy_[iOther].size()))) { - closest = etlVals_[discside].start_copy_[iOther][iBinOther + 1] - 1; + int vpos = etlVals_[discface].offset_[iHome][iBin] + geomDetIndex - etlVals_[discface].start_copy_[iHome][iBin] + 1; + if (vpos <= etlVals_[discface].offset_[iOther][iBinOther]) { + closest = etlVals_[discface].start_copy_[iOther][iBinOther]; + } else if (vpos > etlVals_[discface].offset_[iOther][iBinOther] + + etlVals_[discface].start_copy_[iOther][iBinOther + 1] - + etlVals_[discface].start_copy_[iOther][iBinOther] || + (vpos == etlVals_[discface].offset_[iOther][iBinOther] + + etlVals_[discface].start_copy_[iOther][iBinOther + 1] - + etlVals_[discface].start_copy_[iOther][iBinOther] && + iBinOther + 1 == static_cast(etlVals_[discface].start_copy_[iOther].size()))) { + closest = etlVals_[discface].start_copy_[iOther][iBinOther + 1] - 1; } if (closest < failIndex_) { closest = closest + nmodOffset - 1; return failIndex_; } else { // number of module shifted by 1 wrt the position in the array (i.e. module 1 has index 0) - return etlVals_[discside].start_copy_[iOther][iBinOther] + vpos - 1 - - etlVals_[discside].offset_[iOther][iBinOther] + nmodOffset - 1; + return etlVals_[discface].start_copy_[iOther][iBinOther] + vpos - 1 - + etlVals_[discface].offset_[iOther][iBinOther] + nmodOffset - 1; } } diff --git a/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc b/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc index 8a05fef2ee512..e3419c354d1e9 100644 --- a/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc +++ b/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc @@ -1,4 +1,4 @@ -//#define EDM_ML_DEBUG +#define EDM_ML_DEBUG #include "RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h" @@ -22,10 +22,9 @@ pair, vector > ETLDetLayerGeometryBuilder::buildLay const int mtdTopologyMode = topo.getMTDTopologyMode(); MTDTopologyMode::EtlLayout etlL = MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode); - // number of layers is identical for post TDR scenarios, pick v4 // loop on number of sectors per face, two faces per disc (i.e. layer) taken into account in layer building (front/back) unsigned int nSector(1); - if (etlL == MTDTopologyMode::EtlLayout::v5 || etlL == MTDTopologyMode::EtlLayout::v8) { + if (static_cast(etlL) >= static_cast(MTDTopologyMode::EtlLayout::v5)) { nSector *= ETLDetId::kETLv5maxSector; } else { throw cms::Exception("MTDDetLayers") << "Not implemented scenario " << mtdTopologyMode; diff --git a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc index a0b8b566456ae..cef613446437b 100644 --- a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc +++ b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc @@ -315,14 +315,15 @@ void MTDRecoGeometryAnalyzer::testETLLayersNew(const MTDDetLayerGeometry* geo, c LogVerbatim("MTDLayerDumpFull") << std::fixed << "ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) - << modId.sector() << " mod/type = " << std::setw(4) << modId.module() << " " - << std::setw(4) << modId.modType() - << " pos = " << fvecround(imod->position(), 4); + << modId.sector() << " mod/type/sensor = " << std::setw(4) << modId.module() + << " " << std::setw(4) << modId.modType() << " " << std::setw(4) + << modId.sensor() << " pos = " << fvecround(imod->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << " pos = " << fvecround(imod->position(), 2); + << " mod/type/sensor = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << " " << std::setw(4) << modId.sensor() + << " pos = " << fvecround(imod->position(), 2); } } } diff --git a/RecoMTD/DetLayers/test/TestETLNavigation.cc b/RecoMTD/DetLayers/test/TestETLNavigation.cc index 71d09f3b0a84b..f1259f2664796 100644 --- a/RecoMTD/DetLayers/test/TestETLNavigation.cc +++ b/RecoMTD/DetLayers/test/TestETLNavigation.cc @@ -90,14 +90,16 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << " pos = " << fvecround(imod->position(), 4); + << " mod/type/sens = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << std::setw(4) << modId.sensor() + << " pos = " << fvecround(imod->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << " ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << " pos = " << fvecround(imod->position(), 2); + << " mod/type/sens = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << std::setw(4) << modId.sensor() + << " pos = " << fvecround(imod->position(), 2); for (int iside = -1; iside <= 1; iside += 2) { size_t idetNew = isector->hshift(modId, iside); if (idetNew >= isector->basicComponents().size()) { @@ -110,15 +112,15 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............hshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............hshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) << newId.discSide() << " " << std::setw(4) << newId.sector() - << " mod/type = " << std::setw(4) << newId.module() << " " << std::setw(4) - << newId.modType() + << " mod/type/sens = " << std::setw(4) << newId.module() << " " << std::setw(4) + << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } @@ -135,14 +137,14 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << ".......closest.vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << ".......closest.vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 2); } } else { @@ -150,15 +152,15 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) << newId.discSide() << " " << std::setw(4) << newId.sector() - << " mod/type = " << std::setw(4) << newId.module() << " " << std::setw(4) - << newId.modType() + << " mod/type/sens = " << std::setw(4) << newId.module() << " " << std::setw(4) + << newId.modType() << std::setw(4) << newId.sensor() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } From 96da6961fcfd37eb2d5c5e935fbe547eb74b39c8 Mon Sep 17 00:00:00 2001 From: Fabio Cossutti Date: Sun, 9 Mar 2025 13:24:22 +0100 Subject: [PATCH 2/4] Remove test/debug additions to default code --- .../Geometry/python/defaultPhase2ConditionsEra_cff.py | 4 +--- Geometry/MTDCommonData/src/ETLNumberingScheme.cc | 2 +- Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc | 2 +- Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc | 2 +- RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py b/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py index 0ff51f959d9bd..9fa25a87a4bb1 100644 --- a/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py +++ b/Configuration/Geometry/python/defaultPhase2ConditionsEra_cff.py @@ -2,9 +2,7 @@ from Configuration.AlCa.autoCond import autoCond from Configuration.StandardSequences.Eras import eras -#DEFAULT_VERSION = "Run4D110" -DEFAULT_VERSION = "Run4D200" -#DEFAULT_VERSION = "Run4D201" +DEFAULT_VERSION = "Run4D110" def get_era_and_conditions(version_key): """Retrieve the era and global tag for a given version key. diff --git a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc index 8bc6ee45e9b14..c1ff9acf09bfd 100644 --- a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc +++ b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc @@ -1,4 +1,4 @@ -#define EDM_ML_DEBUG +//#define EDM_ML_DEBUG #include "FWCore/MessageLogger/interface/MessageLogger.h" diff --git a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc index d88ea6375ee4e..d769a4c8eb861 100644 --- a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc +++ b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc @@ -1,4 +1,4 @@ -#define EDM_ML_DEBUG +//#define EDM_ML_DEBUG #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" diff --git a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc index b3a2bd53471cb..442cfcffe0d84 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc @@ -1,4 +1,4 @@ -#define EDM_ML_DEBUG +//#define EDM_ML_DEBUG #include "Geometry/MTDGeometryBuilder/interface/MTDParametersFromDD.h" #include "Geometry/MTDCommonData/interface/MTDTopologyMode.h" diff --git a/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc b/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc index e3419c354d1e9..b950b74198ab3 100644 --- a/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc +++ b/RecoMTD/DetLayers/src/ETLDetLayerGeometryBuilder.cc @@ -1,4 +1,4 @@ -#define EDM_ML_DEBUG +//#define EDM_ML_DEBUG #include "RecoMTD/DetLayers/interface/ETLDetLayerGeometryBuilder.h" From fa7fadf5cefb444eac88fdf572354732d2da00ac Mon Sep 17 00:00:00 2001 From: Fabio Cossutti Date: Sun, 9 Mar 2025 13:55:04 +0100 Subject: [PATCH 3/4] Temporarily revert update of RecoMTD/DetLayers test output for compatibility with exsiting reference --- .../DetLayers/test/MTDRecoGeometryAnalyzer.cc | 11 +++--- RecoMTD/DetLayers/test/TestETLNavigation.cc | 34 +++++++++---------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc index cef613446437b..a0b8b566456ae 100644 --- a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc +++ b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc @@ -315,15 +315,14 @@ void MTDRecoGeometryAnalyzer::testETLLayersNew(const MTDDetLayerGeometry* geo, c LogVerbatim("MTDLayerDumpFull") << std::fixed << "ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) - << modId.sector() << " mod/type/sensor = " << std::setw(4) << modId.module() - << " " << std::setw(4) << modId.modType() << " " << std::setw(4) - << modId.sensor() << " pos = " << fvecround(imod->position(), 4); + << modId.sector() << " mod/type = " << std::setw(4) << modId.module() << " " + << std::setw(4) << modId.modType() + << " pos = " << fvecround(imod->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type/sensor = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << " " << std::setw(4) << modId.sensor() - << " pos = " << fvecround(imod->position(), 2); + << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << " pos = " << fvecround(imod->position(), 2); } } } diff --git a/RecoMTD/DetLayers/test/TestETLNavigation.cc b/RecoMTD/DetLayers/test/TestETLNavigation.cc index f1259f2664796..71d09f3b0a84b 100644 --- a/RecoMTD/DetLayers/test/TestETLNavigation.cc +++ b/RecoMTD/DetLayers/test/TestETLNavigation.cc @@ -90,16 +90,14 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type/sens = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << std::setw(4) << modId.sensor() - << " pos = " << fvecround(imod->position(), 4); + << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << " pos = " << fvecround(imod->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << " ETLDetId " << modId.rawId() << " side = " << std::setw(4) << modId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << modId.nDisc() << " " << std::setw(4) << modId.discSide() << " " << std::setw(4) << modId.sector() - << " mod/type/sens = " << std::setw(4) << modId.module() << " " << std::setw(4) - << modId.modType() << std::setw(4) << modId.sensor() - << " pos = " << fvecround(imod->position(), 2); + << " mod/type = " << std::setw(4) << modId.module() << " " << std::setw(4) + << modId.modType() << " pos = " << fvecround(imod->position(), 2); for (int iside = -1; iside <= 1; iside += 2) { size_t idetNew = isector->hshift(modId, iside); if (idetNew >= isector->basicComponents().size()) { @@ -112,15 +110,15 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............hshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............hshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) << newId.discSide() << " " << std::setw(4) << newId.sector() - << " mod/type/sens = " << std::setw(4) << newId.module() << " " << std::setw(4) - << newId.modType() << std::setw(4) << newId.sensor() + << " mod/type = " << std::setw(4) << newId.module() << " " << std::setw(4) + << newId.modType() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } @@ -137,14 +135,14 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << ".......closest.vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << ".......closest.vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 2); } } else { @@ -152,15 +150,15 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) - << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type/sens = " << std::setw(4) - << newId.module() << " " << std::setw(4) << newId.modType() << std::setw(4) << newId.sensor() + << newId.discSide() << " " << std::setw(4) << newId.sector() << " mod/type = " << std::setw(4) + << newId.module() << " " << std::setw(4) << newId.modType() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............vshift= " << std::setw(2) << iside << " side = " << std::setw(4) << newId.mtdSide() << " Disc/Side/Sector = " << std::setw(4) << newId.nDisc() << " " << std::setw(4) << newId.discSide() << " " << std::setw(4) << newId.sector() - << " mod/type/sens = " << std::setw(4) << newId.module() << " " << std::setw(4) - << newId.modType() << std::setw(4) << newId.sensor() + << " mod/type = " << std::setw(4) << newId.module() << " " << std::setw(4) + << newId.modType() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } From 80233cf756a052b481b54ecec0b56aaac2f9ac12 Mon Sep 17 00:00:00 2001 From: Fabio Cossutti Date: Sun, 9 Mar 2025 17:28:39 +0100 Subject: [PATCH 4/4] Update reading parameters also for ETL v10 --- Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc index 442cfcffe0d84..aee25a6825386 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc @@ -70,7 +70,7 @@ bool MTDParametersFromDD::build(const DDCompactView* cvp, PMTDParameters& ptp) { etlLayout.emplace_back("Offset_Front_Right"); etlLayout.emplace_back("Offset_Back_Left"); etlLayout.emplace_back("Offset_Back_Right"); - } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v9) { + } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) >= MTDTopologyMode::EtlLayout::v9) { etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); etlLayout.emplace_back("StartCopyNo_Front_Disc_2"); @@ -153,7 +153,7 @@ bool MTDParametersFromDD::build(const cms::DDCompactView* cvp, PMTDParameters& p etlLayout.emplace_back("Offset_Front_Right"); etlLayout.emplace_back("Offset_Back_Left"); etlLayout.emplace_back("Offset_Back_Right"); - } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) == MTDTopologyMode::EtlLayout::v9) { + } else if (MTDTopologyMode::etlLayoutFromTopoMode(topoMode) >= MTDTopologyMode::EtlLayout::v9) { etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); etlLayout.emplace_back("StartCopyNo_Front_Disc_2");