From be3892d0851de24fe5f0af85b45089b84c9772f2 Mon Sep 17 00:00:00 2001 From: Menglin Xu <mexu@cern.ch> Date: Tue, 25 Feb 2025 11:22:33 +0100 Subject: [PATCH 1/4] use explicit int type instead of bool type for debugging --- Detector/UP/src/UP_geo.cpp | 39 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/Detector/UP/src/UP_geo.cpp b/Detector/UP/src/UP_geo.cpp index efcb2886d..d5ce925a3 100644 --- a/Detector/UP/src/UP_geo.cpp +++ b/Detector/UP/src/UP_geo.cpp @@ -75,41 +75,42 @@ namespace { for ( xml_coll_t i( x_dbg, _U( item ) ); i; ++i ) { xml_comp_t c( i ); std::string n = c.nameStr(); - if ( n == "Build_Sides" ) - m_build_sides = c.attr<bool>( _U( value ) ); + if ( n == "debug" ) + debug = c.attr<int>( _U( value ) ) !=0; + else if ( n == "Build_Sides" ) + m_build_sides = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Aside" ) - m_build_aside = c.attr<bool>( _U( value ) ); + m_build_aside = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside_UPaX" ) - m_build_aside_upax = c.attr<bool>( _U( value ) ); + m_build_aside_upax = c.attr<int>( _U( value ) ) !=0; else if ( n == "Build_Aside_UPaU" ) - m_build_aside_upau = c.attr<bool>( _U( value ) ); + m_build_aside_upau = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Aside_UPbV" ) - m_build_aside_upbv = c.attr<bool>( _U( value ) ); + m_build_aside_upbv = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Aside_UPbX" ) - m_build_aside_upbx = c.attr<bool>( _U( value ) ); + m_build_aside_upbx = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Cside" ) - m_build_cside = c.attr<bool>( _U( value ) ); + m_build_cside = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Cside_UPaX" ) - m_build_cside_upax = c.attr<bool>( _U( value ) ); + m_build_cside_upax = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Cside_UPaU" ) - m_build_cside_upau = c.attr<bool>( _U( value ) ); + m_build_cside_upau = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Cside_UPbV" ) - m_build_cside_upbv = c.attr<bool>( _U( value ) ); + m_build_cside_upbv = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Cside_UPbX" ) - m_build_cside_upbx = c.attr<bool>( _U( value ) ); + m_build_cside_upbx = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Frame" ) - m_build_frame = c.attr<bool>( _U( value ) ); + m_build_frame = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Jacket" ) - m_build_jacket = c.attr<bool>( _U( value ) ); + m_build_jacket = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_PipeHeater" ) - m_build_pipeheater = c.attr<bool>( _U( value ) ); + m_build_pipeheater = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_Box" ) - m_build_box = c.attr<bool>( _U( value ) ); + m_build_box = c.attr<int>( _U( value ) )!=0; else if ( n == "Build_BoxPlug" ) - m_build_boxplug = c.attr<bool>( _U( value ) ); + m_build_boxplug = c.attr<int>( _U( value ) )!=0; else if ( n == "select_volume" ) select_volume = c.attr<std::string>( _U( value ) ); - else if ( n == "debug" ) { debug = c.attr<bool>( _U( value ) ); } } } } @@ -128,12 +129,10 @@ namespace { deSensor = DetElement( de_onesector, "sensor0", 0 ); deSensor.setPlacement( pv ); - // de_onegroup = DetElement( "Group" ); lvonechip = volume( "lvOnePixelGroup" ); pv = lvonechip.placeVolume( lvSector, Position( 0, _toDouble( "-UPPixelLong/2+UPPixelBufferLong+UPPixelSideLong+UPPixelTrueLong/2" ), 0 ) ); pv->SetName( "pvSectorOnePixelGroup" ); - // pv.addPhysVolID( "sector", 0 ); deSector = de_onesector.clone( "Sector0", 0 ); deSector.setPlacement( pv ); -- GitLab From adfe841600692967580a8b0c7776563194b5eb01 Mon Sep 17 00:00:00 2001 From: Menglin Xu <mexu@cern.ch> Date: Wed, 26 Feb 2025 10:18:05 +0100 Subject: [PATCH 2/4] polish LvGroup placeVolume part --- Detector/UP/src/UP_geo.cpp | 99 ++++++-------------------------------- 1 file changed, 15 insertions(+), 84 deletions(-) diff --git a/Detector/UP/src/UP_geo.cpp b/Detector/UP/src/UP_geo.cpp index d5ce925a3..eb6ba148c 100644 --- a/Detector/UP/src/UP_geo.cpp +++ b/Detector/UP/src/UP_geo.cpp @@ -389,93 +389,24 @@ namespace { deGroup = DetElement( de_pixel_module_g, "PixelGroupB", 0 ); lvGroup = volume( "lvPixelGroupB" ); - pv = lvGroup.placeVolume( - lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( "SetMGpvChipA1X" ), _toDouble( "SetMGpvChipA1Y" ), - _toDouble( "UPSensorSiZ" ) ) ) ); - pv->SetName( "pvChipA1" ); - pv.addPhysVolID( "chip", 0 ); - deSector = de_onesector.clone( "chip0", 0 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( "SetMGpvChipA2X" ), _toDouble( "SetMGpvChipA2Y" ), - _toDouble( "UPSensorSiZ" ) ) ); - pv->SetName( "pvChipA2" ); - pv.addPhysVolID( "chip", 1 ); - deSector = de_onesector.clone( "chip01", 1 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( - lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( "SetMGpvChipA3X" ), _toDouble( "SetMGpvChipA3Y" ), - _toDouble( "UPSensorSiZ" ) ) ) ); - pv->SetName( "pvChipA3" ); - pv.addPhysVolID( "chip", 2 ); - deSector = de_onesector.clone( "chip02", 2 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( "SetMGpvChipA4X" ), _toDouble( "SetMGpvChipA4Y" ), - _toDouble( "UPSensorSiZ" ) ) ); - pv->SetName( "pvChipA4" ); - pv.addPhysVolID( "chip", 3 ); - deSector = de_onesector.clone( "chip03", 3 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( - lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( "SetMGpvChipA5X" ), _toDouble( "SetMGpvChipA5Y" ), - _toDouble( "UPSensorSiZ" ) ) ) ); - pv->SetName( "pvChipA5" ); - pv.addPhysVolID( "chip", 4 ); - deSector = de_onesector.clone( "chip04", 4 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( "SetMGpvChipA6X" ), _toDouble( "SetMGpvChipA6Y" ), - _toDouble( "UPSensorSiZ" ) ) ); - pv->SetName( "pvChipA6" ); - pv.addPhysVolID( "chip", 5 ); - deSector = de_onesector.clone( "chip05", 5 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( - lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), dd4hep::Position( 0, _toDouble( "SetMGpvChipA7Y" ), - _toDouble( "UPSensorSiZ" ) ) ) ); - pv->SetName( "pvChipA7" ); - pv.addPhysVolID( "chip", 6 ); - deSector = de_onesector.clone( "chip06", 6 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( lvonechip, Position( 0, _toDouble( "SetMGpvChipA8Y" ), _toDouble( "UPSensorSiZ" ) ) ); - pv->SetName( "pvChipA8" ); - pv.addPhysVolID( "chip", 7 ); - deSector = de_onesector.clone( "chip07", 7 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); - - pv = lvGroup.placeVolume( + // Loop through chips + for (int i = 1; i < 11; i++) { + if (i%2==0){ + pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( _toString(i,"SetMGpvChipA%02dX").c_str() ), _toDouble( _toString(i,"SetMpvChipA%02dY").c_str()), + _toDouble( "UPSensorSiZ" ) ) );} + else{ + pv = lvGroup.placeVolume( lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( "SetMGpvChipA9X" ), _toDouble( "SetMGpvChipA9Y" ), + dd4hep::Position( _toDouble( _toString(i,"SetMGpvChipA%02dX").c_str()), _toDouble(_toString(i,"SetMpvChipA%02dY").c_str()), _toDouble( "UPSensorSiZ" ) ) ) ); - pv->SetName( "pvChipA9" ); - pv.addPhysVolID( "chip", 8 ); - deSector = de_onesector.clone( "chip08", 8 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); + } + pv->SetName(_toString(i, "pvChipA%02d" ).c_str()); + pv.addPhysVolID( "chip", i-1 ); + deSector = de_onesector.clone( _toString(i-1,"chip%02d"), 0 ); + deSector.setPlacement( pv ); + deGroup.add( deSector ); + } - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( "SetMGpvChipA10X" ), _toDouble( "SetMGpvChipA10Y" ), - _toDouble( "UPSensorSiZ" ) ) ); - pv->SetName( "pvChipA10" ); - pv.addPhysVolID( "chip", 9 ); - deSector = de_onesector.clone( "chip09", 9 ); - deSector.setPlacement( pv ); - deGroup.add( deSector ); lvModule = volume( "lvPixelModuleG" ); pv = lvModule.placeVolume( lvGroup, Position( 0, _toDouble( "UPPixelYELL" ), _toDouble( "UPPixelZ" ) ) ); -- GitLab From bb8042db901419cbf63b6adc606ca2bc0f698e07 Mon Sep 17 00:00:00 2001 From: Gitlab CI <noreply@cern.ch> Date: Thu, 27 Feb 2025 09:35:47 +0000 Subject: [PATCH 3/4] Fixed formatting patch generated by https://gitlab.cern.ch/lhcb/Detector/-/jobs/52023571 --- Detector/UP/src/UP_geo.cpp | 59 +++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/Detector/UP/src/UP_geo.cpp b/Detector/UP/src/UP_geo.cpp index eb6ba148c..ec1097ac0 100644 --- a/Detector/UP/src/UP_geo.cpp +++ b/Detector/UP/src/UP_geo.cpp @@ -76,39 +76,39 @@ namespace { xml_comp_t c( i ); std::string n = c.nameStr(); if ( n == "debug" ) - debug = c.attr<int>( _U( value ) ) !=0; + debug = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Sides" ) - m_build_sides = c.attr<int>( _U( value ) )!=0; + m_build_sides = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside" ) m_build_aside = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside_UPaX" ) - m_build_aside_upax = c.attr<int>( _U( value ) ) !=0; + m_build_aside_upax = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside_UPaU" ) - m_build_aside_upau = c.attr<int>( _U( value ) )!=0; + m_build_aside_upau = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside_UPbV" ) - m_build_aside_upbv = c.attr<int>( _U( value ) )!=0; + m_build_aside_upbv = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside_UPbX" ) - m_build_aside_upbx = c.attr<int>( _U( value ) )!=0; + m_build_aside_upbx = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Cside" ) - m_build_cside = c.attr<int>( _U( value ) )!=0; + m_build_cside = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Cside_UPaX" ) - m_build_cside_upax = c.attr<int>( _U( value ) )!=0; + m_build_cside_upax = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Cside_UPaU" ) - m_build_cside_upau = c.attr<int>( _U( value ) )!=0; + m_build_cside_upau = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Cside_UPbV" ) - m_build_cside_upbv = c.attr<int>( _U( value ) )!=0; + m_build_cside_upbv = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Cside_UPbX" ) - m_build_cside_upbx = c.attr<int>( _U( value ) )!=0; + m_build_cside_upbx = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Frame" ) - m_build_frame = c.attr<int>( _U( value ) )!=0; + m_build_frame = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Jacket" ) - m_build_jacket = c.attr<int>( _U( value ) )!=0; + m_build_jacket = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_PipeHeater" ) - m_build_pipeheater = c.attr<int>( _U( value ) )!=0; + m_build_pipeheater = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Box" ) - m_build_box = c.attr<int>( _U( value ) )!=0; + m_build_box = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_BoxPlug" ) - m_build_boxplug = c.attr<int>( _U( value ) )!=0; + m_build_boxplug = c.attr<int>( _U( value ) ) != 0; else if ( n == "select_volume" ) select_volume = c.attr<std::string>( _U( value ) ); } @@ -390,24 +390,25 @@ namespace { lvGroup = volume( "lvPixelGroupB" ); // Loop through chips - for (int i = 1; i < 11; i++) { - if (i%2==0){ - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( _toString(i,"SetMGpvChipA%02dX").c_str() ), _toDouble( _toString(i,"SetMpvChipA%02dY").c_str()), - _toDouble( "UPSensorSiZ" ) ) );} - else{ - pv = lvGroup.placeVolume( - lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( _toString(i,"SetMGpvChipA%02dX").c_str()), _toDouble(_toString(i,"SetMpvChipA%02dY").c_str()), - _toDouble( "UPSensorSiZ" ) ) ) ); + for ( int i = 1; i < 11; i++ ) { + if ( i % 2 == 0 ) { + pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( _toString( i, "SetMGpvChipA%02dX" ).c_str() ), + _toDouble( _toString( i, "SetMpvChipA%02dY" ).c_str() ), + _toDouble( "UPSensorSiZ" ) ) ); + } else { + pv = lvGroup.placeVolume( + lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), + dd4hep::Position( _toDouble( _toString( i, "SetMGpvChipA%02dX" ).c_str() ), + _toDouble( _toString( i, "SetMpvChipA%02dY" ).c_str() ), + _toDouble( "UPSensorSiZ" ) ) ) ); } - pv->SetName(_toString(i, "pvChipA%02d" ).c_str()); - pv.addPhysVolID( "chip", i-1 ); - deSector = de_onesector.clone( _toString(i-1,"chip%02d"), 0 ); + pv->SetName( _toString( i, "pvChipA%02d" ).c_str() ); + pv.addPhysVolID( "chip", i - 1 ); + deSector = de_onesector.clone( _toString( i - 1, "chip%02d" ), 0 ); deSector.setPlacement( pv ); deGroup.add( deSector ); } - lvModule = volume( "lvPixelModuleG" ); pv = lvModule.placeVolume( lvGroup, Position( 0, _toDouble( "UPPixelYELL" ), _toDouble( "UPPixelZ" ) ) ); pv->SetName( "pvPixelModuleG" ); -- GitLab From 4d32f5b7851d49dcd0456d4f4038d7d57252451a Mon Sep 17 00:00:00 2001 From: Menglin Xu <mexu@cern.ch> Date: Thu, 27 Feb 2025 11:36:45 +0100 Subject: [PATCH 4/4] fix the failed pip as SetMGpvChipA7X and SetMGpvChipA8X is not defind --- Detector/UP/src/UP_geo.cpp | 16 +++++++--------- .../UP/branch-run5-baseline/parameters.xml | 2 ++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Detector/UP/src/UP_geo.cpp b/Detector/UP/src/UP_geo.cpp index ec1097ac0..a99afffcc 100644 --- a/Detector/UP/src/UP_geo.cpp +++ b/Detector/UP/src/UP_geo.cpp @@ -75,9 +75,7 @@ namespace { for ( xml_coll_t i( x_dbg, _U( item ) ); i; ++i ) { xml_comp_t c( i ); std::string n = c.nameStr(); - if ( n == "debug" ) - debug = c.attr<int>( _U( value ) ) != 0; - else if ( n == "Build_Sides" ) + if ( n == "Build_Sides" ) m_build_sides = c.attr<int>( _U( value ) ) != 0; else if ( n == "Build_Aside" ) m_build_aside = c.attr<int>( _U( value ) ) != 0; @@ -392,19 +390,19 @@ namespace { // Loop through chips for ( int i = 1; i < 11; i++ ) { if ( i % 2 == 0 ) { - pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( _toString( i, "SetMGpvChipA%02dX" ).c_str() ), - _toDouble( _toString( i, "SetMpvChipA%02dY" ).c_str() ), + pv = lvGroup.placeVolume( lvonechip, Position( _toDouble( _toString( i, "SetMGpvChipA%dX" ).c_str() ), + _toDouble( _toString( i, "SetMGpvChipA%dY" ).c_str() ), _toDouble( "UPSensorSiZ" ) ) ); } else { pv = lvGroup.placeVolume( lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ), - dd4hep::Position( _toDouble( _toString( i, "SetMGpvChipA%02dX" ).c_str() ), - _toDouble( _toString( i, "SetMpvChipA%02dY" ).c_str() ), + dd4hep::Position( _toDouble( _toString( i, "SetMGpvChipA%dX" ).c_str() ), + _toDouble( _toString( i, "SetMGpvChipA%dY" ).c_str() ), _toDouble( "UPSensorSiZ" ) ) ) ); } - pv->SetName( _toString( i, "pvChipA%02d" ).c_str() ); + pv->SetName( _toString( i, "pvChipA%d" ).c_str() ); pv.addPhysVolID( "chip", i - 1 ); - deSector = de_onesector.clone( _toString( i - 1, "chip%02d" ), 0 ); + deSector = de_onesector.clone( _toString( i - 1, "chip%d" ), 0 ); deSector.setPlacement( pv ); deGroup.add( deSector ); } diff --git a/compact/components/UP/branch-run5-baseline/parameters.xml b/compact/components/UP/branch-run5-baseline/parameters.xml index cbf649825..14ddb20f2 100644 --- a/compact/components/UP/branch-run5-baseline/parameters.xml +++ b/compact/components/UP/branch-run5-baseline/parameters.xml @@ -362,7 +362,9 @@ <constant name="SetMGpvChipA5Y" value="UPPixelLong/2+UPPixelGap/2" /> <constant name="SetMGpvChipA6X" value="-UPPixelWide-UPPixelGap" /> <constant name="SetMGpvChipA6Y" value="-(UPPixelLong/2+UPPixelGap/2)" /> + <constant name="SetMGpvChipA7X" value="0" /> <constant name="SetMGpvChipA7Y" value="UPPixelLong/2+UPPixelGap/2" /> + <constant name="SetMGpvChipA8X" value="0" /> <constant name="SetMGpvChipA8Y" value="-(UPPixelLong/2+UPPixelGap/2)" /> <constant name="SetMGpvChipA9X" value="UPPixelWide+UPPixelGap" /> <constant name="SetMGpvChipA9Y" value="UPPixelLong/2+UPPixelGap/2" /> -- GitLab