ATLAS Offline Software
HION7.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2 # HION7.py
3 
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaConfiguration.Enums import MetadataCategory
7 from 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:
18  from DerivationFrameworkMCTruth.MCTruthCommonConfig import (
19  AddStandardTruthContentsCfg,
20  AddHFAndDownstreamParticlesCfg,
21  AddMiniTruthCollectionLinksCfg,
22  AddPVCollectionCfg)
23  from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import TruthCollectionMakerCfg
24  PhysCommonTruthCharmTool = acc.getPrimaryAndMerge(TruthCollectionMakerCfg(
25  flags,
26  name = "PhysCommonTruthCharmTool",
27  NewCollectionName = "TruthCharm",
28  KeepNavigationInfo = False,
29  ParticleSelectionString = "(abs(TruthParticles.pdgId) == 4)",
30  Do_Compress = True))
31  CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
32  acc.addEventAlgo(CommonAugmentation("PhysCommonTruthCharmKernel",AugmentationTools=[PhysCommonTruthCharmTool]))
33  acc.merge(AddHFAndDownstreamParticlesCfg(flags))
35  flags,
36  navInputCollections =["TruthElectrons",
37  "TruthMuons",
38  "TruthPhotons",
39  "TruthTaus",
40  "TruthNeutrinos",
41  "TruthBSM",
42  "TruthBottom",
43  "TruthTop",
44  "TruthBoson",
45  "TruthCharm",
46  "TruthHFWithDecayParticles"]))
47  # Re-point links on reco objects
48  acc.merge(AddMiniTruthCollectionLinksCfg(flags))
49  acc.merge(AddPVCollectionCfg(flags))
50  # InDet, Muon, Egamma common augmentations
51  from DerivationFrameworkInDet.InDetCommonConfig import InDetCommonCfg
52  from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
53  from DerivationFrameworkEGamma.EGammaCommonConfig import EGammaCommonCfg
54  acc.merge(InDetCommonCfg(flags,
55  DoVertexFinding = flags.Tracking.doVertexFinding,
56  AddPseudoTracks = flags.Tracking.doPseudoTracking,
57  DecoLRTTTVA = False,
58  DoR3LargeD0 = flags.Tracking.doLargeD0,
59  StoreSeparateLargeD0Container = flags.Tracking.storeSeparateLargeD0Container,
60  MergeLRT = False))
61  acc.merge(MuonsCommonCfg(flags))
62  acc.merge(EGammaCommonCfg(flags))
63 
64  return acc
65 
66 def getDFJets(flags):
67  """ Create updated version of AntiKt*HIJets"""
68  acc = ComponentAccumulator()
69 
70  JetColl = flags.HeavyIon.HIJetPrefix
71  from HIJetRec.HIJetRecConfigCA import HIJetRecCfg
72  acc.merge(HIJetRecCfg(flags))
73  if flags.HeavyIon.doHIBTagging:
74  from BTagging.FlavorTaggingConfig import FlavorTaggingCfg
75  acc.merge(FlavorTaggingCfg(flags, JetColl+"AntiKt4HIJets"))
76  from BTagging.TrackLeptonConfig import TrackLeptonDecorationCfg
77  acc.merge(TrackLeptonDecorationCfg(flags))
78 
79  return acc
80 
81 
82 
85  """Configure the example skimming tool"""
86  acc = ComponentAccumulator()
87  JetColl = flags.HeavyIon.HIJetPrefix
88  ExtraData = []
89  ExtraData += ['xAOD::JetContainer/'+JetColl+'AntiKt2HIJets']
90  ExtraData += ['xAOD::JetContainer/'+JetColl+'AntiKt4HIJets']
91 
92  acc.addSequence( seqAND("HION7Sequence") )
93  acc.getSequence("HION7Sequence").ExtraDataForDynamicConsumers = ExtraData
94  acc.getSequence("HION7Sequence").ProcessDynamicDataDependencies = True
95 
96  expression = ""
97  #Trigger selection
98  from DerivationFrameworkHI import ListTriggers
99  from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
100  info=getTypeForRun(flags.Input.RunNumbers[0])
101  isSmallSystem = False
102  if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
103  isSmallSystem = True
104  if not flags.Input.isMC:
105  print('project: ', flags.Input.ProjectName,', isSmallSystem: ', isSmallSystem)
106  TriggerDict = ListTriggers.GetTriggers(flags.Input.ProjectName, isSmallSystem)
107  for i, key in enumerate(TriggerDict):
108  expression = expression + '(' + key + ' && count('+JetColl+'AntiKt4HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 ) ' + '|| (' + key + ' && count('+JetColl+'AntiKt2HIJets.pt >' + str(TriggerDict[key]) + '*GeV) >=1 ) '
109  if not i == len(TriggerDict) - 1:
110  expression = expression + ' || '
111  else:
112  expression = expression + 'count('+JetColl+'AntiKt2HIJets.pt > 15000) > 1 || count('+JetColl+'AntiKt4HIJets.pt > 15000) > 1'
113 
114  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
115  tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
116  acc.addPublicTool(CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HION7StringSkimmingTool",
117  expression = expression,
118  TrigDecisionTool=tdt),
119  primary = True)
120 
121  return(acc)
122 
124  """Configure the example augmentation tool"""
125  acc = ComponentAccumulator()
126 
127  # Configure the augmentation tool
128  # This adds FCalEtA, FCalEtC, ...
129  doTopoClus = True
130  caloClusterKey = "CaloCalTopoClusters"
131  from AthenaConfiguration.Enums import HIMode
132  if flags.Reco.HIMode == HIMode.HI:
133  doTopoClus = False
134  caloClusterKey = ""
135 
136  augmentation_tool = CompFactory.DerivationFramework.HIGlobalAugmentationTool(name="HION7AugmentationTool",
137  nHarmonic=5, # to capture higher-order harmonics for anisotropic flow
138  doTopoClusDec = doTopoClus,
139  CaloClusterKey = caloClusterKey
140  )
141 
142  acc.addPublicTool(augmentation_tool, primary=True)
143 
144  return acc
145 
146 
147 def HION7KernelCfg(flags, name='HION7Kernel', **kwargs):
148  """Configure the derivation framework driving algorithm (kernel)"""
149  acc = ComponentAccumulator()
150 
151  acc.merge(PhysAugmentationsHION7Cfg(flags))
152 
154  from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
155  info=getTypeForRun(flags.Input.RunNumbers[0])
156  isSmallSystem = False
157  if (info.getBeam1Type() < 11) or (info.getBeam2Type() < 11):
158  isSmallSystem = True
159  pTCut = 20
160  if isSmallSystem:
161  pTCut = 15
162 
163  JetColl = flags.HeavyIon.HIJetPrefix
164 
165  from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg,JetTrackParticleThinningCfg
166 
167  minTrackPt = flags.HeavyIon.MinTrackPt
168  track_thinning_expression = "InDetTrackParticles.pt > "+str(minTrackPt)+"*GeV"
169  TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
170  flags,
171  name = "PHYSTrackParticleThinningTool",
172  StreamName = kwargs['StreamName'],
173  SelectionString = track_thinning_expression,
174  InDetTrackParticlesKey = "InDetTrackParticles"))
175 
176  AntiKt2HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
177  flags,
178  name = "AntiKt2HIJetsThinningTool",
179  StreamName = kwargs['StreamName'],
180  JetKey = JetColl+"AntiKt2HIJets",
181  SelectionString = JetColl+"AntiKt2HIJets.pt > "+ str(pTCut) +"*GeV",
182  InDetTrackParticlesKey = "InDetTrackParticles"))
183 
184  AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
185  flags,
186  name = "AntiKt4HIJetsThinningTool",
187  StreamName = kwargs['StreamName'],
188  JetKey = JetColl+"AntiKt4HIJets",
189  SelectionString = JetColl+"AntiKt4HIJets.pt > "+ str(pTCut) +"*GeV",
190  InDetTrackParticlesKey = "InDetTrackParticles"))
191 
192  thinningTools = [TrackParticleThinningTool,
193  AntiKt2HIJetsThinningTool,
194  AntiKt4HIJetsThinningTool]
195  if flags.Input.isMC:
196  from DerivationFrameworkMCTruth.TruthDerivationToolsConfig import GenericTruthThinningCfg
197  truth_thinning_expression = "(TruthParticles.status==1) && (TruthParticles.pt > "+str(minTrackPt-0.2)+"*GeV) && (abs(TruthParticles.eta) < 2.7)"
198  TruthParticleThinningTool = acc.getPrimaryAndMerge(GenericTruthThinningCfg(flags,
199  name="TruthParticleThinningTool",
200  StreamName=kwargs['StreamName'],
201  ParticleSelectionString = truth_thinning_expression
202  )
203  )
204  thinningTools += [TruthParticleThinningTool]
205 
206 
207  skimmingTool = acc.getPrimaryAndMerge(HION7SkimmingToolCfg(flags))
208  globalAugmentationTool = acc.getPrimaryAndMerge(HION7GlobalAugmentationToolCfg(flags))
209  augmentationTool=[globalAugmentationTool]
210 
211  acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name,ThinningTools = thinningTools, SkimmingTools = [skimmingTool], AugmentationTools=augmentationTool),sequenceName="HION7Sequence")
212 
213  return acc
214 
215 
216 def HION7Cfg(flags):
217 
218  acc = ComponentAccumulator()
219 
220  JetColl = flags.HeavyIon.HIJetPrefix
221  acc.merge(getDFJets(flags))
222 
223  acc.merge(HION7KernelCfg(flags, name="HION7Kernel",StreamName = "StreamDAOD_HION7"))
224 
225  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
226  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
227  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
228  from DerivationFrameworkHI import ListSlimming
229 
230 
232  HION7SlimmingHelper = SlimmingHelper("HION7SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
233  HION7SlimmingHelper.SmartCollections = ListSlimming.HION7SmartCollections()
234  AllVars = ListSlimming.HION7AllVarContent()
235  AllVars += ListSlimming.HION7ExtraContainersTrigger()
236  ExtraVars = ListSlimming.HION7BasicJetVars(JetColl)
237  from DerivationFrameworkFlavourTag import FtagBaseContent
238  if flags.Input.isMC:
239  AllVars += ListSlimming.HION7AllVarTruthContent()
240  if flags.HeavyIon.doHIBTagging:
241  FtagBaseContent.add_truth_to_SlimmingHelper(HION7SlimmingHelper)
242  if flags.HeavyIon.doHIBTagging:
243  from DerivationFrameworkFlavourTag.FtagBaseContent import addCommonAugmentation
244  addCommonAugmentation(flags, acc, HION7SlimmingHelper, JetColl+"AntiKt4HIJets")
245  AllVars += ListSlimming.HION7AllVarFromFTAG1()
246  # update AppendToDictionary
247  extra_AppendToDictionary = {}
248  FtagBaseContent.update_AppendToDictionary_in_SlimmingHelper(HION7SlimmingHelper, flags, extra_AppendToDictionary)
249  # Add ExtraVariables
250  ExtraVars += ListSlimming.HION7ExtraVarForBtag(JetColl)
251  FtagBaseContent.add_ExtraVariables_to_SlimmingHelper(HION7SlimmingHelper, flags)
252 
253  HION7SlimmingHelper.ExtraVariables = ExtraVars
254  HION7SlimmingHelper.AllVariables = AllVars
255 
256  HION7ItemList = HION7SlimmingHelper.GetItemList()
257  HIJetRemovedBranches=ListSlimming.makeHIJetRemovedBranchList()
258  jet_var_str = '.-'.join ([''] + HIJetRemovedBranches)
259  jetRlist = flags.HeavyIon.Jet.RValues #Default [0.2,0.4]
260  for jetR in jetRlist:
261  output = ["xAOD::JetContainer#"+JetColl+"AntiKt"+str(jetR)+"HIJets",
262  "xAOD::JetAuxContainer#"+JetColl+"AntiKt"+str(jetR)+"HIJetsAux.-PseudoJet"+jet_var_str]
263  HION7ItemList += output
264 
265  acc.merge(OutputStreamCfg(flags, "DAOD_HION7", ItemList=HION7ItemList, AcceptAlgs=["HION7Kernel"]))
266  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION7", AcceptAlgs=["HION7Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
267 
268  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
HIJetRecConfigCA.HIJetRecCfg
def HIJetRecCfg(flags)
Definition: HIJetRecConfigCA.py:529
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.HION7.HION7Cfg
def HION7Cfg(flags)
Definition: HION7.py:216
python.FlavorTaggingConfig.FlavorTaggingCfg
def FlavorTaggingCfg(cfgFlags, JetCollection, pv_col='PrimaryVertices', trackAugmenterPrefix=None, fast=False, JetTrackAssociator='TracksForBTagging', trackCollection='InDetTrackParticles')
Definition: FlavorTaggingConfig.py:76
python.MCTruthCommonConfig.AddMiniTruthCollectionLinksCfg
def AddMiniTruthCollectionLinksCfg(flags, **kwargs)
Definition: MCTruthCommonConfig.py:445
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:516
python.MCTruthCommonConfig.AddPVCollectionCfg
def AddPVCollectionCfg(flags)
Definition: MCTruthCommonConfig.py:332
python.TruthDerivationToolsConfig.TruthCollectionMakerCfg
def TruthCollectionMakerCfg(flags, name, **kwargs)
Definition: TruthDerivationToolsConfig.py:19
python.EGammaCommonConfig.EGammaCommonCfg
def EGammaCommonCfg(ConfigFlags)
Definition: EGammaCommonConfig.py:15
python.HION7.HION7GlobalAugmentationToolCfg
def HION7GlobalAugmentationToolCfg(flags)
Definition: HION7.py:123
python.ParticleTypeUtil.getTypeForRun
def getTypeForRun(run, quiet=False)
Definition: ParticleTypeUtil.py:24
python.MuonsCommonConfig.MuonsCommonCfg
def MuonsCommonCfg(flags, suff="")
Definition: MuonsCommonConfig.py:13
python.TruthDerivationToolsConfig.GenericTruthThinningCfg
def GenericTruthThinningCfg(flags, name, **kwargs)
Definition: TruthDerivationToolsConfig.py:443
python.FtagBaseContent.addCommonAugmentation
def addCommonAugmentation(flags, cfg, helper, target="AntiKt4EMPFlowJets")
Definition: FtagBaseContent.py:181
python.HION7.HION7KernelCfg
def HION7KernelCfg(flags, name='HION7Kernel', **kwargs)
Definition: HION7.py:147
python.InDetToolsConfig.JetTrackParticleThinningCfg
def JetTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:632
python.HION7.getDFJets
def getDFJets(flags)
Definition: HION7.py:66
python.MCTruthCommonConfig.AddStandardTruthContentsCfg
def AddStandardTruthContentsCfg(flags, decorationDressing='dressedPhoton', includeTausInDressingPhotonRemoval=False, navInputCollections=["TruthElectrons", "TruthMuons", "TruthPhotons", "TruthTaus", "TruthNeutrinos", "TruthBSM", "TruthBottom", "TruthTop", "TruthBoson"], prefix='')
Definition: MCTruthCommonConfig.py:179
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:26
python.MCTruthCommonConfig.AddHFAndDownstreamParticlesCfg
def AddHFAndDownstreamParticlesCfg(flags, **kwargs)
Add electrons, photons, and their downstream particles in a special collection def addEgammaAndDownst...
Definition: MCTruthCommonConfig.py:308
python.TriggerInterface.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TriggerInterface.py:14
python.InDetCommonConfig.InDetCommonCfg
def InDetCommonCfg(flags, **kwargs)
Definition: InDetCommonConfig.py:16
python.CFElements.seqAND
def seqAND(name, subs=[], invert=False)
Definition: CFElements.py:27
str
Definition: BTagTrackIpAccessor.cxx:11
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION7.PhysAugmentationsHION7Cfg
def PhysAugmentationsHION7Cfg(flags)
in place of common PhysCommonAugmentations:
Definition: HION7.py:11
python.HION7.HION7SkimmingToolCfg
def HION7SkimmingToolCfg(flags)
Skiming.
Definition: HION7.py:84