28 """Configure the EGAM2 skimming tool"""
29 acc = ComponentAccumulator()
35 "(count(EGAM2_DiElectronMass1 > 1.0*GeV && "
36 +
"EGAM2_DiElectronMass1 < 5.0*GeV)>=1)"
39 "(count(EGAM2_DiElectronMass2 > 1.0*GeV && "
40 +
"EGAM2_DiElectronMass2 < 6.0*GeV)>=1)"
42 expression = expression_calib +
" || " + expression_TP
43 print(
"EGAM2 offline skimming expression: ", expression)
45 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
46 xAODStringSkimmingToolCfg)
47 EGAM2_OfflineSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
48 flags, name =
"EGAM2_OfflineSkimmingTool", expression = expression))
49 skimmingTools += [EGAM2_OfflineSkimmingTool]
53 if flags.Trigger.EDMVersion == 2:
55 elif flags.Trigger.EDMVersion == 3:
60 triggers = JPsiTriggers[MenuType]
61 print(
"Input trigger stream is: ", flags.Input.TriggerStream)
62 if flags.Input.TriggerStream
in (
"physics_BphysDelayed",
"BphysLS")
or flags.Input.isMC:
63 triggers += JPsiDelayedTriggers[MenuType]
64 if MenuType ==
"Run2":
65 triggersHLTonly = triggers
66 print(
"EGAM2 trigger skimming list (OR): ", triggers)
68 EGAM2_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
70 name=
"EGAM2_TriggerSkimmingTool", TriggerListOR=triggers, TriggerListORHLTOnly=triggersHLTonly
72 acc.addPublicTool(EGAM2_TriggerSkimmingTool)
73 skimmingTools += [EGAM2_TriggerSkimmingTool]
76 print(
"EGAM2 skimming is logical OR of previous selections")
77 EGAM2_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
78 name=
"EGAM2_SkimmingTool",
79 FilterList=skimmingTools,
82 acc.addPublicTool(EGAM2_SkimmingTool, primary=
True)
163 """Configure the derivation framework driving algorithm (kernel)
165 acc = ComponentAccumulator()
168 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
171 PhysCommonAugmentationsCfg(
172 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
177 augmentationTools = []
183 acc.addPublicTool(EGAM2JpsieeMassTool1)
184 augmentationTools.append(EGAM2JpsieeMassTool1)
187 acc.addPublicTool(EGAM2JpsieeMassTool2)
188 augmentationTools.append(EGAM2JpsieeMassTool2)
193 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
194 CaloDecoratorKernelCfg,
197 acc.merge(CaloDecoratorKernelCfg(flags))
201 streamName = kwargs[
"StreamName"]
204 if flags.Derivation.Egamma.doTrackThinning:
205 from DerivationFrameworkInDet.InDetToolsConfig
import (
206 TrackParticleThinningCfg,
207 MuonTrackParticleThinningCfg,
208 TauTrackParticleThinningCfg,
211 TrackThinningKeepElectronTracks =
True
212 TrackThinningKeepPhotonTracks =
True
213 TrackThinningKeepAllElectronTracks =
False
214 TrackThinningKeepJetTracks =
False
215 TrackThinningKeepMuonTracks =
False
216 TrackThinningKeepTauTracks =
False
217 TrackThinningKeepPVTracks =
False
220 if TrackThinningKeepElectronTracks:
221 EGAM2ElectronTPThinningTool = (
222 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
223 name=
"EGAM2ElectronTPThinningTool",
224 StreamName=streamName,
226 GSFTrackParticlesKey=
"GSFTrackParticles",
227 InDetTrackParticlesKey=
"InDetTrackParticles",
228 SelectionString=
"Electrons.pt > 0*GeV",
233 acc.addPublicTool(EGAM2ElectronTPThinningTool)
234 thinningTools.append(EGAM2ElectronTPThinningTool)
238 if TrackThinningKeepAllElectronTracks:
239 EGAM2ElectronTPThinningTool2 = (
240 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
241 name=
"EGAM2ElectronTPThinningTool2",
242 StreamName=streamName,
244 GSFTrackParticlesKey=
"GSFTrackParticles",
245 InDetTrackParticlesKey=
"InDetTrackParticles",
246 SelectionString=
"Electrons.pt > 4*GeV",
251 acc.addPublicTool(EGAM2ElectronTPThinningTool2)
252 thinningTools.append(EGAM2ElectronTPThinningTool2)
255 if TrackThinningKeepPhotonTracks:
256 EGAM2PhotonTPThinningTool = (
257 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
258 name=
"EGAM2PhotonTPThinningTool",
259 StreamName=streamName,
261 GSFTrackParticlesKey=
"GSFTrackParticles",
262 InDetTrackParticlesKey=
"InDetTrackParticles",
263 GSFConversionVerticesKey=
"GSFConversionVertices",
264 SelectionString=
"Photons.pt > 0*GeV",
269 acc.addPublicTool(EGAM2PhotonTPThinningTool)
270 thinningTools.append(EGAM2PhotonTPThinningTool)
273 if TrackThinningKeepJetTracks:
274 EGAM2JetTPThinningTool = (
275 CompFactory.DerivationFramework.JetTrackParticleThinning(
276 name=
"EGAM2JetTPThinningTool",
277 StreamName=streamName,
278 JetKey=
"AntiKt4EMPFlowJets",
279 InDetTrackParticlesKey=
"InDetTrackParticles",
282 acc.addPublicTool(EGAM2JetTPThinningTool)
283 thinningTools.append(EGAM2JetTPThinningTool)
286 if TrackThinningKeepMuonTracks:
287 EGAM2MuonTPThinningTool = acc.getPrimaryAndMerge(
288 MuonTrackParticleThinningCfg(
290 name=
"EGAM2MuonTPThinningTool",
291 StreamName=streamName,
293 InDetTrackParticlesKey=
"InDetTrackParticles",
296 thinningTools.append(EGAM2MuonTPThinningTool)
299 if TrackThinningKeepTauTracks:
300 EGAM2TauTPThinningTool = acc.getPrimaryAndMerge(
301 TauTrackParticleThinningCfg(
303 name=
"EGAM2TauTPThinningTool",
304 StreamName=streamName,
307 InDetTrackParticlesKey=
"InDetTrackParticles",
308 DoTauTracksThinning=
True,
309 TauTracksKey=
"TauTracks",
312 thinningTools.append(EGAM2TauTPThinningTool)
315 thinning_expression =
" && ".join(
317 "(InDetTrackParticles.DFCommonTightPrimary)",
318 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
319 "(InDetTrackParticles.pt > 10*GeV)",
322 if TrackThinningKeepPVTracks:
323 EGAM2TPThinningTool = acc.getPrimaryAndMerge(
324 TrackParticleThinningCfg(
326 name=
"EGAM2TPThinningTool",
327 StreamName=streamName,
328 SelectionString=thinning_expression,
329 InDetTrackParticlesKey=
"InDetTrackParticles",
332 thinningTools.append(EGAM2TPThinningTool)
339 CompFactory.DerivationFramework.DerivationKernel(
341 SkimmingTools=[skimmingTool],
342 AugmentationTools=augmentationTools,
343 ThinningTools=thinningTools,
351 acc = ComponentAccumulator()
360 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
362 EGAM2TriggerListsHelper = TriggerListsHelper(flags)
369 StreamName=
"StreamDAOD_EGAM2",
370 TriggerListsHelper=EGAM2TriggerListsHelper,
375 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
376 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
377 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
380 "EGAM2SlimmingHelper",
381 NamesAndTypes=flags.Input.TypedCollections,
390 EGAM2SlimmingHelper.AllVariables = [
398 if flags.Trigger.EDMVersion == 2:
400 elif flags.Trigger.EDMVersion == 3:
404 EGAM2SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
405 EGAM2SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
409 EGAM2SlimmingHelper.AllVariables += [
413 "egammaTruthParticles",
426 EGAM2SlimmingHelper.SmartCollections = [
431 "InDetTrackParticles",
433 "AntiKt4EMPFlowJets",
434 "MET_Baseline_AntiKt4EMPFlow",
438 EGAM2SlimmingHelper.SmartCollections += [
440 "AntiKt4TruthDressedWZJets",
446 EGAM2SlimmingHelper.ExtraVariables += [
447 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
451 EGAM2SlimmingHelper.ExtraVariables += [
452 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
453 "GSFConversionVertices.trackParticleLinks",
457 EGAM2SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
460 EGAM2SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
463 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
465 getClusterEnergyPerLayerDecorations,
468 gainDecorations = getGainDecorations(acc, flags,
"EGAM2Kernel")
469 print(
"EGAM2 gain decorations: ", gainDecorations)
470 EGAM2SlimmingHelper.ExtraVariables.extend(gainDecorations)
471 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM2Kernel")
472 print(
"EGAM2 cluster energy decorations: ", clusterEnergyDecorations)
473 EGAM2SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
476 EGAM2SlimmingHelper.ExtraVariables += [
477 "TopoClusterIsoCentralEventShape.Density",
478 "TopoClusterIsoForwardEventShape.Density",
479 "NeutralParticleFlowIsoCentralEventShape.Density",
480 "NeutralParticleFlowIsoForwardEventShape.Density",
485 EGAM2SlimmingHelper.ExtraVariables += [
486 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthClassification.truthOrigin.truthType"
489 EGAM2SlimmingHelper.ExtraVariables += [
490 "Photons.truthClassification.truthOrigin.truthType.truthParticleLink"
494 if flags.Derivation.Egamma.doEventInfoSlimming:
495 EGAM2SlimmingHelper.SmartCollections.append(
"EventInfo")
497 EGAM2SlimmingHelper.AllVariables += [
"EventInfo"]
500 EGAM2SlimmingHelper.IncludeEGammaTriggerContent =
True
504 if flags.Trigger.EDMVersion == 2:
505 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
506 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM2SlimmingHelper,
507 OutputContainerPrefix =
"TrigMatch_",
508 TriggerList = EGAM2TriggerListsHelper.Run2TriggerNamesNoTau)
513 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
514 TriggerMatchingCommonRun2Cfg
516 EGAM2TrigMatchList = [
517 "HLT_e5_lhtight_nod0",
518 "HLT_e9_lhtight_nod0",
519 "HLT_e14_lhtight_nod0",
521 acc.merge(TriggerMatchingCommonRun2Cfg(
523 name=
"EGAM2TrigMatch",
524 OutputContainerPrefix=
"TrigMatch_",
525 ChainNames=EGAM2TrigMatchList)
527 AddRun2TriggerMatchingToSlimmingHelper(
528 SlimmingHelper=EGAM2SlimmingHelper,
529 OutputContainerPrefix=
"TrigMatch_",
530 TriggerList=EGAM2TrigMatchList
534 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
535 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
536 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM2SlimmingHelper)
539 EGAM2ItemList = EGAM2SlimmingHelper.GetItemList()
544 ItemList=EGAM2ItemList,
545 AcceptAlgs=[
"EGAM2Kernel"],
549 SetupMetaDataForStreamCfg(
552 AcceptAlgs=[
"EGAM2Kernel"],
554 MetadataCategory.CutFlowMetaData,
555 MetadataCategory.TruthMetaData,