29 """Configure the EGAM2 skimming tool"""
30 acc = ComponentAccumulator()
36 "(count(EGAM2_DiElectronMass1 > 1.0*GeV && "
37 +
"EGAM2_DiElectronMass1 < 5.0*GeV)>=1)"
40 "(count(EGAM2_DiElectronMass2 > 1.0*GeV && "
41 +
"EGAM2_DiElectronMass2 < 6.0*GeV)>=1)"
43 expression = expression_calib +
" || " + expression_TP
44 print(
"EGAM2 offline skimming expression: ", expression)
46 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
47 xAODStringSkimmingToolCfg)
48 EGAM2_OfflineSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
49 flags, name =
"EGAM2_OfflineSkimmingTool", expression = expression))
50 skimmingTools += [EGAM2_OfflineSkimmingTool]
54 if flags.Trigger.EDMVersion == 2:
56 elif flags.Trigger.EDMVersion == 3:
61 triggers = list(JPsiTriggers[MenuType])
62 print(
"Input trigger stream is: ", flags.Input.TriggerStream)
63 if flags.Input.TriggerStream
in (
"physics_BphysDelayed",
"BphysLS")
or flags.Input.isMC:
64 triggers += JPsiDelayedTriggers[MenuType]
65 if MenuType ==
"Run2":
66 triggersHLTonly = triggers
67 print(
"EGAM2 trigger skimming list (OR): ", triggers)
69 EGAM2_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
71 name=
"EGAM2_TriggerSkimmingTool", TriggerListOR=triggers, TriggerListORHLTOnly=triggersHLTonly
73 acc.addPublicTool(EGAM2_TriggerSkimmingTool)
74 skimmingTools += [EGAM2_TriggerSkimmingTool]
77 print(
"EGAM2 skimming is logical OR of previous selections")
78 EGAM2_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
79 name=
"EGAM2_SkimmingTool",
80 FilterList=skimmingTools,
83 acc.addPublicTool(EGAM2_SkimmingTool, primary=
True)
164 """Configure the derivation framework driving algorithm (kernel)
166 acc = ComponentAccumulator()
169 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
172 PhysCommonAugmentationsCfg(
173 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
178 augmentationTools = []
184 acc.addPublicTool(EGAM2JpsieeMassTool1)
185 augmentationTools.append(EGAM2JpsieeMassTool1)
188 acc.addPublicTool(EGAM2JpsieeMassTool2)
189 augmentationTools.append(EGAM2JpsieeMassTool2)
194 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
195 CaloDecoratorKernelCfg,
198 acc.merge(CaloDecoratorKernelCfg(flags))
202 streamName = kwargs[
"StreamName"]
205 if flags.Derivation.Egamma.doTrackThinning:
206 from DerivationFrameworkInDet.InDetToolsConfig
import (
207 TrackParticleThinningCfg,
208 MuonTrackParticleThinningCfg,
209 TauTrackParticleThinningCfg,
212 TrackThinningKeepElectronTracks =
True
213 TrackThinningKeepPhotonTracks =
True
214 TrackThinningKeepAllElectronTracks =
False
215 TrackThinningKeepJetTracks =
False
216 TrackThinningKeepMuonTracks =
False
217 TrackThinningKeepTauTracks =
False
218 TrackThinningKeepPVTracks =
False
221 if TrackThinningKeepElectronTracks:
222 EGAM2ElectronTPThinningTool = (
223 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
224 name=
"EGAM2ElectronTPThinningTool",
225 StreamName=streamName,
227 GSFTrackParticlesKey=
"GSFTrackParticles",
228 InDetTrackParticlesKey=
"InDetTrackParticles",
229 SelectionString=
"Electrons.pt > 0*GeV",
234 acc.addPublicTool(EGAM2ElectronTPThinningTool)
235 thinningTools.append(EGAM2ElectronTPThinningTool)
239 if TrackThinningKeepAllElectronTracks:
240 EGAM2ElectronTPThinningTool2 = (
241 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
242 name=
"EGAM2ElectronTPThinningTool2",
243 StreamName=streamName,
245 GSFTrackParticlesKey=
"GSFTrackParticles",
246 InDetTrackParticlesKey=
"InDetTrackParticles",
247 SelectionString=
"Electrons.pt > 4*GeV",
252 acc.addPublicTool(EGAM2ElectronTPThinningTool2)
253 thinningTools.append(EGAM2ElectronTPThinningTool2)
256 if TrackThinningKeepPhotonTracks:
257 EGAM2PhotonTPThinningTool = (
258 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
259 name=
"EGAM2PhotonTPThinningTool",
260 StreamName=streamName,
262 GSFTrackParticlesKey=
"GSFTrackParticles",
263 InDetTrackParticlesKey=
"InDetTrackParticles",
264 GSFConversionVerticesKey=
"GSFConversionVertices",
265 SelectionString=
"Photons.pt > 0*GeV",
270 acc.addPublicTool(EGAM2PhotonTPThinningTool)
271 thinningTools.append(EGAM2PhotonTPThinningTool)
274 if TrackThinningKeepJetTracks:
275 EGAM2JetTPThinningTool = (
276 CompFactory.DerivationFramework.JetTrackParticleThinning(
277 name=
"EGAM2JetTPThinningTool",
278 StreamName=streamName,
279 JetKey=
"AntiKt4EMPFlowJets",
280 InDetTrackParticlesKey=
"InDetTrackParticles",
283 acc.addPublicTool(EGAM2JetTPThinningTool)
284 thinningTools.append(EGAM2JetTPThinningTool)
287 if TrackThinningKeepMuonTracks:
288 EGAM2MuonTPThinningTool = acc.getPrimaryAndMerge(
289 MuonTrackParticleThinningCfg(
291 name=
"EGAM2MuonTPThinningTool",
292 StreamName=streamName,
294 InDetTrackParticlesKey=
"InDetTrackParticles",
297 thinningTools.append(EGAM2MuonTPThinningTool)
300 if TrackThinningKeepTauTracks:
301 EGAM2TauTPThinningTool = acc.getPrimaryAndMerge(
302 TauTrackParticleThinningCfg(
304 name=
"EGAM2TauTPThinningTool",
305 StreamName=streamName,
308 InDetTrackParticlesKey=
"InDetTrackParticles",
309 DoTauTracksThinning=
True,
310 TauTracksKey=
"TauTracks",
313 thinningTools.append(EGAM2TauTPThinningTool)
316 thinning_expression =
" && ".join(
318 "(InDetTrackParticles.DFCommonTightPrimary)",
319 "(abs(InDetTrackParticles.DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
320 "(InDetTrackParticles.pt > 10*GeV)",
323 if TrackThinningKeepPVTracks:
324 EGAM2TPThinningTool = acc.getPrimaryAndMerge(
325 TrackParticleThinningCfg(
327 name=
"EGAM2TPThinningTool",
328 StreamName=streamName,
329 SelectionString=thinning_expression,
330 InDetTrackParticlesKey=
"InDetTrackParticles",
333 thinningTools.append(EGAM2TPThinningTool)
340 CompFactory.DerivationFramework.DerivationKernel(
342 SkimmingTools=[skimmingTool],
343 AugmentationTools=augmentationTools,
344 ThinningTools=thinningTools,
352 acc = ComponentAccumulator()
361 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
363 EGAM2TriggerListsHelper = TriggerListsHelper(flags)
370 StreamName=
"StreamDAOD_EGAM2",
371 TriggerListsHelper=EGAM2TriggerListsHelper,
376 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
377 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
378 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
381 "EGAM2SlimmingHelper",
382 NamesAndTypes=flags.Input.TypedCollections,
391 EGAM2SlimmingHelper.AllVariables = [
399 if flags.Trigger.EDMVersion == 2:
401 elif flags.Trigger.EDMVersion == 3:
405 EGAM2SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
406 EGAM2SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
409 EGAM2SlimmingHelper.AllVariables += ExtraContainersJPsiElectronTrigger[MenuType]
413 EGAM2SlimmingHelper.AllVariables += [
417 "egammaTruthParticles",
430 EGAM2SlimmingHelper.SmartCollections = [
435 "InDetTrackParticles",
437 "AntiKt4EMPFlowJets",
438 "MET_Baseline_AntiKt4EMPFlow",
442 EGAM2SlimmingHelper.SmartCollections += [
444 "AntiKt4TruthDressedWZJets",
450 EGAM2SlimmingHelper.ExtraVariables += [
451 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
455 EGAM2SlimmingHelper.ExtraVariables += [
456 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
457 "GSFConversionVertices.trackParticleLinks",
461 EGAM2SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
464 EGAM2SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
467 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
469 getClusterEnergyPerLayerDecorations,
472 gainDecorations = getGainDecorations(acc, flags,
"EGAM2Kernel")
473 print(
"EGAM2 gain decorations: ", gainDecorations)
474 EGAM2SlimmingHelper.ExtraVariables.extend(gainDecorations)
475 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM2Kernel")
476 print(
"EGAM2 cluster energy decorations: ", clusterEnergyDecorations)
477 EGAM2SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
480 EGAM2SlimmingHelper.ExtraVariables += [
481 "TopoClusterIsoCentralEventShape.Density",
482 "TopoClusterIsoForwardEventShape.Density",
483 "NeutralParticleFlowIsoCentralEventShape.Density",
484 "NeutralParticleFlowIsoForwardEventShape.Density",
489 EGAM2SlimmingHelper.ExtraVariables += [
490 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
493 EGAM2SlimmingHelper.ExtraVariables += [
494 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
498 if flags.Derivation.Egamma.doEventInfoSlimming:
499 EGAM2SlimmingHelper.SmartCollections.append(
"EventInfo")
501 EGAM2SlimmingHelper.AllVariables += [
"EventInfo"]
504 EGAM2SlimmingHelper.IncludeEGammaTriggerContent =
True
508 if flags.Trigger.EDMVersion == 2:
509 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
510 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM2SlimmingHelper,
511 OutputContainerPrefix =
"TrigMatch_",
512 TriggerList = EGAM2TriggerListsHelper.Run2TriggerNamesNoTau)
517 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
518 TriggerMatchingCommonRun2Cfg
520 EGAM2TrigMatchList = [
521 "HLT_e5_lhtight_nod0",
522 "HLT_e9_lhtight_nod0",
523 "HLT_e14_lhtight_nod0",
525 acc.merge(TriggerMatchingCommonRun2Cfg(
527 name=
"EGAM2TrigMatch",
528 OutputContainerPrefix=
"TrigMatch_",
529 ChainNames=EGAM2TrigMatchList)
531 AddRun2TriggerMatchingToSlimmingHelper(
532 SlimmingHelper=EGAM2SlimmingHelper,
533 OutputContainerPrefix=
"TrigMatch_",
534 TriggerList=EGAM2TrigMatchList
538 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
539 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
540 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM2SlimmingHelper)
543 EGAM2ItemList = EGAM2SlimmingHelper.GetItemList()
548 ItemList=EGAM2ItemList,
549 AcceptAlgs=[
"EGAM2Kernel"],
553 SetupMetaDataForStreamCfg(
556 AcceptAlgs=[
"EGAM2Kernel"],
558 MetadataCategory.CutFlowMetaData,
559 MetadataCategory.TruthMetaData,