Skip to content
Snippets Groups Projects

Draft: optimize UP c++ code

Open Menglin Xu requested to merge mexu_UP_c++_opt into master
1 unresolved thread
Files
2
+ 35
106
@@ -76,40 +76,39 @@ namespace {
xml_comp_t c( i );
std::string n = c.nameStr();
if ( n == "Build_Sides" )
m_build_sides = c.attr<bool>( _U( value ) );
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 +127,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 );
@@ -390,93 +387,25 @@ 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(
lvonechip, dd4hep::Transform3D( RotationZYX( M_PI, 0, 0 ),
dd4hep::Position( _toDouble( "SetMGpvChipA9X" ), _toDouble( "SetMGpvChipA9Y" ),
_toDouble( "UPSensorSiZ" ) ) ) );
pv->SetName( "pvChipA9" );
pv.addPhysVolID( "chip", 8 );
deSector = de_onesector.clone( "chip08", 8 );
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 );
// Loop through chips
for ( int i = 1; i < 11; i++ ) {
if ( i % 2 == 0 ) {
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%dX" ).c_str() ),
_toDouble( _toString( i, "SetMGpvChipA%dY" ).c_str() ),
_toDouble( "UPSensorSiZ" ) ) ) );
}
pv->SetName( _toString( i, "pvChipA%d" ).c_str() );
pv.addPhysVolID( "chip", i - 1 );
deSector = de_onesector.clone( _toString( i - 1, "chip%d" ), 0 );
deSector.setPlacement( pv );
deGroup.add( deSector );
}
lvModule = volume( "lvPixelModuleG" );
pv = lvModule.placeVolume( lvGroup, Position( 0, _toDouble( "UPPixelYELL" ), _toDouble( "UPPixelZ" ) ) );
Loading