ATLAS Offline Software
HIONHPOD.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 #====================================================================
3 # HIONHPOD.py
4 # author: Mariana Vivas <mariana.vivas.albornoz@cern.ch>
5 # Application: Open Data
6 #====================================================================
7 
8 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9 from AthenaConfiguration.ComponentFactory import CompFactory
10 from AthenaConfiguration.Enums import MetadataCategory
11 
13  """Global augmentation for track-based and calorimeter-based event-level information: Track multiplicity,
14  calorimeter energy sums and flow vectors"""
15  acc = ComponentAccumulator()
16 
17  # Configure the augmentation tool
18  augmentation_tool = CompFactory.DerivationFramework.HIGlobalAugmentationTool(name = "HIONHPODAugmentationTool",
19  nHarmonic = 5) # to capture higher-order harmonics for anisotropic flow
20  acc.addPublicTool(augmentation_tool, primary=True)
21 
22  return acc
23 
25  """Centrality augmentation: attaches centrality percentile boundaries to each event based on the measured FCal energy"""
26  acc = ComponentAccumulator()
27 
28  # Configure centrality tool
29  HICentralityDecorator = CompFactory.DerivationFramework.HICentralityDecorationTool(name="HIONHPODCentralityTool")
30 
31  # Add centrality tools to the ComponentAccumulator
32  acc.addPublicTool(HICentralityDecorator, primary=True)
33 
34  return acc
35 
36 def HIONHPODKernelCfg(flags, name='HIONHPODKernel', **kwargs):
37  """Configure the derivation framework driving algorithm (kernel)"""
38  acc = ComponentAccumulator()
39 
40  from DerivationFrameworkInDet.InDetToolsConfig import JetTrackParticleThinningCfg
41 
42  # Initialize a list for all the different type of tools
43  thinningTool = []
44  augmentationTool = []
45 
46  # AntiKt4HI jets thinning
47  AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(flags,
48  name = "AntiKt4HIJetsThinningTool",
49  StreamName = kwargs['StreamName'],
50  JetKey = "AntiKt4HIJets",
51  InDetTrackParticlesKey = "InDetTrackParticles"))
52 
53  acc.addPublicTool(AntiKt4HIJetsThinningTool)
54  thinningTool += [AntiKt4HIJetsThinningTool]
55 
56  # Muon thinning
57  muonThinningTool = CompFactory.DerivationFramework.MuonTrackParticleThinning(name = "HIONHPODMuonThinningTool",
58  MuonKey = "Muons",
59  InDetTrackParticlesKey = "InDetTrackParticles")
60 
61  acc.addPublicTool(muonThinningTool)
62  thinningTool += [muonThinningTool]
63 
64  # Merge the augmentation tools to the ComponetAccumlator
65  globalAugmentationTool = acc.getPrimaryAndMerge(HIONHPODGlobalAugmentationToolCfg(flags))
66  augmentationTool += [globalAugmentationTool]
67 
68  centralityAugmentatioTool = acc.getPrimaryAndMerge(HIONHPODCentralityAugmentationToolCfg(flags))
69  augmentationTool += [centralityAugmentatioTool]
70 
71  DerivationKernel = CompFactory.DerivationFramework.DerivationKernel
72  acc.addEventAlgo(DerivationKernel(name,
73  ThinningTools=thinningTool,
74  AugmentationTools=augmentationTool
75  ),
76  )
77 
78  return acc
79 
80 def HIONHPODCfg(flags):
81  acc = ComponentAccumulator()
82  acc.merge(HIONHPODKernelCfg(flags, name="HIONHPODKernel", StreamName="StreamDAOD_HIONHPOD"))
83 
84  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
85  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
86 
87 
88  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
89  HIONHPODSlimmingHelper = SlimmingHelper("HIONHPODSlimmingHelper", NamesAndTypes=flags.Input.TypedCollections, flags=flags)
90 
91  from DerivationFrameworkHI import ListSlimming
92  # Only smart collection variables for electrons, muons and photons
93  HIONHPODSlimmingHelper.SmartCollections = ListSlimming.HIONHPODSmartCollections()
94  # And all the variables for AntiKt4HIJets, CaloSums and EventInfo
95  HIONHPODSlimmingHelper.AllVariables = ["AntiKt4HIJets",
96  "CaloSums",
97  "EventInfo"]
98 
99  # Add truth information to Monte Carlo samples
100  if flags.Input.isMC:
101  from SGComps.AddressRemappingConfig import AddressRemappingCfg
102  from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddStandardTruthContentsCfg
103 
104  # Define required container names as encoded bytes
105  required_containers = { "AntiKt10TruthJets".encode("utf-8"), "AntiKt10TruthJetsAux".encode("utf-8") }
106 
107  # No need to decode the collections as they are all bytes
108  inputCollections = set(flags.Input.Collections)
109 
110  if inputCollections.intersection(required_containers):
111  rename_maps = ['%s#%s->%s' % ("xAOD::JetContainer", "AntiKt10TruthJets", "old_AntiKt10TruthJets"),
112  '%s#%s->%s' % ("xAOD::JetAuxContainer", "AntiKt10TruthJetsAux.", "old_AntiKt10TruthJetsAux.")
113  ]
114  acc.merge(AddressRemappingCfg(rename_maps))
115 
116  acc.merge(AddStandardTruthContentsCfg(flags))
117 
118  HIONHPODSlimmingHelper.AppendToDictionary = {'EventInfo':'xAOD::EventInfo','EventInfoAux':'xAOD::EventAuxInfo',
119  'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer',
120  'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer',
121  'TruthLHEParticles':'xAOD::TruthParticleContainer', 'TruthLHEParticlesAux':'xAOD::TruthParticleAuxContainer',
122  'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
123  'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
124  'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
125  'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer',
126  'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
127  'TruthBSM':'xAOD::TruthParticleContainer','TruthBSMAux':'xAOD::TruthParticleAuxContainer',
128  'TruthBoson':'xAOD::TruthParticleContainer','TruthBosonAux':'xAOD::TruthParticleAuxContainer',
129  'TruthBottom':'xAOD::TruthParticleContainer','TruthBottomAux':'xAOD::TruthParticleAuxContainer',
130  'TruthTop':'xAOD::TruthParticleContainer','TruthTopAux':'xAOD::TruthParticleAuxContainer',
131  'TruthForwardProtons':'xAOD::TruthParticleContainer','TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer',
132  'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
133  'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer','TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
134  'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer','TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
135  'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer','TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
136  'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer','TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
137  'AntiKt4TruthDressedWZJets':'xAOD::JetContainer','AntiKt4TruthDressedWZJetsAux':'xAOD::JetAuxContainer',
138  'AntiKt10TruthSoftDropBeta100Zcut10Jets':'xAOD::JetContainer','AntiKt10TruthSoftDropBeta100Zcut10JetsAux':'xAOD::JetAuxContainer'
139  }
140 
141  # Add standard content
142  from DerivationFrameworkMCTruth.MCTruthCommonConfig import addTruth3ContentToSlimmerTool
143  addTruth3ContentToSlimmerTool(HIONHPODSlimmingHelper)
144 
145  HIONHPODItemList = HIONHPODSlimmingHelper.GetItemList()
146 
147  acc.merge(OutputStreamCfg(flags, "DAOD_HIONHPOD", ItemList=HIONHPODItemList, AcceptAlgs=["HIONHPODKernel"]))
148  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HIONHPOD", AcceptAlgs=["HIONHPODKernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
149 
150  return acc
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=None, MetadataItemList=None, disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=None, HelperTools=None)
Definition: OutputStreamConfig.py:13
AddressRemappingConfig.AddressRemappingCfg
def AddressRemappingCfg(renameMaps=[], overwriteMaps=[])
Definition: AddressRemappingConfig.py:10
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.HIONHPOD.HIONHPODCentralityAugmentationToolCfg
def HIONHPODCentralityAugmentationToolCfg(flags)
Definition: HIONHPOD.py:24
AtlasMcWeight::encode
number_type encode(double weight)
Definition: AtlasMcWeight.cxx:65
python.HIONHPOD.HIONHPODKernelCfg
def HIONHPODKernelCfg(flags, name='HIONHPODKernel', **kwargs)
Definition: HIONHPOD.py:36
python.InDetToolsConfig.JetTrackParticleThinningCfg
def JetTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:632
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.MCTruthCommonConfig.AddStandardTruthContentsCfg
def AddStandardTruthContentsCfg(flags, decorationDressing='dressedPhoton', includeTausInDressingPhotonRemoval=False, navInputCollections=["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos", "TruthBSM", "TruthBottom", "TruthTop", "TruthBoson"], prefix='')
Definition: MCTruthCommonConfig.py:168
python.MCTruthCommonConfig.addTruth3ContentToSlimmerTool
def addTruth3ContentToSlimmerTool(slimmer)
Definition: MCTruthCommonConfig.py:469
python.HIONHPOD.HIONHPODGlobalAugmentationToolCfg
def HIONHPODGlobalAugmentationToolCfg(flags)
Definition: HIONHPOD.py:12
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION12.DerivationKernel
DerivationKernel
Definition: HION12.py:66
python.HIONHPOD.HIONHPODCfg
def HIONHPODCfg(flags)
Definition: HIONHPOD.py:80