diff --git a/Configuration/AlCa/python/autoCondPhase2.py b/Configuration/AlCa/python/autoCondPhase2.py index ee50bf9dc82ed..4e2844156d2c9 100644 --- a/Configuration/AlCa/python/autoCondPhase2.py +++ b/Configuration/AlCa/python/autoCondPhase2.py @@ -19,6 +19,7 @@ ## (TFPX: Changed sensors spacing within all double-disks + Increased distance between Disks 6 and 7 + TBPX portcards between Disks 6 and 7.) ## T25: Phase2 tilted tracker. Outer Tracker (v8.0.0): same as T24/T21. Inner Tracker (v7.0.2): Based on (v6.1.5) (T24/T21), but with 3D sensors in TBPX L1. ## T30: Phase2 tilted tracker, exploratory geometry *only to be used in D91 for now*. Outer Tracker (v8.0.1): based on v8.0.0 with updated TB2S spacing. Inner Tracker (v6.4.0): based on v6.1.5 but TFPX with more realistic module positions +## T33: Phase2 tilted tracker. As T25 - OT v8.0.0 (but with BTL overlap removed). IT: v7.1.1 - as in T25, except with more realistic description of 3D sensors. #combines in a single dict of dict the tags defined below allTags={} @@ -27,6 +28,7 @@ 'T21' : ( ','.join( [ 'SiPixelLorentzAngle_phase2_T15_v5_mc' ,SiPixelLARecord,connectionString, "", "2020-05-05 20:00:00.000"] ), ), #uH = 0.053/T (TBPX), uH=0.0/T (TEPX+TFPX) 'T25' : ( ','.join( [ 'SiPixelLorentzAngle_phase2_T25_v0_mc' ,SiPixelLARecord,connectionString, "", "2021-03-16 20:00:00.000"] ), ), #uH = 0.053/T (TBPX L2,L3,L4), uH=0.0/T (TBPX L1 TEPX+TFPX) 'T30' : ( ','.join( [ 'SiPixelLorentzAngle_phase2_IT_v6.4.0_25x100_v1_mc' ,SiPixelLARecord,connectionString, "", "2021-11-22 21:00:00.000"] ), ), #uH = 0.053/T (TBPX), uH=0.0/T (TEPX+TFPX) + 'T33' : ( ','.join( [ 'SiPixelLorentzAngle_phase2_IT_v7.1.1_25x100_v1_mc' ,SiPixelLARecord,connectionString, "", "2023-05-16 20:00:00.000"] ), ), #uH = 0.053/T (TBPX L2,L3,L4), uH=0.0/T (TBPX L1 TEPX+TFPX) } allTags["LAWidth"] = { @@ -49,32 +51,37 @@ allTags["GenError"] = { 'T21' : ( ','.join( [ 'SiPixelGenErrorDBObject_phase2_IT_v6.1.5_25x100_v3_mc',SiPixelGenErrorRecord,connectionString, "", "2021-01-27 10:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V - 'T25' : ( ','.join( [ 'SiPixelGenErrorDBObject_phase2_IT_v7.0.2_25x100_v2_mc' ,SiPixelGenErrorRecord,connectionString, "", "2021-04-17 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V, 3D pixels in TBPX L1 + 'T25' : ( ','.join( [ 'SiPixelGenErrorDBObject_phase2_IT_v7.0.2_25x100_v2_mc' ,SiPixelGenErrorRecord,connectionString, "", "2021-04-17 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y), VBias=350V, 3D pixels in TBPX L1 'T30' : ( ','.join( [ 'SiPixelGenErrorDBObject_phase2_IT_v6.4.0_25x100_v1_mc',SiPixelGenErrorRecord,connectionString, "", "2021-11-22 21:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V + 'T33' : ( ','.join( [ 'SiPixelGenErrorDBObject_phase2_IT_v7.1.1_25x100_v1_mc' ,SiPixelGenErrorRecord,connectionString, "", "2023-05-16 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V, 3D pixels in TBPX L1 } allTags["Template"] = { 'T21' : ( ','.join( [ 'SiPixelTemplateDBObject_phase2_IT_v6.1.5_25x100_v3_mc',SiPixelTemplatesRecord,connectionString, "", "2021-01-27 10:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V - 'T25' : ( ','.join( [ 'SiPixelTemplateDBObject_phase2_IT_v7.0.2_25x100_v2_mc' ,SiPixelTemplatesRecord,connectionString, "", "2021-04-17 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V, 3D pixels in TBPX L1 + 'T25' : ( ','.join( [ 'SiPixelTemplateDBObject_phase2_IT_v7.0.2_25x100_v2_mc' ,SiPixelTemplatesRecord,connectionString, "", "2021-04-17 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y), VBias=350V, 3D pixels in TBPX L1 'T30' : ( ','.join( [ 'SiPixelTemplateDBObject_phase2_IT_v6.4.0_25x100_v1_mc',SiPixelTemplatesRecord,connectionString, "", "2021-11-22 21:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V + 'T33' : ( ','.join( [ 'SiPixelTemplateDBObject_phase2_IT_v7.1.1_25x100_v1_mc' ,SiPixelTemplatesRecord,connectionString, "", "2023-05-16 20:00:00"] ), ), # cell is 25um (local-x) x 100um (local-y) , VBias=350V, 3D pixels in TBPX L1 } allTags["TkAlignment"] = { 'T21' : ( ','.join( [ 'TrackerAlignment_Upgrade2026_T21_design_v0' ,TkAlRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T25' : ( ','.join( [ 'TrackerAlignment_Upgrade2026_T25_design_v0' ,TkAlRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T30' : ( ','.join( [ 'TrackerAlignment_Upgrade2026_T30_design_v0' ,TkAlRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), + 'T33' : ( ','.join( [ 'TrackerAlignment_Upgrade2026_T33_design_v0' ,TkAlRecord, connectionString, "", "2023-06-07 21:00:00"] ), ), } allTags["TkAPE"] = { 'T21' : ( ','.join( [ 'TrackerAlignmentErrorsExtended_Upgrade2026_T21_design_v0' ,TkAPERecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T25' : ( ','.join( [ 'TrackerAlignmentErrorsExtended_Upgrade2026_T25_design_v0' ,TkAPERecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T30' : ( ','.join( [ 'TrackerAlignmentErrorsExtended_Upgrade2026_T30_design_v0' ,TkAPERecord, connectionString, "", "2023-03-16 15:30:00"] ), ), + 'T33' : ( ','.join( [ 'TrackerAlignmentErrorsExtended_Upgrade2026_T33_design_v0' ,TkAPERecord, connectionString, "", "2023-06-07 21:00:00"] ), ), } allTags["TkSurf"] = { 'T21' : ( ','.join( [ 'TrackerSurfaceDeformations_Upgrade2026_Zero' ,TkSurfRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T25' : ( ','.join( [ 'TrackerSurfaceDeformations_Upgrade2026_Zero' ,TkSurfRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), 'T30' : ( ','.join( [ 'TrackerSurfaceDeformations_Upgrade2026_Zero' ,TkSurfRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), + 'T33' : ( ','.join( [ 'TrackerSurfaceDeformations_Upgrade2026_Zero' ,TkSurfRecord, connectionString, "", "2023-03-16 15:30:00"] ), ), } ## @@ -86,12 +93,14 @@ 'T21' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngle_v0_mc' ,TrackerLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T 'T25' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngle_v0_mc' ,TrackerLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T 'T30' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngle_v0_mc' ,TrackerLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T + 'T33' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngle_v0_mc' ,TrackerLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T } allTags["SimOTLA"] = { 'T21' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngleSim_v0_mc' ,TrackerSimLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T 'T25' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngleSim_v0_mc' ,TrackerSimLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T 'T30' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngleSim_v0_mc' ,TrackerSimLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T + 'T33' : ( ','.join( [ 'SiPhase2OuterTrackerLorentzAngleSim_v0_mc' ,TrackerSimLARecord,connectionString, "", "2020-07-19 17:00:00.000"] ), ), #uH = 0.07/T } ''' @@ -111,7 +120,7 @@ activeKeys = ["LA", "LAWidth", "SimLA", "LAfromAlignment", "GenError", "Template", "TkAlignment", "TkAPE", "TkSurf"] #,"SimOTLA","OTLA"] # list of geometries supported -activeDets = ["T21","T25","T30"] +activeDets = ["T21","T25","T30","T33"] phase2GTs = {} for det in activeDets: appendedTags = () diff --git a/Configuration/Geometry/README.md b/Configuration/Geometry/README.md index 4fc12e8858a68..3dfd0d5eb1e35 100644 --- a/Configuration/Geometry/README.md +++ b/Configuration/Geometry/README.md @@ -68,6 +68,7 @@ Tracker: * T30: Phase2 tilted tracker. Exploratory geometry *only to be used in D91 for now*. Outer Tracker (v8.0.1): based on v8.0.0 with updated TB2S spacing. Inner Tracker (v6.4.0): based on v6.1.5 but TFPX with more realistic module positions. * T31: Phase2 tilted tracker. The tracker description is identical to T24/T21. The outer radius of the tracker volume is reduced to avoid a clash with the BTL geometry. The positions of the tracker components are not affected * T32: Phase2 tilted tracker. The tracker description is identical to T25. The outer radius of the tracker volume is reduced to avoid a clash with the BTL geometry (same as T31). The positions of the tracker components are not affected. This geometry is intended as a transition step towards a realistic configuration with 3D sensors in TBPX layer1. +* T33: Phase2 tilted tracker. Identical to T32 apart from a more realistic description of the 3D sensors in TBPX layer1. Calorimeters: * C9: HGCal (v11 post TDR HGCal Geometry w/ corner centering for HE part) + Phase2 HCAL and EB + Tracker cables (used in 2026D49) @@ -127,4 +128,5 @@ Several detector combinations have been generated: * D97 = T25+C17+M10+I15+O9+F6 * D98 = T32+C17+M10+I16+O9+F6 * D99 = T32+C18+M10+I16+O9+F6 +* D100 = T33+C17+M10+I16+O9+F6 diff --git a/Configuration/Geometry/python/GeometryDD4hepExtended2026D100Reco_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2026D100Reco_cff.py new file mode 100644 index 0000000000000..36696d6526470 --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2026D100Reco_cff.py @@ -0,0 +1,59 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2026Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryDD4hepExtended2026D100_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_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.ForwardGeometry_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/GeometryDD4hepExtended2026D100_cff.py b/Configuration/Geometry/python/GeometryDD4hepExtended2026D100_cff.py new file mode 100644 index 0000000000000..266b2d2c1f9bd --- /dev/null +++ b/Configuration/Geometry/python/GeometryDD4hepExtended2026D100_cff.py @@ -0,0 +1,17 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2026Geometry.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/cmsExtendedGeometry2026D100.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/GeometryExtended2026D100Reco_cff.py b/Configuration/Geometry/python/GeometryExtended2026D100Reco_cff.py new file mode 100644 index 0000000000000..5bb73e9ae2aec --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2026D100Reco_cff.py @@ -0,0 +1,59 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2026Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Configuration.Geometry.GeometryExtended2026D100_cff import * + +# tracker +from Geometry.CommonTopologies.globalTrackingGeometry_cfi import * +from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_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.ForwardGeometry_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/GeometryExtended2026D100_cff.py b/Configuration/Geometry/python/GeometryExtended2026D100_cff.py new file mode 100644 index 0000000000000..983cb8f4e85f6 --- /dev/null +++ b/Configuration/Geometry/python/GeometryExtended2026D100_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2026Geometry.py +# If you notice a mistake, please update the generating script, not just this config + +from Geometry.CMSCommonData.cmsExtendedGeometry2026D100XML_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/dict2026Geometry.py b/Configuration/Geometry/python/dict2026Geometry.py index 1f9d98d937a40..b53ff92ede7bf 100644 --- a/Configuration/Geometry/python/dict2026Geometry.py +++ b/Configuration/Geometry/python/dict2026Geometry.py @@ -348,7 +348,43 @@ 'trackerGeometry.applyAlignment = True', ], "era" : "phase2_tracker, phase2_3DPixels, trackingPhase2PU140", - } + }, + "T33" : { + 1 : [ + '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_02/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', + ], + "sim" : [ + 'from Geometry.TrackerNumberingBuilder.trackerNumberingGeometry_cff import *', + 'from SLHCUpgradeSimulations.Geometry.fakePhase2OuterTrackerConditions_cff import *', + ], + "reco" : [ + 'from Geometry.CommonTopologies.globalTrackingGeometry_cfi import *', + 'from RecoTracker.GeometryESProducer.TrackerRecoGeometryESProducer_cfi import *', + 'from Geometry.TrackerGeometryBuilder.trackerParameters_cff import *', + 'from Geometry.TrackerNumberingBuilder.trackerTopology_cfi import *', + 'from Geometry.TrackerGeometryBuilder.idealForDigiTrackerGeometry_cff import *', + 'trackerGeometry.applyAlignment = True', + ], + "era" : "phase2_tracker, phase2_3DPixels, trackingPhase2PU140", + }, + } @@ -1249,6 +1285,7 @@ ("O9","T25","C17","M10","F6","I15") : "D97", ("O9","T32","C17","M10","F6","I16") : "D98", ("O9","T32","C18","M10","F6","I16") : "D99", + ("O9","T33","C17","M10","F6","I15") : "D100", } 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"]) diff --git a/Configuration/PyReleaseValidation/python/relval_2026.py b/Configuration/PyReleaseValidation/python/relval_2026.py index 857b5cdc121d5..eb087217468a4 100644 --- a/Configuration/PyReleaseValidation/python/relval_2026.py +++ b/Configuration/PyReleaseValidation/python/relval_2026.py @@ -34,6 +34,7 @@ numWFIB.extend([24434.0]) #2026D97 numWFIB.extend([24834.0]) #2026D98 numWFIB.extend([25234.0,25234.911]) #2026D99 DDD XML, DD4hep XML +numWFIB.extend([25634.0]) #2026D100 #Additional sample for short matrix and IB #CloseByPGun for HGCAL diff --git a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py index 62f600a967f0e..6654462e09e7c 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -55,6 +55,8 @@ '2026D98PU', '2026D99', '2026D99PU', + '2026D100', + '2026D100PU', ] # pre-generation of WF numbers @@ -2623,6 +2625,13 @@ def condition(self, fragment, stepList, key, hasHarvest): 'Era' : 'Phase2C17I13M9', 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], }, + '2026D100' : { + 'Geom' : 'Extended2026D100', + 'HLTmenu': '@fake2', + 'GT' : 'auto:phase2_realistic_T33', + 'Era' : 'Phase2C17I13M9', + 'ScenToRun' : ['GenSimHLBeamSpot','DigiTrigger','RecoGlobal', 'HARVESTGlobal', 'ALCAPhase2'], + }, } # standard PU sequences diff --git a/Configuration/StandardSequences/python/GeometryConf.py b/Configuration/StandardSequences/python/GeometryConf.py index 572d373a409a2..914b2926a9a0f 100644 --- a/Configuration/StandardSequences/python/GeometryConf.py +++ b/Configuration/StandardSequences/python/GeometryConf.py @@ -83,4 +83,6 @@ 'DD4hepExtended2026D98' : 'DD4hepExtended2026D98,DD4hepExtended2026D98Reco', 'Extended2026D99' : 'Extended2026D99,Extended2026D99Reco', 'DD4hepExtended2026D99' : 'DD4hepExtended2026D99,DD4hepExtended2026D99Reco', + 'Extended2026D100' : 'Extended2026D100,Extended2026D100Reco', + 'DD4hepExtended2026D100' : 'DD4hepExtended2026D100,DD4hepExtended2026D100Reco', } diff --git a/DataFormats/TrackerCommon/interface/TrackerTopology.h b/DataFormats/TrackerCommon/interface/TrackerTopology.h index 2852a6d900870..18dafa02c8cdd 100644 --- a/DataFormats/TrackerCommon/interface/TrackerTopology.h +++ b/DataFormats/TrackerCommon/interface/TrackerTopology.h @@ -19,9 +19,11 @@ class TrackerTopology { unsigned int layerStartBit_; unsigned int ladderStartBit_; unsigned int moduleStartBit_; + unsigned int doubleStartBit_; unsigned int layerMask_; unsigned int ladderMask_; unsigned int moduleMask_; + unsigned int doubleMask_; }; struct PixelEndcapValues { @@ -233,13 +235,19 @@ class TrackerTopology { //generic function to return DetIds and boolean factors uint32_t glued(const DetId &id) const; uint32_t stack(const DetId &id) const; + uint32_t doubleSensor(const DetId &id) const; uint32_t lower(const DetId &id) const; uint32_t upper(const DetId &id) const; + uint32_t first(const DetId &id) const; + uint32_t second(const DetId &id) const; bool isStereo(const DetId &id) const; bool isRPhi(const DetId &id) const; + bool isDoubleSens(const DetId &id) const; bool isLower(const DetId &id) const; bool isUpper(const DetId &id) const; + bool isFirst(const DetId &id) const; + bool isSecond(const DetId &id) const; //specific function to return boolean factors bool tobIsDoubleSide(const DetId &id) const { return tobGlued(id) == 0 && (tobLayer(id) == 1 || tobLayer(id) == 2); } @@ -288,6 +296,11 @@ class TrackerTopology { return (((id.rawId() >> tecVals_.sterStartBit_) & tecVals_.sterMask_) == 1) ? 1 : 0; } + //phase 2 split sensor + uint32_t pixFirst(const DetId &id) const { + return (((id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_) == 1) ? 1 : 0; + } + //phase0 stereo == phase2 lower uint32_t tibLower(const DetId &id) const { return tibStereo(id); } uint32_t tidLower(const DetId &id) const { return tidStereo(id); } @@ -327,6 +340,14 @@ class TrackerTopology { } } + uint32_t pixSecond(const DetId &id) const { + if (((id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_) == 2) { + return ((id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_); + } else { + return 0; + } + } + //phase0 rphi == phase2 upper uint32_t tibUpper(const DetId &id) const { return tibRPhi(id); } uint32_t tidUpper(const DetId &id) const { return tidRPhi(id); } @@ -354,6 +375,11 @@ class TrackerTopology { return (testId == 0) ? 0 : (id.rawId() - testId); } + uint32_t pixDouble(const DetId &id) const { + uint32_t testId = (id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_; + return (testId == 0) ? 0 : (id.rawId() - testId); + } + //phase0 glued == phase2 stack uint32_t tibStack(const DetId &id) const { return tibGlued(id); } uint32_t tidStack(const DetId &id) const { return tidGlued(id); } @@ -363,6 +389,16 @@ class TrackerTopology { //these should be used now!! DetId partnerDetId(const DetId &id) const; + DetId pixPartnerDetId(const DetId &id) const { + if (((id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_) == 1) { + return DetId(id.rawId() + 1); + } else if (((id.rawId() >> pbVals_.doubleStartBit_) & pbVals_.doubleMask_) == 2) { + return DetId(id.rawId() - 1); + } else { + return DetId(); + } + } + DetId tibPartnerDetId(const DetId &id) const { if (((id.rawId() >> tibVals_.sterStartBit_) & tibVals_.sterMask_) == 1) { return DetId(id.rawId() + 1); diff --git a/DataFormats/TrackerCommon/src/TrackerTopology.cc b/DataFormats/TrackerCommon/src/TrackerTopology.cc index 09b48b98a1305..b52649e7d33a2 100644 --- a/DataFormats/TrackerCommon/src/TrackerTopology.cc +++ b/DataFormats/TrackerCommon/src/TrackerTopology.cc @@ -119,6 +119,60 @@ uint32_t TrackerTopology::stack(const DetId &id) const { throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::stack"; } +uint32_t TrackerTopology::doubleSensor(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixDouble(id); + if (subdet == PixelSubdetector::PixelEndcap) + return 0; + if (subdet == SiStripSubdetector::TIB) + return 0; + if (subdet == SiStripSubdetector::TID) + return 0; + if (subdet == SiStripSubdetector::TOB) + return 0; + if (subdet == SiStripSubdetector::TEC) + return 0; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::stack"; +} + +uint32_t TrackerTopology::first(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixFirst(id); + if (subdet == PixelSubdetector::PixelEndcap) + return 0; + if (subdet == SiStripSubdetector::TIB) + return 0; + if (subdet == SiStripSubdetector::TID) + return 0; + if (subdet == SiStripSubdetector::TOB) + return 0; + if (subdet == SiStripSubdetector::TEC) + return 0; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::doubleSens"; +} + +uint32_t TrackerTopology::second(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixSecond(id); + if (subdet == PixelSubdetector::PixelEndcap) + return 0; + if (subdet == SiStripSubdetector::TIB) + return 0; + if (subdet == SiStripSubdetector::TID) + return 0; + if (subdet == SiStripSubdetector::TOB) + return 0; + if (subdet == SiStripSubdetector::TEC) + return 0; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::doubleSensor"; +} + uint32_t TrackerTopology::lower(const DetId &id) const { uint32_t subdet = id.subdetId(); if (subdet == PixelSubdetector::PixelBarrel) @@ -192,6 +246,26 @@ bool TrackerTopology::isRPhi(const DetId &id) const { throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::isRPhi"; return false; } + +bool TrackerTopology::isDoubleSens(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixDouble(id) != 0; + if (subdet == PixelSubdetector::PixelEndcap) + return false; + if (subdet == SiStripSubdetector::TIB) + return false; + if (subdet == SiStripSubdetector::TID) + return false; + if (subdet == SiStripSubdetector::TOB) + return false; + if (subdet == SiStripSubdetector::TEC) + return false; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::isDoubleSens"; + return false; +} + bool TrackerTopology::isLower(const DetId &id) const { uint32_t subdet = id.subdetId(); if (subdet == PixelSubdetector::PixelBarrel) @@ -230,10 +304,48 @@ bool TrackerTopology::isUpper(const DetId &id) const { return false; } +bool TrackerTopology::isFirst(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixFirst(id) != 0; + if (subdet == PixelSubdetector::PixelEndcap) + return false; + if (subdet == SiStripSubdetector::TIB) + return false; + if (subdet == SiStripSubdetector::TID) + return false; + if (subdet == SiStripSubdetector::TOB) + return false; + if (subdet == SiStripSubdetector::TEC) + return false; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::isFirst"; + return false; +} + +bool TrackerTopology::isSecond(const DetId &id) const { + uint32_t subdet = id.subdetId(); + if (subdet == PixelSubdetector::PixelBarrel) + return pixSecond(id) != 0; + if (subdet == PixelSubdetector::PixelEndcap) + return false; + if (subdet == SiStripSubdetector::TIB) + return false; + if (subdet == SiStripSubdetector::TID) + return false; + if (subdet == SiStripSubdetector::TOB) + return false; + if (subdet == SiStripSubdetector::TEC) + return false; + + throw cms::Exception("Invalid DetId") << "Unsupported DetId in TrackerTopology::isSecond"; + return false; +} + DetId TrackerTopology::partnerDetId(const DetId &id) const { uint32_t subdet = id.subdetId(); if (subdet == PixelSubdetector::PixelBarrel) - return 0; + return pixPartnerDetId(id); if (subdet == PixelSubdetector::PixelEndcap) return 0; if (subdet == SiStripSubdetector::TIB) @@ -257,8 +369,14 @@ std::string TrackerTopology::print(DetId id) const { unsigned int theLayer = pxbLayer(id); unsigned int theLadder = pxbLadder(id); unsigned int theModule = pxbModule(id); + std::string typeUpgrade; + typeUpgrade = (isFirst(id)) ? "first" : typeUpgrade; + typeUpgrade = (isSecond(id)) ? "second" : typeUpgrade; + typeUpgrade = (isFirst(id) || isSecond(id)) ? typeUpgrade + " double" : "module"; strstr << "PixelBarrel" - << " Layer " << theLayer << " Ladder " << theLadder << " Module " << theModule; + << " Layer " << theLayer << " Ladder " << theLadder; + strstr << " Module for phase0 " << theModule; + strstr << " Module for phase2 " << theModule << " " << typeUpgrade; strstr << " (" << id.rawId() << ")"; return strstr.str(); } diff --git a/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2026D100.xml b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2026D100.xml new file mode 100644 index 0000000000000..6605b3d90169c --- /dev/null +++ b/Geometry/CMSCommonData/data/dd4hep/cmsExtendedGeometry2026D100.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/CMSCommonData/python/cmsExtendedGeometry2026D100XML_cfi.py b/Geometry/CMSCommonData/python/cmsExtendedGeometry2026D100XML_cfi.py new file mode 100644 index 0000000000000..8a5ba165a7e33 --- /dev/null +++ b/Geometry/CMSCommonData/python/cmsExtendedGeometry2026D100XML_cfi.py @@ -0,0 +1,130 @@ +import FWCore.ParameterSet.Config as cms + +# This config was generated automatically using generate2026Geometry.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/2021/v1/materials.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/2026/v5/cms.xml', + 'Geometry/CMSCommonData/data/cmsMother.xml', + 'Geometry/CMSCommonData/data/eta3/etaMax.xml', + 'Geometry/CMSCommonData/data/cmsTracker.xml', + 'Geometry/CMSCommonData/data/caloBase/2026/v7/caloBase.xml', + 'Geometry/CMSCommonData/data/cmsCalo.xml', + 'Geometry/CMSCommonData/data/muonBase/2026/v5/muonBase.xml', + 'Geometry/CMSCommonData/data/cmsMuon.xml', + 'Geometry/CMSCommonData/data/mgnt.xml', + 'Geometry/CMSCommonData/data/beampipe/2026/v3/beampipe.xml', + 'Geometry/CMSCommonData/data/cmsBeam/2026/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_02/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/2026/v2/eregalgo.xml', + 'Geometry/EcalCommonData/data/ectkcable/2026/v1/ectkcable.xml', + 'Geometry/EcalCommonData/data/ectkcablemat/2026/v2/ectkcablemat.xml', + 'Geometry/EcalCommonData/data/ebalgo.xml', + 'Geometry/EcalCommonData/data/ebcon/2021/v1/ebcon.xml', + 'Geometry/EcalCommonData/data/ebrot.xml', + 'Geometry/HcalCommonData/data/hcalrotations.xml', + 'Geometry/HcalCommonData/data/hcal/v2/hcalalgo.xml', + 'Geometry/HcalCommonData/data/hcalbarrelalgo.xml', + 'Geometry/HcalCommonData/data/hcalcablealgo/v2/hcalcablealgo.xml', + 'Geometry/HcalCommonData/data/hcalouteralgo.xml', + 'Geometry/HcalCommonData/data/hcalforwardalgo.xml', + 'Geometry/HcalCommonData/data/hcalSimNumbering/NoHE/v1/hcalSimNumbering.xml', + 'Geometry/HcalCommonData/data/hcalRecNumbering/NoHE/v1/hcalRecNumbering.xml', + 'Geometry/HcalCommonData/data/average/hcalforwardmaterial.xml', + 'Geometry/HGCalCommonData/data/hgcalMaterial/v2/hgcalMaterial.xml', + 'Geometry/HGCalCommonData/data/hgcal/v16/hgcal.xml', + 'Geometry/HGCalCommonData/data/hgcalcell/v16/hgcalcell.xml', + 'Geometry/HGCalCommonData/data/hgcalwafer/v16/hgcalwafer.xml', + 'Geometry/HGCalCommonData/data/hgcalEE/v16/hgcalEE.xml', + 'Geometry/HGCalCommonData/data/hgcalHEsil/v16/hgcalHEsil.xml', + 'Geometry/HGCalCommonData/data/hgcalHEmix/v16/hgcalHEmix.xml', + 'Geometry/HGCalCommonData/data/hgcalCons/v16/hgcalCons.xml', + 'Geometry/HGCalCommonData/data/hgcalConsData/v16/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/v2/mb3.xml', + 'Geometry/MuonCommonData/data/mb4/2015/v2/mb4.xml', + 'Geometry/MuonCommonData/data/mb4Shield/2021/v1/mb4Shield.xml', + 'Geometry/MuonCommonData/data/muonYoke/2026/v3/muonYoke.xml', + 'Geometry/MuonCommonData/data/mf/2026/v8/mf.xml', + 'Geometry/MuonCommonData/data/csc/2021/v2/csc.xml', + 'Geometry/MuonCommonData/data/rpcf/2026/v3/rpcf.xml', + 'Geometry/MuonCommonData/data/gemf/TDR_BaseLine/gemf.xml', + 'Geometry/MuonCommonData/data/gem11/TDR_BaseLine/gem11.xml', + 'Geometry/MuonCommonData/data/gem21/TDR_Eta16/gem21.xml', + 'Geometry/MuonCommonData/data/mfshield/2026/v6/mfshield.xml', + 'Geometry/MuonCommonData/data/ge0/TDR_Dev/v4/ge0.xml', + 'Geometry/MuonCommonData/data/ge0shield/2026/v1/ge0shield.xml', + 'Geometry/ForwardCommonData/data/forwardshield/2026/v4/forwardshield.xml', + 'Geometry/ForwardCommonData/data/brmrotations.xml', + 'Geometry/ForwardCommonData/data/brm/2026/v1/brm.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/2026/v1/zdc.xml', + 'Geometry/ForwardCommonData/data/zdclumi/2021/v2/zdclumi.xml', + 'Geometry/ForwardCommonData/data/cmszdc.xml', + 'Geometry/MTDCommonData/data/mtdMaterial/v3/mtdMaterial.xml', + 'Geometry/MTDCommonData/data/btl/v1/btl.xml', + 'Geometry/MTDCommonData/data/etl/v7/etl.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v3/mtdStructureTopology.xml', + 'Geometry/MTDCommonData/data/mtdParameters/v2/mtdParameters.xml', + )+ + cms.vstring( + 'Geometry/MuonCommonData/data/muonNumbering/TDR_DeV/v5/muonNumbering.xml', + 'Geometry/EcalSimData/data/PhaseII/ecalsens.xml', + 'Geometry/HcalCommonData/data/hcalsens/NoHE/hcalsenspmf.xml', + 'Geometry/HcalSimData/data/hf.xml', + 'Geometry/HcalSimData/data/hfpmt.xml', + 'Geometry/HcalSimData/data/hffibrebundle.xml', + 'Geometry/HcalSimData/data/CaloUtil/2026/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/2026/v1/RPCSpecs.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecsFilter.xml', + 'Geometry/GEMGeometryBuilder/data/v12/GEMSpecs.xml', + 'Geometry/ForwardCommonData/data/brmsens.xml', + 'Geometry/ForwardSimData/data/zdcsens.xml', + 'Geometry/MTDSimData/data/v2/mtdsens.xml', + 'Geometry/HcalSimData/data/HcalProdCuts/2026/v1/HcalProdCuts.xml', + 'Geometry/EcalSimData/data/EcalProdCuts.xml', + 'Geometry/HGCalSimData/data/hgcProdCutsv15.xml', + 'Geometry/MuonSimData/data/muonProdCuts/2026/v2/muonProdCuts.xml', + 'Geometry/ForwardSimData/data/zdcProdCuts/2021/v2/zdcProdCuts.xml', + 'Geometry/ForwardSimData/data/ForwardShieldProdCuts.xml', + 'Geometry/MTDSimData/data/v2/mtdProdCuts.xml', + 'Geometry/CMSCommonData/data/FieldParameters.xml', + ), + rootNodeName = cms.string('cms:OCMS') +) diff --git a/Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h b/Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h new file mode 100644 index 0000000000000..255373d496e6e --- /dev/null +++ b/Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h @@ -0,0 +1 @@ +#include "Geometry/CommonTopologies/interface/DoubleSensGeomDet.h" diff --git a/Geometry/CommonTopologies/interface/DoubleSensGeomDet.h b/Geometry/CommonTopologies/interface/DoubleSensGeomDet.h new file mode 100644 index 0000000000000..a827f30ec79b8 --- /dev/null +++ b/Geometry/CommonTopologies/interface/DoubleSensGeomDet.h @@ -0,0 +1,30 @@ +#ifndef Geometry_CommonTopologies_DoubleSensGeomDet_H +#define Geometry_CommonTopologies_DoubleSensGeomDet_H + +#include "Geometry/CommonTopologies/interface/TrackerGeomDet.h" +#include "DataFormats/DetId/interface/DetId.h" + +class DoubleSensGeomDet : public TrackerGeomDet { +public: + DoubleSensGeomDet(BoundPlane* sp, + const GeomDetUnit* firstDet, + const GeomDetUnit* secondDet, + const DetId doubleSensDetId); + + ~DoubleSensGeomDet() override; + + bool isLeaf() const override { return false; } + std::vector components() const override; + + // Which subdetector + SubDetector subDetector() const override { return theFirstDet->subDetector(); }; + + const GeomDetUnit* firstDet() const { return theFirstDet; }; + const GeomDetUnit* secondDet() const { return theSecondDet; }; + +private: + const GeomDetUnit* theFirstDet; + const GeomDetUnit* theSecondDet; +}; + +#endif diff --git a/Geometry/CommonTopologies/src/DoubleSensGeomDet.cc b/Geometry/CommonTopologies/src/DoubleSensGeomDet.cc new file mode 100644 index 0000000000000..22e5c713f7dae --- /dev/null +++ b/Geometry/CommonTopologies/src/DoubleSensGeomDet.cc @@ -0,0 +1,15 @@ +#include "Geometry/CommonTopologies/interface/DoubleSensGeomDet.h" + +DoubleSensGeomDet::DoubleSensGeomDet(BoundPlane* sp, + const GeomDetUnit* firstDet, + const GeomDetUnit* secondDet, + const DetId doubleSensDetId) + : TrackerGeomDet(sp), theFirstDet(firstDet), theSecondDet(secondDet) { + setDetId(doubleSensDetId); +} + +DoubleSensGeomDet::~DoubleSensGeomDet() {} + +std::vector DoubleSensGeomDet::components() const { + return std::vector{theFirstDet, theSecondDet}; +} diff --git a/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml b/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml new file mode 100644 index 0000000000000..ac3311d6e177b --- /dev/null +++ b/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixel.xml @@ -0,0 +1,14009 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + 0*mm, 0*mm, 0*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 2.75*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, -4*mm + + + + + + + + + + + + + + 0*mm, 0*mm, 4*mm + + + + + + diff --git a/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml b/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml new file mode 100644 index 0000000000000..0bd692996bffe --- /dev/null +++ b/Geometry/TrackerCommonData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelStructureTopology.xml @@ -0,0 +1,756 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml b/Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml index ef2d2b52e0f1a..abf3e518f26f4 100644 --- a/Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml +++ b/Geometry/TrackerCommonData/data/PhaseII/trackerParameters.xml @@ -4,8 +4,8 @@ 80, 52, 0, 0, 2, 8 - - 20, 12, 2, 0xF, 0xFF, 0x3FF + + 20, 12, 2, 0, 0xF, 0xFF, 0x3FF, 0x3 23, 18, 12, 10, 2, 0x3, 0xF, 0x3F, 0x3, 0xFF diff --git a/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc b/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc index f995eeb14ad41..b464a094b4323 100644 --- a/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc +++ b/Geometry/TrackerGeometryBuilder/src/TrackerGeomBuilderFromGeometricDet.cc @@ -4,6 +4,7 @@ #include "Geometry/CommonDetUnit/interface/GeomDet.h" #include "Geometry/CommonDetUnit/interface/GluedGeomDet.h" #include "Geometry/CommonDetUnit/interface/StackGeomDet.h" +#include "Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h" #include "Geometry/CommonDetUnit/interface/PixelGeomDetType.h" #include "Geometry/CommonDetUnit/interface/PixelGeomDetUnit.h" #include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetType.h" @@ -233,8 +234,9 @@ void TrackerGeomBuilderFromGeometricDet::buildGeomDet(TrackerGeometry* tracker) string gduTypeName = gdu[i]->type().name(); //this step is time consuming >> TO FIX with a MAP? - if ((gduTypeName.find("Ster") != std::string::npos || gduTypeName.find("Lower") != std::string::npos) && - (theTopo->glued(gduId[i]) != 0 || theTopo->stack(gduId[i]) != 0)) { + if ((gduTypeName.find("Ster") != std::string::npos || gduTypeName.find("Lower") != std::string::npos || + gduTypeName.find("One") != std::string::npos) && + (theTopo->glued(gduId[i]) != 0 || theTopo->stack(gduId[i]) != 0 || theTopo->doubleSensor(gduId[i]))) { int partner_pos = -1; for (u_int32_t jj = 0; jj < gduId.size(); jj++) { if (theTopo->partnerDetId(gduId[i]) == gduId[jj]) { @@ -267,6 +269,13 @@ void TrackerGeomBuilderFromGeometricDet::buildGeomDet(TrackerGeometry* tracker) StackGeomDet* stackDet = new StackGeomDet(&(*plane), dus, dum, composedDetId); tracker->addDet((GeomDet*)stackDet); tracker->addDetId(composedDetId); + } else if (gduTypeName.find("One") != std::string::npos) { + //The plane is *not* built in the middle, but on the First surface + Plane* plane = new Plane(dus->surface()); + composedDetId = theTopo->doubleSensor(gduId[i]); + DoubleSensGeomDet* doubleSensDet = new DoubleSensGeomDet(&(*plane), dus, dum, composedDetId); + tracker->addDet((GeomDet*)doubleSensDet); + tracker->addDetId(composedDetId); } } } diff --git a/Geometry/TrackerGeometryBuilder/src/TrackerGeometry.cc b/Geometry/TrackerGeometryBuilder/src/TrackerGeometry.cc index 1c6cc137d003f..adfe93b625b69 100644 --- a/Geometry/TrackerGeometryBuilder/src/TrackerGeometry.cc +++ b/Geometry/TrackerGeometryBuilder/src/TrackerGeometry.cc @@ -278,6 +278,10 @@ TrackerGeometry::ModuleType TrackerGeometry::moduleType(const std::string& name) return ModuleType::Ph2PXB; } else if (name.find("InnerPixel3DActive") != std::string::npos) { return ModuleType::Ph2PXB3D; + } else if (name.find("InnerPixel3DOneActive") != std::string::npos) { + return ModuleType::Ph2PXB3D; + } else if (name.find("InnerPixel3DTwoActive") != std::string::npos) { + return ModuleType::Ph2PXB3D; } } // forward @@ -286,6 +290,10 @@ TrackerGeometry::ModuleType TrackerGeometry::moduleType(const std::string& name) return ModuleType::Ph2PXF; } else if (name.find("InnerPixel3DActive") != std::string::npos) { return ModuleType::Ph2PXF3D; + } else if (name.find("InnerPixel3DOneActive") != std::string::npos) { + return ModuleType::Ph2PXB3D; + } else if (name.find("InnerPixel3DTwoActive") != std::string::npos) { + return ModuleType::Ph2PXB3D; } } } diff --git a/Geometry/TrackerNumberingBuilder/interface/GeometricDet.h b/Geometry/TrackerNumberingBuilder/interface/GeometricDet.h index b4a99f34e046d..41b447f06dc4e 100644 --- a/Geometry/TrackerNumberingBuilder/interface/GeometricDet.h +++ b/Geometry/TrackerNumberingBuilder/interface/GeometricDet.h @@ -68,6 +68,7 @@ class GeometricDet { PixelPhase1Barrel = 101, PixelPhase1EndCap = 102, PixelPhase1Disk = 117, + ITPhase2Combined = 180, OTPhase2EndCap = 204, OTPhase2Barrel = 205, OTPhase2Layer = 208, @@ -138,6 +139,8 @@ class GeometricDet { bool stereo() const { return stereo_; } bool isLowerSensor() const { return isLowerSensor_; } bool isUpperSensor() const { return isUpperSensor_; } + bool isFirstSensor() const { return isFirstSensor_; } + bool isSecondSensor() const { return isSecondSensor_; } double siliconAPVNum() const { return siliconAPVNum_; } // DETECTOR DESCRIPTION ORIGIN INFO @@ -195,6 +198,8 @@ class GeometricDet { bool stereo_ = false; bool isLowerSensor_ = false; bool isUpperSensor_ = false; + bool isFirstSensor_ = false; + bool isSecondSensor_ = false; double siliconAPVNum_ = 0.; bool isFromDD4hep_ = false; diff --git a/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.cc b/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.cc index 449b1344c0ac7..6da97e59f249f 100644 --- a/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.cc +++ b/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.cc @@ -43,6 +43,26 @@ void CmsDetConstruction::buildSmallDetsforStack(FilteredView& fv, mother->addComponent(det); } +template +void CmsDetConstruction::buildSmallDetsfor3D(FilteredView& fv, + GeometricDet* mother, + const std::string& attribute) { + GeometricDet* det = new GeometricDet(&fv, + CmsTrackerLevelBuilder::theCmsTrackerStringToEnum.type( + ExtractStringFromDDD::getString(attribute, &fv))); + + if (det->isFirstSensor()) { + uint32_t temp = 1; + det->setGeographicalID(DetId(temp)); + } else if (det->isSecondSensor()) { + uint32_t temp = 2; + det->setGeographicalID(DetId(temp)); + } else { + edm::LogError("DetConstruction") << " module defined in a 3D module but not first or second sensor!? "; + } + mother->addComponent(det); +} + /* * OLD DD. * Module with 2 sensors: calculate the sensor local ID, and add the sensor to its mother volume (module). @@ -63,9 +83,10 @@ void CmsDetConstruction::buildComponent(DDFilteredView& fv, const bool isPhase1ModuleWith2Sensors = (myTopologicalType == GeometricDet::mergedDet); const bool isPhase2ModuleWith2Sensors = (myTopologicalType == GeometricDet::OTPhase2Stack); + const bool isPhase2BarrelModuleWith2Sensors = (myTopologicalType == GeometricDet::ITPhase2Combined); // CASE A: MODULE HAS 2 SENSORS - if (isPhase1ModuleWith2Sensors || isPhase2ModuleWith2Sensors) { + if (isPhase1ModuleWith2Sensors || isPhase2ModuleWith2Sensors || isPhase2BarrelModuleWith2Sensors) { // Go down in hierarchy: from module to sensor bool dodets = fv.firstChild(); // very important while (dodets) { @@ -76,6 +97,8 @@ void CmsDetConstruction::buildComponent(DDFilteredView& fv, // PHASE 2 (STACKDET) else if (isPhase2ModuleWith2Sensors) { buildSmallDetsforStack(fv, det, attribute); + } else if (isPhase2BarrelModuleWith2Sensors) { + buildSmallDetsfor3D(fv, det, attribute); } dodets = fv.nextSibling(); @@ -110,9 +133,10 @@ void CmsDetConstruction::buildComponent(cms::DDFilteredView const bool isPhase1ModuleWith2Sensors = (myTopologicalType == GeometricDet::mergedDet); const bool isPhase2ModuleWith2Sensors = (myTopologicalType == GeometricDet::OTPhase2Stack); + const bool isPhase2BarrelModuleWith2Sensors = (myTopologicalType == GeometricDet::ITPhase2Combined); // CASE A: MODULE HAS 2 SENSORS - if (isPhase1ModuleWith2Sensors || isPhase2ModuleWith2Sensors) { + if (isPhase1ModuleWith2Sensors || isPhase2ModuleWith2Sensors || isPhase2BarrelModuleWith2Sensors) { // Go down in hierarchy: from module to sensor if (!fv.firstChild()) { // very important edm::LogError("CmsDetConstruction::buildComponent. Cannot go down to sensor volume."); @@ -131,6 +155,8 @@ void CmsDetConstruction::buildComponent(cms::DDFilteredView // PHASE 2 (STACKDET) else if (isPhase2ModuleWith2Sensors) { buildSmallDetsforStack(fv, det, attribute); + } else if (isPhase2BarrelModuleWith2Sensors) { + buildSmallDetsfor3D(fv, det, attribute); } // Go to the next volume in FilteredView. diff --git a/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.h b/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.h index 2e61ed508faca..e049ba7d7ef05 100644 --- a/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.h +++ b/Geometry/TrackerNumberingBuilder/plugins/CmsDetConstruction.h @@ -17,6 +17,7 @@ class CmsDetConstruction : public CmsTrackerLevelBuilder { void buildDets(const FilteredView&, GeometricDet*, const std::string&); void buildSmallDetsforGlued(FilteredView&, GeometricDet*, const std::string&); void buildSmallDetsforStack(FilteredView&, GeometricDet*, const std::string&); + void buildSmallDetsfor3D(FilteredView&, GeometricDet*, const std::string&); }; #endif // Geometry_TrackerNumberingBuilder_CmsDetConstruction_H diff --git a/Geometry/TrackerNumberingBuilder/plugins/DDDCmsTrackerContruction.cc b/Geometry/TrackerNumberingBuilder/plugins/DDDCmsTrackerContruction.cc index a8ab8fb685c90..25f91f70a8670 100644 --- a/Geometry/TrackerNumberingBuilder/plugins/DDDCmsTrackerContruction.cc +++ b/Geometry/TrackerNumberingBuilder/plugins/DDDCmsTrackerContruction.cc @@ -148,6 +148,8 @@ void DDDCmsTrackerContruction::printAllTrackerGeometricDets(const GeometricDet* outputFile << "myDet->stereo() = " << myDet->stereo() << std::endl; outputFile << "myDet->isLowerSensor() = " << myDet->isLowerSensor() << std::endl; outputFile << "myDet->isUpperSensor() = " << myDet->isUpperSensor() << std::endl; + outputFile << "myDet->isFirstSensor() = " << myDet->isFirstSensor() << std::endl; + outputFile << "myDet->isSecondSensor() = " << myDet->isSecondSensor() << std::endl; outputFile << "myDet->siliconAPVNum() = " << myDet->siliconAPVNum() << std::endl; } } diff --git a/Geometry/TrackerNumberingBuilder/plugins/TrackerTopologyEP.cc b/Geometry/TrackerNumberingBuilder/plugins/TrackerTopologyEP.cc index c042c51d0d264..a090a70fb6fad 100644 --- a/Geometry/TrackerNumberingBuilder/plugins/TrackerTopologyEP.cc +++ b/Geometry/TrackerNumberingBuilder/plugins/TrackerTopologyEP.cc @@ -70,12 +70,23 @@ void TrackerTopologyEP::fillParameters(const PTrackerParameters& ptp, TrackerTopology::TIBValues& tibVals, TrackerTopology::TIDValues& tidVals, TrackerTopology::TOBValues& tobVals) { - pxbVals.layerStartBit_ = ptp.vitems[0].vpars[0]; // 16 - pxbVals.ladderStartBit_ = ptp.vitems[0].vpars[1]; // 8 - pxbVals.moduleStartBit_ = ptp.vitems[0].vpars[2]; // 2 - pxbVals.layerMask_ = ptp.vitems[0].vpars[3]; // 0xF - pxbVals.ladderMask_ = ptp.vitems[0].vpars[4]; // 0xFF - pxbVals.moduleMask_ = ptp.vitems[0].vpars[5]; // 0x3F + if (ptp.vitems[0].vpars.size() > 6) { //Phase 2: extra hierarchy level for 3D sensors + pxbVals.layerStartBit_ = ptp.vitems[0].vpars[0]; // 16 + pxbVals.ladderStartBit_ = ptp.vitems[0].vpars[1]; // 8 + pxbVals.moduleStartBit_ = ptp.vitems[0].vpars[2]; // 2 + pxbVals.doubleStartBit_ = ptp.vitems[0].vpars[3]; // 0 + pxbVals.layerMask_ = ptp.vitems[0].vpars[4]; // 0xF + pxbVals.ladderMask_ = ptp.vitems[0].vpars[5]; // 0xFF + pxbVals.moduleMask_ = ptp.vitems[0].vpars[6]; // 0x3F + pxbVals.doubleMask_ = ptp.vitems[0].vpars[7]; // 0x3 + } else { //Phase 1 + pxbVals.layerStartBit_ = ptp.vitems[0].vpars[0]; // 16 + pxbVals.ladderStartBit_ = ptp.vitems[0].vpars[1]; // 8 + pxbVals.moduleStartBit_ = ptp.vitems[0].vpars[2]; // 2 + pxbVals.layerMask_ = ptp.vitems[0].vpars[3]; // 0xF + pxbVals.ladderMask_ = ptp.vitems[0].vpars[4]; // 0xFF + pxbVals.moduleMask_ = ptp.vitems[0].vpars[5]; // 0x3F + } if (ptp.vitems[1].vpars.size() > 11) { //Tracker with subdisk hierarchy level (additional hierarchy level wrt original) diff --git a/Geometry/TrackerNumberingBuilder/src/CmsTrackerStringToEnum.cc b/Geometry/TrackerNumberingBuilder/src/CmsTrackerStringToEnum.cc index 4ab5c08965341..81c41128ee60f 100644 --- a/Geometry/TrackerNumberingBuilder/src/CmsTrackerStringToEnum.cc +++ b/Geometry/TrackerNumberingBuilder/src/CmsTrackerStringToEnum.cc @@ -22,7 +22,8 @@ CmsTrackerStringToEnum::Impl::Impl() { _map.insert(std::pair("Phase2OTBarrelPanel", GeometricDet::panel)); _map.insert( std::pair("Phase2OTBarrelStack", GeometricDet::OTPhase2Stack)); - + _map.insert(std::pair("Phase2ITBarrelCombined", + GeometricDet::ITPhase2Combined)); _map.insert(std::pair("PixelEndcapSubDet", GeometricDet::PixelEndCap)); _map.insert(std::pair("PixelEndcapDisk", GeometricDet::disk)); _map.insert(std::pair("PixelEndcapPanel", GeometricDet::panel)); @@ -103,6 +104,8 @@ CmsTrackerStringToEnum::Impl::Impl() { _reverseMap.insert(std::pair(GeometricDet::OTPhase2EndCap, "TID")); _reverseMap.insert(std::pair(GeometricDet::OTPhase2Wheel, "Wheel")); _reverseMap.insert(std::pair(GeometricDet::OTPhase2Stack, "Stack")); + _reverseMap.insert( + std::pair(GeometricDet::ITPhase2Combined, "Combined")); _reverseMap.insert(std::pair(GeometricDet::strng, "String")); _reverseMap.insert(std::pair(GeometricDet::rod, "Rod")); _reverseMap.insert(std::pair(GeometricDet::petal, "Petal")); diff --git a/Geometry/TrackerNumberingBuilder/src/GeometricDet.cc b/Geometry/TrackerNumberingBuilder/src/GeometricDet.cc index 1000033349137..e784dcfe88977 100644 --- a/Geometry/TrackerNumberingBuilder/src/GeometricDet.cc +++ b/Geometry/TrackerNumberingBuilder/src/GeometricDet.cc @@ -96,6 +96,8 @@ GeometricDet::GeometricDet(DDFilteredView* fv, GeometricEnumType type) stereo_ = (getString("TrackerStereoDetectors", *fv) == strue); isLowerSensor_ = (getString("TrackerLowerDetectors", *fv) == strue); isUpperSensor_ = (getString("TrackerUpperDetectors", *fv) == strue); + isFirstSensor_ = (getString("TrackerFirstDetectors", *fv) == strue); + isSecondSensor_ = (getString("TrackerSecondDetectors", *fv) == strue); siliconAPVNum_ = getDouble("SiliconAPVNumber", *fv); } } @@ -135,6 +137,8 @@ GeometricDet::GeometricDet(cms::DDFilteredView* fv, GeometricEnumType type) // Phase 2 OT sensors only (NB: hence could add a branch here, but not a critical part on perf) isLowerSensor_ = (fv->get("TrackerLowerDetectors") == strue); isUpperSensor_ = (fv->get("TrackerUpperDetectors") == strue); + isFirstSensor_ = (fv->get("TrackerFirstDetectors") == strue); + isSecondSensor_ = (fv->get("TrackerSecondDetectors") == strue); // All sensors: IT or OT, Phase 1 or Phase 2 (NB: critical part on perf) fv->findSpecPar("TrackerRadLength", "TrackerXi"); diff --git a/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT710_2023_04/trackerRecoMaterial.xml b/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT710_2023_04/trackerRecoMaterial.xml new file mode 100644 index 0000000000000..3076e8e5e25c3 --- /dev/null +++ b/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT710_2023_04/trackerRecoMaterial.xml @@ -0,0 +1,540 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml b/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml new file mode 100644 index 0000000000000..b537750e5fdfc --- /dev/null +++ b/Geometry/TrackerRecoData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/trackerRecoMaterial.xml @@ -0,0 +1,540 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml b/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml new file mode 100644 index 0000000000000..57a44841b30d5 --- /dev/null +++ b/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelProdCuts.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml b/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml new file mode 100644 index 0000000000000..b66e0d892908f --- /dev/null +++ b/Geometry/TrackerSimData/data/PhaseII/Tracker_DD4hep_compatible_IT711_2023_05/pixelsens.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.cc b/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.cc index bd7c54e22fa4f..0a7472679aa48 100644 --- a/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.cc +++ b/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.cc @@ -7,6 +7,7 @@ #include "Geometry/CommonDetUnit/interface/GeomDet.h" #include "Geometry/CommonDetUnit/interface/GluedGeomDet.h" #include "Geometry/CommonDetUnit/interface/StackGeomDet.h" +#include "Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h" #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" @@ -33,6 +34,7 @@ #include "TkPhase2OTMeasurementDet.h" #include "TkGluedMeasurementDet.h" #include "TkStackMeasurementDet.h" +#include "TkDoubleSensMeasurementDet.h" #include "CondFormats/SiStripObjects/interface/SiStripNoises.h" #include "CondFormats/DataRecord/interface/SiStripNoisesRcd.h" @@ -172,6 +174,11 @@ void MeasurementTrackerImpl::initialize(const TrackerTopology* trackerTopology) for (unsigned int i = 0; i != theStackDets.size(); ++i) initStackDet(theStackDets[i]); + // and then the double sensor dets + sortTKD(theDoubleSensGeomDets); + for (unsigned int i = 0; i != theDoubleSensGeomDets.size(); ++i) + initDoubleSensDet(theDoubleSensGeomDets[i]); + if (!checkDets()) throw MeasurementDetException("Number of dets in MeasurementTracker not consistent with TrackerGeometry!"); } @@ -235,14 +242,19 @@ void MeasurementTrackerImpl::addDets(const TrackingGeometry::DetContainer& dets, //Glued or Stack GeomDet const GluedGeomDet* gluedDet = dynamic_cast(*gd); const StackGeomDet* stackDet = dynamic_cast(*gd); + const DoubleSensGeomDet* doubleSensGeomDet = dynamic_cast(*gd); - if ((gluedDet == nullptr && stackDet == nullptr) || (gluedDet != nullptr && stackDet != nullptr)) { - throw MeasurementDetException("MeasurementTracker ERROR: GeomDet neither DetUnit nor GluedDet nor StackDet"); + if ((gluedDet == nullptr && stackDet == nullptr && doubleSensGeomDet == nullptr) || + (gluedDet != nullptr && stackDet != nullptr && doubleSensGeomDet != nullptr)) { + throw MeasurementDetException( + "MeasurementTracker ERROR: GeomDet neither DetUnit nor GluedDet nor StackDet nor DoubleSensGeomDet"); } if (gluedDet != nullptr) addGluedDet(gluedDet); - else + else if (stackDet != nullptr) addStackDet(stackDet); + else + addDoubleSensGeomDet(doubleSensGeomDet); } } } @@ -287,6 +299,10 @@ void MeasurementTrackerImpl::addStackDet(const StackGeomDet* gd) { theStackDets.push_back(TkStackMeasurementDet(gd, thePxDetConditions.pixelCPE())); } +void MeasurementTrackerImpl::addDoubleSensGeomDet(const DoubleSensGeomDet* gd) { + theDoubleSensGeomDets.push_back(TkDoubleSensMeasurementDet(gd, thePxDetConditions.pixelCPE())); +} + void MeasurementTrackerImpl::initGluedDet(TkGluedMeasurementDet& det, const TrackerTopology* trackerTopology) { const GluedGeomDet& gd = det.specificGeomDet(); const MeasurementDet* monoDet = findDet(gd.monoDet()->geographicalId()); @@ -311,6 +327,19 @@ void MeasurementTrackerImpl::initStackDet(TkStackMeasurementDet& det) { theDetMap[gd.geographicalId()] = &det; } +void MeasurementTrackerImpl::initDoubleSensDet(TkDoubleSensMeasurementDet& det) { + const DoubleSensGeomDet& gd = det.specificGeomDet(); + const MeasurementDet* firstDet = findDet(gd.firstDet()->geographicalId()); + const MeasurementDet* secondDet = findDet(gd.secondDet()->geographicalId()); + if (firstDet == nullptr || secondDet == nullptr) { + edm::LogError("MeasurementDet") + << "MeasurementTracker ERROR: DoubleSensDet components not found as MeasurementDets "; + throw MeasurementDetException("MeasurementTracker ERROR: DoubleSensDet components not found as MeasurementDets"); + } + det.init(firstDet, secondDet); + theDetMap[gd.geographicalId()] = &det; +} + void MeasurementTrackerImpl::initializeStripStatus(const BadStripCutsDet& badStripCuts, const SiStripQuality* quality, int qualityFlags, diff --git a/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.h b/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.h index 7794f31e5fe94..10c54eb529158 100644 --- a/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.h +++ b/RecoTracker/MeasurementDet/plugins/MeasurementTrackerImpl.h @@ -28,10 +28,12 @@ class TkPixelMeasurementDet; class TkPhase2OTMeasurementDet; class TkGluedMeasurementDet; class TkStackMeasurementDet; +class TkDoubleSensMeasurementDet; class GeometricSearchTracker; class SiStripRecHitMatcher; class GluedGeomDet; class StackGeomDet; +class DoubleSensGeomDet; class SiPixelFedCabling; class TrackerGeometry; @@ -100,6 +102,7 @@ class dso_hidden MeasurementTrackerImpl final : public MeasurementTracker { const std::vector& pixelDets() const { return thePixelDets; } const std::vector& gluedDets() const { return theGluedDets; } const std::vector& stackDets() const { return theStackDets; } + const std::vector& doubleSensGeomDets() const { return theDoubleSensGeomDets; } const StMeasurementConditionSet& stripDetConditions() const override { return theStDetConditions; } const PxMeasurementConditionSet& pixelDetConditions() const override { return thePxDetConditions; } @@ -117,6 +120,7 @@ class dso_hidden MeasurementTrackerImpl final : public MeasurementTracker { std::vector thePhase2Dets; std::vector theGluedDets; std::vector theStackDets; + std::vector theDoubleSensGeomDets; const SiPixelFedCabling* thePixelCabling; @@ -131,9 +135,11 @@ class dso_hidden MeasurementTrackerImpl final : public MeasurementTracker { void addGluedDet(const GluedGeomDet* gd); void addStackDet(const StackGeomDet* gd); + void addDoubleSensGeomDet(const DoubleSensGeomDet* gd); void initGluedDet(TkGluedMeasurementDet& det, const TrackerTopology* trackerTopology); void initStackDet(TkStackMeasurementDet& det); + void initDoubleSensDet(TkDoubleSensMeasurementDet& det); void addDets(const TrackingGeometry::DetContainer& dets, bool subIsPixel, bool subIsOT); diff --git a/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.cc b/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.cc new file mode 100644 index 0000000000000..b2c9b882c07f6 --- /dev/null +++ b/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.cc @@ -0,0 +1,105 @@ +#include "TkDoubleSensMeasurementDet.h" + +#include "TrackingTools/MeasurementDet/interface/MeasurementDetException.h" + +using namespace std; + +TkDoubleSensMeasurementDet::TkDoubleSensMeasurementDet(const DoubleSensGeomDet* gdet, + const PixelClusterParameterEstimator* cpe) + : MeasurementDet(gdet), thePixelCPE(cpe), theFirstDet(nullptr), theSecondDet(nullptr) {} + +void TkDoubleSensMeasurementDet::init(const MeasurementDet* firstDet, const MeasurementDet* secondDet) { + theFirstDet = dynamic_cast(firstDet); + theSecondDet = dynamic_cast(secondDet); + + if ((theFirstDet == nullptr) || (theSecondDet == nullptr)) { + throw MeasurementDetException( + "TkDoubleSensMeasurementDet ERROR: Trying to glue a det which is not a TkPixelMeasurementDet"); + } +} + +TkDoubleSensMeasurementDet::RecHitContainer TkDoubleSensMeasurementDet::recHits( + const TrajectoryStateOnSurface& ts, const MeasurementTrackerEvent& data) const { + RecHitContainer result; + + if (data.pixelData().handle()->data().empty()) + return result; + LogTrace("MeasurementTracker") << " is not empty"; + if (!isActive(data)) + return result; + LogTrace("MeasurementTracker") << " and is active"; + + //find clusters to skip + const detset& firstDetSet = data.pixelData().detSet(firstDet()->index()); + const detset& secondDetSet = data.pixelData().detSet(secondDet()->index()); + std::vector skipClustersUpper(data.pixelClustersToSkip().empty() ? 0 : secondDetSet.size(), false); + std::vector skipClustersLower(data.pixelClustersToSkip().empty() ? 0 : firstDetSet.size(), false); + + const SiPixelCluster* begin = nullptr; + if (!data.pixelData().handle()->data().empty()) { + begin = &(data.pixelData().handle()->data().front()); + } + if (!data.pixelClustersToSkip().empty()) { + if (!firstDetSet.empty()) { + for (const_iterator cil = firstDetSet.begin(); cil != firstDetSet.end(); ++cil) { + if (cil < begin) { + edm::LogError("IndexMisMatch") << "TkDoubleSensMeasurementDet cannot create hit because of index mismatch."; + return result; + } + unsigned int indexl = cil - begin; + if (data.pixelClustersToSkip()[indexl]) { + int iLocalL = std::distance(firstDetSet.begin(), cil); + skipClustersLower[iLocalL] = true; + } + } + } + if (!secondDetSet.empty()) { + for (const_iterator ciu = secondDetSet.begin(); ciu != secondDetSet.end(); ++ciu) { + if (ciu < begin) { + edm::LogError("IndexMisMatch") << "TkDoubleSensMeasurementDet cannot create hit because of index mismatch."; + return result; + } + unsigned int indexu = ciu - begin; + if (data.pixelClustersToSkip()[indexu]) { + int iLocalU = std::distance(secondDetSet.begin(), ciu); + skipClustersUpper[iLocalU] = true; + } + } + } + } + + return result; +} + +bool TkDoubleSensMeasurementDet::measurements(const TrajectoryStateOnSurface& stateOnThisDet, + const MeasurementEstimator& est, + const MeasurementTrackerEvent& data, + TempMeasurements& result) const { + LogDebug("MeasurementTracker") << "TkDoubleSensMeasurementDet::measurements"; + + if (!isActive(data)) { + result.add(theInactiveHit, 0.F); + return true; + } + + LogTrace("MeasurementTracker") << " is active"; + + auto oldSize = result.size(); + MeasurementDet::RecHitContainer&& allHits = recHits(stateOnThisDet, data); + + for (auto&& hit : allHits) { + std::pair diffEst = est.estimate(stateOnThisDet, *hit); + if (diffEst.first) { + LogDebug("MeasurementTracker") << "New vh added with chi2: " << diffEst.second; + result.add(std::move(hit), diffEst.second); + } + } + + if (result.size() > oldSize) + return true; + + // create a TrajectoryMeasurement with an invalid RecHit and zero estimate + result.add(theMissingHit, 0.F); + LogDebug("MeasurementTracker") << "adding missing hit"; + return false; +} diff --git a/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.h b/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.h new file mode 100644 index 0000000000000..93afc7b3ecebc --- /dev/null +++ b/RecoTracker/MeasurementDet/plugins/TkDoubleSensMeasurementDet.h @@ -0,0 +1,54 @@ +#ifndef TkDoubleSensMeasurementDet_H +#define TkDoubleSensMeasurementDet_H + +#include "TrackingTools/MeasurementDet/interface/MeasurementDet.h" +#include "TkPixelMeasurementDet.h" + +#include "Geometry/CommonDetUnit/interface/StackGeomDet.h" +#include "Geometry/CommonDetUnit/interface/DoubleSensGeomDet.h" +#include "RecoLocalTracker/ClusterParameterEstimator/interface/PixelClusterParameterEstimator.h" + +#include "FWCore/Utilities/interface/Visibility.h" + +class TkDoubleSensMeasurementDet final : public MeasurementDet { +public: + TkDoubleSensMeasurementDet(const DoubleSensGeomDet* gdet, const PixelClusterParameterEstimator* cpe); + + void init(const MeasurementDet* firstDet, const MeasurementDet* secondDet); + + RecHitContainer recHits(const TrajectoryStateOnSurface&, const MeasurementTrackerEvent& data) const override; + + const DoubleSensGeomDet& specificGeomDet() const { return static_cast(fastGeomDet()); } + typedef edm::Ref, Phase2TrackerCluster1D> Phase2TrackerCluster1DRef; + + typedef edmNew::DetSet detset; + typedef detset::const_iterator const_iterator; + + bool measurements(const TrajectoryStateOnSurface& stateOnThisDet, + const MeasurementEstimator& est, + const MeasurementTrackerEvent& data, + TempMeasurements& result) const override; + + const TkPixelMeasurementDet* firstDet() const { return theFirstDet; } + const TkPixelMeasurementDet* secondDet() const { return theSecondDet; } + + /// return TRUE if both first and second components are active + bool isActive(const MeasurementTrackerEvent& data) const override { + return firstDet()->isActive(data) && secondDet()->isActive(data); + } + bool isEmpty(const PxMeasurementDetSet& data) const { + return data.empty(firstDet()->index()) || data.empty(secondDet()->index()); + } + + /// return TRUE if at least one of the first and second components has badChannels + bool hasBadComponents(const TrajectoryStateOnSurface& tsos, const MeasurementTrackerEvent& data) const override { + return (firstDet()->hasBadComponents(tsos, data) || secondDet()->hasBadComponents(tsos, data)); + } + +private: + const PixelClusterParameterEstimator* thePixelCPE; + const TkPixelMeasurementDet* theFirstDet; + const TkPixelMeasurementDet* theSecondDet; +}; + +#endif diff --git a/RecoTracker/PixelLowPtUtilities/src/ClusterShapeHitFilter.cc b/RecoTracker/PixelLowPtUtilities/src/ClusterShapeHitFilter.cc index 12c2a8a0f24be..852ff217c4b76 100644 --- a/RecoTracker/PixelLowPtUtilities/src/ClusterShapeHitFilter.cc +++ b/RecoTracker/PixelLowPtUtilities/src/ClusterShapeHitFilter.cc @@ -121,13 +121,14 @@ void ClusterShapeHitFilter::fillPixelData() { for (auto det : theTracker->detsPXB()) { // better not to fail.. const PixelGeomDetUnit* pixelDet = dynamic_cast(det); - assert(pixelDet); - PixelData& pd = pixelData[pixelDet->geographicalId()]; - pd.det = pixelDet; - pd.part = 0; - pd.layer = theTkTopol->pxbLayer(pixelDet->geographicalId()); - pd.cotangent = getCotangent(pixelDet); - pd.drift = getDrift(pixelDet); + if (pixelDet) { + PixelData& pd = pixelData[pixelDet->geographicalId()]; + pd.det = pixelDet; + pd.part = 0; + pd.layer = theTkTopol->pxbLayer(pixelDet->geographicalId()); + pd.cotangent = getCotangent(pixelDet); + pd.drift = getDrift(pixelDet); + } } //endcap diff --git a/RecoTracker/TkDetLayers/src/PixelRodBuilder.cc b/RecoTracker/TkDetLayers/src/PixelRodBuilder.cc index d001e81c714e8..b5fb1fc2b4afa 100644 --- a/RecoTracker/TkDetLayers/src/PixelRodBuilder.cc +++ b/RecoTracker/TkDetLayers/src/PixelRodBuilder.cc @@ -7,10 +7,18 @@ PixelRod* PixelRodBuilder::build(const GeometricDet* aRod, const TrackerGeometry vector allGeometricDets = aRod->components(); vector theGeomDets; - for (vector::iterator it = allGeometricDets.begin(); it != allGeometricDets.end(); it++) { - const GeomDet* theGeomDet = theGeomDetGeometry->idToDet((*it)->geographicalId()); - theGeomDets.push_back(theGeomDet); + vector compGeometricDets; + for (auto& it : allGeometricDets) { + compGeometricDets = it->components(); + if (it->type() == GeometricDet::ITPhase2Combined) { + const GeomDet* theGeomDet = theGeomDetGeometry->idToDet(compGeometricDets[0]->geographicalId()); + theGeomDets.push_back(theGeomDet); + const GeomDet* theGeomDetBrother = theGeomDetGeometry->idToDet(compGeometricDets[1]->geographicalId()); + theGeomDets.push_back(theGeomDetBrother); + } else if (it->type() == GeometricDet::DetUnit) { + const GeomDet* theGeomDet = theGeomDetGeometry->idToDet(it->geographicalId()); + theGeomDets.push_back(theGeomDet); + } } - return new PixelRod(theGeomDets); }