Skip to content

CaloEvent+CaloRec+CaloUtils+LArRecUtils: Faster variant of addUniqueCellNoKine.

Scott Snyder requested to merge ssnyder/athena:cellEL.CaloEvent-20201204 into master

The method addUniqueCellNoKine is used to add a cell to a cluster. Under the hood, it creates and ElementLink to push onto a list. We supported passing in either a pointer to the cell container or its SG key. In either case, to make an EL, we need to do a SG lookup to find the proxy. This requires taking out a lock on the store. This happens for every cell, and in some workloads, we were seeing significant lock contention due to this.

Add another variant of addUniqueCellNoKine that accepts an ElementLink to identify the cell container. (In principle, a DataLink might make more sense, but we can already create an ElementLink directly from another ElementLink, but not from a DataLink.) This allows us to then create the per-cell ElementLinks with no interaction with SG (or with thread-local storage).

Use it for tower building.

Merge request reports