9 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
10 from AthenaConfiguration.ComponentFactory
import CompFactory
11 from AthenaConfiguration.Enums
import MetadataCategory
15 from DerivationFrameworkEGamma.ElectronsCPDetailedContent
import (
16 ElectronsCPDetailedContent,
17 GSFTracksCPDetailedContent,
20 from DerivationFrameworkEGamma.TriggerContent
import (
21 ExtraContainersTrigger,
22 ExtraContainersPhotonTrigger,
23 ExtraContainersElectronTrigger,
24 ExtraContainersTriggerDataOnly,
25 ExtraVariablesHLTPhotons,
30 """Configure the EGAM3 skimming tool"""
34 expression1a =
" && ".
join(
36 "(count(DFCommonPhotons_et>9.5*GeV)>=1)",
37 "(count(EGAM3_DiElectronMass1 > 40.0*GeV)>=1)",
40 expression1b =
" && ".
join(
42 "(count(Electrons.pt>9.5*GeV)>=3)",
43 "(count(EGAM3_DiElectronMass1 > 40.0*GeV)>=1)",
48 expression2 =
" && ".
join(
50 "(count(DFCommonPhotons_et>9.5*GeV && "
51 +
"Photons.DFCommonPhotonsIsEMTight)>=1)",
52 "(count(EGAM3_DiElectronMass2 > 40.0*GeV)>=1)",
57 expression3 =
" && ".
join(
59 "(count(DFCommonPhotons_et>9.5*GeV && "
60 +
"Photons.DFCommonPhotonsIsEMTight)>=1)",
61 "(count(EGAM3_DiElectronMass3 > 40.0*GeV)>=1)",
80 print(
"EGAM3 skimming expression: ", expression)
83 CompFactory.DerivationFramework.xAODStringSkimmingTool(
84 name=
"EGAM3SkimmingTool", expression=expression
92 """Configure the EGAM3 ee invariant mass augmentation tool 1"""
106 requirementElectrons =
" && ".
join(
107 [
"(Electrons.DFCommonElectronsLHMedium)",
"(Electrons.pt > 9.5*GeV)"]
111 CompFactory.DerivationFramework.EGInvariantMassTool(
112 name=
"EGAM3_EEMassTool11",
113 Object1Requirements=requirementElectrons,
114 Object2Requirements=requirementElectrons,
115 StoreGateEntryName=
"EGAM3_DiElectronMass1",
116 Mass1Hypothesis=0.511 * MeV,
117 Mass2Hypothesis=0.511 * MeV,
118 Container1Name=
"Electrons",
119 Container2Name=
"Electrons",
121 DoTransverseMass=
False,
130 """Configure the EGAM3 ee invariant mass augmentation tool 2"""
144 requirementElectron1 =
" && ".
join(
145 [
"(Electrons.DFCommonElectronsLHTight)",
"(Electrons.pt > 24.5*GeV)"]
147 requirementElectron2 =
"(Electrons.pt > 6.5*GeV)"
150 CompFactory.DerivationFramework.EGInvariantMassTool(
151 name=
"EGAM3_ZEEMassTool2",
152 Object1Requirements=requirementElectron1,
153 Object2Requirements=requirementElectron2,
154 StoreGateEntryName=
"EGAM3_DiElectronMass2",
155 Mass1Hypothesis=0.511 * MeV,
156 Mass2Hypothesis=0.511 * MeV,
157 Container1Name=
"Electrons",
158 Container2Name=
"Electrons",
160 DoTransverseMass=
False,
169 """Configure the EGAM3 ee invariant mass augmentation tool 3"""
179 requirementElectron1 =
" && ".
join(
180 [
"(Electrons.DFCommonElectronsLHTight)",
"(Electrons.pt > 24.5*GeV)"]
182 requirementElectron2 =
"(ForwardElectrons.pt > 6.5*GeV)"
185 CompFactory.DerivationFramework.EGInvariantMassTool(
186 name=
"EGAM3_EEMassTool3",
187 Object1Requirements=requirementElectron1,
188 Object2Requirements=requirementElectron2,
189 StoreGateEntryName=
"EGAM3_DiElectronMass3",
190 Mass1Hypothesis=0.511 * MeV,
191 Mass2Hypothesis=0.511 * MeV,
192 Container1Name=
"Electrons",
193 Container2Name=
"ForwardElectrons",
195 DoTransverseMass=
False,
205 """Configure the derivation framework driving algorithm (kernel)
210 from DerivationFrameworkPhys.PhysCommonConfig
import PhysCommonAugmentationsCfg
214 flags, TriggerListsHelper=kwargs[
"TriggerListsHelper"]
219 augmentationTools = []
225 acc.addPublicTool(EGAM3eeMassTool1)
226 augmentationTools.append(EGAM3eeMassTool1)
229 acc.addPublicTool(EGAM3eeMassTool2)
230 augmentationTools.append(EGAM3eeMassTool2)
233 acc.addPublicTool(EGAM3eeMassTool3)
234 augmentationTools.append(EGAM3eeMassTool3)
239 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
240 CaloDecoratorKernelCfg)
245 streamName = kwargs[
"StreamName"]
248 if flags.Derivation.Egamma.doTrackThinning:
249 from DerivationFrameworkInDet.InDetToolsConfig
import (
250 TrackParticleThinningCfg,
251 MuonTrackParticleThinningCfg,
252 TauTrackParticleThinningCfg,
255 TrackThinningKeepElectronTracks =
True
256 TrackThinningKeepAllElectronTracks =
False
257 TrackThinningKeepPhotonTracks =
True
258 TrackThinningKeepAllPhotonTracks =
True
259 TrackThinningKeepJetTracks =
False
260 TrackThinningKeepMuonTracks =
False
261 TrackThinningKeepTauTracks =
False
262 TrackThinningKeepPVTracks =
True
265 if TrackThinningKeepElectronTracks:
266 EGAM3ElectronTPThinningTool = (
267 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
268 name=
"EGAM3ElectronTPThinningTool",
269 StreamName=streamName,
271 GSFTrackParticlesKey=
"GSFTrackParticles",
272 InDetTrackParticlesKey=
"InDetTrackParticles",
273 SelectionString=
"Electrons.pt > 0*GeV",
278 acc.addPublicTool(EGAM3ElectronTPThinningTool)
279 thinningTools.append(EGAM3ElectronTPThinningTool)
283 if TrackThinningKeepAllElectronTracks:
284 EGAM3ElectronTPThinningTool2 = (
285 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
286 name=
"EGAM3ElectronTPThinningTool2",
287 StreamName=streamName,
289 GSFTrackParticlesKey=
"GSFTrackParticles",
290 InDetTrackParticlesKey=
"InDetTrackParticles",
291 SelectionString=
"Electrons.pt > 4*GeV",
296 acc.addPublicTool(EGAM3ElectronTPThinningTool2)
297 thinningTools.append(EGAM3ElectronTPThinningTool2)
300 if TrackThinningKeepPhotonTracks:
301 EGAM3PhotonTPThinningTool = (
302 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
303 name=
"EGAM3PhotonTPThinningTool",
304 StreamName=streamName,
306 GSFTrackParticlesKey=
"GSFTrackParticles",
307 InDetTrackParticlesKey=
"InDetTrackParticles",
308 GSFConversionVerticesKey=
"GSFConversionVertices",
309 SelectionString=
"Photons.pt > 0*GeV",
314 acc.addPublicTool(EGAM3PhotonTPThinningTool)
315 thinningTools.append(EGAM3PhotonTPThinningTool)
319 if TrackThinningKeepAllPhotonTracks:
320 EGAM3PhotonTPThinningTool2 = (
321 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
322 name=
"EGAM3PhotonTPThinningTool2",
323 StreamName=streamName,
325 GSFTrackParticlesKey=
"GSFTrackParticles",
326 InDetTrackParticlesKey=
"InDetTrackParticles",
327 GSFConversionVerticesKey=
"GSFConversionVertices",
328 SelectionString=
"Photons.pt > 9.5*GeV",
333 acc.addPublicTool(EGAM3PhotonTPThinningTool2)
334 thinningTools.append(EGAM3PhotonTPThinningTool2)
337 if TrackThinningKeepJetTracks:
338 EGAM3JetTPThinningTool = (
339 CompFactory.DerivationFramework.JetTrackParticleThinning(
340 name=
"EGAM3JetTPThinningTool",
341 StreamName=streamName,
342 JetKey=
"AntiKt4EMPFlowJets",
343 InDetTrackParticlesKey=
"InDetTrackParticles",
346 acc.addPublicTool(EGAM3JetTPThinningTool)
347 thinningTools.append(EGAM3JetTPThinningTool)
350 if TrackThinningKeepMuonTracks:
351 EGAM3MuonTPThinningTool = acc.getPrimaryAndMerge(
354 name=
"EGAM3MuonTPThinningTool",
355 StreamName=streamName,
357 InDetTrackParticlesKey=
"InDetTrackParticles",
360 thinningTools.append(EGAM3MuonTPThinningTool)
363 if TrackThinningKeepTauTracks:
364 EGAM3TauTPThinningTool = acc.getPrimaryAndMerge(
367 name=
"EGAM3TauTPThinningTool",
368 StreamName=streamName,
371 InDetTrackParticlesKey=
"InDetTrackParticles",
372 DoTauTracksThinning=
True,
373 TauTracksKey=
"TauTracks",
376 thinningTools.append(EGAM3TauTPThinningTool)
379 thinning_expression =
" && ".
join(
381 "(InDetTrackParticles.DFCommonTightPrimary)",
382 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
383 "(InDetTrackParticles.pt>10*GeV)",
386 if TrackThinningKeepPVTracks:
387 EGAM3TPThinningTool = acc.getPrimaryAndMerge(
390 name=
"EGAM3TPThinningTool",
391 StreamName=streamName,
392 SelectionString=thinning_expression,
393 InDetTrackParticlesKey=
"InDetTrackParticles",
396 thinningTools.append(EGAM3TPThinningTool)
400 acc.addPublicTool(skimmingTool)
404 CompFactory.DerivationFramework.DerivationKernel(
406 SkimmingTools=[skimmingTool],
407 AugmentationTools=augmentationTools,
408 ThinningTools=thinningTools,
424 from DerivationFrameworkPhys.TriggerListsHelper
import TriggerListsHelper
426 EGAM3TriggerListsHelper = TriggerListsHelper(flags)
433 StreamName=
"StreamDAOD_EGAM3",
434 TriggerListsHelper=EGAM3TriggerListsHelper,
439 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
440 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
441 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
444 "EGAM3SlimmingHelper",
445 NamesAndTypes=flags.Input.TypedCollections,
454 EGAM3SlimmingHelper.AllVariables = [
459 "ForwardElectronClusters",
464 if flags.Trigger.EDMVersion == 2:
466 elif flags.Trigger.EDMVersion == 3:
470 EGAM3SlimmingHelper.AllVariables += ExtraContainersTrigger[MenuType]
471 EGAM3SlimmingHelper.AllVariables += ExtraContainersPhotonTrigger[MenuType]
472 EGAM3SlimmingHelper.AllVariables += ExtraContainersElectronTrigger[MenuType]
473 if not flags.Input.isMC:
474 EGAM3SlimmingHelper.AllVariables += ExtraContainersTriggerDataOnly[MenuType]
478 EGAM3SlimmingHelper.AllVariables += [
482 "egammaTruthParticles",
483 "MuonTruthParticles",
494 EGAM3SlimmingHelper.SmartCollections = [
500 "InDetTrackParticles",
501 "AntiKt4EMPFlowJets",
502 "BTagging_AntiKt4EMPFlow",
503 "MET_Baseline_AntiKt4EMPFlow",
506 EGAM3SlimmingHelper.SmartCollections += [
508 "AntiKt4TruthDressedWZJets",
514 EGAM3SlimmingHelper.ExtraVariables += [
"Electrons.Loose.Medium.Tight"]
517 EGAM3SlimmingHelper.ExtraVariables += [
518 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
522 EGAM3SlimmingHelper.ExtraVariables += [
523 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
524 "GSFConversionVertices.trackParticleLinks",
528 EGAM3SlimmingHelper.ExtraVariables += [
"PrimaryVertices.x.y.sumPt2"]
531 EGAM3SlimmingHelper.ExtraVariables += [
532 "TopoClusterIsoCentralEventShape.Density",
533 "TopoClusterIsoForwardEventShape.Density",
534 "NeutralParticleFlowIsoCentralEventShape.Density",
535 "NeutralParticleFlowIsoForwardEventShape.Density",
538 from DerivationFrameworkEGamma
import EGammaIsoConfig
545 ) = EGammaIsoConfig.makeEGammaCommonIsoCfg(flags)
547 EGAM3SlimmingHelper.AppendToDictionary.update(densityDict)
548 EGAM3SlimmingHelper.ExtraVariables += densityList
551 from IsolationAlgs.DerivationTrackIsoConfig
import DerivationTrackIsoCfg
555 flags, object_types=(
"Photons",), ptCuts=(500, 1000), postfix=
"Extra"
560 EGAM3SlimmingHelper.ExtraVariables += ElectronsCPDetailedContent
561 EGAM3SlimmingHelper.ExtraVariables += GSFTracksCPDetailedContent
564 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig
import (
566 getClusterEnergyPerLayerDecorations,
570 print(
"EGAM3 gain decorations: ", gainDecorations)
571 EGAM3SlimmingHelper.ExtraVariables.extend(gainDecorations)
573 print(
"EGAM3 cluster energy decorations: ", clusterEnergyDecorations)
574 EGAM3SlimmingHelper.ExtraVariables.extend(clusterEnergyDecorations)
577 EGAM3SlimmingHelper.ExtraVariables += ExtraVariablesHLTPhotons[MenuType]
581 EGAM3SlimmingHelper.ExtraVariables += [
582 "Electrons.truthOrigin.truthType.truthParticleLink"
586 if flags.Derivation.Egamma.doEventInfoSlimming:
587 EGAM3SlimmingHelper.SmartCollections.append(
"EventInfo")
589 EGAM3SlimmingHelper.AllVariables += [
"EventInfo"]
592 EGAM3SlimmingHelper.IncludeEGammaTriggerContent =
True
596 if flags.Trigger.EDMVersion == 2:
597 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
598 AddRun2TriggerMatchingToSlimmingHelper,
602 SlimmingHelper=EGAM3SlimmingHelper,
603 OutputContainerPrefix=
"TrigMatch_",
604 TriggerList=EGAM3TriggerListsHelper.Run2TriggerNamesNoTau,
607 if flags.Trigger.EDMVersion == 3:
608 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig
import (
609 AddRun3TrigNavSlimmingCollectionsToSlimmingHelper,
614 from DerivationFrameworkPhys.TriggerMatchingCommonConfig
import (
615 AddRun2TriggerMatchingToSlimmingHelper,
619 SlimmingHelper=EGAM3SlimmingHelper,
620 OutputContainerPrefix=
"TrigMatch_",
621 TriggerList=EGAM3TriggerListsHelper.Run3TriggerNamesNoTau,
625 EGAM3SlimmingHelper.StaticContent = [
626 "CaloCellContainer#AllCalo",
627 "CaloClusterCellLinkContainer#egammaClusters_links",
630 EGAM3ItemList = EGAM3SlimmingHelper.GetItemList()
635 ItemList=EGAM3ItemList,
636 AcceptAlgs=[
"EGAM3Kernel"],
643 AcceptAlgs=[
"EGAM3Kernel"],
645 MetadataCategory.CutFlowMetaData,
646 MetadataCategory.TruthMetaData,