JetHitAssociation: Allow for Phase-2 detector geometry
The "JetHitAssociation" tool encountered issues with missing containers when processing a run-4 dataset. This problem was resolved by updating the configuration of the "PrepDataToxAOD" algorithm and modifying the input container names for the "JetHitAssociation" tool based on the detector's geometry.
I am sharing this initial version of a MR in order to gather feedback, as this marks my first contribution to this framework.
Problem Description:
Our objective is to train a GNN based on ITk hit clusters for the baseline phase-2 geometry of the ATLAS detector. We are starting with simulated hits for single-lepton ttbar events. Ultimately, we aim to have an AOD file containing the hits (within a specific radius with respect to the jet axis). For Run-2/3, the hits can be saved after the reconstruction using the following command:
Reco_tf.py --preExec "flags.BTagging.Trackless = True; flags.BTagging.Trackless_dR=0.2; flags.BTagging.Trackless_JetPtMin=20'" …
This process works well with pre HL-LHC configurations. The container that should be present in the AOD after the reconstruction are
JetAssociatedPixelClusters
and JetAssociatedSCTClusters
,
which contain the ID and SCT hits (associated to the jet), respectively. However, this process no longer works when a Run-4 dataset is used, as the ID and SCT are replaced by the ITk (pixels and strips).
Proposed Solution:
At present, the modifications to the existing code are minimal and are intended to serve as a starting point for further suggestions and improvements.
In order to achieve the desired result (i.e., JetAssociatedPixel/SCTClusters being present in the AOD), the following two modifications are necessary to the jet-hit association configuration file [1]:
- Import the correct config of the inner detector depending on the detector geometry to configure the PrepDataToxAOD algorithm(s),
- Change input containers to the HitAssociation Algorithm (PixelClusters, SCT_Clusters or ITkStripClusters, ITkStripClusters).
I have tested the changes in this MR, and it produces the desired results (I also tested backwards compatibility using a run-3 dataset); however, further modifications are needed as leaving the names of the output containers unchanged introduces inconsistencies as, e.g., the SCT does not exist anymore in case of the phase 2 geometry – maybe it would be an idea to sacrifice the distinction of ID and SCT in favor of a generic Pixel and Strip dichotomy? Last but not least, I'm assume the modifications to the code may not align with the standard coding practices; I kindly request your feedback on this matter too.
[1] athena/PhysicsAnalysis/JetTagging/JetHitAssociation/python/JetHitAssociationConfig.py