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