Loading [MathJax]/jax/input/TeX/config.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
HION5.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 # HION5.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 
10  """Configure the example skimming tool"""
11  acc = ComponentAccumulator()
12 
13  ExtraData = []
14  ExtraData += ['xAOD::MuonContainer/Muons']
15  ExtraData += ['xAOD::ElectronContainer/Electrons']
16  ExtraData += ['xAOD::PhotonContainer/Photons']
17  ExtraData += ['xAOD::TrackParticleContainer/InDetTrackParticles']
18  ExtraData += ['xAOD::TrackParticleContainer/InDetTrackPaasdasdrticles']
19 
20  acc.addSequence( seqAND("HION5Sequence") )
21  acc.getSequence("HION5Sequence").ExtraDataForDynamicConsumers = ExtraData
22  acc.getSequence("HION5Sequence").ProcessDynamicDataDependencies = True
23 
24  from DerivationFrameworkHI import ListTriggers
25 
26  triggers = ListTriggers.HION5SkimmingTriggers()
27 
28  req_electrons = 'count( Electrons.DFCommonElectronsLHLoose && ( Electrons.pt > 15*GeV ))>0'
29  req_muons = 'count( Muons.DFCommonMuonPassPreselection && (Muons.pt > 15*GeV) && ( abs(Muons.eta) < 2.7))>0'
30  req_photons = 'count( Photons.DFCommonPhotonsIsEMLoose && (Photons.pt > 30*GeV) ) > 0'
31  req_total = '(' + req_electrons + ' || ' + req_muons + ' || ' + req_photons + ')'
32 
33  expression = ' ( ' +' || '.join(triggers) + ' ) && ' + req_total
34 
35 
36  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
37  tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
38  acc.addPublicTool(CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HION5StringSkimmingTool",
39  expression = expression,
40  TrigDecisionTool=tdt),
41  primary = True)
42 
43  return acc
44 
45 def HION5Thinning(flags):
46  from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg,JetTrackParticleThinningCfg
47  acc = ComponentAccumulator()
48 
49  track_thinning_expression = "InDetTrackParticles.pt > 0.9*GeV"
50  TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
51  flags,
52  name = "PHYSTrackParticleThinningTool",
53  StreamName = "streamDAOD_HION5",
54  SelectionString = track_thinning_expression,
55  InDetTrackParticlesKey = "InDetTrackParticles"))
56 
57  AntiKt2HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
58  flags,
59  name = "AntiKt2HIJetsThinningTool",
60  StreamName = "streamDAOD_HION5",
61  JetKey = "AntiKt2HIJets",
62  SelectionString = "AntiKt2HIJets.pt > 15*GeV",
63  InDetTrackParticlesKey = "InDetTrackParticles"))
64 
65  AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
66  flags,
67  name = "AntiKt4HIJetsThinningTool",
68  StreamName = "streamDAOD_HION5",
69  JetKey = "AntiKt4HIJets",
70  SelectionString = "AntiKt4HIJets.pt > 15*GeV",
71  InDetTrackParticlesKey = "InDetTrackParticles"))
72 
73  acc.addPublicTool(TrackParticleThinningTool,primary = True)
74  acc.addPublicTool(AntiKt2HIJetsThinningTool)
75  acc.addPublicTool(AntiKt4HIJetsThinningTool)
76 
77  return acc
78 
79 def HION5KernelCfg(flags, name="HION5Kernel", **kwargs):
80  """Configure the derivation framework driving algorithm (kernel)
81  for HION5"""
82  acc = ComponentAccumulator()
83 
84  # Schedule extra jets collections
85  from JetRecConfig.StandardSmallRJets import AntiKt4PV0Track
86  from JetRecConfig.JetRecConfig import JetRecCfg
87 
88  jetList = [AntiKt4PV0Track]
89  for jd in jetList:
90  acc.merge(JetRecCfg(flags, jd))
91 
92  # Common augmentations
93  # cannot use PhysCommon sequence because
94  # - no triggers
95  # - no TauJets
96  # so we have to use a modified version here
97  from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
98  from DerivationFrameworkEGamma.EGammaCommonConfig import EGammaCommonCfg
99 
100  acc.merge(MuonsCommonCfg(flags))
101  acc.merge(EGammaCommonCfg(flags))
102 
103  # jet cleaning
104  # standard way in PhysCommon is
105  # - calculate tau ID (needed for default jet OR)
106  # - decorate jets with overlap removal
107  # - do event cleaning
108  # but taus are missing in HI derivations so need to do differently
109 
110  # NO JVT criteria in HI data (see pp config for details)
111 
112  # Decorate if jet passes OR and save decoration DFCommonJets_passOR
113  # Use modified OR that does not check overlaps with taus
114  from AssociationUtils.AssociationUtilsConfig import OverlapRemovalToolCfg
115 
116  outputLabel = "DFCommonJets_passOR"
117  bJetLabel = "" # default
118  tauLabel = "" # workaround for missing taus
119  tauKey = "" # workaround for missing taus
120  orTool = acc.popToolsAndMerge(
122  flags, outputLabel=outputLabel, bJetLabel=bJetLabel, doTaus=False
123  )
124  )
125  algOR = CompFactory.OverlapRemovalGenUseAlg(
126  "OverlapRemovalGenUseAlg",
127  OverlapLabel=outputLabel,
128  OverlapRemovalTool=orTool,
129  JetKey = 'AntiKt4HIJets',
130  TauKey=tauKey,
131  TauLabel=tauLabel,
132  BJetLabel=bJetLabel,
133  )
134  acc.addEventAlgo(algOR)
135 
136  # skimming
137  skimmingTool = acc.getPrimaryAndMerge(HION5SkimmingToolCfg(flags))
138 
139  # Thinning
140  thinningTool= acc.getPrimaryAndMerge(HION5Thinning(flags))
141 
142  # setup the kernel
143  acc.addEventAlgo(
144  CompFactory.DerivationFramework.DerivationKernel(
145  name,
146  SkimmingTools = [skimmingTool],
147  ThinningTools = [thinningTool],
148  AugmentationTools = [],
149  ))
150 
151  return acc
152 
153 def HION5Cfg(flags):
154  acc = ComponentAccumulator()
155 
156  from DerivationFrameworkEGamma.PhotonsCPDetailedContent import PhotonsCPDetailedContent
157  from DerivationFrameworkEGamma.ElectronsCPDetailedContent import ExtraElectronShowerShapes,ExtraElectronGSFVar
158 
159  from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
160  HION5TriggerListsHelper = TriggerListsHelper(flags)
161 
162  acc.merge(HION5KernelCfg(flags, name="HION5Kernel", StreamName="StreamDAOD_HION5", TriggerListsHelper = HION5TriggerListsHelper,))
163 
164  # configure slimming
165  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
166  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
167  from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
168  from DerivationFrameworkHI import ListSlimming
169 
170  HION5SlimmingHelper = SlimmingHelper("HION5SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
171 
172  AllVariables = []
173  AllVariables += ListSlimming.HION5AllVariables()
174  AllVariables += ListSlimming.HION5ExtraContainersTrigger()
175 
176  HION5SlimmingHelper.SmartCollections = ListSlimming.HION5SmartCollections()
177  HION5SlimmingHelper.ExtraVariables = ListSlimming.HION5Extravariables()
178  HION5SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
179  HION5SlimmingHelper.ExtraVariables += ExtraElectronShowerShapes
180  HION5SlimmingHelper.ExtraVariables += ExtraElectronGSFVar
181  HION5SlimmingHelper.AllVariables = AllVariables
182 
183  # Add egamma trigger objects
184  HION5SlimmingHelper.IncludeEGammaTriggerContent = True
185  # Add muon trigger objects
186  HION5SlimmingHelper.IncludeMuonTriggerContent = True
187 
188  HION5ItemList = HION5SlimmingHelper.GetItemList()
189 
190  acc.merge(OutputStreamCfg(flags, "DAOD_HION5", ItemList=HION5ItemList, AcceptAlgs=["HION5Kernel"]))
191  acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION5", AcceptAlgs=["HION5Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
192 
193  return acc
AssociationUtilsConfig.OverlapRemovalToolCfg
def OverlapRemovalToolCfg(ConfigFlags, masterName='OverlapRemovalTool', inputLabel='selected', outputLabel='overlaps', bJetLabel='', maxElePtForBJetAwareOR=100. *1000, boostedLeptons=False, outputPassValue=False, linkOverlapObjects=False, doEleEleOR=False, doElectrons=True, doMuons=True, doJets=True, doTaus=True, doPhotons=True, doFatJets=False, **kwargs)
Definition: AssociationUtilsConfig.py:5
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:458
python.EGammaCommonConfig.EGammaCommonCfg
def EGammaCommonCfg(ConfigFlags)
Definition: EGammaCommonConfig.py:15
python.HION5.HION5KernelCfg
def HION5KernelCfg(flags, name="HION5Kernel", **kwargs)
Definition: HION5.py:79
python.CFElements.seqAND
def seqAND(name, subs=[])
Definition: CFElements.py:25
python.JetRecConfig.JetRecCfg
def JetRecCfg(flags, jetdef, returnConfiguredDef=False)
Top level functions returning ComponentAccumulator out of JetDefinition.
Definition: JetRecConfig.py:36
python.MuonsCommonConfig.MuonsCommonCfg
def MuonsCommonCfg(flags, suff="")
Definition: MuonsCommonConfig.py:13
python.HION5.HION5SkimmingToolCfg
def HION5SkimmingToolCfg(flags)
Definition: HION5.py:9
python.HION5.HION5Cfg
def HION5Cfg(flags)
Definition: HION5.py:153
python.InDetToolsConfig.JetTrackParticleThinningCfg
def JetTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:574
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.TriggerInterface.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TriggerInterface.py:14
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.HION5.HION5Thinning
def HION5Thinning(flags)
Definition: HION5.py:45