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