ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
AthenaRoot
AthenaRootComps
python
xAODEventSelectorConfig.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2
3
# @file xAODHybridSelectorConfig
4
# @purpose make the Athena framework read a set of xAOD files to emulate the
5
# usual TEvent event loop ... BUT READ METADATA WITH POOL!
6
# @author Teng Jian Khoo
7
#
8
9
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
10
from
AthenaConfiguration.ComponentFactory
import
CompFactory
11
from
AthenaCommon
import
Logging
12
from
AthenaCommon
import
Constants
13
from
AthenaServices.MetaDataSvcConfig
import
MetaDataSvcCfg
14
from
enum
import
IntEnum
15
16
# Duplicate here because it's probably more efficient than importing from ROOT
17
class
xAODAccessMode
(IntEnum):
18
BRANCH_ACCESS = 0
19
CLASS_ACCESS = 1
20
ATHENA_ACCESS = 2
21
22
# Default to the most efficient access method
23
def
xAODReadCfg
(flags, AccessMode=xAODAccessMode.CLASS_ACCESS):
24
"""
25
Creates a ComponentAccumulator instance containing the
26
athena services required for xAOD file reading
27
"""
28
29
msg = Logging.logging.getLogger(
'xAODReadCfg'
)
30
msg.debug(
"Configuring Athena for reading xAOD files (via TEvent, with POOL for Metadata)..."
)
31
32
33
result=ComponentAccumulator()
34
35
result.addService(CompFactory.EvtPersistencySvc(
"EventPersistencySvc"
,))
#No service handle yet???
36
result.merge(MetaDataSvcCfg(flags))
37
38
result.addService(CompFactory.StoreGateSvc(
"MetaDataStore"
))
39
# Suppress some uninformative messages
40
result.addService(CompFactory.PoolSvc(
"PoolSvc"
,OutputLevel=Constants.WARNING))
41
42
# result.addService(CompFactory.THistSvc())
43
result.addService(CompFactory.Athena.xAODCnvSvc())
44
45
result.addService(CompFactory.ProxyProviderSvc(
"ProxyProviderSvc"
,ProviderNames=[
"MetaDataSvc"
]))
46
result.addService(
47
CompFactory.Athena.xAODEventSelector(
48
name=
'EventSelector'
,
49
InputCollections=flags.Input.Files,
50
SkipEvents=flags.Exec.SkipEvents,
51
AccessMode=AccessMode,
52
ReadMetaDataWithPool=
True
,
53
printEventProxyWarnings=
False
,
54
))
55
evSel = result.getService(
"EventSelector"
)
56
57
result.setAppProperty(
"EvtSel"
,evSel.getFullJobOptName())
58
59
msg.debug(
"Configuring Athena for reading ROOT files (via TEvent, with POOL for Metadata)... [OK]"
)
60
61
return
result
62
63
64
65
if
__name__==
"__main__"
:
66
from
AthenaConfiguration.AllConfigFlags
import
initConfigFlags
67
import
os
68
asg_test_file_mc = os.environ[
'ASG_TEST_FILE_MC'
]
69
flags = initConfigFlags()
70
flags.Input.Files=[asg_test_file_mc]
71
72
import
sys
73
if
len(sys.argv)>1:
74
flags.Input.Files=[sys.argv[1]]
75
flags.lock()
76
77
AccessMode = xAODAccessMode.CLASS_ACCESS
78
if
len(sys.argv)>2:
79
AccessMode =
xAODAccessMode
(int(sys.argv[2]))
80
81
from
AthenaConfiguration.MainServicesConfig
import
MainServicesCfg
82
cfg = MainServicesCfg(flags)
83
cfg.merge(
xAODReadCfg
(flags,AccessMode))
84
85
cfg.run(10)
xAODEventSelectorConfig.xAODAccessMode
Definition
xAODEventSelectorConfig.py:17
xAODEventSelectorConfig.xAODReadCfg
xAODReadCfg(flags, AccessMode=xAODAccessMode.CLASS_ACCESS)
Definition
xAODEventSelectorConfig.py:23
Generated on
for ATLAS Offline Software by
1.17.0