ATLAS Offline Software
Loading...
Searching...
No Matches
python.HION5 Namespace Reference

Functions

 HION5SkimmingToolCfg (flags)
 HION5Thinning (flags)
 HION5KernelCfg (flags, name="HION5Kernel", **kwargs)
 HION5Cfg (flags)

Function Documentation

◆ HION5Cfg()

python.HION5.HION5Cfg ( flags)

Definition at line 163 of file HION5.py.

163def HION5Cfg(flags):
164 acc = ComponentAccumulator()
165
166 from DerivationFrameworkEGamma.PhotonsCPDetailedContent import PhotonsCPDetailedContent
167 from DerivationFrameworkEGamma.ElectronsCPDetailedContent import ExtraElectronShowerShapes,ExtraElectronGSFVar
168
169 from DerivationFrameworkPhys.TriggerListsHelper import TriggerListsHelper
170 HION5TriggerListsHelper = TriggerListsHelper(flags)
171
172 acc.merge(HION5KernelCfg(flags, name="HION5Kernel", StreamName="StreamDAOD_HION5", TriggerListsHelper = HION5TriggerListsHelper,))
173
174 # configure slimming
175 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
176 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
177 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
178 from DerivationFrameworkHI import ListSlimming
179
180 HION5SlimmingHelper = SlimmingHelper("HION5SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
181 HION5SlimmingHelper.AppendToDictionary = {'EventInfo':'xAOD::EventInfo','EventInfoAux':'xAOD::EventAuxInfo',
182 'TruthEvents':'xAOD::TruthEventContainer','TruthEventsAux':'xAOD::TruthEventAuxContainer',
183 'MET_Truth':'xAOD::MissingETContainer','MET_TruthAux':'xAOD::MissingETAuxContainer',
184 'TruthLHEParticles':'xAOD::TruthParticleContainer', 'TruthLHEParticlesAux':'xAOD::TruthParticleAuxContainer',
185 'TruthElectrons':'xAOD::TruthParticleContainer','TruthElectronsAux':'xAOD::TruthParticleAuxContainer',
186 'TruthMuons':'xAOD::TruthParticleContainer','TruthMuonsAux':'xAOD::TruthParticleAuxContainer',
187 'TruthPhotons':'xAOD::TruthParticleContainer','TruthPhotonsAux':'xAOD::TruthParticleAuxContainer',
188 'TruthTaus':'xAOD::TruthParticleContainer','TruthTausAux':'xAOD::TruthParticleAuxContainer',
189 'TruthNeutrinos':'xAOD::TruthParticleContainer','TruthNeutrinosAux':'xAOD::TruthParticleAuxContainer',
190 'TruthBSM':'xAOD::TruthParticleContainer','TruthBSMAux':'xAOD::TruthParticleAuxContainer',
191 'TruthBoson':'xAOD::TruthParticleContainer','TruthBosonAux':'xAOD::TruthParticleAuxContainer',
192 'TruthBottom':'xAOD::TruthParticleContainer','TruthBottomAux':'xAOD::TruthParticleAuxContainer',
193 'TruthTop':'xAOD::TruthParticleContainer','TruthTopAux':'xAOD::TruthParticleAuxContainer',
194 'TruthForwardProtons':'xAOD::TruthParticleContainer','TruthForwardProtonsAux':'xAOD::TruthParticleAuxContainer',
195 'BornLeptons':'xAOD::TruthParticleContainer','BornLeptonsAux':'xAOD::TruthParticleAuxContainer',
196 'TruthBosonsWithDecayParticles':'xAOD::TruthParticleContainer','TruthBosonsWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
197 'TruthBosonsWithDecayVertices':'xAOD::TruthVertexContainer','TruthBosonsWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
198 'TruthBSMWithDecayParticles':'xAOD::TruthParticleContainer','TruthBSMWithDecayParticlesAux':'xAOD::TruthParticleAuxContainer',
199 'TruthBSMWithDecayVertices':'xAOD::TruthVertexContainer','TruthBSMWithDecayVerticesAux':'xAOD::TruthVertexAuxContainer',
200 'AntiKt4TruthDressedWZJets':'xAOD::JetContainer','AntiKt4TruthDressedWZJetsAux':'xAOD::JetAuxContainer',
201 'AntiKt10TruthSoftDropBeta100Zcut10Jets':'xAOD::JetContainer','AntiKt10TruthSoftDropBeta100Zcut10JetsAux':'xAOD::JetAuxContainer',
202 'MET_Track1000':'xAOD::MissingETContainer', 'MET_Track1000Aux':'xAOD::MissingETAuxContainer',
203 'MET_Track2000':'xAOD::MissingETContainer', 'MET_Track2000Aux':'xAOD::MissingETAuxContainer',
204 'MET_Track3000':'xAOD::MissingETContainer', 'MET_Track3000Aux':'xAOD::MissingETAuxContainer',
205 'MET_Track4000':'xAOD::MissingETContainer', 'MET_Track4000Aux':'xAOD::MissingETAuxContainer',
206 'MET_Track5000':'xAOD::MissingETContainer', 'MET_Track5000Aux':'xAOD::MissingETAuxContainer',
207 }
208 # Build track MET with ptCut in MeV and HItight Tracks
209 from DerivationFrameworkHI.TrackMET_config import Cfg_METTrack
210 met_ptCutList = [1000,2000,3000,4000,5000]
211
212 for ptCut in met_ptCutList:
213 acc.merge(Cfg_METTrack(flags, ptCut))
214
215 AllVariables = []
216 AllVariables += ListSlimming.HION5AllVariables(flags.Input.RunNumbers[0])
217 AllVariables += ListSlimming.HION5ExtraContainersTrigger()
218
219 if flags.Input.isMC:
220 from DerivationFrameworkMCTruth.MCTruthCommonConfig import AddStandardTruthContentsCfg
221 acc.merge(AddStandardTruthContentsCfg(flags))
222 AllVariables += ListSlimming.HION5AllTruthVariables()
223
224 HION5SlimmingHelper.SmartCollections = ListSlimming.HION5SmartCollections()
225 HION5SlimmingHelper.ExtraVariables = ListSlimming.HION5ExtraVariables()
226 HION5SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
227 HION5SlimmingHelper.ExtraVariables += ExtraElectronShowerShapes
228 HION5SlimmingHelper.ExtraVariables += ExtraElectronGSFVar
229 HION5SlimmingHelper.AllVariables = AllVariables
230
231 # Add egamma trigger objects
232 HION5SlimmingHelper.IncludeEGammaTriggerContent = True
233 # Add muon trigger objects
234 HION5SlimmingHelper.IncludeMuonTriggerContent = True
235
236 HION5ItemList = HION5SlimmingHelper.GetItemList()
237
238 acc.merge(OutputStreamCfg(flags, "DAOD_HION5", ItemList=HION5ItemList, AcceptAlgs=["HION5Kernel"]))
239 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION5", AcceptAlgs=["HION5Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
240
241 return acc

◆ HION5KernelCfg()

python.HION5.HION5KernelCfg ( flags,
name = "HION5Kernel",
** kwargs )
Configure the derivation framework driving algorithm (kernel)
for HION5

Definition at line 89 of file HION5.py.

89def HION5KernelCfg(flags, name="HION5Kernel", **kwargs):
90 """Configure the derivation framework driving algorithm (kernel)
91 for HION5"""
92 acc = ComponentAccumulator()
93
94 # Schedule extra jets collections
95 from JetRecConfig.StandardSmallRJets import AntiKt4PV0Track
96 from JetRecConfig.JetRecConfig import JetRecCfg
97
98 jetList = [AntiKt4PV0Track]
99 for jd in jetList:
100 acc.merge(JetRecCfg(flags, jd))
101
102 # Common augmentations
103 # cannot use PhysCommon sequence because
104 # - no triggers
105 # - no TauJets
106 # so we have to use a modified version here
107 from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
108 from DerivationFrameworkEGamma.EGammaCommonConfig import EGammaCommonCfg
109
110 acc.merge(MuonsCommonCfg(flags))
111 acc.merge(EGammaCommonCfg(flags))
112
113 # jet cleaning
114 # standard way in PhysCommon is
115 # - calculate tau ID (needed for default jet OR)
116 # - decorate jets with overlap removal
117 # - do event cleaning
118 # but taus are missing in HI derivations so need to do differently
119
120 # NO JVT criteria in HI data (see pp config for details)
121
122 # Decorate if jet passes OR and save decoration DFCommonJets_passOR
123 # Use modified OR that does not check overlaps with taus
124 from AssociationUtils.AssociationUtilsConfig import OverlapRemovalToolCfg
125
126 outputLabel = "DFCommonJets_passOR_HI"
127 bJetLabel = "" # default
128 tauLabel = "" # workaround for missing taus
129 tauKey = "" # workaround for missing taus
130 orTool = acc.popToolsAndMerge(
131 OverlapRemovalToolCfg(
132 flags, outputLabel=outputLabel, bJetLabel=bJetLabel, doTaus=False
133 )
134 )
135 algOR = CompFactory.OverlapRemovalGenUseAlg(
136 "OverlapRemovalGenUseAlg",
137 OverlapLabel=outputLabel,
138 OverlapRemovalTool=orTool,
139 JetKey = 'AntiKt4HIJets',
140 TauKey=tauKey,
141 TauLabel=tauLabel,
142 BJetLabel=bJetLabel,
143 )
144 acc.addEventAlgo(algOR)
145
146 # skimming
147 skimmingTool = acc.getPrimaryAndMerge(HION5SkimmingToolCfg(flags))
148
149 # Thinning
150 thinningTool= acc.getPrimaryAndMerge(HION5Thinning(flags))
151
152 # setup the kernel
153 acc.addEventAlgo(
154 CompFactory.DerivationFramework.DerivationKernel(
155 name,
156 SkimmingTools = [skimmingTool],
157 ThinningTools = [thinningTool],
158 AugmentationTools = [],
159 ))
160
161 return acc
162

◆ HION5SkimmingToolCfg()

python.HION5.HION5SkimmingToolCfg ( flags)
Configure the example skimming tool

Definition at line 9 of file HION5.py.

9def HION5SkimmingToolCfg(flags):
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
19 acc.addSequence( seqAND("HION5Sequence") )
20 acc.getSequence("HION5Sequence").ExtraDataForDynamicConsumers = ExtraData
21 acc.getSequence("HION5Sequence").ProcessDynamicDataDependencies = True
22
23 from DerivationFrameworkHI import ListTriggers
24
25 triggers = ListTriggers.HION5SkimmingTriggers()
26
27 req_electrons = 'count( ( Electrons.pt > 15*GeV ) && ( abs(Electrons.eta) < 2.5) )>0'
28 req_muons = 'count( Muons.DFCommonMuonPassPreselection && (Muons.pt > 15*GeV) && ( abs(Muons.eta) < 2.7))>0'
29 req_photons = 'count( Photons.DFCommonPhotonsIsEMLoose && (Photons.pt > 30*GeV) ) > 0'
30 req_total = '(' + req_electrons + ' || ' + req_muons + ' || ' + req_photons + ')'
31
32 expression = ' ( ' +' || '.join(triggers) + ' ) && ' + req_total
33
34
35 from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
36 tdt = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
37 acc.addPublicTool(CompFactory.DerivationFramework.xAODStringSkimmingTool(name = "HION5StringSkimmingTool",
38 expression = expression,
39 TrigDecisionTool=tdt),
40 primary = True)
41
42 return acc
43

◆ HION5Thinning()

python.HION5.HION5Thinning ( flags)

Definition at line 44 of file HION5.py.

44def HION5Thinning(flags):
45 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg,JetTrackParticleThinningCfg
46 acc = ComponentAccumulator()
47
48 # find collision type
49 from CoolConvUtilities.ParticleTypeUtil import getTypeForRun
50 info=getTypeForRun(flags.Input.RunNumbers[0])
51 isOxygenOxygenCollision = False
52 if (info.getBeam1Type() == 8) or (info.getBeam2Type() == 8):
53 isOxygenOxygenCollision = True
54
55 pTCut = 0.9
56 if isOxygenOxygenCollision:
57 pTCut = 0.5
58
59 track_thinning_expression = f"InDetTrackParticles.pt > {pTCut}*GeV"
60 TrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(
61 flags,
62 name = "PHYSTrackParticleThinningTool",
63 StreamName = "StreamDAOD_HION5",
64 SelectionString = track_thinning_expression,
65 InDetTrackParticlesKey = "InDetTrackParticles"))
66
67 AntiKt2HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
68 flags,
69 name = "AntiKt2HIJetsThinningTool",
70 StreamName = "StreamDAOD_HION5",
71 JetKey = "AntiKt2HIJets",
72 SelectionString = "AntiKt2HIJets.pt > 15*GeV",
73 InDetTrackParticlesKey = "InDetTrackParticles"))
74
75 AntiKt4HIJetsThinningTool = acc.getPrimaryAndMerge(JetTrackParticleThinningCfg(
76 flags,
77 name = "AntiKt4HIJetsThinningTool",
78 StreamName = "StreamDAOD_HION5",
79 JetKey = "AntiKt4HIJets",
80 SelectionString = "AntiKt4HIJets.pt > 15*GeV",
81 InDetTrackParticlesKey = "InDetTrackParticles"))
82
83 acc.addPublicTool(TrackParticleThinningTool,primary = True)
84 acc.addPublicTool(AntiKt2HIJetsThinningTool)
85 acc.addPublicTool(AntiKt4HIJetsThinningTool)
86
87 return acc
88