From c4e6424dca767780ac12449448c147b32048632f Mon Sep 17 00:00:00 2001 From: FU Chengdong <fucd@ihep.ac.cn> Date: Thu, 18 Jul 2024 09:29:05 +0000 Subject: [PATCH] Geom: add limits option --- .../DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp | 6 +++++- Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp | 6 +++++- Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp | 2 +- Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp | 2 +- Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp | 2 +- Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp | 9 +++++++-- Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp | 2 +- .../DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp | 1 + .../src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp | 2 +- Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp | 4 ++++ Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp | 4 ++++ 11 files changed, 31 insertions(+), 9 deletions(-) diff --git a/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp b/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp index b1cf2fe6..186668df 100644 --- a/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/FTD_Simple_Staggered_geo.cpp @@ -1022,7 +1022,11 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se petalSupport(theDetector, ftd, valuesDict, FTDPetalAirLogical ) ; VolVec volV = petalSensor( theDetector, ftd, sens, valuesDict, FTDPetalAirLogical ); - + if (x_det.hasAttr(_U(limits))) { + for (auto vol : volV) { + vol.first.setLimitSet(theDetector, x_det.limitsStr()); + } + } //---- meassurement surface vectors diff --git a/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp b/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp index cdc5294c..18e822a7 100644 --- a/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/FTD_cepc_geo.cpp @@ -1024,7 +1024,11 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se petalSupport(theDetector, ftd, valuesDict, FTDPetalAirLogical ) ; VolVec volV = petalSensor( theDetector, ftd, sens, valuesDict, FTDPetalAirLogical ); - + if (x_det.hasAttr(_U(limits))) { + for (auto vol : volV) { + vol.first.setLimitSet(theDetector, x_det.limitsStr()); + } + } //---- meassurement surface vectors diff --git a/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp b/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp index 154f6653..151a54f7 100644 --- a/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/SET_Simple_Planar_geo.cpp @@ -301,7 +301,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h dd4hep::Volume setSenLogical( dd4hep:: _toString( layer_id,"SET_SenLogical_%02d"), setSenSolid,sensitiveMat ) ; setSenLogical.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) setSenLogical.setLimitSet(theDetector, x_det.limitsStr()); //====== create the meassurement surface =================== diff --git a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp index 347b391b..7199f4c4 100644 --- a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Pixel_geo.cpp @@ -315,7 +315,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h dd4hep::Volume sitSenLogical( name + dd4hep::_toString( layer_id,"_SenLogical_%02d"), sitSenSolid,sensitiveMat ) ; sitSenLogical.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) sitSenLogical.setLimitSet(theDetector, x_det.limitsStr()); //====== create the meassurement surface =================== dd4hep::rec::Vector3D u,v,n ; diff --git a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp index 94045185..f2861eaf 100644 --- a/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/SIT_Simple_Planar_geo.cpp @@ -311,7 +311,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h dd4hep::Volume sitSenLogical( dd4hep::_toString( layer_id,"SIT_SenLogical_%02d"), sitSenSolid,sensitiveMat ) ; sitSenLogical.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) sitSenLogical.setLimitSet(theDetector, x_det.limitsStr()); //====== create the meassurement surface =================== dd4hep::rec::Vector3D u,v,n ; diff --git a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp index 4e5ee8a9..4d7c6b03 100644 --- a/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/TPC10_geo.cpp @@ -482,7 +482,10 @@ Material endplate_MaterialMix = theDetector.material( "TPC_endplate_mix" ) ; lowerlayerLog.setSensitiveDetector(sens); upperlayerLog.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) { + lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + upperlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + } #else // create just one volume per pad ring @@ -512,7 +515,9 @@ Material endplate_MaterialMix = theDetector.material( "TPC_endplate_mix" ) ; layerDEbwd.setPlacement( pv ) ; layerLog.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) { + layerLog.setLimitSet(theDetector, x_det.limitsStr()); + } #endif } diff --git a/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp b/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp index 929822dd..1b9c30b7 100644 --- a/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp +++ b/Detector/DetCEPCv4/src/tracker/VXD04_geo.cpp @@ -1077,7 +1077,7 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se vxd.setVisAttributes(theDetector, "BlueVis" , SiActiveLayerLogical ) ; SiActiveLayerLogical.setSensitiveDetector(sens); - + if (x_det.hasAttr(_U(limits))) SiActiveLayerLogical.setLimitSet(theDetector, x_det.limitsStr()); //====== create the meassurement surface =================== Vector3D u( 1. , 0. , 0. ) ; diff --git a/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp index 2cbd8bce..a88fa756 100644 --- a/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp +++ b/Detector/DetCRD/src/Tracker/SiTrackerSkewRing_v01_geo.cpp @@ -149,6 +149,7 @@ static dd4hep::Ref_t create_detector(Detector& description, xml_h e, SensitiveDe tracker.check(sensor_id > 2," fromCompact: "+c_name+" Max of 2 modules allowed!"); pv.addPhysVolID("sensor", sensor_id); c_vol.setSensitiveDetector(sens); + if (x_det.hasAttr(_U(limits))) c_vol.setLimitSet(description, x_det.limitsStr()); sensitives.push_back(pv); dd4hep::rec::Vector3D u(-1., 0., 0.); diff --git a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp index b47bfc93..b8245d66 100644 --- a/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp +++ b/Detector/DetCRD/src/Tracker/SiTrackerStaggeredLadder_v01_geo.cpp @@ -266,7 +266,7 @@ static dd4hep::Ref_t create_element(dd4hep::Detector& theDetector, xml_h e, dd4h Box SensorSolid(sensor_thickness / 2.0, sensor_active_width / 2.0, sensor_active_len / 2.0); Volume SensorLogical(name + dd4hep::_toString( layer_id, "_SensorLogical_%02d"), SensorSolid, sensor_mat); SensorLogical.setSensitiveDetector(sens); - //vxd.setVisAttributes(theDetector, deadsensVis, SensorDeadLogical); + if (x_det.hasAttr(_U(limits))) SensorLogical.setLimitSet(theDetector, x_det.limitsStr()); SensorLogical.setVisAttributes(theDetector.visAttributes(sensVis)); //create dead sensor logical volume diff --git a/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp b/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp index d6fc4283..edd4bddb 100644 --- a/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp +++ b/Detector/DetCRD/src/Tracker/TPC_ModularEndcap_o1_v01.cpp @@ -307,6 +307,10 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se lowerlayerLog.setSensitiveDetector(sens); upperlayerLog.setSensitiveDetector(sens); + if (x_det.hasAttr(_U(limits))) { + lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + upperlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + } } } diff --git a/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp b/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp index 4a9b7619..a137e03d 100644 --- a/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp +++ b/Detector/DetCRD/src/Tracker/TPC_Simple_o1_v01.cpp @@ -308,6 +308,10 @@ static Ref_t create_element(Detector& theDetector, xml_h e, SensitiveDetector se lowerlayerLog.setSensitiveDetector(sens); upperlayerLog.setSensitiveDetector(sens); + if (x_det.hasAttr(_U(limits))) { + lowerlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + upperlayerLog.setLimitSet(theDetector, x_det.limitsStr()); + } } } -- GitLab