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
107 if flags.Overlay.ByteStream:
108
109 evSel.SkipEvents = skipEventsPrimary
110
111
112 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
113 result.merge(ByteStreamReadCfg(flags))
114
115
116 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
117 name="AthenaPoolAddressProviderSvcPrimary",
118 DataHeaderKey="EventSelector"))
119 else:
120
121 evSel.SkipEvents = skipEventsSecondary
122
123 evSel.ProcessMetadata = False
124
125
126 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
127 name="AthenaPoolAddressProviderSvcPrimary",
128 DataHeaderKey="EventSelector",
129 AttributeListKey="Input"))
130 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
131 name="AthenaPoolAddressProviderSvcSecondary",
132 DataHeaderKey="SecondaryEventSelector"))
133
134 secondarySel = CompFactory.EventSelectorAthenaPool("SecondaryEventSelector",
135 IsSecondary=True,
136 InputCollections=flags.Input.SecondaryFiles,
137 SkipEvents=skipEventsPrimary)
138 result.addService(secondarySel)
139 result.addService(evSel)
140 else:
141
142 result.merge(AthenaPoolAddressProviderSvcCfg(flags))
143 result.merge(EventSelectorAthenaPoolCfg(flags))
144 evSel = result.getService("EventSelector")
145
146
147 processingTags=flags.Input.ProcessingTags
148 if "StreamAOD" in processingTags:
149 try:
150 from RecJobTransforms.AODFixConfig import AODFixCfg
151 result.merge(AODFixCfg(flags))
152 except ImportError:
153
154 pass
155
156
157
158 result.setAppProperty("EvtSel", evSel.getFullJobOptName())
159
160 return result