diff --git a/Configuration/Geometry/README.md b/Configuration/Geometry/README.md index e7d64044bde69..a67bae3cd2c78 100644 --- a/Configuration/Geometry/README.md +++ b/Configuration/Geometry/README.md @@ -164,6 +164,8 @@ Fast Timing system: * I18: Same as I17, needed for updated BTL numbering scheme and BTLDetId format * I19: BTL I18/v4, ETL v9 with 2024 full layout * I20: BTL I18/v4, ETL v10 with 2024 1.7 layout +* I21: BTL I18/v4, ETL v11 with 2024 full layout, same as v9 with additional level and id for service hybrids +* I22: BTL I18/v4, ETL v12 with 2024 1.7 layout, same as v10 with additional level and id for service hybrids The script also handles the common and forward elements of the geometry: * O4: detailed cavern description, changes for modified CALO region for endcap part, no overlaps inside the Muon System @@ -212,3 +214,5 @@ Several detector combinations have been generated: * D121 = T35+C25+M16+I18+O10+F9 (Current Phase-2 baseline from CMSSW_15_1_0_pre4) * D122 = T35+C27+M16+I18+O10+F9 * D123 = T35+C28+M16+I18+O10+F9 +* D124 = T35+C25+M16+I21+O10+F9 +* D125 = T35+C25+M16+I22+O10+F9 diff --git a/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D124Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D124Reco_cff.py new file mode 100644 index 0000000000000..b4a135dfcc356 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D124Reco_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.GeometryDD4hepExtendedRun4D124_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/GeometryDD4hepExtendedRun4D124_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D124_cff.py new file mode 100644 index 0000000000000..f0f2b68d80d90 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D124_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/cmsExtendedGeometryRun4D124.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/GeometryDD4hepExtendedRun4D125Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D125Reco_cff.py new file mode 100644 index 0000000000000..38f28d1b56c9a --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D125Reco_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.GeometryDD4hepExtendedRun4D125_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/GeometryDD4hepExtendedRun4D125_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D125_cff.py new file mode 100644 index 0000000000000..8c758e73242fe --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtendedRun4D125_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/cmsExtendedGeometryRun4D125.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/GeometryExtendedRun4D124Reco_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D124Reco_cff.py new file mode 100644 index 0000000000000..a53fad5f2ef32 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D124Reco_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.GeometryExtendedRun4D124_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/GeometryExtendedRun4D124_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D124_cff.py new file mode 100644 index 0000000000000..0af2bb80dd286 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D124_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.cmsExtendedGeometryRun4D124XML_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/GeometryExtendedRun4D125Reco_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D125Reco_cff.py new file mode 100644 index 0000000000000..a83b4ca5c23b5 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D125Reco_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.GeometryExtendedRun4D125_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/GeometryExtendedRun4D125_cff.py b/Configuration/Geometry/python/GeometryExtendedRun4D125_cff.py new file mode 100644 index 0000000000000..179100ea5f60e --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtendedRun4D125_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.cmsExtendedGeometryRun4D125XML_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/dictRun4Geometry.py b/Configuration/Geometry/python/dictRun4Geometry.py index f9ab616663da2..509c1daaa69e7 100644 --- a/Configuration/Geometry/python/dictRun4Geometry.py +++ b/Configuration/Geometry/python/dictRun4Geometry.py @@ -1885,6 +1885,62 @@ ], "era" : "phase2_timing, phase2_timing_layer, phase2_etlV4", }, + "I21" : { + 1 : [ + 'Geometry/MTDCommonData/data/mtdMaterial/v4/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v11/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v9/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v9/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", + }, + "I22" : { + 1 : [ + 'Geometry/MTDCommonData/data/mtdMaterial/v4/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v12/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v10/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v10/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 ] @@ -1918,6 +1974,8 @@ ("O10","T35","C25","M16","F9","I18") : "D121", ("O10","T35","C27","M16","F9","I18") : "D122", ("O10","T35","C28","M16","F9","I18") : "D123", + ("O10","T35","C25","M16","F9","I21") : "D124", + ("O10","T35","C25","M16","F9","I22") : "D125", } 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 72cb5788f3f82..05c100594c5f1 100644 --- a/Configuration/PyReleaseValidation/python/relval_Run4.py +++ b/Configuration/PyReleaseValidation/python/relval_Run4.py @@ -43,6 +43,8 @@ numWFIB.extend([34434.0]) #Run4D121 numWFIB.extend([34834.0]) #Run4D122 numWFIB.extend([35234.0]) #Run4D123 +numWFIB.extend([35634.0]) #Run4D124 +numWFIB.extend([36034.0]) #Run4D125 #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 14899a3b4c967..c5ce584a24986 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -113,6 +113,10 @@ 'Run4D122PU', 'Run4D123', 'Run4D123PU', + 'Run4D124', + 'Run4D124PU', + 'Run4D125', + 'Run4D125PU', ] # pre-generation of WF numbers @@ -3745,6 +3749,20 @@ def condition(self, fragment, stepList, key, hasHarvest): 'Era' : 'Phase2C26I13M9', 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], }, + 'Run4D124' : { + 'Geom' : 'ExtendedRun4D124', + 'HLTmenu': '@relvalRun4', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C22I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, + 'Run4D125' : { + 'Geom' : 'ExtendedRun4D125', + 'HLTmenu': '@relvalRun4', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C22I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, } # standard PU sequences diff --git a/Configuration/StandardSequences/python/GeometryConf.py b/Configuration/StandardSequences/python/GeometryConf.py index b1e7766f40347..e1efc18585580 100644 --- a/Configuration/StandardSequences/python/GeometryConf.py +++ b/Configuration/StandardSequences/python/GeometryConf.py @@ -144,6 +144,10 @@ 'DD4hepExtendedRun4D122' : 'DD4hepExtendedRun4D122,DD4hepExtendedRun4D122Reco', 'ExtendedRun4D123' : 'ExtendedRun4D123,ExtendedRun4D123Reco', 'DD4hepExtendedRun4D123' : 'DD4hepExtendedRun4D123,DD4hepExtendedRun4D123Reco', + 'ExtendedRun4D124' : 'ExtendedRun4D124,ExtendedRun4D124Reco', + 'DD4hepExtendedRun4D124' : 'DD4hepExtendedRun4D124,DD4hepExtendedRun4D124Reco', + 'ExtendedRun4D125' : 'ExtendedRun4D125,ExtendedRun4D125Reco', + 'DD4hepExtendedRun4D125' : 'DD4hepExtendedRun4D125,DD4hepExtendedRun4D125Reco', 'ExtendedRun4D500' : 'ExtendedRun4D500,ExtendedRun4D500Reco', 'DD4hepExtendedRun4D500' : 'DD4hepExtendedRun4D500,DD4hepExtendedRun4D500Reco', } diff --git a/DataFormats/ForwardDetId/interface/BTLDetId.h b/DataFormats/ForwardDetId/interface/BTLDetId.h index db058046b2fb7..af51035630a05 100644 --- a/DataFormats/ForwardDetId/interface/BTLDetId.h +++ b/DataFormats/ForwardDetId/interface/BTLDetId.h @@ -222,4 +222,6 @@ class BTLDetId : public MTDDetId { std::ostream& operator<<(std::ostream&, const BTLDetId&); +std::stringstream printBTLSMDetId(uint32_t detId); + #endif // DataFormats_BTLDetId_BTLDetId_h diff --git a/DataFormats/ForwardDetId/interface/ETLDetId.h b/DataFormats/ForwardDetId/interface/ETLDetId.h index 705673fd396ac..95dad717e4129 100644 --- a/DataFormats/ForwardDetId/interface/ETLDetId.h +++ b/DataFormats/ForwardDetId/interface/ETLDetId.h @@ -3,14 +3,27 @@ #include "DataFormats/ForwardDetId/interface/MTDDetId.h" #include +#include /** @class ETLDetId @brief Detector identifier class for the Endcap Timing Layer. - + + v8-v10 bit 15-5 : module sequential number bit 4-3 : module type (unused so far) bit 2-1 : sensor + bit 0 : version + + v11 onwards + bit 15 : used to identify the version + bits 14-13 : unused + bits 12-11 : Service Hybrid type (3(1)-6(2)-7(3)) + bits 10-5 : Service Hybrid copy number of that type in a sect + bits 4-2 : Module copy number within the Service hybrid + bit 1 : top/bottom side of the module (1 or 2) + bit 0 : sensor within each side (1 or 2) + */ class ETLDetId : public MTDDetId { @@ -51,6 +64,19 @@ class ETLDetId : public MTDDetId { static constexpr uint32_t kSoff = 4; + /// constants for new ETLDetId format (from v11 onwards) + static constexpr uint32_t kETLservicetypMask = 0x3; + static constexpr uint32_t kETLserviceCopyMask = 0x3F; + static constexpr uint32_t kETLmodCopyv11Mask = 0x7; + static constexpr uint32_t kETLmodTypev11Mask = 0x1; + static constexpr uint32_t kETLsensorv11Mask = 0x1; + + static constexpr uint32_t kETLVersionOffset = 15; + static constexpr uint32_t kETLservicetypOffset = 11; + static constexpr uint32_t kETLserviceCopyOffset = 5; + static constexpr uint32_t kETLmodCopyv11Offset = 2; + static constexpr uint32_t kETLmodTypev11Offset = 1; + // ---------- Constructors, enumerated types ---------- /** Construct a null id */ @@ -59,19 +85,19 @@ class ETLDetId : public MTDDetId { id_ |= kETLformatV2; } - /** Construct from a raw value */ + /** Construct from a raw value (applies a change in the Id if bit0 is 0 and bit15 is 0) */ ETLDetId(const uint32_t& raw_id) { uint32_t tmpId = raw_id; - if ((tmpId & kETLformatV2) == 0) { + if (((tmpId >> kETLVersionOffset) & 0x1) == 0 && (tmpId & kETLformatV2) == 0) { tmpId = newForm(tmpId); } id_ = MTDDetId(tmpId).rawId(); } - /** Construct from generic DetId */ + /** Construct from generic DetId (applies a change in the Id if bit0 is 0 and bit15 is 0)*/ ETLDetId(const DetId& det_id) { uint32_t tmpId = det_id.rawId(); - if ((tmpId & kETLformatV2) == 0) { + if (((tmpId >> kETLVersionOffset) & 0x1) == 0 && (tmpId & kETLformatV2) == 0) { tmpId = newForm(tmpId); } id_ = MTDDetId(tmpId).rawId(); @@ -86,7 +112,7 @@ class ETLDetId : public MTDDetId { (modtyp & kETLmodTypeMask) << kETLmodTypeOffset; id_ |= kETLformatV2; } - // v8 + // v8 - v10 ETLDetId(uint32_t zside, uint32_t ring, uint32_t module, uint32_t modtyp, uint32_t sensor) : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { id_ |= (MTDType::ETL & kMTDsubdMask) << kMTDsubdOffset | (zside & kZsideMask) << kZsideOffset | @@ -94,6 +120,23 @@ class ETLDetId : public MTDDetId { (modtyp & kETLmodTypeMask) << kETLmodTypeOffset | (sensor & kETLsensorMask) << kETLsensorOffset; id_ |= kETLformatV2; } + // from v11 + ETLDetId(uint32_t zside, + uint32_t ring, + uint32_t version, + uint32_t servicetyp, + uint32_t serviceCopy, + uint32_t module, + uint32_t modtyp, + uint32_t sensor) + : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { + id_ |= (MTDType::ETL & kMTDsubdMask) << kMTDsubdOffset | (zside & kZsideMask) << kZsideOffset | + (ring & kRodRingMask) << kRodRingOffset | version << kETLVersionOffset | + (servicetyp & kETLservicetypMask) << kETLservicetypOffset | + (serviceCopy & kETLserviceCopyMask) << kETLserviceCopyOffset | + (module & kETLmodCopyv11Mask) << kETLmodCopyv11Offset | + (modtyp & kETLmodTypev11Mask) << kETLmodTypev11Offset | (sensor & kETLsensorv11Mask); + } /** ETL TDR Construct and fill only the det and sub-det fields. */ /** input disc runs from 0 to 1 */ @@ -118,7 +161,7 @@ class ETLDetId : public MTDDetId { (module & kETLmoduleMask) << kETLmoduleOffset | (modtyp & kETLmodTypeMask) << kETLmodTypeOffset; id_ |= kETLformatV2; } - // v8 + // v8 - v10 ETLDetId(uint32_t zside, uint32_t disc, uint32_t discside, @@ -133,17 +176,65 @@ class ETLDetId : public MTDDetId { (sensor & kETLsensorMask) << kETLsensorOffset; id_ |= kETLformatV2; } + // from v11 + ETLDetId(uint32_t zside, + uint32_t disc, + uint32_t discside, + uint32_t sector, + uint32_t version, + uint32_t servicetyp, + uint32_t serviceCopy, + uint32_t module, + uint32_t modtyp, + uint32_t sensor) + : MTDDetId(DetId::Forward, ForwardSubdetector::FastTime) { + id_ |= (MTDType::ETL & kMTDsubdMask) << kMTDsubdOffset | (zside & kZsideMask) << kZsideOffset | + (encodeSector(disc, discside, sector) & kRodRingMask) << kRodRingOffset | version << kETLVersionOffset | + (servicetyp & kETLservicetypMask) << kETLservicetypOffset | + (serviceCopy & kETLserviceCopyMask) << kETLserviceCopyOffset | + (module & kETLmodCopyv11Mask) << kETLmodCopyv11Offset | + (modtyp & kETLmodTypev11Mask) << kETLmodTypev11Offset | (sensor & kETLsensorv11Mask); + } // ---------- Common methods ---------- - /** Returns ETL module number. */ - inline int module() const { return (id_ >> kETLmoduleOffset) & kETLmoduleMask; } + /** Returns 1 if bit15 is 1 (version 11 onwards) 0 if not. */ + inline int version() const { return (id_ >> kETLVersionOffset) & 0x1; } + + /** Returns ETL service hybrid type from v11 onwards. */ + inline int servType() const { return version() == 1 ? (id_ >> kETLservicetypOffset) & kETLservicetypMask : 0; } + + /** Returns ETL service hybrid number from v11 onwards. */ + inline int servCopy() const { return version() == 1 ? (id_ >> kETLserviceCopyOffset) & kETLserviceCopyMask : 0; } - /** Returns ETL module type number. */ - inline int modType() const { return (id_ >> kETLmodTypeOffset) & kETLmodTypeMask; } + /** Returns ETL module number. Uses version bit to decide between pre-v11 and v11+. */ + inline int module() const { + if (version() == 1) { + return (id_ >> kETLmodCopyv11Offset) & kETLmodCopyv11Mask; + } else { + return (id_ >> kETLmoduleOffset) & kETLmoduleMask; + } + } + + /** Returns ETL module type number. Uses version bit to decide between pre-v11 and v11+. */ + inline int modType() const { + if (version() == 1) { + int mt = (id_ >> kETLmodTypev11Offset) & kETLmodTypev11Mask; + return (mt == 0 ? 2 : 1); + } else { + return (id_ >> kETLmodTypeOffset) & kETLmodTypeMask; + } + } - /** Returns ETL module sensor number. */ - inline int sensor() const { return (id_ >> kETLsensorOffset) & kETLsensorMask; } + /** Returns ETL module sensor number. Uses version bit to decide between pre-v11 and v11+. */ + inline int sensor() const { + if (version() == 1) { + int s = (id_ & kETLsensorv11Mask); + return (s == 0 ? 2 : 1); + } else { + return (id_ >> kETLsensorOffset) & kETLsensorMask; + } + } ETLDetId geographicalId() const { return id_; } @@ -172,4 +263,6 @@ class ETLDetId : public MTDDetId { std::ostream& operator<<(std::ostream&, const ETLDetId&); +std::stringstream printETLDetId(uint32_t detId); + #endif // DataFormats_ETLDetId_ETLDetId_h diff --git a/DataFormats/ForwardDetId/src/BTLDetId.cc b/DataFormats/ForwardDetId/src/BTLDetId.cc index 5dcede7969920..3cd52885b6388 100644 --- a/DataFormats/ForwardDetId/src/BTLDetId.cc +++ b/DataFormats/ForwardDetId/src/BTLDetId.cc @@ -32,3 +32,16 @@ std::ostream& operator<<(std::ostream& os, const BTLDetId& id) { << " Crystal in DB: " << id.crystalConsDB() << std::endl; return os; } + +std::stringstream printBTLSMDetId(uint32_t detId) { + std::stringstream ss; + BTLDetId thisId(detId); + if (thisId.det() != DetId::Forward || thisId.subdetId() != MTDDetId::FastTime || + thisId.mtdSubDetector() != MTDDetId::BTL) { + ss << "DetId " << detId << " not an BTLDetId!"; + } + + ss << " BTLDetId " << thisId.rawId() << " side = " << std::setw(2) << thisId.mtdSide() << " tray = " << std::setw(4) + << thisId.mtdRR() << " RU = " << std::setw(4) << thisId.runit() << " mod = " << std::setw(4) << thisId.module(); + return ss; +} diff --git a/DataFormats/ForwardDetId/src/ETLDetId.cc b/DataFormats/ForwardDetId/src/ETLDetId.cc index 94cb955f95de6..067633145f758 100644 --- a/DataFormats/ForwardDetId/src/ETLDetId.cc +++ b/DataFormats/ForwardDetId/src/ETLDetId.cc @@ -4,12 +4,30 @@ std::ostream& operator<<(std::ostream& os, const ETLDetId& id) { os << (MTDDetId&)id; os << " ETL " << std::endl - << " Side : " << id.mtdSide() << 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; + << " Side : " << id.mtdSide() << std::endl + << " Disc : " << id.nDisc() << std::endl + << " Disc Side : " << id.discSide() << std::endl + << " Sector : " << id.sector() << std::endl + << " Service Hybrid Type : " << id.servType() << std::endl + << " Service Hybrid Number : " << id.servCopy() << std::endl + << " Module Number : " << id.module() << std::endl + << " Module Type : " << id.modType() << std::endl + << " Sensor : " << id.sensor() << std::endl; return os; } + +std::stringstream printETLDetId(uint32_t detId) { + std::stringstream ss; + ETLDetId thisId(detId); + if (thisId.det() != DetId::Forward || thisId.subdetId() != MTDDetId::FastTime || + thisId.mtdSubDetector() != MTDDetId::ETL) { + ss << "DetId " << detId << " not an ETLDetId!"; + } + + ss << " ETLDetId " << thisId.rawId() << " side = " << std::setw(2) << thisId.mtdSide() + << " disc/face/sec = " << std::setw(4) << thisId.nDisc() << " " << std::setw(4) << thisId.discSide() << " " + << std::setw(4) << thisId.sector() << " shtyp/sh = " << std::setw(4) << thisId.servType() << " " << std::setw(4) + << thisId.servCopy() << " mod/typ/sens = " << std::setw(4) << thisId.module() << " " << std::setw(4) + << thisId.modType() << " " << std::setw(4) << thisId.sensor(); + return ss; +} diff --git a/DataFormats/ForwardDetId/src/classes_def.xml b/DataFormats/ForwardDetId/src/classes_def.xml index c61a79616422b..d0b706542f770 100644 --- a/DataFormats/ForwardDetId/src/classes_def.xml +++ b/DataFormats/ForwardDetId/src/classes_def.xml @@ -29,12 +29,6 @@ - - newForm(newObj->rawId())); - *newObj=tmp; - ]]> - diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D124.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D124.xml new file mode 100644 index 0000000000000..912283fdf978c --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D124.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D125.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D125.xml new file mode 100644 index 0000000000000..04508a9a6a436 --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometryRun4D125.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D124XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D124XML_cfi.py new file mode 100644 index 0000000000000..f3c8516774093 --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D124XML_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/v6/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/v4/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v11/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v9/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v9/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/cmsExtendedGeometryRun4D125XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D125XML_cfi.py new file mode 100644 index 0000000000000..ff7ebd631126b --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometryRun4D125XML_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/v6/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/v4/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v4/btl.xml', + 'Geometry/MTDCommonData/data/etl/v12/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v10/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v10/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 index 85a952d5ff726..10a8c13ae8075 100644 --- a/Geometry/MTDCommonData/data/etl/v10/etl.xml +++ b/Geometry/MTDCommonData/data/etl/v10/etl.xml @@ -2872,7 +2872,7 @@ - ([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_back_1]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([Module_translation_z]) @@ -3511,7 +3511,7 @@ - ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) + ([x_start_front_1]+2*[Module_X]+2*[DeltaX]), ([y_start_front]+34*[DeltaY_ServiceModule]+34*[DeltaY]), ([Module_translation_z]) @@ -4086,7 +4086,7 @@ - ([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]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) @@ -4242,7 +4242,7 @@ - ([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]+6*[Module_X]+6*[DeltaX]), ([y_start_back_1]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) diff --git a/Geometry/MTDCommonData/data/etl/v11/etl.xml b/Geometry/MTDCommonData/data/etl/v11/etl.xml new file mode 100644 index 0000000000000..849f9b50a10e2 --- /dev/null +++ b/Geometry/MTDCommonData/data/etl/v11/etl.xml @@ -0,0 +1,5913 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 309, 343, 377, 409, 439, + 471, 505, 541, 577, 617, 661, 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 + + + + 3, 7, 7, 6, 7, 6, 3, 6, 6, 6, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 7, 7, + 3, 7, 7, 3, 7, 7, 3, 7, 6, 3, 6, 6, 3, 7, 6, 3, 7, 7, 3, 6, 6, 6, 6, 6, + 6, 7, 7, 6, 7, 6, 6, 3, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 7 + + + + 3, 7, 3, 7, 7, 7, 6, 3, 6, 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 3, 7, 7, 3, 7, 7, 3, 7, 7, 6, 6, + 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 6 + + + + 3, 7, 7, 6, 7, 6, 3, 6, 6, 6, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, + 6, 7, 6, 6, 7, 7, 3, 7, 6, 3, 6, 6, 3, 7, 6, 3, 7, 7, 3, 7, 6, 6, 6, 6, + 6, 7, 7, 6, 7, 6, 6, 3, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 7 + + + + 3, 7, 3, 7, 7, 7, 6, 3, 6, 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 3, 7, 7, 3, 7, 7, 3, 7, 7, 6, 6, + 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 6 + + + + 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]+3*[Module_X]+3*[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]+5*[Module_X]+5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[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]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+18*[Module_X]+18*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+7.5*[Module_X]+7.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]+4.5*[Module_X]+4.5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+5*[Module_X]+5*[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_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+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]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[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]+5*[Module_X]+5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[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]+4.5*[Module_X]+4.5*[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]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[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]+4.5*[Module_X]+4.5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+5*[Module_X]+5*[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_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+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]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([Module_translation_z]) + + + + + + + diff --git a/Geometry/MTDCommonData/data/etl/v12/etl.xml b/Geometry/MTDCommonData/data/etl/v12/etl.xml new file mode 100644 index 0000000000000..cfa1c931da1f6 --- /dev/null +++ b/Geometry/MTDCommonData/data/etl/v12/etl.xml @@ -0,0 +1,5548 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1, 7, 21, 47, 79, 115, 153, 195, 237, 275, 309, 343, 377, 409, 439, + 471, 505, 541, 577, 617, 661, 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 + + + + 3, 7, 7, 6, 7, 6, 3, 6, 6, 6, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 7, 7, + 3, 7, 7, 3, 7, 7, 3, 7, 6, 3, 6, 6, 3, 7, 6, 3, 7, 7, 3, 6, 6, 6, 6, 6, + 6, 7, 7, 6, 7, 6, 6, 3, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 7 + + + + 3, 7, 3, 7, 7, 7, 6, 3, 6, 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 3, 7, 7, 3, 7, 7, 3, 7, 7, 6, 6, + 6, 6, 7, 7, 6, 7, 7, 7, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 6 + + + + 3, 7, 7, 6, 7, 6, 3, 6, 6, 6, 7, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, + 6, 7, 6, 6, 7, 7, 3, 7, 6, 3, 6, 6, 3, 7, 6, 3, 7, 7, 3, 7, 6, 6, 6, 6, + 6, 7, 7, 6, 7, 6, 6, 3, 7, 7, 6, 7, 6, 6, 7, 7, 3, 6, 6, 3, 6, 6, 7 + + + + 3, 7, 7, 3, 6, 6, 6, 6, 7, 3, 7, 3, 7, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 6, 6, + 6, 6, 7, 3, 7, 3 + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[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]+5*[Module_X]+5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[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]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+18*[Module_X]+18*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+7.5*[Module_X]+7.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]+4.5*[Module_X]+4.5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+5*[Module_X]+5*[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_back_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+[DeltaY_ServiceModule]+[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+3*[DeltaY_ServiceModule]+3*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+7*[DeltaY_ServiceModule]+7*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+11*[DeltaY_ServiceModule]+11*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+15*[DeltaY_ServiceModule]+15*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+5.5*[Module_X]+5.5*[DeltaX]), ([y_start_front]+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]+7.5*[Module_X]+7.5*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+21*[Module_X]+21*[DeltaX]), ([y_start_front]+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]+6*[Module_X]+6*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+19.5*[Module_X]+19.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+37*[DeltaY_ServiceModule]+37*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+45*[DeltaY_ServiceModule]+45*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+47*[DeltaY_ServiceModule]+47*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+13*[Module_X]+13*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+51*[DeltaY_ServiceModule]+51*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[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]+5*[Module_X]+5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+4*[DeltaY_ServiceModule]+4*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+6*[DeltaY_ServiceModule]+6*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+14*[Module_X]+14*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+10*[DeltaY_ServiceModule]+10*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([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]+4*[Module_X]+4*[DeltaX]), ([y_start_front]+16*[DeltaY_ServiceModule]+16*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[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]+4.5*[Module_X]+4.5*[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]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+22*[DeltaY_ServiceModule]+22*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+10*[Module_X]+10*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+30*[DeltaY_ServiceModule]+30*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+21*[Module_X]+21*[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]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13.5*[Module_X]+13.5*[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]+4.5*[Module_X]+4.5*[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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+36*[DeltaY_ServiceModule]+36*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([y_start_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+20*[Module_X]+20*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+40*[DeltaY_ServiceModule]+40*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+16.5*[Module_X]+16.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9.5*[Module_X]+9.5*[DeltaX]), ([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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+44*[DeltaY_ServiceModule]+44*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+15*[Module_X]+15*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+46*[DeltaY_ServiceModule]+46*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+13*[Module_X]+13*[DeltaX]), ([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]+2.5*[Module_X]+2.5*[DeltaX]), ([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]+5*[Module_X]+5*[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]+[Module_X]+[DeltaX]), ([y_start_front]+8*[DeltaY_ServiceModule]+8*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+[Module_X]+[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+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_front]+12*[DeltaY_ServiceModule]+12*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+13*[DeltaY_ServiceModule]+13*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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_back_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+18*[DeltaY_ServiceModule]+18*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+19*[DeltaY_ServiceModule]+19*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+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_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+20*[DeltaY_ServiceModule]+20*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+21*[DeltaY_ServiceModule]+21*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+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_front]+23*[DeltaY_ServiceModule]+23*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+24*[DeltaY_ServiceModule]+24*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+25*[DeltaY_ServiceModule]+25*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+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]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+26*[DeltaY_ServiceModule]+26*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+10.5*[Module_X]+10.5*[DeltaX]), ([y_start_front]+27*[DeltaY_ServiceModule]+27*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+15*[Module_X]+15*[DeltaX]), ([y_start_front]+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]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+28*[DeltaY_ServiceModule]+28*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+9*[Module_X]+9*[DeltaX]), ([y_start_front]+29*[DeltaY_ServiceModule]+29*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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]+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_front]+31*[DeltaY_ServiceModule]+31*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+14*[Module_X]+14*[DeltaX]), ([y_start_front]+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_back_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+32*[DeltaY_ServiceModule]+32*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+7*[Module_X]+7*[DeltaX]), ([y_start_front]+33*[DeltaY_ServiceModule]+33*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+12*[Module_X]+12*[DeltaX]), ([y_start_front]+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]+4.5*[Module_X]+4.5*[DeltaX]), ([y_start_front]+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]+2.5*[Module_X]+2.5*[DeltaX]), ([y_start_front]+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_front]+38*[DeltaY_ServiceModule]+38*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_front_1]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+39*[DeltaY_ServiceModule]+39*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+8*[Module_X]+8*[DeltaX]), ([y_start_front]+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]+3*[Module_X]+3*[DeltaX]), ([y_start_front]+41*[DeltaY_ServiceModule]+41*[DeltaY]), ([Module_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+[Module_X]+[DeltaX]), ([y_start_front]+42*[DeltaY_ServiceModule]+42*[DeltaY]), ([ServiceHybrid_translation_z]) + + + + + + + + + + + + + ([x_start_back_1]+[Module_X]+[DeltaX]), ([y_start_front]+43*[DeltaY_ServiceModule]+43*[DeltaY]), ([Module_translation_z]) + + + + + + + diff --git a/Geometry/MTDCommonData/data/mtdMaterial/v4/mtdMaterial.xml b/Geometry/MTDCommonData/data/mtdMaterial/v4/mtdMaterial.xml new file mode 100644 index 0000000000000..cc0515a700378 --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdMaterial/v4/mtdMaterial.xml @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v10/mtdParameters.xml b/Geometry/MTDCommonData/data/mtdParameters/v10/mtdParameters.xml new file mode 100644 index 0000000000000..c9517bff4792c --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v10/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/v10/mtdStructureTopology.xml b/Geometry/MTDCommonData/data/mtdParameters/v10/mtdStructureTopology.xml new file mode 100644 index 0000000000000..00d62f0a01649 --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v10/mtdStructureTopology.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/data/mtdParameters/v9/mtdParameters.xml b/Geometry/MTDCommonData/data/mtdParameters/v9/mtdParameters.xml new file mode 100644 index 0000000000000..c9517bff4792c --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v9/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/v9/mtdStructureTopology.xml b/Geometry/MTDCommonData/data/mtdParameters/v9/mtdStructureTopology.xml new file mode 100644 index 0000000000000..827374b8291c1 --- /dev/null +++ b/Geometry/MTDCommonData/data/mtdParameters/v9/mtdStructureTopology.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/MTDCommonData/interface/MTDTopologyMode.h b/Geometry/MTDCommonData/interface/MTDTopologyMode.h index 8bf22fc7cd93d..cfd98cb7edbe0 100644 --- a/Geometry/MTDCommonData/interface/MTDTopologyMode.h +++ b/Geometry/MTDCommonData/interface/MTDTopologyMode.h @@ -22,10 +22,12 @@ namespace MTDTopologyMode { btlv3etlv8 = 8, btlv4etlv8 = 9, btlv4etlv9 = 10, - btlv4etlv10 = 11 + btlv4etlv10 = 11, + btlv4etlv11 = 12, + btlv4etlv12 = 13 }; - enum class EtlLayout { v5 = 3, v8 = 4, v9 = 5, v10 = 6 }; + enum class EtlLayout { v5 = 3, v8 = 4, v9 = 5, v10 = 6, v11 = 7, v12 = 8 }; Mode MTDStringToEnumParser(const std::string&); @@ -33,6 +35,12 @@ namespace MTDTopologyMode { inline BTLDetId::CrysLayout crysLayoutFromTopoMode(const int& topoMode) { switch (topoMode) { + case static_cast(Mode::btlv4etlv12): + return BTLDetId::CrysLayout::v4; + break; + case static_cast(Mode::btlv4etlv11): + return BTLDetId::CrysLayout::v4; + break; case static_cast(Mode::btlv4etlv10): return BTLDetId::CrysLayout::v4; break; @@ -58,6 +66,12 @@ namespace MTDTopologyMode { inline EtlLayout etlLayoutFromTopoMode(const int& topoMode) { switch (topoMode) { + case static_cast(Mode::btlv4etlv12): + return EtlLayout::v12; + break; + case static_cast(Mode::btlv4etlv11): + return EtlLayout::v11; + break; case static_cast(Mode::btlv4etlv10): return EtlLayout::v10; break; diff --git a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc index c1ff9acf09bfd..4981421310db1 100644 --- a/Geometry/MTDCommonData/src/ETLNumberingScheme.cc +++ b/Geometry/MTDCommonData/src/ETLNumberingScheme.cc @@ -34,6 +34,7 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { const bool prev8(baseNumber.getLevelName(2).find("Sensor") != std::string::npos); const bool prev9(baseNumber.getLevelName(2).find("Half_") == std::string::npos); + const bool prev11(baseNumber.getLevelName(4).find("module_Service") == std::string::npos); std::stringstream ss; auto dump_levels = [&]() { @@ -44,6 +45,24 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { return ss.str(); }; + uint32_t version(0); + if (!prev11) { + version = 1; + } + uint32_t servicetyp(0); + if (!prev11) { + if (baseNumber.getLevelName(4).find("module_ServiceHybrid3") != std::string::npos) { + servicetyp = 1; + } else if (baseNumber.getLevelName(4).find("module_ServiceHybrid6") != std::string::npos) { + servicetyp = 2; + } else if (baseNumber.getLevelName(4).find("module_ServiceHybrid7") != std::string::npos) { + servicetyp = 3; + } + } + uint32_t serviceCopy(0); + if (!prev11) { + serviceCopy = baseNumber.getCopyNumber(4); + } uint32_t modCopy(baseNumber.getCopyNumber(2)); if (!prev9) { modCopy = baseNumber.getCopyNumber(3); @@ -64,7 +83,14 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { } uint32_t discN, sectorS, sectorN; - uint32_t offset = prev9 ? 3 : 4; + uint32_t offset(0); + if (prev9) { + offset = 3; + } else if (prev11) { + offset = 4; + } else { + offset = 5; + } 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); @@ -77,8 +103,13 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { nSide = 8; } else if (baseNumber.getLevelName(8).find("CALOECTSFront") != std::string::npos) { nSide = 9; - } else { - edm::LogWarning("MTDGeom") << "ETLNumberingScheme::getUnitID(): incorrect volume stack: \n" << dump_levels(); + } else if (baseNumber.getLevelName(9).find("CALOECTSFront") != std::string::npos) { + nSide = 10; + } + + if (nSide == 999) { + edm::LogWarning("MTDGeom") << "ETLNumberingScheme::getUnitID(): incorrect volume stack BLABLABLA: \n" + << dump_levels(); return 0; } const uint32_t sideCopy(baseNumber.getCopyNumber(nSide)); @@ -128,7 +159,7 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { ETLDetId altETLdetid(zside, discN, sectorS, sectorN, modCopy, modtyp); altintindex = altETLdetid.rawId(); - } else { + } else if (!prev8 && prev11) { ETLDetId thisETLdetid(zside, ringCopy, modCopy, modtyp, sensor); intindex = thisETLdetid.rawId(); #ifdef EDM_ML_DEBUG @@ -139,6 +170,17 @@ uint32_t ETLNumberingScheme::getUnitID(const MTDBaseNumber& baseNumber) const { ETLDetId altETLdetid(zside, discN, sectorS, sectorN, modCopy, modtyp, sensor); altintindex = altETLdetid.rawId(); + } else if (!prev11) { + ETLDetId thisETLdetid(zside, ringCopy, version, servicetyp, serviceCopy, modCopy, modtyp, sensor); + intindex = thisETLdetid.rawId(); +#ifdef EDM_ML_DEBUG + edm::LogInfo("MTDGeom") << "ETL Numbering scheme: " + << " ring = " << ringCopy << " zside = " << zside << " service type " << servicetyp + << " service copy " << serviceCopy << " module " << modCopy << " modtyp = " << modtyp + << " sensor = " << sensor << " Raw Id = " << intindex; +#endif + ETLDetId altETLdetid(zside, discN, sectorS, sectorN, version, servicetyp, serviceCopy, modCopy, modtyp, sensor); + altintindex = altETLdetid.rawId(); } if (intindex != altintindex) { diff --git a/Geometry/MTDCommonData/src/MTDTopologyMode.cc b/Geometry/MTDCommonData/src/MTDTopologyMode.cc index 4705d3e21d7e9..5e5258a79e230 100644 --- a/Geometry/MTDCommonData/src/MTDTopologyMode.cc +++ b/Geometry/MTDCommonData/src/MTDTopologyMode.cc @@ -17,6 +17,10 @@ namespace MTDTopologyMode { output = Mode::btlv4etlv9; } else if (value == prefix + "btlv4etlv10") { output = Mode::btlv4etlv10; + } else if (value == prefix + "btlv4etlv11") { + output = Mode::btlv4etlv11; + } else if (value == prefix + "btlv4etlv12") { + output = Mode::btlv4etlv12; } else { throw cms::Exception("MTDTopologyModeError") << "the value " << value << " is not defined."; } diff --git a/Geometry/MTDCommonData/test/TestMTDIdealGeometry.cc b/Geometry/MTDCommonData/test/TestMTDIdealGeometry.cc index 6aa32c1ca0529..abda1fe79a1cd 100644 --- a/Geometry/MTDCommonData/test/TestMTDIdealGeometry.cc +++ b/Geometry/MTDCommonData/test/TestMTDIdealGeometry.cc @@ -29,6 +29,8 @@ #include "DataFormats/Math/interface/angle_units.h" #include "DataFormats/Math/interface/Rounding.h" +//#define EDM_ML_DEBUG + class TestMTDIdealGeometry : public edm::one::EDAnalyzer<> { public: explicit TestMTDIdealGeometry(const edm::ParameterSet&); diff --git a/Geometry/MTDCommonData/test/testMTDinDD4hep.py b/Geometry/MTDCommonData/test/testMTDinDD4hep.py index 4906d1112e589..d61abb5396519 100644 --- a/Geometry/MTDCommonData/test/testMTDinDD4hep.py +++ b/Geometry/MTDCommonData/test/testMTDinDD4hep.py @@ -20,19 +20,19 @@ limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.DD4hep_TestMTDIdealGeometry = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.DD4hep_TestMTDNumbering = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.DD4hep_TestMTDPath = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.DD4hep_TestMTDPosition = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.files.mtdCommonDataDD4hep = cms.untracked.PSet( diff --git a/Geometry/MTDCommonData/test/testMTDinDDD.py b/Geometry/MTDCommonData/test/testMTDinDDD.py index 6e0f0c47ca22a..63f82c931e1ea 100644 --- a/Geometry/MTDCommonData/test/testMTDinDDD.py +++ b/Geometry/MTDCommonData/test/testMTDinDDD.py @@ -18,19 +18,19 @@ limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.TestMTDIdealGeometry = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.TestMTDNumbering = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.TestMTDPath = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.TestMTDPosition = cms.untracked.PSet( - # limit = cms.untracked.int32(-1) + #limit = cms.untracked.int32(-1) limit = cms.untracked.int32(0) ) process.MessageLogger.files.mtdCommonDataDDD = cms.untracked.PSet( diff --git a/Geometry/MTDGeometryBuilder/interface/MTDTopology.h b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h index b446be7eea111..5e2c4c601adac 100644 --- a/Geometry/MTDGeometryBuilder/interface/MTDTopology.h +++ b/Geometry/MTDGeometryBuilder/interface/MTDTopology.h @@ -32,6 +32,7 @@ class MTDTopology { std::array, 2> start_copy_; // start copy per row, first of type idDetType1_ std::array, 2> offset_; // offset per row, first of type idDetType1_ + std::array, 2> services_; // service hybrids disposition within each disk }; using ETLValues = std::vector; @@ -54,16 +55,17 @@ class MTDTopology { uint32_t phishiftBTL(const uint32_t detid, const int phiShift) const; uint32_t etashiftBTL(const uint32_t detid, const int etaShift) const; - // ETL topology navigation is based on a predefined order of dets in sector - - static bool orderETLSector(const GeomDet*& gd1, const GeomDet*& gd2); - // navigation methods in ETL topology, provide the index of the det next to DetId for // horizontal and vertical shifts in both directions, assuming the predefined order in a sector + size_t servtomoduleETL(const uint32_t detid) const; size_t hshiftETL(const uint32_t detid, const int horizontalShift) const; size_t vshiftETL(const uint32_t detid, const int verticalShift, size_t& closest) const; + // ETL topology navigation is based on a predefined order of dets in sector + + static bool orderETLSector(const GeomDet*& gd1, const GeomDet*& gd2); + private: const int mtdTopologyMode_; diff --git a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc index 9c136b1708e39..224ce4aca09ba 100644 --- a/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc +++ b/Geometry/MTDGeometryBuilder/plugins/MTDTopologyEP.cc @@ -89,11 +89,23 @@ void MTDTopologyEP::fillBTLtopology(const MTDGeometry& mtdgeo, MTDTopology::BTLV void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyMode, MTDTopology::ETLValues& etlVals) { mtdTopologyMode = ptp.topologyMode_; - // Check on the internal consistency of thr ETL layout information provided by parameters +#ifdef EDM_ML_DEBUG + edm::LogVerbatim("MTDTopologyEP") << "DEBUG: PMTDParameters vitems_ size: " << ptp.vitems_.size(); + edm::LogVerbatim("MTDTopologyEP") << "DEBUG: PMTDParameters topologyMode: " << ptp.topologyMode_; + edm::LogVerbatim("MTDTopologyEP") << "DEBUG: PMTDParameters vpars_ size: " << ptp.vpars_.size(); + + edm::LogVerbatim("MTDTopologyEP") << "DEBUG: MTDTopologyMode::EtlLayout::v8 integer value: " + << static_cast(MTDTopologyMode::EtlLayout::v8); + edm::LogVerbatim("MTDTopologyEP") << "DEBUG: MTDTopologyMode::EtlLayout::v10 integer value: " + << static_cast(MTDTopologyMode::EtlLayout::v10); +#endif + + // Check on the internal consistency of thr ETL layout information provided by parameters; there is still no check on the service hybrid dispostion vectors, skipped for now for (size_t it = 3; it <= 9; it++) { - bool exception = ((MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode) == MTDTopologyMode::EtlLayout::v10) && - (it == 5 || it == 9)); + bool exception = ((MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode) == MTDTopologyMode::EtlLayout::v10 || + MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode) == MTDTopologyMode::EtlLayout::v12) && + (it == 5 || it == 9 || it == 13)); if (ptp.vitems_[it].vpars_.size() != ptp.vitems_[2].vpars_.size()) { if (!exception) { throw cms::Exception("MTDTopologyEP") << "Inconsistent size of ETL structure arrays"; @@ -104,6 +116,7 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM } MTDTopology::ETLfaceLayout tmpFace; + std::vector dummy(1, 0); if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) <= static_cast(MTDTopologyMode::EtlLayout::v8)) { @@ -116,6 +129,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy etlVals.emplace_back(tmpFace); @@ -128,6 +143,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy etlVals.emplace_back(tmpFace); @@ -140,6 +157,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy etlVals.emplace_back(tmpFace); @@ -152,11 +171,73 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy + + etlVals.emplace_back(tmpFace); + + } else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) == + static_cast(MTDTopologyMode::EtlLayout::v9) || + static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) == + static_cast(MTDTopologyMode::EtlLayout::v10)) { + // 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 + tmpFace.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy + + 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 + tmpFace.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy + + 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 + tmpFace.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy + + 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 + tmpFace.services_[0] = dummy; // services_FR, dummy + tmpFace.services_[1] = dummy; // services_FL, dummy etlVals.emplace_back(tmpFace); } else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(mtdTopologyMode)) > - static_cast(MTDTopologyMode::EtlLayout::v8)) { + static_cast(MTDTopologyMode::EtlLayout::v10)) { // Disc1 Front Face (0), starting with type Right (2) tmpFace.idDiscSide_ = 0; // ETL front side, Disc1 @@ -166,6 +247,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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 + tmpFace.services_[0] = ptp.vitems_[10].vpars_; // services_FR + tmpFace.services_[1] = ptp.vitems_[10].vpars_; // services_FL etlVals.emplace_back(tmpFace); @@ -178,6 +261,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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 + tmpFace.services_[0] = ptp.vitems_[11].vpars_; // services_FR + tmpFace.services_[1] = ptp.vitems_[11].vpars_; // services_FL etlVals.emplace_back(tmpFace); @@ -190,6 +275,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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 + tmpFace.services_[0] = ptp.vitems_[12].vpars_; // services_FR + tmpFace.services_[1] = ptp.vitems_[12].vpars_; // services_FL etlVals.emplace_back(tmpFace); @@ -202,6 +289,8 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM 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 + tmpFace.services_[0] = ptp.vitems_[13].vpars_; // services_FR + tmpFace.services_[1] = ptp.vitems_[13].vpars_; // services_FL etlVals.emplace_back(tmpFace); } @@ -222,7 +311,9 @@ void MTDTopologyEP::fillETLtopology(const PMTDParameters& ptp, int& mtdTopologyM << "\n start_copy[0]= " << print_array(ilay.start_copy_[0]) << "\n start_copy[1]= " << print_array(ilay.start_copy_[1]) << "\n offset[0]= " << print_array(ilay.offset_[0]) - << "\n offset[1]= " << print_array(ilay.offset_[1]); + << "\n offset[1]= " << print_array(ilay.offset_[1]) + << "\n services[0]= " << print_array(ilay.services_[0]) + << "\n services[1]= " << print_array(ilay.services_[1]); } #endif diff --git a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc index 8ea796b41669c..35e1a5934df62 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDParametersFromDD.cc @@ -60,6 +60,8 @@ bool MTDParametersFromDD::build(const DDCompactView* cvp, PMTDParameters& ptp) { } std::vector etlLayout; + //will be modified with the correct versioning + //first will have to be <=v8 if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) <= static_cast(MTDTopologyMode::EtlLayout::v8)) { etlLayout.emplace_back("StartCopyNo_Front_Left"); @@ -70,8 +72,11 @@ 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 (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) > - static_cast(MTDTopologyMode::EtlLayout::v8)) { + //second will have to be <=v10 + } else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) == + static_cast(MTDTopologyMode::EtlLayout::v9) || + static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) == + static_cast(MTDTopologyMode::EtlLayout::v10)) { etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); etlLayout.emplace_back("StartCopyNo_Front_Disc_2"); @@ -81,6 +86,22 @@ bool MTDParametersFromDD::build(const DDCompactView* cvp, PMTDParameters& ptp) { etlLayout.emplace_back("Offset_Front_Disc_2"); etlLayout.emplace_back("Offset_Back_Disc_2"); } + //third will have to be >v10 + else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) > + static_cast(MTDTopologyMode::EtlLayout::v10)) { + 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"); + etlLayout.emplace_back("Services_Front_Disc_1"); + etlLayout.emplace_back("Services_Back_Disc_1"); + etlLayout.emplace_back("Services_Front_Disc_2"); + etlLayout.emplace_back("Services_Back_Disc_2"); + } int sector(10); for (const auto& name : etlLayout) { auto const& v = cvp->vector(name); @@ -143,6 +164,8 @@ bool MTDParametersFromDD::build(const cms::DDCompactView* cvp, PMTDParameters& p throw cms::Exception("MTDParametersFromDD") << "Not found " << attribute.c_str() << " but needed."; } + //will be modified with the correct versioning + //first will have to be <=v8 std::vector etlLayout; if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) <= static_cast(MTDTopologyMode::EtlLayout::v8)) { @@ -154,8 +177,23 @@ 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 (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) > - static_cast(MTDTopologyMode::EtlLayout::v8)) { + //second will have to be <=v10 + } else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) == + static_cast(MTDTopologyMode::EtlLayout::v9) || + static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) == + static_cast(MTDTopologyMode::EtlLayout::v10)) { + 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"); + } + //third will have to be >v10 + else if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) > + static_cast(MTDTopologyMode::EtlLayout::v10)) { etlLayout.emplace_back("StartCopyNo_Front_Disc_1"); etlLayout.emplace_back("StartCopyNo_Back_Disc_1"); etlLayout.emplace_back("StartCopyNo_Front_Disc_2"); @@ -164,6 +202,10 @@ bool MTDParametersFromDD::build(const cms::DDCompactView* cvp, PMTDParameters& p etlLayout.emplace_back("Offset_Back_Disc_1"); etlLayout.emplace_back("Offset_Front_Disc_2"); etlLayout.emplace_back("Offset_Back_Disc_2"); + etlLayout.emplace_back("Services_Front_Disc_1"); + etlLayout.emplace_back("Services_Back_Disc_1"); + etlLayout.emplace_back("Services_Front_Disc_2"); + etlLayout.emplace_back("Services_Back_Disc_2"); } int sector(10); // add vector index with offset, to distinguish from subdet for (const auto& name : etlLayout) { diff --git a/Geometry/MTDGeometryBuilder/src/MTDTopology.cc b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc index 339569d8ece54..d146dbc39ad75 100644 --- a/Geometry/MTDGeometryBuilder/src/MTDTopology.cc +++ b/Geometry/MTDGeometryBuilder/src/MTDTopology.cc @@ -97,16 +97,73 @@ uint32_t MTDTopology::etashiftBTL(const uint32_t detid, const int etaShift) cons } } +size_t MTDTopology::servtomoduleETL(const uint32_t detid) const { + ETLDetId id(detid); + int sum = 0; + if (id.version() == 1) { + int servtyp = (id.servType() == 1) ? 3 : (id.servType() == 2 ? 6 : 7); + int servcop = id.servCopy(); + uint32_t discface = id.discSide() + 2 * (id.nDisc() - 1); + int module = id.module(); + uint32_t modtyp = id.modType(); + size_t iHome = (modtyp == etlVals_[discface].idDetType1_) ? 0 : 1; + int count = 0; + + for (size_t iloop = 0; iloop < etlVals_[discface].services_[iHome].size(); iloop++) { + if (etlVals_[discface].services_[iHome][iloop] == servtyp) { + ++count; + } + if (count < servcop) { + sum += etlVals_[discface].services_[iHome][iloop]; + } else if (count == servcop) { + break; + } + } + sum += module; + } else { + sum = id.module(); + } + + return sum; +} + bool MTDTopology::orderETLSector(const GeomDet*& gd1, const GeomDet*& gd2) { ETLDetId det1(gd1->geographicalId().rawId()); ETLDetId det2(gd2->geographicalId().rawId()); + const Local2DPoint cen(0., 0.); + auto gpos = gd1->toGlobal(cen); + double x1 = gpos.x(); + double y1 = gpos.y(); + gpos = gd2->toGlobal(cen); + double x2 = gpos.x(); + double y2 = gpos.y(); + const double tol(1e-1); + + // based on the x,y ordering for each sector and side in the geometry construction + // according to module, sensor and type assignment + if (det1.mtdRR() != det2.mtdRR()) { return det1.mtdRR() < det2.mtdRR(); } else if (det1.modType() != det2.modType()) { return det1.modType() < det2.modType(); - } else if (det1.module() != det2.module()) { - return det1.module() < det2.module(); + } else if (std::abs(x1 - x2) > tol && std::abs(y1 - y2) < tol) { + return std::abs(x1) < std::abs(x2); + } else if (std::abs(y1 - y2) > tol) { + // order has changed for back face from version 0 to version 1 + if (det1.version() == 0 || (det1.version() == 1 && det1.discSide() == 0)) { + if (det1.discSide() + 1 == det1.sector()) { + return y1 < y2; + } else { + return y1 > y2; + } + } else { + if (det1.discSide() + 1 == det1.sector()) { + return y1 > y2; + } else { + return y1 < y2; + } + } } else { return det1.sensor() < det2.sensor(); } @@ -120,15 +177,20 @@ size_t MTDTopology::hshiftETL(const uint32_t detid, const int horizontalShift) c return failIndex_; } int hsh = horizontalShift > 0 ? 1 : -1; - + // distinguish numbering in prev8 / v8 geometries + auto topoMode = getMTDTopologyMode(); int sensor = start_mod.sensor(); + + //distingish the two DetId versions. Has to be updated with the correct versioning (>v10) int module = start_mod.module(); + if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) >= + static_cast(MTDTopologyMode::EtlLayout::v11)) { + module = servtomoduleETL(detid); + } uint32_t modtyp = start_mod.modType(); uint32_t discface = start_mod.discSide() + 2 * (start_mod.nDisc() - 1); int geomDetIndex; - // distinguish numbering in prev8 / v8 geometries - auto topoMode = getMTDTopologyMode(); if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) >= static_cast(MTDTopologyMode::EtlLayout::v8)) { geomDetIndex = 2 * (module - 1) + sensor; @@ -161,7 +223,6 @@ size_t MTDTopology::hshiftETL(const uint32_t detid, const int horizontalShift) c size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, size_t& closest) const { closest = failIndex_; - ETLDetId start_mod(detid); if (verticalShift == 0) { @@ -171,13 +232,18 @@ size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, siz int vsh = verticalShift > 0 ? 1 : -1; int sensor = start_mod.sensor(); + auto topoMode = getMTDTopologyMode(); + //distingish the two DetId versions. Has to be updated with the correct versioning (>v10) int module = start_mod.module(); + if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) >= + static_cast(MTDTopologyMode::EtlLayout::v11)) { + module = servtomoduleETL(detid); + } uint32_t modtyp = start_mod.modType(); uint32_t discface = start_mod.discSide() + 2 * (start_mod.nDisc() - 1); int geomDetIndex; // distinguish numbering in prev8 / v8 geometries - auto topoMode = getMTDTopologyMode(); if (static_cast(MTDTopologyMode::etlLayoutFromTopoMode(topoMode)) >= static_cast(MTDTopologyMode::EtlLayout::v8)) { geomDetIndex = 2 * (module - 1) + sensor; @@ -206,7 +272,7 @@ size_t MTDTopology::vshiftETL(const uint32_t detid, const int verticalShift, siz } if (iBin == etlVals_[discface].start_copy_[iHome].size()) { - edm::LogWarning("MTDTopology") << "Module number not compatible with layout, abort"; + edm::LogWarning("MTDTopology") << "Module number is not compatible with layout, abort"; return failIndex_; } diff --git a/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc b/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc index 64317d821e7b5..fbcb4fab3ebba 100644 --- a/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc +++ b/Geometry/MTDGeometryBuilder/test/DD4hep_TestPixelTopology.cc @@ -292,20 +292,11 @@ void DD4hep_TestPixelTopology::analyze(const edm::Event& iEvent, const edm::Even const GeomDetUnit theDetUnit = *(dynamic_cast(thedet)); if (isBarrel) { - edm::LogVerbatim("DD4hep_TestPixelTopology") - << "geoId= " << modIdBTL.rawId() << " side= " << modIdBTL.mtdSide() << " RU/mod= " << modIdBTL.runit() - << " / " << modIdBTL.module(); - sunitt_ << "geoId= " << modIdBTL.rawId() << " side= " << modIdBTL.mtdSide() - << " RU/mod= " << modIdBTL.runit() << " / " << modIdBTL.module(); + edm::LogVerbatim("DD4hep_TestPixelTopology") << printBTLSMDetId(modIdBTL.rawId()).str(); + sunitt_ << printBTLSMDetId(modIdBTL.rawId()).str(); } else { - edm::LogVerbatim("DD4hep_TestPixelTopology") - << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() - << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " << modIdETL.sector() - << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() << " / " << modIdETL.sensor(); - sunitt_ << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() - << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " - << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() - << " / " << modIdETL.sensor(); + edm::LogVerbatim("DD4hep_TestPixelTopology") << printETLDetId(modIdETL.rawId()).str(); + sunitt_ << printETLDetId(modIdETL.rawId()).str(); } analyseRectangle(theDetUnit); } @@ -390,9 +381,9 @@ void DD4hep_TestPixelTopology::analyze(const edm::Event& iEvent, const edm::Even if (isNewId && iloop == nTest - 1) { edm::LogVerbatim("DD4hep_TestPixelTopology") - << "row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 4) + << " row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 4) << " global pos= " << fvecround(modGlobal, 4) << "\n"; - sunitt_ << "row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 2) + sunitt_ << " row/col= " << recoRow << " / " << recoCol << " local pos= " << fvecround(modLocal, 2) << " global pos= " << fvecround(modGlobal, 2) << "\n"; } @@ -411,25 +402,15 @@ void DD4hep_TestPixelTopology::analyze(const edm::Event& iEvent, const edm::Even sunitt_ << print_path() << "\n"; if (isBarrel) { edm::LogVerbatim("DD4hep_TestPixelTopology") - << "rawId= " << theIdBTL.rawId() << " geoId= " << geoId.rawId() << " side/rod= " << theIdBTL.mtdSide() - << " / " << theIdBTL.mtdRR() << " RU= " << theIdBTL.runit() - << " module/geomodule= " << theIdBTL.module() << " / " << static_cast(geoId).module() - << " crys= " << theIdBTL.crystal() << " BTLDetId row/col= " << origRow << " / " << origCol << "\n"; - sunitt_ << "rawId= " << theIdBTL.rawId() << " geoId= " << geoId.rawId() - << " side/rod= " << theIdBTL.mtdSide() << " / " << theIdBTL.mtdRR() << " RU= " << theIdBTL.runit() - << " module/geomodule= " << theIdBTL.module() << " / " << static_cast(geoId).module() - << " crys= " << theIdBTL.crystal() << " BTLDetId row/col= " << origRow << " / " << origCol - << "\n"; + << "rawId= " << theIdBTL.rawId() << printBTLSMDetId(modIdBTL.rawId()).str() + << " module= " << theIdBTL.module() << " crys= " << theIdBTL.crystal() + << " BTLDetId row/col= " << origRow << " / " << origCol << "\n"; + sunitt_ << "rawId= " << theIdBTL.rawId() << printBTLSMDetId(modIdBTL.rawId()).str() + << " module= " << theIdBTL.module() << " crys= " << theIdBTL.crystal() + << " BTLDetId row/col= " << origRow << " / " << origCol << "\n"; } else { - edm::LogVerbatim("DD4hep_TestPixelTopology") - << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() - << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " - << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() << " / " - << modIdETL.sensor() << "\n"; - sunitt_ << "geoId= " << modIdETL.rawId() << " side= " << modIdETL.mtdSide() - << " disc/face/sec= " << modIdETL.nDisc() << " / " << modIdETL.discSide() << " / " - << modIdETL.sector() << " mod/typ/sens= " << modIdETL.module() << " / " << modIdETL.modType() - << " / " << modIdETL.sensor() << "\n"; + edm::LogVerbatim("DD4hep_TestPixelTopology") << printETLDetId(modIdETL.rawId()).str() << "\n"; + sunitt_ << printETLDetId(modIdETL.rawId()).str() << "\n"; } edm::LogVerbatim("DD4hep_TestPixelTopology") diff --git a/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc b/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc index 014c26fc26b45..c67c45a06c9f7 100644 --- a/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc +++ b/Geometry/MTDGeometryBuilder/test/MTDDigiGeometryAnalyzer.cc @@ -198,6 +198,7 @@ void MTDDigiGeometryAnalyzer::checkPixelsAcceptance(const GeomDetUnit& det) { void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) { edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "\n--- ETL Structure Validation ---"; + sunitt_ << "\n--- ETL Structure Validation ---"; // Reset counters for (int d = 0; d < 4; ++d) { @@ -260,9 +261,11 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) { // --- Print Summary --- edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " Total ETL Detectors (LGADs): " << totalETLdets << "\n"; + sunitt_ << " Total ETL Detectors (LGADs): " << totalETLdets << "\n"; const char* diskNames[4] = {"Disc 1 (-Z)", "Disc 2 (-Z)", "Disc 1 (+Z)", "Disc 2 (+Z)"}; edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "\n--- LGADs per Eta Bin and per Disk, DiscSide, Sector ---\n"; + sunitt_ << "\n--- LGADs per Eta Bin and per Disk, DiscSide, Sector ---\n"; for (int d = 0; d < 4; ++d) { // Physical Disk loop (0-3) std::string disk_name = diskNames[d]; uint32_t total_disk = 0; @@ -273,11 +276,15 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) { } edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "Region: " << disk_name << " | Total LGADs: " << total_disk << "\n"; edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " - LGADs per Eta Bin:\n"; + sunitt_ << "Region: " << disk_name << " | Total LGADs: " << total_disk << "\n"; + sunitt_ << " - LGADs per Eta Bin:\n"; const double* eta_edges = (d < 2) ? eta_bins_edges_neg : eta_bins_edges_pos; for (int j = 0; j < n_bin_Eta; ++j) { edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " Eta [" << std::setprecision(1) << std::fixed << eta_edges[j] << ", " << eta_edges[j + 1] << "): " << LGADsPerDiskperEtaBin_[d][j] << "\n"; + sunitt_ << " Eta [" << std::setprecision(1) << std::fixed << eta_edges[j] << ", " << eta_edges[j + 1] + << "): " << LGADsPerDiskperEtaBin_[d][j] << "\n"; } for (int k = 0; k < n_discSide; ++k) { uint32_t total_discside = 0; @@ -286,13 +293,17 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) { } edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " - Side: " << k << " | Total LGADs: " << total_discside << "\n"; edm::LogVerbatim("MTDDigiGeometryAnalyzer") << " - Sectors: "; + sunitt_ << " - Side: " << k << " | Total LGADs: " << total_discside << "\n"; + sunitt_ << " - Sectors: "; for (int l = 1; l < n_sector; ++l) { if (LGADsPerDiscSideSector_[d][k][l] > 0) { edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "Sec " << l << ": " << LGADsPerDiscSideSector_[d][k][l] << " | "; + sunitt_ << "Sec " << l << ": " << LGADsPerDiscSideSector_[d][k][l] << " | "; } } edm::LogVerbatim("MTDDigiGeometryAnalyzer") << "\n"; + sunitt_ << "\n"; } } } diff --git a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc index a0b8b566456ae..13c8ae436154b 100644 --- a/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc +++ b/RecoMTD/DetLayers/test/MTDRecoGeometryAnalyzer.cc @@ -49,7 +49,7 @@ class MTDRecoGeometryAnalyzer : public global::EDAnalyzer<> { void analyze(edm::StreamID, edm::Event const&, edm::EventSetup const&) const override; void testBTLLayers(const MTDDetLayerGeometry*, const MagneticField* field) const; - void testETLLayersNew(const MTDDetLayerGeometry*, const MagneticField* field) const; + void testETLLayers(const MTDDetLayerGeometry*, const MTDTopology*, const MagneticField* field) const; string dumpLayer(const DetLayer* layer) const; @@ -141,7 +141,7 @@ void MTDRecoGeometryAnalyzer::analyze(edm::StreamID, edm::Event const&, edm::Eve } testBTLLayers(geo.product(), magfield.product()); - testETLLayersNew(geo.product(), magfield.product()); + testETLLayers(geo.product(), mtdtopo.product(), magfield.product()); } void MTDRecoGeometryAnalyzer::testBTLLayers(const MTDDetLayerGeometry* geo, const MagneticField* field) const { @@ -166,17 +166,11 @@ void MTDRecoGeometryAnalyzer::testBTLLayers(const MTDDetLayerGeometry* geo, cons << "\n"; for (const auto& imod : irod->basicComponents()) { BTLDetId modId(imod->geographicalId().rawId()); - LogVerbatim("MTDLayerDumpFull") << std::fixed << "BTLDetId " << modId.rawId() << " side = " << std::setw(4) - << modId.mtdSide() << " rod = " << modId.mtdRR() - << " type/RU/mod = " << std::setw(1) << modId.modType() << "/" << std::setw(1) - << modId.runit() << "/" << std::setw(2) << modId.module() + LogVerbatim("MTDLayerDumpFull") << std::fixed << printBTLSMDetId(modId.rawId()).str() << " R = " << fround(imod->position().perp(), 4) << " phi = " << fround(imod->position().phi(), 4) << " Z = " << fround(imod->position().z(), 4); - LogVerbatim("MTDLayerDump") << std::fixed << "BTLDetId " << modId.rawId() << " side = " << std::setw(4) - << modId.mtdSide() << " rod = " << modId.mtdRR() - << " type/RU/mod = " << std::setw(1) << modId.modType() << "/" << std::setw(1) - << modId.runit() << "/" << std::setw(2) << modId.module() + LogVerbatim("MTDLayerDump") << std::fixed << printBTLSMDetId(modId.rawId()).str() << " R = " << fround(imod->position().perp(), 2) << " phi = " << fround(imod->position().phi(), 2) << " Z = " << fround(imod->position().z(), 2); @@ -283,7 +277,9 @@ void MTDRecoGeometryAnalyzer::testBTLLayers(const MTDDetLayerGeometry* geo, cons } } -void MTDRecoGeometryAnalyzer::testETLLayersNew(const MTDDetLayerGeometry* geo, const MagneticField* field) const { +void MTDRecoGeometryAnalyzer::testETLLayers(const MTDDetLayerGeometry* geo, + const MTDTopology* mtdtopo, + const MagneticField* field) const { const vector& layers = geo->allETLLayers(); // dump of ETL layers structure @@ -312,17 +308,12 @@ void MTDRecoGeometryAnalyzer::testETLLayersNew(const MTDDetLayerGeometry* geo, c LogVerbatim("MTDLayerDump") << std::fixed << "\nSector " << std::setw(4) << isectInd << "\n" << (*isector); for (const auto& imod : isector->basicComponents()) { ETLDetId modId(imod->geographicalId().rawId()); - 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() + LogVerbatim("MTDLayerDumpFull") << std::fixed << printETLDetId(modId.rawId()).str() + << " glmod= " << std::setw(4) << mtdtopo->servtomoduleETL(modId.rawId()) << " 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); + LogVerbatim("MTDLayerDump") << std::fixed << printETLDetId(modId.rawId()).str() << " glmod= " << std::setw(4) + << mtdtopo->servtomoduleETL(modId.rawId()) + << " pos = " << fvecround(imod->position(), 2); } } } diff --git a/RecoMTD/DetLayers/test/TestBTLNavigation.cc b/RecoMTD/DetLayers/test/TestBTLNavigation.cc index 4d37ce28ddb95..ed56f78507e1d 100644 --- a/RecoMTD/DetLayers/test/TestBTLNavigation.cc +++ b/RecoMTD/DetLayers/test/TestBTLNavigation.cc @@ -103,16 +103,12 @@ void TestBTLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu BTLDetId modId(imod->geographicalId().rawId()); auto topoId = topo.product()->btlIndex(modId.rawId()); auto topoDetId = topo.product()->btlidFromIndex(topoId.first, topoId.second); - LogVerbatim("MTDLayerDumpFull") << std::fixed << std::setw(5) << imodInd << " BTLDetId " << modId.rawId() + LogVerbatim("MTDLayerDumpFull") << std::fixed << std::setw(5) << imodInd << printBTLSMDetId(modId.rawId()).str() << " iphi/ieta = " << std::setw(4) << topoId.first << " / " << std::setw(4) - << topoId.second << " side = " << std::setw(4) << modId.mtdSide() - << " RU = " << std::setw(4) << modId.runit() << " mod = " << std::setw(4) - << modId.module() << " pos = " << fvecround(imod->position(), 4); - LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << " BTLDetId " << modId.rawId() + << topoId.second << " pos = " << fvecround(imod->position(), 4); + LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << printBTLSMDetId(modId.rawId()).str() << " iphi/ieta = " << std::setw(4) << topoId.first << " / " << std::setw(4) - << topoId.second << " side = " << std::setw(4) << modId.mtdSide() - << " RU = " << std::setw(4) << modId.runit() << " mod = " << std::setw(4) - << modId.module() << " pos = " << fvecround(imod->position(), 2); + << topoId.second << " pos = " << fvecround(imod->position(), 2); if (topoDetId != modId.rawId()) { LogVerbatim("MTDLayerDumpFull") << "DIFFERENCE BtlDetId " << modId.rawId() << " not equal to MTDTopology " << topoDetId; @@ -132,14 +128,12 @@ void TestBTLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............phishift= " << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) << newTopoId.second - << std::setw(4) << iside << " side = " << std::setw(4) << newId.mtdSide() << " RU = " << std::setw(4) - << newId.runit() << " mod = " << std::setw(4) << newId.module() + << std::setw(4) << iside << printBTLSMDetId(newId.rawId()).str() << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............phishift= " << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) - << newTopoId.second << std::setw(4) << iside << " side = " << std::setw(4) - << newId.mtdSide() << " RU = " << std::setw(4) << newId.runit() - << " mod = " << std::setw(4) << newId.module() + << newTopoId.second << std::setw(4) << iside + << printBTLSMDetId(newId.rawId()).str() << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 2); } } @@ -156,14 +150,12 @@ void TestBTLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu LogVerbatim("MTDLayerDumpFull") << std::fixed << "...............etashift= " << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) << newTopoId.second - << std::setw(4) << iside << " side = " << std::setw(4) << newId.mtdSide() << " RU = " << std::setw(4) - << newId.runit() << " mod = " << std::setw(4) << newId.module() + << std::setw(4) << iside << printBTLSMDetId(newId.rawId()).str() << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 4); LogVerbatim("MTDLayerDump") << std::fixed << "...............etashift= " << " iphi/ieta = " << std::setw(4) << newTopoId.first << " / " << std::setw(4) - << newTopoId.second << std::setw(4) << iside << " side = " << std::setw(4) - << newId.mtdSide() << " RU = " << std::setw(4) << newId.runit() - << " mod = " << std::setw(4) << newId.module() + << newTopoId.second << std::setw(4) << iside + << printBTLSMDetId(newId.rawId()).str() << " pos = " << fvecround(layer->basicComponents()[idetNew]->position(), 2); } } diff --git a/RecoMTD/DetLayers/test/TestETLNavigation.cc b/RecoMTD/DetLayers/test/TestETLNavigation.cc index 7eb7075dc607d..50e59a21d672f 100644 --- a/RecoMTD/DetLayers/test/TestETLNavigation.cc +++ b/RecoMTD/DetLayers/test/TestETLNavigation.cc @@ -86,18 +86,10 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu for (const auto& imod : isector->basicComponents()) { imodInd++; ETLDetId modId(imod->geographicalId().rawId()); - LogVerbatim("MTDLayerDumpFull") << 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(), 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); + LogVerbatim("MTDLayerDumpFull") << std::fixed << std::setw(5) << imodInd << printETLDetId(modId.rawId()).str() + << " pos = " << fvecround(imod->position(), 4); + LogVerbatim("MTDLayerDump") << std::fixed << std::setw(5) << imodInd << printETLDetId(modId.rawId()).str() + << " 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()) { @@ -108,17 +100,11 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu } else { ETLDetId newId(isector->basicComponents()[idetNew]->geographicalId().rawId()); LogVerbatim("MTDLayerDumpFull") - << std::fixed << "...............hshift= " << std::setw(2) << iside << " ETLDetId " << newId.rawId() - << " 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() + << std::fixed << "...............hshift= " << std::setw(2) << iside + << printETLDetId(newId.rawId()).str() << " 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() + << printETLDetId(newId.rawId()).str() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } @@ -133,32 +119,21 @@ void TestETLNavigation::analyze(edm::StreamID, edm::Event const&, edm::EventSetu if (closest < isector->basicComponents().size()) { ETLDetId newId(isector->basicComponents()[closest]->geographicalId().rawId()); LogVerbatim("MTDLayerDumpFull") - << std::fixed << ".......closest.vshift= " << std::setw(2) << iside << " ETLDetId " << newId.rawId() - << " 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() + << std::fixed << ".......closest.vshift= " << std::setw(2) << iside + << printETLDetId(newId.rawId()).str() << " 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() - << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 2); + LogVerbatim("MTDLayerDump") << std::fixed << ".......closest.vshift= " << std::setw(2) << iside + << printETLDetId(newId.rawId()).str() + << " pos = " << fvecround(isector->basicComponents()[closest]->position(), 2); } } else { ETLDetId newId(isector->basicComponents()[idetNew]->geographicalId().rawId()); LogVerbatim("MTDLayerDumpFull") - << std::fixed << "...............vshift= " << std::setw(2) << iside << " ETLDetId " << newId.rawId() - << " 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() + << std::fixed << "...............vshift= " << std::setw(2) << iside + << printETLDetId(newId.rawId()).str() << " 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() + << printETLDetId(newId.rawId()).str() << " pos = " << fvecround(isector->basicComponents()[idetNew]->position(), 2); } } diff --git a/RecoMTD/DetLayers/test/mtd_cfg.py b/RecoMTD/DetLayers/test/mtd_cfg.py index 3233ad0b6e826..9e949575b1bcd 100644 --- a/RecoMTD/DetLayers/test/mtd_cfg.py +++ b/RecoMTD/DetLayers/test/mtd_cfg.py @@ -21,16 +21,16 @@ limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.MTDLayerDumpFull = cms.untracked.PSet( - limit = cms.untracked.int32(-1) + limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.MTDDetLayersFull = cms.untracked.PSet( - limit = cms.untracked.int32(-1) + limit = cms.untracked.int32(0) ) process.MessageLogger.cerr.MTDLayerDump = cms.untracked.PSet( - limit = cms.untracked.int32(0) + limit = cms.untracked.int32(-1) ) process.MessageLogger.cerr.MTDDetLayers = cms.untracked.PSet( - limit = cms.untracked.int32(0) + limit = cms.untracked.int32(-1) ) process.MessageLogger.files.mtdDetLayerGeometry = cms.untracked.PSet( MTDLayerDump = cms.untracked.PSet( diff --git a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py index 60d4f48836b1c..e2183ea6fcfbc 100644 --- a/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py +++ b/SimG4Core/PrintGeomInfo/test/python/g4OverlapCheckRun4DD4hep_cfg.py @@ -5,7 +5,7 @@ # Options for geometry D95, D96, D98, D99, D100, D101, D102, D103, D104, # D105, D106, D107, D108, D109, D110, D111, D112, D113, # D114, D115, D116, D117, D118, D119, D120, D121, D122, -# D123 +# D123, D124, D125 # ############################################################################### import FWCore.ParameterSet.Config as cms @@ -19,7 +19,7 @@ "D110", VarParsing.VarParsing.multiplicity.singleton, VarParsing.VarParsing.varType.string, - "geometry of operations: D95, D96, D98, D99, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112, D113, D114, D115, D116, D117, D118, D119, D120, D121, D122, D123") + "geometry of operations: D95, D96, D98, D99, D100, D101, D102, D103, D104, D105, D106, D107, D108, D109, D110, D111, D112, D113, D114, D115, D116, D117, D118, D119, D120, D121, D122, D123, D124, D125") options.register('tol', 0.01, VarParsing.VarParsing.multiplicity.singleton,