Skip to content
Snippets Groups Projects

Fix UT geometry and tracking

Merged Hangyi Wu requested to merge ut-geo-fixes into master
3 files
+ 175
123
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -71,7 +71,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
bool allChecksOK{true};
std::map<std::string, ROOT::Math::XYZPoint> stave_positions{
{"UTCsideUTaUStave1", ROOT::Math::XYZPoint{-47.0, 0.0, 2365}},
{"UTCsideUTaUStave1", ROOT::Math::XYZPoint{-47.0, 4.096, 2365}},
{"UTCsideUTaUStave2", ROOT::Math::XYZPoint{-143.3, 0.0, 2380}},
{"UTCsideUTaUStave3", ROOT::Math::XYZPoint{-237.6, 0.0, 2365}},
{"UTCsideUTaUStave4", ROOT::Math::XYZPoint{-335.2, 0.0, 2380}},
@@ -79,7 +79,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
{"UTCsideUTaUStave6", ROOT::Math::XYZPoint{-527.1, 0.0, 2380}},
{"UTCsideUTaUStave7", ROOT::Math::XYZPoint{-619.2, 0.0, 2365}},
{"UTCsideUTaUStave8", ROOT::Math::XYZPoint{-719.0, 0.0, 2380}},
{"UTAsideUTaUStave1", ROOT::Math::XYZPoint{47.0, 0.0, 2380}},
{"UTAsideUTaUStave1", ROOT::Math::XYZPoint{47.0, -4.096, 2380}},
{"UTAsideUTaUStave2", ROOT::Math::XYZPoint{142.1, 0.0, 2365}},
{"UTAsideUTaUStave3", ROOT::Math::XYZPoint{239, 0.0, 2380}},
{"UTAsideUTaUStave4", ROOT::Math::XYZPoint{332.9, 0.0, 2365}},
@@ -103,7 +103,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
{"UTAsideUTaXStave6", ROOT::Math::XYZPoint{523.8, 0.0, 2310}},
{"UTAsideUTaXStave7", ROOT::Math::XYZPoint{623.2, 0.0, 2325}},
{"UTAsideUTaXStave8", ROOT::Math::XYZPoint{714.6, 0.0, 2310}},
{"UTCsideUTbVStave1", ROOT::Math::XYZPoint{-47, 0.0, 2590}},
{"UTCsideUTbVStave1", ROOT::Math::XYZPoint{-47, -4.096, 2590}},
{"UTCsideUTbVStave2", ROOT::Math::XYZPoint{-143.3, 0.0, 2605}},
{"UTCsideUTbVStave3", ROOT::Math::XYZPoint{-237.9, 0.0, 2590}},
{"UTCsideUTbVStave4", ROOT::Math::XYZPoint{-335.2, 0.0, 2605}},
@@ -112,7 +112,7 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
{"UTCsideUTbVStave7", ROOT::Math::XYZPoint{-619.6, 0.0, 2590}},
{"UTCsideUTbVStave8", ROOT::Math::XYZPoint{-719.2, 0.0, 2605}},
{"UTCsideUTbVStave9", ROOT::Math::XYZPoint{-810.5, 0.0, 2590}},
{"UTAsideUTbVStave1", ROOT::Math::XYZPoint{47, 0.0, 2605}},
{"UTAsideUTbVStave1", ROOT::Math::XYZPoint{47, 4.096, 2605}},
{"UTAsideUTbVStave2", ROOT::Math::XYZPoint{142.3, 0.0, 2590}},
{"UTAsideUTbVStave3", ROOT::Math::XYZPoint{239, 0.0, 2605}},
{"UTAsideUTbVStave4", ROOT::Math::XYZPoint{333, 0.0, 2590}},
@@ -139,17 +139,55 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
{"UTAsideUTbXStave7", ROOT::Math::XYZPoint{623, 0.0, 2660}},
{"UTAsideUTbXStave8", ROOT::Math::XYZPoint{714.9, 0.0, 2645}},
{"UTAsideUTbXStave9", ROOT::Math::XYZPoint{814.9, 0.0, 2660}}};
std::map<std::string, std::string> stave_names{
{"UTCsideUTaXStave1", "UTaXLayerR2Stave2"}, {"UTCsideUTaXStave2", "UTaXLayerR2Stave1"},
{"UTCsideUTaXStave3", "UTaXLayerR1Stave7"}, {"UTCsideUTaXStave4", "UTaXLayerR1Stave6"},
{"UTCsideUTaXStave5", "UTaXLayerR1Stave5"}, {"UTCsideUTaXStave6", "UTaXLayerR1Stave4"},
{"UTCsideUTaXStave7", "UTaXLayerR1Stave3"}, {"UTCsideUTaXStave8", "UTaXLayerR1Stave2"},
{"UTCsideUTaUStave1", "UTaULayerR2Stave2"}, {"UTCsideUTaUStave2", "UTaULayerR2Stave1"},
{"UTCsideUTaUStave3", "UTaULayerR1Stave7"}, {"UTCsideUTaUStave4", "UTaULayerR1Stave6"},
{"UTCsideUTaUStave5", "UTaULayerR1Stave5"}, {"UTCsideUTaUStave6", "UTaULayerR1Stave4"},
{"UTCsideUTaUStave7", "UTaULayerR1Stave3"}, {"UTCsideUTaUStave8", "UTaULayerR1Stave2"},
{"UTCsideUTbVStave1", "UTbVLayerR2Stave2"}, {"UTCsideUTbVStave2", "UTbVLayerR2Stave1"},
{"UTCsideUTbVStave3", "UTbVLayerR1Stave7"}, {"UTCsideUTbVStave4", "UTbVLayerR1Stave6"},
{"UTCsideUTbVStave5", "UTbVLayerR1Stave5"}, {"UTCsideUTbVStave6", "UTbVLayerR1Stave4"},
{"UTCsideUTbVStave7", "UTbVLayerR1Stave3"}, {"UTCsideUTbVStave8", "UTbVLayerR1Stave2"},
{"UTCsideUTbVStave9", "UTbVLayerR1Stave1"}, {"UTCsideUTbXStave1", "UTbXLayerR2Stave2"},
{"UTCsideUTbXStave2", "UTbXLayerR2Stave1"}, {"UTCsideUTbXStave3", "UTbXLayerR1Stave7"},
{"UTCsideUTbXStave4", "UTbXLayerR1Stave6"}, {"UTCsideUTbXStave5", "UTbXLayerR1Stave5"},
{"UTCsideUTbXStave6", "UTbXLayerR1Stave4"}, {"UTCsideUTbXStave7", "UTbXLayerR1Stave3"},
{"UTCsideUTbXStave8", "UTbXLayerR1Stave2"}, {"UTCsideUTbXStave9", "UTbXLayerR1Stave1"},
{"UTAsideUTaXStave1", "UTaXLayerR2Stave3"}, {"UTAsideUTaXStave2", "UTaXLayerR2Stave4"},
{"UTAsideUTaXStave3", "UTaXLayerR3Stave1"}, {"UTAsideUTaXStave4", "UTaXLayerR3Stave2"},
{"UTAsideUTaXStave5", "UTaXLayerR3Stave3"}, {"UTAsideUTaXStave6", "UTaXLayerR3Stave4"},
{"UTAsideUTaXStave7", "UTaXLayerR3Stave5"}, {"UTAsideUTaXStave8", "UTaXLayerR3Stave6"},
{"UTAsideUTaUStave1", "UTaULayerR2Stave3"}, {"UTAsideUTaUStave2", "UTaULayerR2Stave4"},
{"UTAsideUTaUStave3", "UTaULayerR3Stave1"}, {"UTAsideUTaUStave4", "UTaULayerR3Stave2"},
{"UTAsideUTaUStave5", "UTaULayerR3Stave3"}, {"UTAsideUTaUStave6", "UTaULayerR3Stave4"},
{"UTAsideUTaUStave7", "UTaULayerR3Stave5"}, {"UTAsideUTaUStave8", "UTaULayerR3Stave6"},
{"UTAsideUTbVStave1", "UTbVLayerR2Stave3"}, {"UTAsideUTbVStave2", "UTbVLayerR2Stave4"},
{"UTAsideUTbVStave3", "UTbVLayerR3Stave1"}, {"UTAsideUTbVStave4", "UTbVLayerR3Stave2"},
{"UTAsideUTbVStave5", "UTbVLayerR3Stave3"}, {"UTAsideUTbVStave6", "UTbVLayerR3Stave4"},
{"UTAsideUTbVStave7", "UTbVLayerR3Stave5"}, {"UTAsideUTbVStave8", "UTbVLayerR3Stave6"},
{"UTAsideUTbVStave9", "UTbVLayerR3Stave7"}, {"UTAsideUTbXStave1", "UTbXLayerR2Stave3"},
{"UTAsideUTbXStave2", "UTbXLayerR2Stave4"}, {"UTAsideUTbXStave3", "UTbXLayerR3Stave1"},
{"UTAsideUTbXStave4", "UTbXLayerR3Stave2"}, {"UTAsideUTbXStave5", "UTbXLayerR3Stave3"},
{"UTAsideUTbXStave6", "UTbXLayerR3Stave4"}, {"UTAsideUTbXStave7", "UTbXLayerR3Stave5"},
{"UTAsideUTbXStave8", "UTbXLayerR3Stave6"}, {"UTAsideUTbXStave9", "UTbXLayerR3Stave7"}};
for ( const auto& side : ut.sides() )
for ( const auto& layer : side.layers() )
for ( const auto& stave : layer.staves() ) {
ROOT::Math::XYZPoint stavePos = stave.toGlobal( ROOT::Math::XYZPoint{0.0, 0.0, 0.0} );
ROOT::Math::XYZPoint staveTruePos = stave_positions[stave.nickname()];
auto diff = staveTruePos - stavePos;
if ( diff.r() > 1e-5 ) {
if ( diff.r() > 1e-3 ) {
allChecksOK = false;
dd4hep::printout(
dd4hep::WARNING, "UT",
fmt::format( "{stavePath} Pos: {x:>6.1f} {y:>4.1f} {z:>6.1f}, True: {x_true:>6.1f} {y_true:>4.1f} "
"{z_true:>6.1f}, Diff: {x_diff:>6.1f} {y_diff:>4.1f} {z_diff:>6.1f}",
"{z_true:>6.1f}, Diff: {x_diff:>6.4f} {y_diff:>4.4f} {z_diff:>6.4f}",
fmt::arg( "stavePath", stave.nickname() ), fmt::arg( "x", stavePos.x() ),
fmt::arg( "y", stavePos.y() ), fmt::arg( "z", stavePos.z() ),
fmt::arg( "x_true", staveTruePos.x() ), fmt::arg( "y_true", staveTruePos.y() ),
@@ -158,6 +196,18 @@ static long test_ut_stave_positions( dd4hep::Detector& description, int argc, ch
}
}
for ( const auto& side : ut.sides() )
for ( const auto& layer : side.layers() )
for ( const auto& stave : layer.staves() ) {
if ( stave.nicknameOld() != stave_names[stave.nickname()] ) {
allChecksOK = false;
dd4hep::printout( dd4hep::WARNING, "UT",
fmt::format( "Stave old nickname {stavePathOld}, expected {stavePathOldTrue}",
fmt::arg( "stavePathOld", stave.nicknameOld() ),
fmt::arg( "stavePathOldTrue", stave_names[stave.nickname()] ) ) );
}
}
// Finalizing the service and returning
dds.finalize();
Loading