10 result = ComponentAccumulator()
11 if flags.MP.UseSharedReader:
12 evSel = CompFactory.EventSelectorAthenaPoolSharedIO(
"EventSelector",
13 InputCollections=flags.Input.Files,
14 SkipEvents=flags.Exec.SkipEvents,
15 ConversionService=
"AthenaPoolSharedIOCnvSvc")
17 evSel = CompFactory.EventSelectorAthenaPool(
"EventSelector",
18 InputCollections=flags.Input.Files,
19 SkipEvents=flags.Exec.SkipEvents,
20 ConversionService=
"AthenaPoolSharedIOCnvSvc" if flags.MP.UseSharedWriter
else "AthenaPoolCnvSvc")
21 if flags.Input.OverrideRunNumber:
22 if not flags.Input.RunAndLumiOverrideList:
27 if flags.Input.ConditionsRunNumber > 0:
29 DataRunNumber = flags.Input.ConditionsRunNumber
31 InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(DataRunNumber, 1)
32 if not flags.Sim.DoFullChain:
33 OldRunNumber = flags.Input.RunNumbers[0]
34 elif flags.Input.RunNumbers:
36 DataRunNumber = flags.Input.RunNumbers[0]
37 FirstLB = flags.Input.LumiBlockNumbers[0]
38 InitialTimeStamp = flags.Input.TimeStamps[0]
39 assert DataRunNumber >= 0, (
40 "flags.Input.OverrideRunNumber was True, but provided DataRunNumber (%d) is negative. "
41 "Use a real run number from data." % DataRunNumber)
42 evSel.OverrideRunNumber =
True
43 evSel.RunNumber = DataRunNumber
44 evSel.FirstLB = FirstLB
45 evSel.InitialTimeStamp = InitialTimeStamp
46 if hasattr(evSel,
"OverrideRunNumberFromInput"):
47 evSel.OverrideRunNumberFromInput =
True
49 evSel.OldRunNumber = OldRunNumber
50 elif flags.Common.ProductionStep
in [ProductionStep.Simulation, ProductionStep.FastChain]:
52 from AthenaKernel.EventIdOverrideConfig
import getMinMaxRunNumbers, getFirstLumiBlock
53 minMax = getMinMaxRunNumbers(flags)
54 evSel.OverrideRunNumber =
True
55 evSel.RunNumber = minMax[0]
56 evSel.FirstLB = getFirstLumiBlock(flags, minMax[0])
57 evSel.InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(minMax[0], 1)
58 if hasattr(evSel,
"OverrideRunNumberFromInput"):
59 evSel.OverrideRunNumberFromInput =
True
63 from AthenaKernel.EventIdOverrideConfig
import EvtIdModifierSvcCfg
64 result.merge(EvtIdModifierSvcCfg(flags))
65 elif flags.Common.ProductionStep
in [ProductionStep.Simulation]
and len(flags.Input.RunNumbers)
and flags.Sim.ISF.ReSimulation:
67 evSel.OverrideRunNumber =
True
68 evSel.RunNumber = flags.Input.RunNumbers[0]
69 if flags.Input.LumiBlockNumbers:
70 evSel.FirstLB = flags.Input.LumiBlockNumbers[0]
71 evSel.InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(flags.Input.RunNumbers[0], 1)
73 result.addService(evSel)
79 Creates a ComponentAccumulator instance containing the
80 athena services required for POOL file reading
83 result = ComponentAccumulator()
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'"]))
93 from AthenaPoolCnvSvc.PoolCommonConfig
import AthenaPoolCnvSvcCfg
94 result.merge(AthenaPoolCnvSvcCfg(flags, InputPoolAttributes=[
"DatabaseName = '*'; ContainerName = 'CollectionTree'; TREE_CACHE = '-1'"]))
97 from AthenaServices.ROOTMessageFilterSvcConfig
import ROOTMessageFilterSvcCfg
98 result.merge(ROOTMessageFilterSvcCfg(flags,
99 SuppressionRules=[(
'TClass::Init',
100 '.*DataHeader.*_p[12].*',
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
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]
123 evSel.SkipEvents = skipEventsSecondary
125 evSel.ProcessMetadata =
False
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"))
136 secondarySel = CompFactory.EventSelectorAthenaPool(
"SecondaryEventSelector",
137 CollectionType=
"RootCollection",
139 InputCollections=flags.Input.SecondaryFiles,
140 SkipEvents=skipEventsPrimary)
141 result.addService(secondarySel)
142 result.addService(evSel)
145 result.merge(AthenaPoolAddressProviderSvcCfg(flags))
147 evSel = result.getService(
"EventSelector")
150 processingTags=flags.Input.ProcessingTags
151 if "StreamAOD" in processingTags:
153 from RecJobTransforms.AODFixConfig
import AODFixCfg
154 result.merge(AODFixCfg(flags))
161 result.setAppProperty(
"EvtSel", evSel.getFullJobOptName())