ATLAS Offline Software
Loading...
Searching...
No Matches
HION7.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2# HION7.py
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import MetadataCategory
7from AthenaCommon.CFElements import seqAND
8
9
12
13 """Configure the physics augmentation for HION7"""
14 acc = ComponentAccumulator()
15
16 # MC truth
17 if flags.Input.isMC or flags.Overlay.DataOverlay:
18 from DerivationFrameworkMCTruth.MCTruthCommonConfig import (
19 AddStandardTruthContentsCfg,
20 AddHFAndDownstreamParticlesCfg,
21 AddMiniTruthCollectionLinksCfg,
22 AddPVCollectionCfg,
23 TruthClassificationAugmentationsCfg)
24 acc.merge(TruthClassificationAugmentationsCfg(flags))
25 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import DFCommonTruthCharmToolCfg
26 PhysCommonTruthCharmTool = acc.getPrimaryAndMerge(DFCommonTruthCharmToolCfg(
27 flags,
28 name = "PhysCommonTruthCharmTool"))
29 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
30 acc.addEventAlgo(CommonAugmentation("PhysCommonTruthCharmKernel",AugmentationTools=[PhysCommonTruthCharmTool]))
31 acc.merge(AddHFAndDownstreamParticlesCfg(flags))
32 acc.merge(AddStandardTruthContentsCfg(
33 flags,
34 navInputCollections =["TruthElectrons",
35 "TruthMuons",
36 "TruthPhotons",
37 "TruthTaus",
38 "TruthNeutrinos",
39 "TruthBSM",
40 "TruthBottom",
41 "TruthTop",
42 "TruthBoson",
43 "TruthCharm",
44 "TruthHFWithDecayParticles"]))
45 # Re-point links on reco objects
46 acc.merge(AddMiniTruthCollectionLinksCfg(flags))
47 acc.merge(AddPVCollectionCfg(flags))
48 # InDet, Muon, Egamma common augmentations
49 from DerivationFrameworkInDet.InDetCommonConfig import InDetCommonCfg
50 from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
51 from DerivationFrameworkEGamma.EGammaCommonConfig import EGammaCommonCfg
52 acc.merge(InDetCommonCfg(flags,
53 DoVertexFinding = flags.Tracking.doVertexFinding,
54 AddPseudoTracks = flags.Tracking.doPseudoTracking,
55 DecoLRTTTVA = False,
56 DoR3LargeD0 = flags.Tracking.doLargeD0,
57 StoreSeparateLargeD0Container = flags.Tracking.storeSeparateLargeD0Container,
58 MergeLRT = False))
59 acc.merge(MuonsCommonCfg(flags))
60 acc.merge(EGammaCommonCfg(flags))
61
62 return acc
63
64def getDFJets(flags):
65 """ Create updated version of AntiKt*HIJets"""
66 acc = ComponentAccumulator()
67
68 JetColl = flags.HeavyIon.HIJetPrefix
69 from HIJetRec.HIJetRecConfigCA import HIJetRecCfg
70 acc.merge(HIJetRecCfg(flags))
71 if flags.HeavyIon.doHIBTagging:
72 from BTagging.FlavorTaggingConfig import FlavorTaggingCfg
73 acc.merge(FlavorTaggingCfg(flags, JetColl+"AntiKt4HIJets"))
74 from BTagging.TrackLeptonConfig import TrackLeptonDecorationCfg
75 acc.merge(TrackLeptonDecorationCfg(flags))
76
77 return acc
78
79
80
82def HION7SkimmingToolCfg(flags, format="HION7"):
83 """Configure the example skimming tool"""
84 acc = ComponentAccumulator()
85 JetColl = flags.HeavyIon.HIJetPrefix
86 ExtraData = []
87 ExtraData += ['xAOD::JetContainer/'+JetColl+'AntiKt2HIJets']
88 ExtraData += ['xAOD::JetContainer/'+JetColl+'AntiKt4HIJets']
89
90 acc.addSequence( seqAND(format+"Sequence") )
91 acc.getSequence(format+"Sequence").ExtraDataForDynamicConsumers = ExtraData
92 acc.getSequence(format+"Sequence").ProcessDynamicDataDependencies = True
93
94 #Trigger selection
95 filterList = []
96 from DerivationFrameworkHI import ListTriggers
97 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import xAODStringSkimmingToolCfg
98 from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
99 info=getTypeForRun(flags.Input.RunNumbers[0])
100 isSmallSystem = False
101 if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
102 isSmallSystem = True
103
104
105 if not flags.Input.isMC and not flags.Overlay.DataOverlay:
106 print('project: ', flags.Input.ProjectName,
107 ', isSmallSystem: ', isSmallSystem)
108 TriggerDict = ListTriggers.GetTriggers(flags.Input.ProjectName, isSmallSystem)
109 for key in TriggerDict:
110 filterList_trig = []
111 expression = (
112 'count('+JetColl+'AntiKt4HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 || ' +
113 'count('+JetColl+'AntiKt2HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 ')
114
115 StringSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
116 xAODStringSkimmingToolCfg(
117 flags, name = format+"StringSkimmingTool_"+key,
118 expression = expression)), primary = True)
119 filterList_trig += [StringSkimmingTool]
120
121 TriggerSkimmingTool = (
122 CompFactory.DerivationFramework.TriggerSkimmingTool(
123 name = format+"TriggerSkimmingTool_"+key,
124 TriggerListOR = [key]))
125 acc.addPublicTool(TriggerSkimmingTool)
126 filterList_trig += [TriggerSkimmingTool]
127
128 SkimmingTool_trig = (
129 CompFactory.DerivationFramework.FilterCombinationAND(
130 name=format+"SkimmingTool_trig_"+key,
131 FilterList=filterList_trig))
132 acc.addPublicTool(SkimmingTool_trig)
133 filterList += [SkimmingTool_trig]
134
135 else:
136 expression = ('count('+JetColl+'AntiKt2HIJets.pt > 15000) > 1 || ' +
137 'count('+JetColl+'AntiKt4HIJets.pt > 15000) > 1')
138 StringSkimmingTool = acc.addPublicTool(acc.getPrimaryAndMerge(
139 xAODStringSkimmingToolCfg(flags, name = format+"StringSkimmingTool",
140 expression = expression)), primary = True)
141 filterList += [StringSkimmingTool]
142
143 SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
144 name=format+"SkimmingTool", FilterList=filterList)
145 acc.addPublicTool(SkimmingTool, primary = True)
146
147 return(acc)
148
150 """Configure the example augmentation tool"""
151 acc = ComponentAccumulator()
152
153 # Configure the augmentation tool
154 # This adds FCalEtA, FCalEtC, ...
155 doTopoClus = True
156 caloClusterKey = "CaloCalTopoClusters"
157 from AthenaConfiguration.Enums import HIMode
158 if flags.Reco.HIMode == HIMode.HI:
159 doTopoClus = False
160 caloClusterKey = ""
161
162 augmentation_tool = CompFactory.DerivationFramework.HIGlobalAugmentationTool(name="HION7AugmentationTool",
163 nHarmonic=5, # to capture higher-order harmonics for anisotropic flow
164 doTopoClusDec = doTopoClus,
165 CaloClusterKey = caloClusterKey
166 )
167 acc.addPublicTool(augmentation_tool, primary=True)
168
169 return acc
170
171
173 """Configure the example augmentation tool"""
174 acc = ComponentAccumulator()
175
176 # Configure the augmentation tool
177 # This adds FCalEtA, FCalEtC, ...
178 jvtTool = CompFactory.JetVertexTaggerTool(name="JVTToolEMTopo",
179 JetContainer="AntiKt4EMTopoJets")
180
181
182 augmentation_tool = CompFactory.DerivationFramework.HIJetAugmentationTool(name="HION7JetAugmentationTool",
183 DeltaRJetMatching = 0.3,
184 HIJetContainerKey="DFAntiKt4HIJets",
185 CaloJetContainerKey = "AntiKt4EMTopoJets",
186 JVTToolEMTopo = jvtTool
187 )
188 acc.addPublicTool(jvtTool)
189 acc.addPublicTool(augmentation_tool, primary=True)
190
191 return acc
192
193
194
195
196def HION7KernelCfg(flags, name='HION7Kernel', **kwargs):
197 """Configure the derivation framework driving algorithm (kernel)"""
198 acc = ComponentAccumulator()
199
200 acc.merge(PhysAugmentationsHION7Cfg(flags))
201 acc.merge(getDFJets(flags))
202
204 from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
205 info=getTypeForRun(flags.Input.RunNumbers[0])
206 isSmallSystem = False
207 if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
208 isSmallSystem = True
209 pTCut = 20
210 if isSmallSystem:
211 pTCut = 15
212
213 JetColl = flags.HeavyIon.HIJetPrefix
214
215 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg,JetTrackParticleThinningCfg
216
217 minTrackPt = flags.HeavyIon.MinTrackPt
218 track_thinning_expression = "InDetTrackParticles.pt > "+str(minTrackPt)+"*GeV"
219 TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
220 flags,
221 name = "PHYSTrackParticleThinningTool",
222 StreamName = kwargs['StreamName'],
223 SelectionString = track_thinning_expression,
224 InDetTrackParticlesKey = "InDetTrackParticles"))
225
226 AntiKt2HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
227 flags,
228 name = "AntiKt2HIJetsThinningTool",
229 StreamName = kwargs['StreamName'],
230 JetKey = JetColl+"AntiKt2HIJets",
231 SelectionString = JetColl+"AntiKt2HIJets.pt > "+ str(pTCut) +"*GeV",
232 InDetTrackParticlesKey = "InDetTrackParticles"))
233
234 AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
235 flags,
236 name = "AntiKt4HIJetsThinningTool",
237 StreamName = kwargs['StreamName'],
238 JetKey = JetColl+"AntiKt4HIJets",
239 SelectionString = JetColl+"AntiKt4HIJets.pt > "+ str(pTCut) +"*GeV",
240 InDetTrackParticlesKey = "InDetTrackParticles"))
241
242 thinningTools = [TrackParticleThinningTool,
243 AntiKt2HIJetsThinningTool,
244 AntiKt4HIJetsThinningTool]
245 if flags.Input.isMC or flags.Overlay.DataOverlay:
246 from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import GenericTruthThinningCfg
247 truth_thinning_expression = "(TruthParticles.status==1) && (TruthParticles.pt > "+str(minTrackPt-0.2)+"*GeV) && (abs(TruthParticles.eta) < 2.7)"
248 TruthParticleThinningTool = acc.getPrimaryAndMerge(GenericTruthThinningCfg(flags,
249 name="TruthParticleThinningTool",
250 StreamName=kwargs['StreamName'],
251 ParticleSelectionString = truth_thinning_expression
252 )
253 )
254 thinningTools += [TruthParticleThinningTool]
255
256
257 skimmingTool = acc.getPrimaryAndMerge(HION7SkimmingToolCfg(flags))
258 globalAugmentationTool = acc.getPrimaryAndMerge(HION7GlobalAugmentationToolCfg(flags))
259 augmentationTool=[globalAugmentationTool]
260 from AthenaConfiguration.Enums import HIMode
261 if flags.Reco.HIMode != HIMode.HI:
262 jetAugmentationTool = acc.getPrimaryAndMerge(HION7JetAugmentationToolCfg(flags))
263 augmentationTool=[globalAugmentationTool,jetAugmentationTool]
264
265 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,ThinningTools = thinningTools, SkimmingTools = [skimmingTool], AugmentationTools=augmentationTool),sequenceName="HION7Sequence")
266
267 return acc
268
269
270def HION7Cfg(flags):
271
272 acc = ComponentAccumulator()
273
274 JetColl = flags.HeavyIon.HIJetPrefix
275
276 acc.merge(HION7KernelCfg(flags, name="HION7Kernel",StreamName = "StreamDAOD_HION7"))
277
278 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
279 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
280 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
281 from DerivationFrameworkHI import ListSlimming
282
283
285 HION7SlimmingHelper = SlimmingHelper("HION7SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
286 HION7SlimmingHelper.SmartCollections = ListSlimming.HION7SmartCollections()
287 AllVars = ListSlimming.HION7AllVarContent()
288 AllVars += ListSlimming.HION7ExtraContainersTrigger()
289 ExtraVars = ListSlimming.HION7BasicJetVars(JetColl)
290 from DerivationFrameworkFlavourTag import FtagBaseContent
291 if flags.Input.isMC:
292 AllVars += ListSlimming.HION7AllVarTruthContent()
293 if flags.HeavyIon.doHIBTagging:
294 FtagBaseContent.add_truth_to_SlimmingHelper(HION7SlimmingHelper)
295 if flags.HeavyIon.doHIBTagging:
296 from DerivationFrameworkFlavourTag.FtagBaseContent import addCommonAugmentation
297 addCommonAugmentation(flags, acc, HION7SlimmingHelper, JetColl+"AntiKt4HIJets")
298 AllVars += ListSlimming.HION7AllVarFromFTAG1()
299 # update AppendToDictionary
300 extra_AppendToDictionary = {}
301 FtagBaseContent.update_AppendToDictionary_in_SlimmingHelper(HION7SlimmingHelper, flags, extra_AppendToDictionary)
302 # Add ExtraVariables
303 ExtraVars += ListSlimming.HION7ExtraVarForBtag(JetColl)
304 FtagBaseContent.add_ExtraVariables_to_SlimmingHelper(HION7SlimmingHelper, flags)
305
306 HION7SlimmingHelper.ExtraVariables = ExtraVars
307 HION7SlimmingHelper.AllVariables = AllVars
308
309 HION7ItemList = HION7SlimmingHelper.GetItemList()
310 HIJetRemovedBranches=ListSlimming.makeHIJetRemovedBranchList()
311 jet_var_str = '.-'.join ([''] + HIJetRemovedBranches)
312 jetRlist = flags.HeavyIon.Jet.RValues #Default [0.2,0.4]
313 for jetR in jetRlist:
314 output = ["xAOD::JetContainer#"+JetColl+"AntiKt"+str(jetR)+"HIJets",
315 "xAOD::JetAuxContainer#"+JetColl+"AntiKt"+str(jetR)+"HIJetsAux.-PseudoJet"+jet_var_str]
316 HION7ItemList += output
317
318 acc.merge(OutputStreamCfg(flags, "DAOD_HION7", ItemList=HION7ItemList, AcceptAlgs=["HION7Kernel"]))
319 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION7", AcceptAlgs=["HION7Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
320
321 return acc
void print(char *figname, TCanvas *c1)
HION7JetAugmentationToolCfg(flags)
Definition HION7.py:172
getDFJets(flags)
Definition HION7.py:64
HION7GlobalAugmentationToolCfg(flags)
Definition HION7.py:149
HION7SkimmingToolCfg(flags, format="HION7")
Skiming.
Definition HION7.py:82
PhysAugmentationsHION7Cfg(flags)
in place of common PhysCommonAugmentations:
Definition HION7.py:11
HION7Cfg(flags)
Definition HION7.py:270
HION7KernelCfg(flags, name='HION7Kernel', **kwargs)
Definition HION7.py:196