27 """Configure the EGAM2 skimming tool"""
28 acc = ComponentAccumulator()
34 "(count(EGAM2_DiElectronMass1 > 1.0*GeV && "
35 +
"EGAM2_DiElectronMass1 < 5.0*GeV)>=1)"
38 "(count(EGAM2_DiElectronMass2 > 1.0*GeV && "
39 +
"EGAM2_DiElectronMass2 < 6.0*GeV)>=1)"
41 expression = expression_calib +
" || " + expression_TP
42 print(
"EGAM2 offline skimming expression: ", expression)
44 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import (
45 xAODStringSkimmingToolCfg)
46 EGAM2_OfflineSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
47 flags, name =
"EGAM2_OfflineSkimmingTool", expression = expression))
48 skimmingTools += [EGAM2_OfflineSkimmingTool]
52 if flags.Trigger.EDMVersion == 2:
54 elif flags.Trigger.EDMVersion == 3:
58 triggers = JPsiTriggers[MenuType]
59 print(
"EGAM2 trigger skimming list (OR): ", triggers)
61 EGAM2_TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool(
62 name=
"EGAM2_TriggerSkimmingTool", TriggerListOR=triggers
64 acc.addPublicTool(EGAM2_TriggerSkimmingTool)
65 skimmingTools += [EGAM2_TriggerSkimmingTool]
68 print(
"EGAM2 skimming is logical OR of previous selections")
69 EGAM2_SkimmingTool = CompFactory.DerivationFramework.FilterCombinationOR(
70 name=
"EGAM2_SkimmingTool",
71 FilterList=skimmingTools,
74 acc.addPublicTool(EGAM2_SkimmingTool, primary=
True)
155 """Configure the derivation framework driving algorithm (kernel)
157 acc = ComponentAccumulator()
160 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
163 PhysCommonAugmentationsCfg(
164 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
169 augmentationTools = []
175 acc.addPublicTool(EGAM2JpsieeMassTool1)
176 augmentationTools.append(EGAM2JpsieeMassTool1)
179 acc.addPublicTool(EGAM2JpsieeMassTool2)
180 augmentationTools.append(EGAM2JpsieeMassTool2)
185 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
186 CaloDecoratorKernelCfg,
189 acc.merge(CaloDecoratorKernelCfg(flags))
193 streamName = kwargs[
"StreamName"]
196 if flags.Derivation.Egamma.doTrackThinning:
197 from DerivationFrameworkInDet.InDetToolsConfig
import (
198 TrackParticleThinningCfg,
199 MuonTrackParticleThinningCfg,
200 TauTrackParticleThinningCfg,
203 TrackThinningKeepElectronTracks =
True
204 TrackThinningKeepPhotonTracks =
True
205 TrackThinningKeepAllElectronTracks =
False
206 TrackThinningKeepJetTracks =
False
207 TrackThinningKeepMuonTracks =
False
208 TrackThinningKeepTauTracks =
False
209 TrackThinningKeepPVTracks =
False
212 if TrackThinningKeepElectronTracks:
213 EGAM2ElectronTPThinningTool = (
214 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
215 name=
"EGAM2ElectronTPThinningTool",
216 StreamName=streamName,
218 GSFTrackParticlesKey=
"GSFTrackParticles",
219 InDetTrackParticlesKey=
"InDetTrackParticles",
220 SelectionString=
"Electrons.pt > 0*GeV",
225 acc.addPublicTool(EGAM2ElectronTPThinningTool)
226 thinningTools.append(EGAM2ElectronTPThinningTool)
230 if TrackThinningKeepAllElectronTracks:
231 EGAM2ElectronTPThinningTool2 = (
232 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
233 name=
"EGAM2ElectronTPThinningTool2",
234 StreamName=streamName,
236 GSFTrackParticlesKey=
"GSFTrackParticles",
237 InDetTrackParticlesKey=
"InDetTrackParticles",
238 SelectionString=
"Electrons.pt > 4*GeV",
243 acc.addPublicTool(EGAM2ElectronTPThinningTool2)
244 thinningTools.append(EGAM2ElectronTPThinningTool2)
247 if TrackThinningKeepPhotonTracks:
248 EGAM2PhotonTPThinningTool = (
249 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
250 name=
"EGAM2PhotonTPThinningTool",
251 StreamName=streamName,
253 GSFTrackParticlesKey=
"GSFTrackParticles",
254 InDetTrackParticlesKey=
"InDetTrackParticles",
255 GSFConversionVerticesKey=
"GSFConversionVertices",
256 SelectionString=
"Photons.pt > 0*GeV",
261 acc.addPublicTool(EGAM2PhotonTPThinningTool)
262 thinningTools.append(EGAM2PhotonTPThinningTool)
265 if TrackThinningKeepJetTracks:
266 EGAM2JetTPThinningTool = (
267 CompFactory.DerivationFramework.JetTrackParticleThinning(
268 name=
"EGAM2JetTPThinningTool",
269 StreamName=streamName,
270 JetKey=
"AntiKt4EMPFlowJets",
271 InDetTrackParticlesKey=
"InDetTrackParticles",
274 acc.addPublicTool(EGAM2JetTPThinningTool)
275 thinningTools.append(EGAM2JetTPThinningTool)
278 if TrackThinningKeepMuonTracks:
279 EGAM2MuonTPThinningTool = acc.getPrimaryAndMerge(
280 MuonTrackParticleThinningCfg(
282 name=
"EGAM2MuonTPThinningTool",
283 StreamName=streamName,
285 InDetTrackParticlesKey=
"InDetTrackParticles",
288 thinningTools.append(EGAM2MuonTPThinningTool)
291 if TrackThinningKeepTauTracks:
292 EGAM2TauTPThinningTool = acc.getPrimaryAndMerge(
293 TauTrackParticleThinningCfg(
295 name=
"EGAM2TauTPThinningTool",
296 StreamName=streamName,
299 InDetTrackParticlesKey=
"InDetTrackParticles",
300 DoTauTracksThinning=
True,
301 TauTracksKey=
"TauTracks",
304 thinningTools.append(EGAM2TauTPThinningTool)
307 thinning_expression =
" && ".join(
309 "(InDetTrackParticles.DFCommonTightPrimary)",
310 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
311 "(InDetTrackParticles.pt > 10*GeV)",
314 if TrackThinningKeepPVTracks:
315 EGAM2TPThinningTool = acc.getPrimaryAndMerge(
316 TrackParticleThinningCfg(
318 name=
"EGAM2TPThinningTool",
319 StreamName=streamName,
320 SelectionString=thinning_expression,
321 InDetTrackParticlesKey=
"InDetTrackParticles",
324 thinningTools.append(EGAM2TPThinningTool)
331 CompFactory.DerivationFramework.DerivationKernel(
333 SkimmingTools=[skimmingTool],
334 AugmentationTools=augmentationTools,
335 ThinningTools=thinningTools,
343 acc = ComponentAccumulator()
352 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
354 EGAM2TriggerListsHelper = TriggerListsHelper(flags)
361 StreamName=
"StreamDAOD_EGAM2",
362 TriggerListsHelper=EGAM2TriggerListsHelper,
367 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
368 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
369 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
372 "EGAM2SlimmingHelper",
373 NamesAndTypes=flags.Input.TypedCollections,
382 EGAM2SlimmingHelper.AllVariables = [
390 if flags.Trigger.EDMVersion == 2:
392 elif flags.Trigger.EDMVersion == 3:
396 EGAM2SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
397 EGAM2SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
401 EGAM2SlimmingHelper.AllVariables += [
405 "egammaTruthParticles",
418 EGAM2SlimmingHelper.SmartCollections = [
423 "InDetTrackParticles",
425 "AntiKt4EMPFlowJets",
426 "MET_Baseline_AntiKt4EMPFlow",
430 EGAM2SlimmingHelper.SmartCollections += [
432 "AntiKt4TruthDressedWZJets",
438 EGAM2SlimmingHelper.ExtraVariables += [
439 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
443 EGAM2SlimmingHelper.ExtraVariables += [
444 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
445 "GSFConversionVertices.trackParticleLinks",
449 EGAM2SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
452 EGAM2SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
455 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
457 getClusterEnergyPerLayerDecorations,
460 gainDecorations = getGainDecorations(acc, flags,
"EGAM2Kernel")
461 print(
"EGAM2 gain decorations: ", gainDecorations)
462 EGAM2SlimmingHelper.ExtraVariables.extend(gainDecorations)
463 clusterEnergyDecorations = getClusterEnergyPerLayerDecorations(acc,
"EGAM2Kernel")
464 print(
"EGAM2 cluster energy decorations: ", clusterEnergyDecorations)
465 EGAM2SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
468 EGAM2SlimmingHelper.ExtraVariables += [
469 "TopoClusterIsoCentralEventShape.Density",
470 "TopoClusterIsoForwardEventShape.Density",
471 "NeutralParticleFlowIsoCentralEventShape.Density",
472 "NeutralParticleFlowIsoForwardEventShape.Density",
477 EGAM2SlimmingHelper.ExtraVariables += [
478 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
481 EGAM2SlimmingHelper.ExtraVariables += [
482 "Photons.truthOrigin.truthType.truthParticleLink"
486 if flags.Derivation.Egamma.doEventInfoSlimming:
487 EGAM2SlimmingHelper.SmartCollections.append(
"EventInfo")
489 EGAM2SlimmingHelper.AllVariables += [
"EventInfo"]
492 EGAM2SlimmingHelper.IncludeEGammaTriggerContent =
True
496 if flags.Trigger.EDMVersion == 2:
497 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import AddRun2TriggerMatchingToSlimmingHelper
498 AddRun2TriggerMatchingToSlimmingHelper(SlimmingHelper = EGAM2SlimmingHelper,
499 OutputContainerPrefix =
"TrigMatch_",
500 TriggerList = EGAM2TriggerListsHelper.Run2TriggerNamesNoTau)
505 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
506 TriggerMatchingCommonRun2Cfg
508 EGAM2TrigMatchList = [
509 "HLT_e5_lhtight_nod0",
510 "HLT_e9_lhtight_nod0",
511 "HLT_e14_lhtight_nod0",
513 acc.merge(TriggerMatchingCommonRun2Cfg(
515 name=
"EGAM2TrigMatch",
516 OutputContainerPrefix=
"TrigMatch_",
517 ChainNames=EGAM2TrigMatchList)
519 AddRun2TriggerMatchingToSlimmingHelper(
520 SlimmingHelper=EGAM2SlimmingHelper,
521 OutputContainerPrefix=
"TrigMatch_",
522 TriggerList=EGAM2TrigMatchList
526 if flags.Trigger.EDMVersion == 3
or (flags.Trigger.EDMVersion == 2
and flags.Trigger.doEDMVersionConversion):
527 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
528 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(EGAM2SlimmingHelper)
531 EGAM2ItemList = EGAM2SlimmingHelper.GetItemList()
536 ItemList=EGAM2ItemList,
537 AcceptAlgs=[
"EGAM2Kernel"],
541 SetupMetaDataForStreamCfg(
544 AcceptAlgs=[
"EGAM2Kernel"],
546 MetadataCategory.CutFlowMetaData,
547 MetadataCategory.TruthMetaData,