71def PoolReadCfg(flags):
72 """
73 Creates a ComponentAccumulator instance containing the
74 athena services required for POOL file reading
75 """
76
77 result = ComponentAccumulator()
78
79 from AthenaPoolCnvSvc.PoolCommonConfig import AthenaPoolAddressProviderSvcCfg
80 if flags.MP.UseSharedReader or flags.MP.UseSharedWriter:
81 from AthenaPoolCnvSvc.PoolCommonConfig import AthenaPoolSharedIOCnvSvcCfg
82 result.merge(AthenaPoolSharedIOCnvSvcCfg(flags, InputPoolAttributes=["DatabaseName = '*'; ContainerName = 'CollectionTree'; TREE_CACHE = '-1'"]))
83 else:
84 from AthenaPoolCnvSvc.PoolCommonConfig import AthenaPoolCnvSvcCfg
85 result.merge(AthenaPoolCnvSvcCfg(flags, InputPoolAttributes=["DatabaseName = '*'; ContainerName = 'CollectionTree'; TREE_CACHE = '-1'"]))
86
87
88 from AthenaServices.ROOTMessageFilterSvcConfig import ROOTMessageFilterSvcCfg
89 result.merge(ROOTMessageFilterSvcCfg(flags,
90 SuppressionRules=[('TClass::Init',
91 '.*DataHeader.*_p[12].*',
92 ROOT.kWarning),
93 ('TClass::Init',
94 '.*PoolToken_p1.*',
95 ROOT.kWarning)]))
96
97 if flags.Input.SecondaryFiles:
98 skipEventsPrimary = flags.Exec.SkipEvents
99 skipEventsSecondary = flags.Exec.SkipEvents
100 if flags.Overlay.SkipSecondaryEvents >= 0:
101 skipEventsSecondary = flags.Overlay.SkipSecondaryEvents
102
103
104 evSel = CompFactory.DoubleEventSelectorAthenaPool("EventSelector",
105 InputCollections=flags.Input.Files)
106 evSel.CollectionType = "RootCollection"
107
108 if flags.Overlay.ByteStream:
109
110 evSel.SkipEvents = skipEventsPrimary
111
112
113 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
114 result.merge(ByteStreamReadCfg(flags))
115
116
117 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
118 name="AthenaPoolAddressProviderSvcPrimary",
119 DataHeaderKey="EventSelector"))
120 else:
121
122 evSel.SkipEvents = skipEventsSecondary
123
124 evSel.ProcessMetadata = False
125
126
127 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
128 name="AthenaPoolAddressProviderSvcPrimary",
129 DataHeaderKey="EventSelector",
130 AttributeListKey="Input"))
131 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
132 name="AthenaPoolAddressProviderSvcSecondary",
133 DataHeaderKey="SecondaryEventSelector"))
134
135 secondarySel = CompFactory.EventSelectorAthenaPool("SecondaryEventSelector",
136 IsSecondary=True,
137 InputCollections=flags.Input.SecondaryFiles,
138 SkipEvents=skipEventsPrimary)
139 secondarySel.CollectionType = "RootCollection"
140 result.addService(secondarySel)
141 result.addService(evSel)
142 else:
143
144 result.merge(AthenaPoolAddressProviderSvcCfg(flags))
145 result.merge(EventSelectorAthenaPoolCfg(flags))
146 evSel = result.getService("EventSelector")
147
148
149 processingTags=flags.Input.ProcessingTags
150 if "StreamAOD" in processingTags:
151 try:
152 from RecJobTransforms.AODFixConfig import AODFixCfg
153 result.merge(AODFixCfg(flags))
154 except ImportError:
155
156 pass
157
158
159
160 result.setAppProperty("EvtSel", evSel.getFullJobOptName())
161
162 return result