9from AthenaConfiguration.ComponentFactory
import CompFactory
10from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
14 """Given the list of TrackCollection keys from the input file, try to guess
15which one is aliased to Tracks."""
17 for a
in [
'CombinedInDetTracks',
20 'ConvertedIPatTracks',
21 'ConvertedXKalmanTracks',
23 if a
in tcolls:
return a
28 """Configure an algorithm to read a TrackCollection.
29KEY is the desired TrackCollection key.
30Will do nothing in serial mode, or if the requested object is not
34 result = ComponentAccumulator()
35 if flags.Concurrency.NumThreads <= 0:
40 from AthenaConfiguration.AutoConfigFlags
import GetFileMD
41 tcolls = set ([k
for t,k
in GetFileMD (flags.Input.Files).
get(
'itemList', [])
42 if t ==
'TrackCollection'])
43 tracks_alias = _guessTracksAlias (tcolls)
46 if key ==
'Tracks' and tracks_alias
is not None and key
not in tcolls:
55 if key == tracks_alias
and 'Tracks' not in tcolls:
59 if flags.Detector.GeometryPixel:
60 extra_inputs.append((
'InDetDD::SiDetectorElementCollection',
'ConditionStore+PixelDetectorElementCollection'))
61 if flags.Detector.GeometrySCT:
62 extra_inputs.append((
'InDetDD::SiDetectorElementCollection',
'ConditionStore+SCT_DetectorElementCollection'))
63 if flags.Detector.GeometryTRT:
64 extra_inputs.append((
'InDetDD::TRT_DetElementContainer' ,
'ConditionStore+TRT_DetElementContainer' ))
65 if flags.Detector.GeometryITkPixel:
66 extra_inputs.append((
'InDetDD::SiDetectorElementCollection' ,
'ConditionStore+ITkPixelDetectorElementCollection' ))
67 if flags.Detector.GeometryITkStrip:
68 extra_inputs.append((
'InDetDD::SiDetectorElementCollection' ,
'ConditionStore+ITkStripDetectorElementCollection' ))
69 if flags.Detector.GeometryMuon:
70 extra_inputs.append((
'MuonGM::MuonDetectorManager',
'ConditionStore+MuonDetectorManager'))
73 AthReadAlg=CompFactory.AthReadAlg
74 alg = AthReadAlg (
'TrackCollectionRead_' + key,
75 Key =
'TrackCollection/' + key,
77 ExtraInputs = extra_inputs)
78 result.addEventAlgo (alg)
81 from SGComps.AddressRemappingConfig
import AddressRemappingCfg
82 result.merge (AddressRemappingCfg())
86if __name__ ==
"__main__":
87 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
88 flags = initConfigFlags()
90 from AthenaConfiguration.TestDefaults
import defaultTestFiles
92 print (
'--- Reference aliased object by base name.')
93 flags1 = flags.clone()
94 flags1.Concurrency.NumThreads = 1
95 flags1.Input.Files = defaultTestFiles.ESD
97 acc1 = TrackCollectionReadCfg (flags1,
'CombinedInDetTracks')
98 acc1.printConfig (summariseProps=
True)
101 print (
'--- Reference aliased object by alias.')
102 flags2 = flags.clone()
103 flags2.Concurrency.NumThreads = 1
104 flags2.Input.Files = defaultTestFiles.ESD
106 acc2 = TrackCollectionReadCfg (flags2,
'Tracks')
107 acc2.printConfig (summariseProps=
True)
110 print (
'--- Non-aliased object.')
111 flags3 = flags.clone()
112 flags3.Concurrency.NumThreads = 1
113 flags3.Input.Files = defaultTestFiles.ESD
115 acc3 = TrackCollectionReadCfg (flags3,
'ResolvedForwardTracks')
116 acc3.printConfig (summariseProps=
True)
119 print (
'--- Non-existent object.')
120 flags4 = flags.clone()
121 flags4.Concurrency.NumThreads = 1
122 flags4.Input.Files = defaultTestFiles.ESD
124 acc4 = TrackCollectionReadCfg (flags4,
'FooTracks')
125 acc4.printConfig (summariseProps=
True)
128 print (
'--- Non-threaded.')
129 flags5 = flags.clone()
130 flags5.Input.Files = defaultTestFiles.ESD
132 acc5 = TrackCollectionReadCfg (flags5,
'Tracks')
133 acc5.printConfig (summariseProps=
True)
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
TrackCollectionReadCfg(flags, key)
_guessTracksAlias(tcolls)