37 """Configure the derivation framework driving algorithm (kernel)
39 acc = ComponentAccumulator()
42 from JetRecConfig.StandardSmallRJets
import (
47 from JetRecConfig.JetRecConfig
import JetRecCfg
49 jetList = [AntiKt4EMTopo, AntiKt4PV0Track, AntiKt4Truth]
51 acc.merge(JetRecCfg(flags, jd))
52 JetKey =
"AntiKt4EMTopoJets"
59 from DerivationFrameworkInDet.InDetCommonConfig
import InDetCommonCfg
60 from DerivationFrameworkMuons.MuonsCommonConfig
import MuonsCommonCfg
61 from DerivationFrameworkEGamma.EGammaCommonConfig
import EGammaCommonCfg
63 TrackingFlags = flags.Tracking
68 DoVertexFinding=TrackingFlags.doVertexFinding,
69 AddPseudoTracks=TrackingFlags.doPseudoTracking,
71 DoR3LargeD0=TrackingFlags.doLargeD0,
72 StoreSeparateLargeD0Container=TrackingFlags.storeSeparateLargeD0Container,
76 acc.merge(MuonsCommonCfg(flags))
77 acc.merge(EGammaCommonCfg(flags))
86 from JetJvtEfficiency.JetJvtEfficiencyToolConfig
import getJvtSelToolCfg
88 algName =
"DFJet_EventCleaning_passJvtAlg"
89 passJvtTool = acc.popToolsAndMerge(getJvtSelToolCfg(flags,
"AntiKt4EMTopoJets"))
90 passJvtTool.PassFlagName =
"DFCommonJets_passJvt"
92 CompFactory.JetDecorationAlg(
93 algName, JetContainer=
"AntiKt4EMTopoJets", Decorators=[passJvtTool]
99 from AssociationUtils.AssociationUtilsConfig
import OverlapRemovalToolCfg
101 outputLabel =
"DFCommonJets_passOR_EMTopo"
105 orTool = acc.popToolsAndMerge(
106 OverlapRemovalToolCfg(
107 flags, outputLabel=outputLabel, bJetLabel=bJetLabel, doTaus=
False
110 algOR = CompFactory.OverlapRemovalGenUseAlg(
111 "OverlapRemovalGenUseAlg",
112 OverlapLabel=outputLabel,
113 OverlapRemovalTool=orTool,
118 acc.addEventAlgo(algOR)
121 from JetSelectorTools.JetSelectorToolsConfig
import (
122 EventCleaningToolCfg,
126 workingPoints = [
"Loose"]
127 prefix =
"DFCommonJets_"
129 for wp
in workingPoints:
130 cleaningLevel = wp +
"Bad"
133 cleaningLevel = wp.replace(
"LLP",
"BadLLP")
135 jetCleaningTool = acc.popToolsAndMerge(
138 "JetCleaningTool_" + cleaningLevel,
144 acc.addPublicTool(jetCleaningTool)
146 ecTool = acc.popToolsAndMerge(
147 EventCleaningToolCfg(flags,
"EventCleaningTool_" + wp, cleaningLevel)
149 ecTool.JetCleanPrefix = prefix
150 ecTool.OrDecorator =
"passOR_EMTopo"
151 ecTool.JetContainer =
"AntiKt4EMTopoJets"
152 ecTool.JetCleaningTool = jetCleaningTool
153 acc.addPublicTool(ecTool)
157 eventCleanAlg = CompFactory.EventCleaningTestAlg(
158 "EventCleaningTestAlg_" + wp,
159 EventCleaningTool=ecTool,
160 JetCollectionName=
"AntiKt4EMTopoJets",
161 EventCleanPrefix=prefix,
162 CleaningLevel=cleaningLevel,
163 doEvent=(
"Loose" in wp),
165 acc.addEventAlgo(eventCleanAlg)
168 augmentationTools = []
173 if addCaloDecorations:
174 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
175 CaloDecoratorKernelCfg)
176 acc.merge(CaloDecoratorKernelCfg(flags))
180 streamName = kwargs[
"StreamName"]
183 if flags.Derivation.Egamma.doTrackThinning:
184 from DerivationFrameworkInDet.InDetToolsConfig
import (
185 TrackParticleThinningCfg,
186 MuonTrackParticleThinningCfg,
187 TauTrackParticleThinningCfg,
190 TrackThinningKeepElectronTracks =
True
191 TrackThinningKeepPhotonTracks =
True
192 TrackThinningKeepAllElectronTracks =
False
193 TrackThinningKeepJetTracks =
False
194 TrackThinningKeepMuonTracks =
False
195 TrackThinningKeepTauTracks =
False
196 TrackThinningKeepPVTracks =
False
199 if TrackThinningKeepElectronTracks:
200 EGAM12ElectronTPThinningTool = (
201 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
202 name=
"EGAM12ElectronTPThinningTool",
203 StreamName=streamName,
205 GSFTrackParticlesKey=
"GSFTrackParticles",
206 InDetTrackParticlesKey=
"InDetTrackParticles",
207 SelectionString=
"Electrons.pt > 0*GeV",
212 acc.addPublicTool(EGAM12ElectronTPThinningTool)
213 thinningTools.append(EGAM12ElectronTPThinningTool)
217 if TrackThinningKeepAllElectronTracks:
218 EGAM12ElectronTPThinningTool2 = (
219 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
220 name=
"EGAM12ElectronTPThinningTool2",
221 StreamName=streamName,
223 GSFTrackParticlesKey=
"GSFTrackParticles",
224 InDetTrackParticlesKey=
"InDetTrackParticles",
225 SelectionString=
"Electrons.pt > 4*GeV",
230 acc.addPublicTool(EGAM12ElectronTPThinningTool2)
231 thinningTools.append(EGAM12ElectronTPThinningTool2)
234 if TrackThinningKeepPhotonTracks:
235 EGAM12PhotonTPThinningTool = (
236 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
237 name=
"EGAM12PhotonTPThinningTool",
238 StreamName=streamName,
240 GSFTrackParticlesKey=
"GSFTrackParticles",
241 InDetTrackParticlesKey=
"InDetTrackParticles",
242 GSFConversionVerticesKey=
"GSFConversionVertices",
243 SelectionString=
"Photons.pt > 0*GeV",
248 acc.addPublicTool(EGAM12PhotonTPThinningTool)
249 thinningTools.append(EGAM12PhotonTPThinningTool)
252 if TrackThinningKeepJetTracks:
253 EGAM12JetTPThinningTool = (
254 CompFactory.DerivationFramework.JetTrackParticleThinning(
255 name=
"EGAM12JetTPThinningTool",
256 StreamName=streamName,
258 InDetTrackParticlesKey=
"InDetTrackParticles",
261 acc.addPublicTool(EGAM12JetTPThinningTool)
262 thinningTools.append(EGAM12JetTPThinningTool)
265 if TrackThinningKeepMuonTracks:
266 EGAM12MuonTPThinningTool = acc.getPrimaryAndMerge(
267 MuonTrackParticleThinningCfg(
269 name=
"EGAM12MuonTPThinningTool",
270 StreamName=streamName,
272 InDetTrackParticlesKey=
"InDetTrackParticles",
275 thinningTools.append(EGAM12MuonTPThinningTool)
278 if TrackThinningKeepTauTracks:
279 EGAM12TauTPThinningTool = acc.getPrimaryAndMerge(
280 TauTrackParticleThinningCfg(
282 name=
"EGAM12TauTPThinningTool",
283 StreamName=streamName,
286 InDetTrackParticlesKey=
"InDetTrackParticles",
287 DoTauTracksThinning=
True,
288 TauTracksKey=
"TauTracks",
291 thinningTools.append(EGAM12TauTPThinningTool)
294 thinning_expression =
" && ".join(
296 "(InDetTrackParticles.DFCommonTightPrimary)",
297 "(abs(InDetTrackParticles.DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
298 "(InDetTrackParticles.pt>10*GeV)",
301 if TrackThinningKeepPVTracks:
302 EGAM12TPThinningTool = acc.getPrimaryAndMerge(
303 TrackParticleThinningCfg(
305 name=
"EGAM12TPThinningTool",
306 StreamName=streamName,
307 SelectionString=thinning_expression,
308 InDetTrackParticlesKey=
"InDetTrackParticles",
311 thinningTools.append(EGAM12TPThinningTool)
316 truth_cond_WZH =
"(TruthParticles.isW || TruthParticles.isZ || TruthParticles.isHiggs)"
318 truth_cond_lep =
"(TruthParticles.isLepton)"
320 truth_cond_top =
"(TruthParticles.isTop)"
322 truth_cond_gam =
" && ".join(
323 [
"(TruthParticles.isPhoton)",
"(TruthParticles.pt > 1*GeV)"]
326 truth_cond_finalState =
"(TruthParticles.isGenStable)"
341 + truth_cond_finalState
344 print(
"EGAM12 truth thinning expression: ", truth_expression)
346 EGAM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
347 name=
"EGAM12TruthThinningTool",
348 StreamName=streamName,
349 ParticleSelectionString=truth_expression,
350 PreserveDescendants=
False,
351 PreserveGeneratorDescendants=
True,
352 PreserveAncestors=
True,
354 acc.addPublicTool(EGAM12TruthThinningTool)
355 thinningTools.append(EGAM12TruthThinningTool)
362 CompFactory.DerivationFramework.DerivationKernel(
364 SkimmingTools=[skimmingTool],
365 AugmentationTools=augmentationTools,
366 ThinningTools=thinningTools,
374 acc = ComponentAccumulator()
376 JetKey =
"AntiKt4EMTopoJets"
377 EGAM12TriggerListsHelper =
None
384 StreamName=
"StreamDAOD_EGAM12",
385 TriggerListsHelper=EGAM12TriggerListsHelper,
390 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
391 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
392 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
395 "EGAM12SlimmingHelper",
396 NamesAndTypes=flags.Input.TypedCollections,
405 EGAM12SlimmingHelper.AllVariables = [
413 EGAM12SlimmingHelper.AllVariables += [
417 "egammaTruthParticles",
430 EGAM12SlimmingHelper.SmartCollections = [
435 "InDetTrackParticles",
441 EGAM12SlimmingHelper.SmartCollections += [
443 "AntiKt4TruthDressedWZJets",
449 EGAM12SlimmingHelper.ExtraVariables += [
450 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
454 EGAM12SlimmingHelper.ExtraVariables += [
455 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
456 "GSFConversionVertices.trackParticleLinks",
460 EGAM12SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
463 EGAM12SlimmingHelper.ExtraVariables += [
464 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
468 EGAM12SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
471 if addCaloDecorations:
472 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
474 getClusterEnergyPerLayerDecorations,
477 gainDecorations = getGainDecorations(acc, flags,
"EGAM12Kernel")
478 print(
"EGAM12 gain decorations: ", gainDecorations)
479 EGAM12SlimmingHelper.ExtraVariables.extend(gainDecorations)
480 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(
483 print(
"EGAM12 cluster energy decorations: ", clusterEnergyDecorations)
484 EGAM12SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
487 EGAM12SlimmingHelper.ExtraVariables += [
488 "TopoClusterIsoCentralEventShape.Density",
489 "TopoClusterIsoForwardEventShape.Density",
494 EGAM12SlimmingHelper.ExtraVariables += [
495 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
498 EGAM12SlimmingHelper.ExtraVariables += [
499 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
503 if flags.Derivation.Egamma.doEventInfoSlimming:
504 EGAM12SlimmingHelper.SmartCollections.append(
"EventInfo")
506 EGAM12SlimmingHelper.AllVariables += [
"EventInfo"]
509 EGAM12SlimmingHelper.AllVariables += [
"HIEventShape"]
510 EGAM12SlimmingHelper.AllVariables += [
"CaloSums"]
512 EGAM12ItemList = EGAM12SlimmingHelper.GetItemList()
517 ItemList=EGAM12ItemList,
518 AcceptAlgs=[
"EGAM12Kernel"],
522 SetupMetaDataForStreamCfg(
525 AcceptAlgs=[
"EGAM12Kernel"],
527 MetadataCategory.CutFlowMetaData,
528 MetadataCategory.TruthMetaData,