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(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 =
" && ".join(
317 [
"(abs(TruthParticles.pdgId) >= 23)",
"(abs(TruthParticles.pdgId) <= 25)"]
320 truth_cond_lep =
" && ".join(
321 [
"(abs(TruthParticles.pdgId) >= 11)",
"(abs(TruthParticles.pdgId) <= 16)"]
324 truth_cond_top =
"(abs(TruthParticles.pdgId) == 6)"
326 truth_cond_gam =
" && ".join(
327 [
"(abs(TruthParticles.pdgId) == 22)",
"(TruthParticles.pt > 1*GeV)"]
330 truth_cond_finalState =
"(TruthParticles.isGenStable)"
345 + truth_cond_finalState
348 print(
"EGAM12 truth thinning expression: ", truth_expression)
350 EGAM12TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
351 name=
"EGAM12TruthThinningTool",
352 StreamName=streamName,
353 ParticleSelectionString=truth_expression,
354 PreserveDescendants=
False,
355 PreserveGeneratorDescendants=
True,
356 PreserveAncestors=
True,
358 acc.addPublicTool(EGAM12TruthThinningTool)
359 thinningTools.append(EGAM12TruthThinningTool)
366 CompFactory.DerivationFramework.DerivationKernel(
368 SkimmingTools=[skimmingTool],
369 AugmentationTools=augmentationTools,
370 ThinningTools=thinningTools,
378 acc = ComponentAccumulator()
380 JetKey =
"AntiKt4EMTopoJets"
381 EGAM12TriggerListsHelper =
None
388 StreamName=
"StreamDAOD_EGAM12",
389 TriggerListsHelper=EGAM12TriggerListsHelper,
394 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
395 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
396 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
399 "EGAM12SlimmingHelper",
400 NamesAndTypes=flags.Input.TypedCollections,
409 EGAM12SlimmingHelper.AllVariables = [
417 EGAM12SlimmingHelper.AllVariables += [
421 "egammaTruthParticles",
434 EGAM12SlimmingHelper.SmartCollections = [
439 "InDetTrackParticles",
445 EGAM12SlimmingHelper.SmartCollections += [
447 "AntiKt4TruthDressedWZJets",
453 EGAM12SlimmingHelper.ExtraVariables += [
454 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
458 EGAM12SlimmingHelper.ExtraVariables += [
459 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
460 "GSFConversionVertices.trackParticleLinks",
464 EGAM12SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
467 EGAM12SlimmingHelper.ExtraVariables += [
468 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.btaggingLink.constituentLinks"
472 EGAM12SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
475 if addCaloDecorations:
476 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
478 getClusterEnergyPerLayerDecorations,
481 gainDecorations = getGainDecorations(acc, flags,
"EGAM12Kernel")
482 print(
"EGAM12 gain decorations: ", gainDecorations)
483 EGAM12SlimmingHelper.ExtraVariables.extend(gainDecorations)
484 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(
487 print(
"EGAM12 cluster energy decorations: ", clusterEnergyDecorations)
488 EGAM12SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
491 EGAM12SlimmingHelper.ExtraVariables += [
492 "TopoClusterIsoCentralEventShape.Density",
493 "TopoClusterIsoForwardEventShape.Density",
498 EGAM12SlimmingHelper.ExtraVariables += [
499 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
502 EGAM12SlimmingHelper.ExtraVariables += [
503 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
507 if flags.Derivation.Egamma.doEventInfoSlimming:
508 EGAM12SlimmingHelper.SmartCollections.append(
"EventInfo")
510 EGAM12SlimmingHelper.AllVariables += [
"EventInfo"]
513 EGAM12SlimmingHelper.AllVariables += [
"HIEventShape"]
514 EGAM12SlimmingHelper.AllVariables += [
"CaloSums"]
516 EGAM12ItemList = EGAM12SlimmingHelper.GetItemList()
521 ItemList=EGAM12ItemList,
522 AcceptAlgs=[
"EGAM12Kernel"],
526 SetupMetaDataForStreamCfg(
529 AcceptAlgs=[
"EGAM12Kernel"],
531 MetadataCategory.CutFlowMetaData,
532 MetadataCategory.TruthMetaData,