Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • athena athena
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Jira
    • Jira
  • Merge requests 140
    • Merge requests 140
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Repository
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • atlasatlas
  • athenaathena
  • Merge requests
  • !61104

Fix TileHitVecToCntTool (and LArPileUpTool) for AthenaMT pile-up digitization

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged John Derek Chapman requested to merge jchapman/athena:ATLASSIM-6382_main into master Feb 28, 2023
  • Overview 3
  • Commits 2
  • Pipelines 1
  • Changes 7

Currently IPileUpTool implementations can be called using ReadHandleKeys to read containers from a single StoreGateSvc instance (for Overlay and digitization without pile-up) and using just the container name to access multiple instances of each input container from multiple random StoreGateSvc instance (for pile-up digitization).
When pile-up digitization is run in AthenaMT, the tools are cloned per thread, as they are not currently reentrant.
It looks like the cloning procedure is as follows:

  1. create a new default tool instance
  2. take the set of property names to override from their defaults from the configuration
  3. obtain the property value from the initialized tool (not necessarily the values set the configuration)
  4. use those to set the properties of the cloned tool.

This works if the values of properties are not updated during initialize(), but calls of the form ReadHandleKeyArrayProperty.initialize(false) call violate this, by clearing the contents of the ReadHandleKeyArrayProperty instance.

This merge request works around the issue for TileHitVecToCntTool by using a regular StringArrayProperty for the input container names and using that to populate a ReadHandleKeyArray member variable during initialize(). This should mean that the data dependencies of the PileUpTools are correctly determined still.

LArPileUpTool does not show the issue as the ReadHandleKeyArray properties are not set in the configuration (this seems to be sufficient to avoid it), but have made the same C++ changes for robustness.

This addresses ATLASSIM-6382.

Tagging @harkusha and @tadej.

Edited Mar 01, 2023 by John Derek Chapman
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: ATLASSIM-6382_main