ATLAS Offline Software
Loading...
Searching...
No Matches
python.PoolReadConfig Namespace Reference

Functions

 EventSelectorAthenaPoolCfg (flags)
 PoolReadCfg (flags)

Function Documentation

◆ EventSelectorAthenaPoolCfg()

python.PoolReadConfig.EventSelectorAthenaPoolCfg ( flags)

Definition at line 9 of file PoolReadConfig.py.

9def EventSelectorAthenaPoolCfg(flags):
10 result = ComponentAccumulator()
11 evSel = CompFactory.EventSelectorAthenaPool("EventSelector",
12 InputCollections=flags.Input.Files,
13 SkipEvents=flags.Exec.SkipEvents,
14 ConversionService="AthenaPoolSharedIOCnvSvc" if flags.MP.UseSharedReader or flags.MP.UseSharedWriter else "AthenaPoolCnvSvc")
15 if flags.Input.OverrideRunNumber:
16 if not flags.Input.RunAndLumiOverrideList:
17 DataRunNumber = -1
18 FirstLB = 1
19 InitialTimeStamp = 1
20 OldRunNumber = -1
21 if flags.Input.ConditionsRunNumber > 0:
22 # Behaviour for Digitization jobs using DataRunNumber
23 DataRunNumber = flags.Input.ConditionsRunNumber
24 FirstLB = 1
25 InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(DataRunNumber, 1) # TODO fix repeated configuration
26 if not flags.Sim.DoFullChain:
27 OldRunNumber = flags.Input.RunNumbers[0] # CHECK this should be the Run Number from the HITS file
28 elif flags.Input.RunNumbers:
29 # Behaviour for Simulation jobs
30 DataRunNumber = flags.Input.RunNumbers[0]
31 FirstLB = flags.Input.LumiBlockNumbers[0]
32 InitialTimeStamp = flags.Input.TimeStamps[0]
33 assert DataRunNumber >= 0, (
34 "flags.Input.OverrideRunNumber was True, but provided DataRunNumber (%d) is negative. "
35 "Use a real run number from data." % DataRunNumber)
36 evSel.OverrideRunNumber = True
37 evSel.RunNumber = DataRunNumber
38 evSel.FirstLB = FirstLB
39 evSel.InitialTimeStamp = InitialTimeStamp # Necessary to avoid a crash
40 if hasattr(evSel, "OverrideRunNumberFromInput"):
41 evSel.OverrideRunNumberFromInput = True
42 if OldRunNumber > 0:
43 evSel.OldRunNumber = OldRunNumber
44 elif flags.Common.ProductionStep in [ProductionStep.Simulation, ProductionStep.FastChain]:
45 # Behaviour for Simulation and FastChain jobs using RunAndLumiOverrideList
46 from AthenaKernel.EventIdOverrideConfig import getMinMaxRunNumbers, getFirstLumiBlock
47 minMax = getMinMaxRunNumbers(flags)
48 evSel.OverrideRunNumber = True
49 evSel.RunNumber = minMax[0]
50 evSel.FirstLB = getFirstLumiBlock(flags, minMax[0])
51 evSel.InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(minMax[0], 1) # TODO fix repeated configuration
52 if hasattr(evSel, "OverrideRunNumberFromInput"):
53 evSel.OverrideRunNumberFromInput = True
54 else:
55 # Behaviour for Digitization jobs using RunAndLumiOverrideList
56 pass
57 from AthenaKernel.EventIdOverrideConfig import EvtIdModifierSvcCfg
58 result.merge(EvtIdModifierSvcCfg(flags))
59 elif flags.Common.ProductionStep in [ProductionStep.Simulation] and len(flags.Input.RunNumbers) and flags.Sim.ISF.ReSimulation:
60 # ReSimulation case
61 evSel.OverrideRunNumber = True
62 evSel.RunNumber = flags.Input.RunNumbers[0]
63 if flags.Input.LumiBlockNumbers:
64 evSel.FirstLB = flags.Input.LumiBlockNumbers[0]
65 evSel.InitialTimeStamp = flags.IOVDb.RunToTimestampDict.get(flags.Input.RunNumbers[0], 1)
66
67 result.addService(evSel)
68 return result
69
70

◆ PoolReadCfg()

python.PoolReadConfig.PoolReadCfg ( flags)
Creates a ComponentAccumulator instance containing the
athena services required for POOL file reading

Definition at line 71 of file PoolReadConfig.py.

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 # Suppress ROOT warnings about old I/O classes.
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 # Create DoubleEventSelector (universal for any seconday input type)
104 evSel = CompFactory.DoubleEventSelectorAthenaPool("EventSelector",
105 InputCollections=flags.Input.Files)
106
107 if flags.Overlay.ByteStream:
108 # In case of data overlay HITS are primary input
109 evSel.SkipEvents = skipEventsPrimary
110
111 # We have to check if we're running overlay with ByteStream input
112 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
113 result.merge(ByteStreamReadCfg(flags))
114
115 # We still have to add primary address provider
116 result.merge(AthenaPoolAddressProviderSvcCfg(flags,
117 name="AthenaPoolAddressProviderSvcPrimary",
118 DataHeaderKey="EventSelector"))
119 else:
120 # In case of MC overlay RDOs are primary input
121 evSel.SkipEvents = skipEventsSecondary
122 # Do not process secondary input metadata
123 evSel.ProcessMetadata = False
124
125 # We have primary and secondary pool inputs, create two address providers
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 # We have only primary inputs
142 result.merge(AthenaPoolAddressProviderSvcCfg(flags))
143 result.merge(EventSelectorAthenaPoolCfg(flags))
144 evSel = result.getService("EventSelector")
145
146 #Schedule a (potential) AODFix ...
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 #Looks like running on AthSimulation or AthAnalysis ... ignore AODFix
154 pass
155
156
157
158 result.setAppProperty("EvtSel", evSel.getFullJobOptName())
159
160 return result