ATLAS Offline Software
Loading...
Searching...
No Matches
AthenaPoolExample_Write.py
Go to the documentation of this file.
1#!/env/python
2
3# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
4
5
7
8
59
60
61from AthenaConfiguration.AllConfigFlags import initConfigFlags
62from AthenaConfiguration.ComponentFactory import CompFactory
63from AthenaCommon.Constants import DEBUG
64from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg, outputStreamName
65
66stream1name = "Stream1"
67file1Name = "ROOTTREE:SimplePoolFile1.root"
68stream2name = "Stream2"
69file2Name = "ROOTTREE:SimplePoolFile2.root"
70stream3name = "Stream3"
71file3Name = "ROOTTREE:EmptyPoolFile.root"
72noTag = True
73
74# Setup flags
75flags = initConfigFlags()
76flags.Common.MsgSuppression = False
77flags.Exec.MaxEvents = 20
78flags.Input.Files = []
79flags.addFlag(f"Output.{stream1name}FileName", file1Name)
80flags.addFlag(f"Output.{stream2name}FileName", file2Name)
81flags.addFlag(f"Output.{stream3name}FileName", file3Name)
82flags.Exec.DebugMessageComponents = [ outputStreamName(stream1name) , "PoolSvc", "AthenaPoolCnvSvc", "WriteData" ]
83flags.lock()
84
85# Main services
86from AthenaConfiguration.MainServicesConfig import MainServicesCfg
87acc = MainServicesCfg( flags )
88
89from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
90acc.merge( EventInfoCnvAlgCfg( flags, disableBeamSpot=True ) )
91
92# Load CutFlowSvc
93from EventBookkeeperTools.EventBookkeeperToolsConfig import CutFlowSvcCfg
94acc.merge( CutFlowSvcCfg( flags ) ) #addMetaDataToAllOutputFiles=True ) )
95# Ensure proper metadata propagation
96from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
97acc.merge( IOVDbSvcCfg( flags ) )
98
99# Pool writing
100acc.addEventAlgo( CompFactory.AthPoolEx.WriteData("WriteData", OutputLevel = DEBUG) )
101
102# ---------------- Output Stream 1 configuration
103from AthenaPoolExampleAlgorithms.AthenaPoolExampleConfig import AthenaPoolExampleWriteCfg
104acc.merge( AthenaPoolExampleWriteCfg( flags, stream1name, writeCatalog = "file:Catalog1.xml",
105 disableEventTag = noTag ) )
106
107stream1ca = OutputStreamCfg( flags, stream1name, disableEventTag = noTag,
108 ItemList = [
109 'EventInfo#*', 'EventStreamInfo#*',
110 'ExampleHitContainer#MyHits', 'ExampleHitContainer#PetersHits' ] )
111acc.merge( stream1ca )
112
113# ---------------- Output Stream 2 configuration
114acc.merge( AthenaPoolExampleWriteCfg( flags, stream2name, disableEventTag = noTag ) )
115stream2ca = OutputStreamCfg(flags, stream2name, disableEventTag = noTag,
116 ItemList = ['EventInfo#*', 'ExampleHitContainer#MyHits'] )
117acc.merge( stream2ca )
118
119# ---------------- Output Stream 3 configuration
120filterAlg = CompFactory.AthPoolEx.PassNoneFilter("PassNoneFilter", OutputLevel = DEBUG)
121acc.addEventAlgo( filterAlg )
122acc.merge( AthenaPoolExampleWriteCfg( flags, stream3name, disableEventTag = noTag ) )
123stream3ca = OutputStreamCfg(flags, stream3name, disableEventTag = noTag )
124stream3 = stream3ca.getEventAlgo( outputStreamName( stream3name ) )
125stream3.RequireAlgs = [ "PassNoneFilter" ]
126acc.merge( stream3ca )
127
128# Run
129import sys
130sc = acc.run(flags.Exec.MaxEvents)
131sys.exit(sc.isFailure())
132
133
134
135
136
137