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