ATLAS Offline Software
Loading...
Searching...
No Matches
HION4.py
Go to the documentation of this file.
1# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2# HION4.py
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import MetadataCategory
7from AthenaCommon.CFElements import seqAND
8
9
12 """Configure the example skimming tool"""
13 acc = ComponentAccumulator()
14
15 ExtraData = []
16 ExtraData += ['xAOD::MuonContainer/Muons']
17 ExtraData += ['xAOD::ElectronContainer/Electrons']
18 ExtraData += ['xAOD::PhotonContainer/Photons']
19 ExtraData += ['xAOD::TrackParticleContainer/InDetTrackParticles']
20
21 acc.addSequence( seqAND("HION4Sequence") )
22 acc.getSequence("HION4Sequence").ExtraDataForDynamicConsumers = ExtraData
23 acc.getSequence("HION4Sequence").ProcessDynamicDataDependencies = True
24
25 muonsRequirements = '(Muons.pt >= 2.0*GeV) && (abs(Muons.eta) < 2.6)'
26 muonOnlySelection = 'count('+muonsRequirements+') >= 1'
27
28 electronsRequirements = '(Electrons.pt > 1.5*GeV) && (abs(Electrons.eta) < 2.6)'
29 electronOnlySelection = 'count('+electronsRequirements+') >= 1'
30
31 photonsRequirements = '(Photons.pt >= 1.5*GeV)'
32 photonOnlySelection = 'count('+photonsRequirements+') >=2'
33
34 electronPhotonSelection = '(count('+electronsRequirements+') + count('+photonsRequirements+')) >= 2'
35
36 trackRequirements = '(InDetTrackParticles.pt >= 0.2*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
37 trackOnlySelection = '( count('+trackRequirements+') >= 2 && 5 >= count('+trackRequirements+') )'
38
39 tightTrackRequirements = '(InDetTrackParticles.pt >= 1*GeV) && (abs(InDetTrackParticles.eta) < 2.5)'
40 tightTrackOnlySelection = '( count('+tightTrackRequirements+') == 2 )'
41
42 objectSelection = '('+muonOnlySelection+' || '+electronOnlySelection+' || '+photonOnlySelection+' || '+electronPhotonSelection+' || '+trackOnlySelection+')'
43
44 if flags.Trigger.EDMVersion != -1: # Only for files with trigger payload
45 from DerivationFrameworkHI import ListTriggers
46 VMtrigger=ListTriggers.HION4SkimmingTriggersVM()
47 triggers=ListTriggers.HION4SkimmingTriggersALL()
48 expression = '( (' + ' || '.join(triggers) + ') && '+objectSelection+') || ( '+ ' || '.join(VMtrigger)+ ' && '+tightTrackOnlySelection+')'
49 else:
50 expression = '( '+objectSelection+' ) || ( '+tightTrackOnlySelection+' )'
51
52 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import (
53 xAODStringSkimmingToolCfg)
54 acc.addPublicTool(acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(
55 flags, name = "HION4StringSkimmingTool", expression = expression)), primary = True)
56
57 return(acc)
58
60 """Configure the example augmentation tool"""
61 acc = ComponentAccumulator()
62 acc.addPublicTool(CompFactory.DerivationFramework.AugmentationDeltaPoverP(name = "HION4AugmentationTool"),
63 primary = True)
64 return(acc)
65
66
67def HION4KernelCfg(flags, name='HION4Kernel', **kwargs):
68 """Configure the derivation framework driving algorithm (kernel)"""
69 acc = ComponentAccumulator()
70
71 skimmingTool = acc.getPrimaryAndMerge(HION4SkimmingToolCfg(flags))
72 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(name, SkimmingTools = [skimmingTool]),
73 sequenceName="HION4Sequence")
74 return acc
75
76
77def HION4Cfg(flags):
78
79 acc = ComponentAccumulator()
80 acc.merge(HION4KernelCfg(flags, name="HION4Kernel",StreamName = "StreamDAOD_HION4"))
81
82 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
83 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
84 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
85
86
88 from DerivationFrameworkHI import ListSlimming
89
90 HION4SlimmingHelper = SlimmingHelper("HION4SlimmingHelper", NamesAndTypes = flags.Input.TypedCollections, flags = flags)
91
92 AllVariables = []
93 AllVariables += ListSlimming.HION4ExtraContainersElectrons()
94 AllVariables += ListSlimming.HION4ExtraContainersTrigger()
95 AllVariables += ListSlimming.HION4AllVariablesGeneral()
96
97 HION4SlimmingHelper.SmartCollections = ListSlimming.HION4SmartCollections()
98 HION4SlimmingHelper.ExtraVariables = ListSlimming.HION4ExtraContentAll()
99 HION4SlimmingHelper.AllVariables = AllVariables
100
101 # Add egamma trigger objects
102 HION4SlimmingHelper.IncludeEGammaTriggerContent = True
103 # Add muon trigger objects
104 HION4SlimmingHelper.IncludeMuonTriggerContent = True
105
106 HION4ItemList = HION4SlimmingHelper.GetItemList()
107
108 acc.merge(OutputStreamCfg(flags, "DAOD_HION4", ItemList=HION4ItemList, AcceptAlgs=["HION4Kernel"]))
109 acc.merge(SetupMetaDataForStreamCfg(flags, "DAOD_HION4", AcceptAlgs=["HION4Kernel"], createMetadata=[MetadataCategory.CutFlowMetaData]))
110
111 return acc
HION4KernelCfg(flags, name='HION4Kernel', **kwargs)
Definition HION4.py:67
HION4SkimmingToolCfg(flags)
Skiming.
Definition HION4.py:11
HION4AugmentationToolCfg(flags)
Definition HION4.py:59
HION4Cfg(flags)
Definition HION4.py:77