Skip to content

Modify some methods of SiTrajectoryElement_xk class to use template

Modify some methods of SiTrajectoryElement_xk class to use template.

  • Implement template methods in the .icc file.
  • Move inline methods to the .icc files.
  • Use std::any to hold InDet::SiClusterCollection::const_iterator, InDet::PixelClusterCollection::const_iterator, InDet::SCT_ClusterCollection::const_iterator
  • Use std::is_same to determine the input type.
  • Update SiTrajectory_xk to PixelClusterContainer and SCT_ClusterContainer instead of SiClusterContainer.
  • Remove reinterpret_cast in SiCombinatorialTrackFinder_xk introduced by !24294 (merged)

The problem: The types of PixelClusters and SCT_Clusters are InDet::PixelClusterContainer and InDet::SCT_ClusterContainer, respectively. These containers are "symLink"ed to InDet::SiClusterContainer. In InDet::SiCombinatorialTrackFinder_xk, these containers are accessed as InDet::SiClusterContainer. This access was found to be time-consuming in Athena-MT. We should use directly access those containers as InDet::PixelClusterContainer and InDet::SCT_ClusterContainer. However, in SiTrajectoryElement_xk, InDet::SiClusterCollection::const_iterator is stored. To be able to hold InDet::PixelClusterCollection::const_iterator and InDet::SCT_ClusterCollection::const_iterator as well, std::any is used. Template methods were defined to use the same methods for different classes.

RunTier0Tests.py found differences in stau muons. RunTier0Tests.log I don't know why these modifications affect (only) stau muons. I will investigate the differences and their causes. --> I just compiled the same packages of master branch without any modifications and ran RunTier0Tests.py. I got the same stau muon differences. RunTier0Tests.log The differences should be unrelated to my modifications of this MR.

Tag @ssnyder and @amete

Edited by Susumu Oda

Merge request reports