12 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
13 from AthenaConfiguration.ComponentFactory
import CompFactory
14 from AthenaConfiguration.Enums
import MetadataCategory
16 from DerivationFrameworkEGamma.PhotonsCPDetailedContent
import (
17 PhotonsCPDetailedContent,
22 addCaloDecorations =
False
26 """Configure the EGAM12 skimming tool"""
30 expression =
"count(Electrons.pt > 4.5*GeV) >= 1"
31 print(
"EGAM12 offline skimming expression: ", expression)
32 EGAM12_OfflineSkimmingTool = CompFactory.DerivationFramework.xAODStringSkimmingTool(
33 name=
"EGAM12_OfflineSkimmingTool", expression=expression, TrigDecisionTool=
""
36 acc.addPublicTool(EGAM12_OfflineSkimmingTool, primary=
True)
42 """Configure the derivation framework driving algorithm (kernel)
47 from JetRecConfig.StandardSmallRJets
import (
52 from JetRecConfig.JetRecConfig
import JetRecCfg
54 jetList = [AntiKt4EMTopo, AntiKt4PV0Track, AntiKt4Truth]
57 JetKey =
"AntiKt4EMTopoJets"
64 from DerivationFrameworkInDet.InDetCommonConfig
import InDetCommonCfg
65 from DerivationFrameworkMuons.MuonsCommonConfig
import MuonsCommonCfg
66 from DerivationFrameworkEGamma.EGammaCommonConfig
import EGammaCommonCfg
68 TrackingFlags = flags.Tracking
73 DoVertexFinding=TrackingFlags.doVertexFinding,
74 AddPseudoTracks=TrackingFlags.doPseudoTracking,
76 DoR3LargeD0=TrackingFlags.doLargeD0,
77 StoreSeparateLargeD0Container=TrackingFlags.storeSeparateLargeD0Container,
91 from JetJvtEfficiency.JetJvtEfficiencyToolConfig
import getJvtEffToolCfg
93 algName =
"DFJet_EventCleaning_passJvtAlg"
95 passJvtTool.PassJVTKey =
"AntiKt4EMTopoJets.DFCommonJets_passJvt"
97 CompFactory.JetDecorationAlg(
98 algName, JetContainer=
"AntiKt4EMTopoJets", Decorators=[passJvtTool]
104 from AssociationUtils.AssociationUtilsConfig
import OverlapRemovalToolCfg
106 outputLabel =
"DFCommonJets_passOR_EMTopo"
110 orTool = acc.popToolsAndMerge(
112 flags, outputLabel=outputLabel, bJetLabel=bJetLabel, doTaus=
False
115 algOR = CompFactory.OverlapRemovalGenUseAlg(
116 "OverlapRemovalGenUseAlg",
117 OverlapLabel=outputLabel,
118 OverlapRemovalTool=orTool,
123 acc.addEventAlgo(algOR)
126 from JetSelectorTools.JetSelectorToolsConfig
import (
127 EventCleaningToolCfg,
131 workingPoints = [
"Loose"]
132 prefix =
"DFCommonJets_"
134 for wp
in workingPoints:
135 cleaningLevel = wp +
"Bad"
138 cleaningLevel = wp.replace(
"LLP",
"BadLLP")
140 jetCleaningTool = acc.popToolsAndMerge(
143 "JetCleaningTool_" + cleaningLevel,
149 acc.addPublicTool(jetCleaningTool)
151 ecTool = acc.popToolsAndMerge(
154 ecTool.JetCleanPrefix = prefix
155 ecTool.OrDecorator =
"passOR_EMTopo"
156 ecTool.JetContainer =
"AntiKt4EMTopoJets"
157 ecTool.JetCleaningTool = jetCleaningTool
158 acc.addPublicTool(ecTool)
162 eventCleanAlg = CompFactory.EventCleaningTestAlg(
163 "EventCleaningTestAlg_" + wp,
164 EventCleaningTool=ecTool,
165 JetCollectionName=
"AntiKt4EMTopoJets",
166 EventCleanPrefix=prefix,
167 CleaningLevel=cleaningLevel,
168 doEvent=(
"Loose" in wp),
170 acc.addEventAlgo(eventCleanAlg)
173 augmentationTools = []
178 if addCaloDecorations:
179 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
180 CaloDecoratorKernelCfg)
185 streamName = kwargs[
"StreamName"]
188 if flags.Derivation.Egamma.doTrackThinning:
189 from DerivationFrameworkInDet.InDetToolsConfig
import (
190 TrackParticleThinningCfg,
191 MuonTrackParticleThinningCfg,
192 TauTrackParticleThinningCfg,
195 TrackThinningKeepElectronTracks =
True
196 TrackThinningKeepPhotonTracks =
True
197 TrackThinningKeepAllElectronTracks =
False
198 TrackThinningKeepJetTracks =
False
199 TrackThinningKeepMuonTracks =
False
200 TrackThinningKeepTauTracks =
False
201 TrackThinningKeepPVTracks =
False
204 if TrackThinningKeepElectronTracks:
205 EGAM12ElectronTPThinningTool = (
206 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
207 name=
"EGAM12ElectronTPThinningTool",
208 StreamName=streamName,
210 GSFTrackParticlesKey=
"GSFTrackParticles",
211 InDetTrackParticlesKey=
"InDetTrackParticles",
212 SelectionString=
"Electrons.pt > 0*GeV",
217 acc.addPublicTool(EGAM12ElectronTPThinningTool)
218 thinningTools.append(EGAM12ElectronTPThinningTool)
222 if TrackThinningKeepAllElectronTracks:
223 EGAM12ElectronTPThinningTool2 = (
224 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
225 name=
"EGAM12ElectronTPThinningTool2",
226 StreamName=streamName,
228 GSFTrackParticlesKey=
"GSFTrackParticles",
229 InDetTrackParticlesKey=
"InDetTrackParticles",
230 SelectionString=
"Electrons.pt > 4*GeV",
235 acc.addPublicTool(EGAM12ElectronTPThinningTool2)
236 thinningTools.append(EGAM12ElectronTPThinningTool2)
239 if TrackThinningKeepPhotonTracks:
240 EGAM12PhotonTPThinningTool = (
241 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
242 name=
"EGAM12PhotonTPThinningTool",
243 StreamName=streamName,
245 GSFTrackParticlesKey=
"GSFTrackParticles",
246 InDetTrackParticlesKey=
"InDetTrackParticles",
247 GSFConversionVerticesKey=
"GSFConversionVertices",
248 SelectionString=
"Photons.pt > 0*GeV",
253 acc.addPublicTool(EGAM12PhotonTPThinningTool)
254 thinningTools.append(EGAM12PhotonTPThinningTool)
257 if TrackThinningKeepJetTracks:
258 EGAM12JetTPThinningTool = (
259 CompFactory.DerivationFramework.JetTrackParticleThinning(
260 name=
"EGAM12JetTPThinningTool",
261 StreamName=streamName,
263 InDetTrackParticlesKey=
"InDetTrackParticles",
266 acc.addPublicTool(EGAM12JetTPThinningTool)
267 thinningTools.append(EGAM12JetTPThinningTool)
270 if TrackThinningKeepMuonTracks:
271 EGAM12MuonTPThinningTool = acc.getPrimaryAndMerge(
274 name=
"EGAM12MuonTPThinningTool",
275 StreamName=streamName,
277 InDetTrackParticlesKey=
"InDetTrackParticles",
280 thinningTools.append(EGAM12MuonTPThinningTool)
283 if TrackThinningKeepTauTracks:
284 EGAM12TauTPThinningTool = acc.getPrimaryAndMerge(
287 name=
"EGAM12TauTPThinningTool",
288 StreamName=streamName,
291 InDetTrackParticlesKey=
"InDetTrackParticles",
292 DoTauTracksThinning=
True,
293 TauTracksKey=
"TauTracks",
296 thinningTools.append(EGAM12TauTPThinningTool)
299 thinning_expression =
" && ".
join(
301 "(InDetTrackParticles.DFCommonTightPrimary)",
302 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
303 "(InDetTrackParticles.pt>10*GeV)",
306 if TrackThinningKeepPVTracks:
307 EGAM12TPThinningTool = acc.getPrimaryAndMerge(
310 name=
"EGAM12TPThinningTool",
311 StreamName=streamName,
312 SelectionString=thinning_expression,
313 InDetTrackParticlesKey=
"InDetTrackParticles",
316 thinningTools.append(EGAM12TPThinningTool)
321 truth_cond_WZH =
" && ".
join(
322 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
325 truth_cond_lep =
" && ".
join(
326 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
329 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
331 truth_cond_gam =
" && ".
join(
332 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
335 truth_cond_finalState =
"(TruthParticles.isGenStable)"
350 + truth_cond_finalState
353 print(
"EGAM12 truth thinning expression: ", truth_expression)
355 EGAM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
356 name=
"EGAM12TruthThinningTool",
357 StreamName=streamName,
358 ParticleSelectionString=truth_expression,
359 PreserveDescendants=
False,
360 PreserveGeneratorDescendants=
True,
361 PreserveAncestors=
True,
363 acc.addPublicTool(EGAM12TruthThinningTool)
364 thinningTools.append(EGAM12TruthThinningTool)
371 CompFactory.DerivationFramework.DerivationKernel(
373 SkimmingTools=[skimmingTool],
374 AugmentationTools=augmentationTools,
375 ThinningTools=thinningTools,
385 JetKey =
"AntiKt4EMTopoJets"
386 EGAM12TriggerListsHelper =
None
393 StreamName=
"StreamDAOD_EGAM12",
394 TriggerListsHelper=EGAM12TriggerListsHelper,
399 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
400 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
401 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
404 "EGAM12SlimmingHelper",
405 NamesAndTypes=flags.Input.TypedCollections,
414 EGAM12SlimmingHelper.AllVariables = [
422 EGAM12SlimmingHelper.AllVariables += [
426 "egammaTruthParticles",
439 EGAM12SlimmingHelper.SmartCollections = [
444 "InDetTrackParticles",
450 EGAM12SlimmingHelper.SmartCollections += [
452 "AntiKt4TruthDressedWZJets",
458 EGAM12SlimmingHelper.ExtraVariables += [
459 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
463 EGAM12SlimmingHelper.ExtraVariables += [
464 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
465 "GSFConversionVertices.trackParticleLinks",
469 EGAM12SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
472 EGAM12SlimmingHelper.ExtraVariables += [
473 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
477 EGAM12SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
480 if addCaloDecorations:
481 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
483 getClusterEnergyPerLayerDecorations,
487 print(
"EGAM12 gain decorations: ", gainDecorations)
488 EGAM12SlimmingHelper.ExtraVariables.extend(gainDecorations)
492 print(
"EGAM12 cluster energy decorations: ", clusterEnergyDecorations)
493 EGAM12SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
496 EGAM12SlimmingHelper.ExtraVariables += [
497 "TopoClusterIsoCentralEventShape.Density",
498 "TopoClusterIsoForwardEventShape.Density",
503 EGAM12SlimmingHelper.ExtraVariables += [
504 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
507 EGAM12SlimmingHelper.ExtraVariables += [
508 "Photons.truthOrigin.truthType.truthParticleLink"
512 if flags.Derivation.Egamma.doEventInfoSlimming:
513 EGAM12SlimmingHelper.SmartCollections.append(
"EventInfo")
515 EGAM12SlimmingHelper.AllVariables += [
"EventInfo"]
518 EGAM12SlimmingHelper.AllVariables += [
"HIEventShape"]
519 EGAM12SlimmingHelper.AllVariables += [
"CaloSums"]
521 EGAM12ItemList = EGAM12SlimmingHelper.GetItemList()
526 ItemList=EGAM12ItemList,
527 AcceptAlgs=[
"EGAM12Kernel"],
534 AcceptAlgs=[
"EGAM12Kernel"],
536 MetadataCategory.CutFlowMetaData,
537 MetadataCategory.TruthMetaData,