ATLAS Offline Software
Loading...
Searching...
No Matches
PFHLTConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4from AthenaConfiguration.Enums import LHCPeriod
5from AthenaCommon.CFElements import parOR
6from eflowRec import PFOnlineMon
7from eflowRec.PFCfg import getPFTrackClusterMatchingTool
8from TrigEDMConfig.TriggerEDM import recordable
9
10
11#---------------------------------------------------------------------------------#
12# Tracking geometry & conditions
13def TrackingGeoCfg(inputFlags):
14 result = ComponentAccumulator()
15
16 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
17 result.merge(AtlasFieldCacheCondAlgCfg(inputFlags))
18
19 return result
20
21#---------------------------------------------------------------------------------#
22# Calo geometry & conditions
23def CaloGeoAndNoiseCfg(inputFlags):
24 result = ComponentAccumulator()
25 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
26 from TileGeoModel.TileGMConfig import TileGMCfg
27
28 result.merge(LArGMCfg(inputFlags))
29 result.merge(TileGMCfg(inputFlags))
30
31 from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg
32 # Schedule total noise cond alg
33 result.merge(CaloNoiseCondAlgCfg(inputFlags,"totalNoise"))
34
35 return result
36
37def PFTrackExtensionCfg(flags, tracktype, tracksin):
38 """ Get the track-to-calo extension after a preselection
39
40 Returns the component accumulator, the preselected track collection and the extension cache
41 """
42 result = ComponentAccumulator()
43 pretracks_name = f"HLTPFPreselTracks_{tracktype}"
44 cache_name = f"HLTPFTrackExtensionCache_{tracktype}"
45
46 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig import (
47 PFTrackSelectionToolCfg)
48 result.addEventAlgo(CompFactory.PFTrackPreselAlg(
49 f"HLTPFTrackPresel_{tracktype}",
50 InputTracks=tracksin,
51 OutputTracks=pretracks_name,
52 TrackSelTool=result.popToolsAndMerge(PFTrackSelectionToolCfg(flags))
53 ))
54
55
56 monTool_trackExtrap = PFOnlineMon.getMonTool_ParticleCaloExtensionTool(flags)
57 monTool_trackExtrap.HistPath = 'TrackCaloExtrapolation_general'
58
59 from TrackToCalo.TrackToCaloConfig import HLTPF_ParticleCaloExtensionToolCfg
60 result.addEventAlgo(CompFactory.Trk.PreselCaloExtensionBuilderAlg(
61 f"HLTPFTrackExtension_{tracktype}",
62 ParticleCaloExtensionTool=result.popToolsAndMerge(
63 HLTPF_ParticleCaloExtensionToolCfg(flags, MonTool=monTool_trackExtrap)),
64 InputTracks=pretracks_name,
65 OutputCache=cache_name,
66 ))
67
68 return result, pretracks_name, cache_name
69
70def MuonCaloTagCfg(flags, tracktype, tracksin, extcache, cellsin):
71 """ Create the muon calo tagging configuration
72
73 Return the component accumulator and the tracks with muons removed
74 """
75 from TrkConfig.AtlasExtrapolatorConfig import TrigPFlowExtrapolatorCfg
76 result = ComponentAccumulator()
77 extrapolator = result.popToolsAndMerge(TrigPFlowExtrapolatorCfg(flags))
78 output_tracks = f"PFMuonCaloTagTracks_{tracktype}"
79
80 from TrackToCalo.TrackToCaloConfig import (
81 HLTPF_ParticleCaloExtensionToolCfg,
82 HLTPF_ParticleCaloCellAssociationToolCfg)
83
84 caloext = result.popToolsAndMerge(HLTPF_ParticleCaloExtensionToolCfg(flags))
85 calocellassoc = result.popToolsAndMerge(HLTPF_ParticleCaloCellAssociationToolCfg(
86 flags,
87 ParticleCaloExtensionTool=caloext,
88 CaloCellContainer="",
89 ))
90
91 result.addEventAlgo(
92 CompFactory.PFTrackMuonCaloTaggingAlg(
93 f"PFTrackMuonCaloTaggingAlg_{tracktype}",
94 InputTracks = tracksin,
95 InputCaloExtension = extcache,
96 InputCells = cellsin,
97 OutputTracks = output_tracks,
98 MinPt = flags.Trigger.FSHad.PFOMuonRemovalMinPt,
99 MuonScoreTool = CompFactory.CaloMuonScoreTool(
100 CaloMuonEtaCut=3,
101 ParticleCaloCellAssociationTool = calocellassoc
102 ),
103 LooseTagTool=CompFactory.CaloMuonTag("LooseCaloMuonTag", TagMode="Loose"),
104 TightTagTool=CompFactory.CaloMuonTag("TightCaloMuonTag", TagMode="Tight"),
105 DepositInCaloTool=CompFactory.TrackDepositInCaloTool(
106 ExtrapolatorHandle=extrapolator,
107 ParticleCaloCellAssociationTool = calocellassoc,
108 ParticleCaloExtensionTool = caloext
109 )
110 ),
111 primary=True,
112 )
113 return result, output_tracks
114
115def MuonIsoTagCfg(flags, tracktype, tracksin, verticesin, extcache, clustersin):
116 """ Create the muon iso tagging configuration
117
118 Return the component accumulator and the tracks with muons removed
119 """
120 result = ComponentAccumulator()
121 output_tracks = f"PFMuonIsoTagTracks_{tracktype}"
122
123 from TrackToCalo.TrackToCaloConfig import HLTPF_ParticleCaloExtensionToolCfg
124
125 result.addEventAlgo(
126 CompFactory.PFTrackMuonIsoTaggingAlg(
127 f"PFTrackMuonIsoTaggingalg_{tracktype}",
128 InputTracks = tracksin,
129 InputClusters = clustersin,
130 InputVertices = verticesin,
131 OutputTracks = output_tracks,
132 MinPt = flags.Trigger.FSHad.PFOMuonRemovalMinPt,
133 TrackIsoTool = CompFactory.xAOD.TrackIsolationTool(
134 TrackParticleLocation=tracksin,
135 VertexLocation="",
136 ),
137 CaloIsoTool = CompFactory.xAOD.CaloIsolationTool(
138 ParticleCaloExtensionTool=result.popToolsAndMerge(
139 HLTPF_ParticleCaloExtensionToolCfg(flags)),
140 InputCaloExtension=extcache,
141 ParticleCaloCellAssociationTool="",
142 saveOnlyRequestedCorrections=True,
143 )
144 ),
145 primary=True,
146 )
147 return result, output_tracks
148
149#---------------------------------------------------------------------------------#
150# PFlow track selection
151def HLTPFTrackSelectorCfg(inputFlags,tracktype,tracksin,verticesin,clustersin,cellsin=None):
152 result = ComponentAccumulator()
153
154 muon_mode = inputFlags.Trigger.FSHad.PFOMuonRemoval
155 if muon_mode == "None":
156 tracks = tracksin
157 extension_cache=""
158 else:
159 ext_acc, pretracks, extension_cache = PFTrackExtensionCfg(
160 inputFlags, tracktype, tracksin
161 )
162 result.merge(ext_acc)
163 if muon_mode == "Calo":
164 if cellsin is None:
165 raise ValueError("Cells must be provided for the 'Calo' muon mode!")
166 tag_acc, tracks = MuonCaloTagCfg(
167 inputFlags, tracktype, pretracks, extension_cache, cellsin
168 )
169 elif muon_mode == "Iso":
170 tag_acc, tracks = MuonIsoTagCfg(
171 inputFlags, tracktype, pretracks, verticesin, extension_cache, clustersin
172 )
173 else:
174 raise ValueError(f"Invalid muon removal mode '{muon_mode}'")
175 result.merge(tag_acc)
176
177 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig import (
178 PFTrackSelectionToolCfg)
179 from TrackToCalo.TrackToCaloConfig import HLTPF_ParticleCaloExtensionToolCfg
180
181
182 from eflowRec import PFOnlineMon
183 monTool_extrapolator = PFOnlineMon.getMonTool_eflowTrackCaloExtensionTool(inputFlags)
184 monTool_extrapolator.HistPath = 'TrackExtrapolator'
185
186 result.addEventAlgo(
187 CompFactory.PFTrackSelector(
188 f"PFTrackSelector_{tracktype}",
189 trackExtrapolatorTool = CompFactory.eflowTrackCaloExtensionTool(
190 "HLTPF_eflowTrkCaloExt",
191 TrackCaloExtensionTool=result.popToolsAndMerge(
192 HLTPF_ParticleCaloExtensionToolCfg(inputFlags)),
193 PFParticleCache = extension_cache,
194 MonTool_TrackCaloExtension = monTool_extrapolator
195 ),
196 trackSelectionTool = result.popToolsAndMerge(PFTrackSelectionToolCfg(inputFlags)),
197 electronsName="",
198 muonsName="",
199 tracksName=tracks,
200 VertexContainer=verticesin,
201 eflowRecTracksOutputName=f"eflowRecTracks_{tracktype}",
202 MonTool = PFOnlineMon.getMonTool_PFTrackSelector(inputFlags),
203 ),
204 primary=True,
205 )
206
207 return result
208
209#---------------------------------------------------------------------------------#
210# Legacy (non-unified) particle flow tool configuration.
211#
212# Offline reconstruction runs the unified tool chain exclusively (see
213# getOfflinePFAlgorithm in PFCfg.py). The HLT still runs the older combined
214# chain, in which one PFSubtractionTool performs both track-cluster matching and
215# charged shower subtraction, and cluster moments are calculated by
216# PFMomentCalculatorTool. The configuration of those two tools therefore lives
217# here, with the only client that still uses them, rather than in PFCfg.py.
218# It is removed once the HLT is ported to the unified chain.
219def getHLTPFCellLevelSubtractionTool(inputFlags,toolName):
220 PFCellLevelSubtractionToolFactory = CompFactory.PFSubtractionTool
221 PFCellLevelSubtractionTool = PFCellLevelSubtractionToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
222
223 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
224 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
225 PFCellLevelSubtractionTool.eflowCellEOverPTool = eflowCellEOverPTool_Run2_mc20_JetETMiss()
226 else:
227 PFCellEOverPTool = CompFactory.PFCellEOverPTool
228 PFCellLevelSubtractionTool.eflowCellEOverPTool = PFCellEOverPTool("PFCellEOverPTool", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
229 #this should always be false for any reference derived, except eflowCellEOverPTool_mc12_HLLHC.h or eflowCellEOverPTool_Run2_mc20_JetETMiss.h
230 PFCellLevelSubtractionTool.useLegacyEBinIndex=False
231
232 if(inputFlags.PF.EOverPMode):
233 PFCellLevelSubtractionTool.CalcEOverP = True
234 PFCellLevelSubtractionTool.nClusterMatchesToUse = -1
235 else:
236 PFCellLevelSubtractionTool.nClusterMatchesToUse = 1
237
238 if(inputFlags.PF.EOverPMode):
239 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool = getPFTrackClusterMatchingTool(inputFlags,0.2,"EtaPhiSquareDistance","PlainEtaPhi","CalObjBldMatchingTool")
240 else:
241 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool = getPFTrackClusterMatchingTool(inputFlags,1.64,"EtaPhiSquareSignificance","GeomCenterEtaPhi","CalObjBldMatchingTool")
242
243 PFCellLevelSubtractionTool.PFTrackClusterMatchingTool_02 = getPFTrackClusterMatchingTool(inputFlags,0.2,"EtaPhiSquareDistance","PlainEtaPhi","MatchingTool_Pull_02")
244
245 if inputFlags.PF.useMLEOverP:
246 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool("PFCellLevelEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
247 PFCellLevelSubtractionTool.NNEnergyPredictorTool = PFEnergyPredictorTool
248 PFCellLevelSubtractionTool.addCPData = inputFlags.PF.addCPData
249
250 if inputFlags.PF.useTruthCheating:
251 if inputFlags.PF.useTrackClusterTruthMatching:
252 PFCellLevelSubtractionTool.CaloClusterReadDecorHandleKey_NLeadingTruthParticles = "CaloTopoClusters." + inputFlags.Calo.TopoCluster.CalibrationHitDecorationName
253 PFCellLevelSubtractionTool.useTrackClusterTruthMatching=True
254
255 if inputFlags.PF.useTruthForChargedShowerSubtraction:
256 PFCellLevelSubtractionTool.useTruthForChargedShowerSubtraction = True
257 PFCellLevelSubtractionTool.PFSimulateTruthShowerTool = CompFactory.PFSimulateTruthShowerTool("PFSimulateTruthShowerTool")
258
259 return PFCellLevelSubtractionTool
260
261
262def getHLTPFRecoverSplitShowersTool(inputFlags,toolName):
263 PFRecoverSplitShowersToolFactory = CompFactory.PFSubtractionTool
264 PFRecoverSplitShowersTool = PFRecoverSplitShowersToolFactory(toolName,useNNEnergy = inputFlags.PF.useMLEOverP)
265
266 if inputFlags.GeoModel.Run <= LHCPeriod.Run3:
267 eflowCellEOverPTool_Run2_mc20_JetETMiss = CompFactory.eflowCellEOverPTool_Run2_mc20_JetETMiss
268 PFRecoverSplitShowersTool.eflowCellEOverPTool = eflowCellEOverPTool_Run2_mc20_JetETMiss("eflowCellEOverPTool_Run2_mc20_JetETMiss_Recover")
269 else:
270 PFCellEOverPTool = CompFactory.PFCellEOverPTool
271 PFRecoverSplitShowersTool.eflowCellEOverPTool = PFCellEOverPTool("PFCellEOverPTool_Recover", referenceFileLocation = inputFlags.PF.EOverP_CellOrdering_ReferenceLocation)
272 #this should always be false for any reference derived, except eflowCellEOverPTool_mc12_HLLHC.h or eflowCellEOverPTool_Run2_mc20_JetETMiss.h
273 PFRecoverSplitShowersTool.useLegacyEBinIndex=False
274
275 PFRecoverSplitShowersTool.RecoverSplitShowers = True
276
277 if inputFlags.PF.useMLEOverP:
278 PFEnergyPredictorTool = CompFactory.PFEnergyPredictorTool("PFRecoverSplitShowersEnergyPredcictorTool",ModelPath = inputFlags.PF.EOverP_NN_Model)
279 PFRecoverSplitShowersTool.NNEnergyPredictorTool = PFEnergyPredictorTool
280
281 return PFRecoverSplitShowersTool
282
283
285 result = ComponentAccumulator()
286
287 if inputFlags.PF.useClusterMoments:
288 MomentsNames = [
289 "FIRST_PHI"
290 ,"FIRST_ETA"
291 ,"SECOND_R"
292 ,"SECOND_LAMBDA"
293 ,"DELTA_PHI"
294 ,"DELTA_THETA"
295 ,"DELTA_ALPHA"
296 ,"CENTER_X"
297 ,"CENTER_Y"
298 ,"CENTER_Z"
299 ,"CENTER_MAG"
300 ,"CENTER_LAMBDA"
301 ,"LATERAL"
302 ,"LONGITUDINAL"
303 ,"FIRST_ENG_DENS"
304 ,"ENG_FRAC_EM"
305 ,"ENG_FRAC_MAX"
306 ,"ENG_FRAC_CORE"
307 ,"FIRST_ENG_DENS"
308 ,"SECOND_ENG_DENS"
309 ,"ISOLATION"
310 ,"EM_PROBABILITY"
311 ,"ENG_POS"
312 ,"ENG_BAD_CELLS"
313 ,"N_BAD_CELLS"
314 ,"BADLARQ_FRAC"
315 ,"AVG_LAR_Q"
316 ,"AVG_TILE_Q"
317 ,"SIGNIFICANCE"
318 ]
319 else:
320 MomentsNames = ["CENTER_MAG"]
321
322 PFMomentCalculatorTool = CompFactory.PFMomentCalculatorTool("PFMomentCalculatorTool")
323
324 from CaloRec.CaloTopoClusterConfig import getTopoMoments
325 PFClusterMomentsMaker = result.popToolsAndMerge(getTopoMoments(inputFlags))
326 PFClusterMomentsMaker.MomentsNames = MomentsNames
327 PFMomentCalculatorTool.CaloClusterMomentsMaker = PFClusterMomentsMaker
328
329 PFClusterCollectionTool = CompFactory.PFClusterCollectionTool
330 PFMomentCalculatorTool.PFClusterCollectionTool = PFClusterCollectionTool("PFClusterCollectionTool")
331
332 if(inputFlags.PF.useCalibHitTruthClusterMoments):
333 PFMomentCalculatorTool.UseCalibHitTruth=True
334 from CaloRec.CaloTopoClusterConfig import getTopoCalibMoments
335 PFMomentCalculatorTool.CaloCalibClusterMomentsMaker2 = getTopoCalibMoments(inputFlags)
336
337 result.setPrivateTools(PFMomentCalculatorTool)
338 return result
339
340def PFCfg(inputFlags, tracktype="", clustersin=None, calclustersin=None, tracksin=None, verticesin=None, cellsin=None):
341
342 result=ComponentAccumulator()
343 seqname = f'HLTPFlow_{tracktype}'
344 result.addSequence(parOR(seqname))
345
346 # Set defaults for the inputs
347 if clustersin is None:
348 clustersin=inputFlags.eflowRec.RawClusterColl
349 if calclustersin is None:
350 calclustersin=inputFlags.eflowRec.CalClusterColl
351 if tracksin is None:
352 tracksin = inputFlags.eflowRec.TrackColl
353 if verticesin is None:
354 verticesin = inputFlags.eflowRec.VertexColl
355
356 result.merge(TrackingGeoCfg(inputFlags))
357 calogeocfg = CaloGeoAndNoiseCfg(inputFlags)
358 result.merge(calogeocfg)
359
360 selcfg = HLTPFTrackSelectorCfg(inputFlags, tracktype, tracksin, verticesin, clustersin, cellsin)
361 PFTrackSelector = selcfg.getPrimary()
362
363 # Add monitoring tool
364 monTool = PFOnlineMon.getMonTool_PFTrackSelector(inputFlags)
365 PFTrackSelector.MonTool = monTool
366
367 result.merge( selcfg, seqname )
368
369 #---------------------------------------------------------------------------------#
370 # PFlowAlgorithm -- subtraction steps
371
372
373 from eflowRec.PFCfg import getPFClusterSelectorTool
374
375 PFTrackClusterMatchingTool_1 = CompFactory.PFTrackClusterMatchingTool("CalObjBldMatchingTool")
376 monTool_matching = PFOnlineMon.getMonTool_PFTrackClusterMatching(inputFlags)
377 monTool_matching.HistPath = 'PFTrackClusterMatchingTool_1'
378 PFTrackClusterMatchingTool_1.MonTool_ClusterMatching = monTool_matching
379
380 cellSubtractionTool = getHLTPFCellLevelSubtractionTool(
381 inputFlags,
382 "PFCellLevelSubtractionTool",
383 )
384 cellSubtractionTool.PFTrackClusterMatchingTool=PFTrackClusterMatchingTool_1
385
386 recoverSplitShowersTool = getHLTPFRecoverSplitShowersTool(
387 inputFlags,
388 "PFRecoverSplitShowersTool",
389 )
390 recoverSplitShowersTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
391
392 result.addEventAlgo(
393 CompFactory.PFAlgorithm(
394 f"PFAlgorithm_{tracktype}",
395 PFClusterSelectorTool = getPFClusterSelectorTool(
396 inputFlags,
397 clustersin,
398 calclustersin,
399 "PFClusterSelectorTool",
400 ),
401 SubtractionToolList = [
402 cellSubtractionTool,
403 recoverSplitShowersTool,
404 ],
405 BaseToolList = [
406 result.popToolsAndMerge(getHLTPFMomentCalculatorTool(inputFlags)),
407 ],
408 MonTool = PFOnlineMon.getMonTool_PFAlgorithm(inputFlags),
409 eflowRecTracksInputName = PFTrackSelector.eflowRecTracksOutputName,
410 eflowRecClustersOutputName = f"eflowRecClusters_{tracktype}",
411 PFCaloClustersOutputName = f"PFCaloCluster_{tracktype}",
412 eflowCaloObjectsOutputName = f"eflowCaloObjects_{tracktype}",
413 ),
414 seqname
415 )
416
417 #---------------------------------------------------------------------------------#
418 # PFO creators here
419
420 chargedPFOArgs = dict(
421 inputFlags=inputFlags,
422 nameSuffix=f"_{tracktype}",
423 chargedFlowElementOutputName=recordable(f"HLT_{tracktype}ChargedParticleFlowObjects"),
424 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
425 )
426 neutralPFOArgs = dict(
427 inputFlags=inputFlags,
428 nameSuffix=f"_{tracktype}",
429 neutralFlowElementOutputName=recordable(f"HLT_{tracktype}NeutralParticleFlowObjects"),
430 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
431 )
432 from eflowRec.PFCfg import getChargedFlowElementCreatorAlgorithm,getNeutralFlowElementCreatorAlgorithm
433 result.addEventAlgo(getNeutralFlowElementCreatorAlgorithm(**neutralPFOArgs), seqname)
434 result.addEventAlgo(getChargedFlowElementCreatorAlgorithm(**chargedPFOArgs), seqname)
435
436
437 return result
438
439if __name__=="__main__":
440
441 from AthenaConfiguration.AllConfigFlags import initConfigFlags
442 cfgFlags = initConfigFlags()
443 #cfgFlags.Input.Files=["myESD.pool.root"]
444 cfgFlags.Input.Files=["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/mc16_13TeV.361022.Pythia8EvtGen_A14NNPDF23LO_jetjet_JZ2W.recon.ESD.e3668_s3170_r10572_homeMade.pool.root"]
445 #
446 cfgFlags.addFlag("eflowRec.TrackColl","InDetTrackParticles")
447 cfgFlags.addFlag("eflowRec.VertexColl","PrimaryVertices")
448 cfgFlags.addFlag("eflowRec.RawClusterColl","CaloTopoClusters")
449 cfgFlags.addFlag("eflowRec.CalClusterColl","CaloCalTopoClustersNew")
450
451 #PF flags
452 cfgFlags.PF.addClusterMoments = False
453 cfgFlags.PF.useClusterMoments = False
454
455 #
456 # Try to get around TRT alignment folder problem in MC
457 cfgFlags.GeoModel.Align.Dynamic = False
458 #
459 cfgFlags.lock()
460
461 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
462 cfg=MainServicesCfg(cfgFlags)
463
464 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
465 tccfg = CaloTopoClusterCfg(cfgFlags)
466 tcalg = tccfg.getPrimary()
467 tcalg.ClustersOutputName = "CaloCalTopoClustersNew"
468 cfg.merge(tccfg)
469 cfg.addEventAlgo(tcalg,sequenceName="AthAlgSeq")
470
471 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
472 cfg.merge(PoolReadCfg(cfgFlags))
473
474 cfg.merge(PFCfg(cfgFlags))
475
476 cfg.printConfig()# (summariseProps=True)
477
478 outputlist = [
479 "xAOD::CaloClusterContainer#CaloCalTopoClusters*",
480 "xAOD::CaloClusterAuxContainer#*CaloCalTopoClusters*Aux.",
481 "xAOD::PFOContainer#*ParticleFlowObjects",
482 "xAOD::PFOAuxContainer#*ParticleFlowObjectsAux."
483 ]
484 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg, outputStreamName
485 cfg.merge(OutputStreamCfg(cfgFlags,"xAOD",ItemList=outputlist))
486 from pprint import pprint
487 pprint( cfg.getEventAlgo(outputStreamName("xAOD")).ItemList )
488
489 histSvc = CompFactory.THistSvc(Output = ["EXPERT DATAFILE='expert-monitoring.root', OPT='RECREATE'"])
490 cfg.addService(histSvc)
491
492 cfg.getService("StoreGateSvc").Dump = True
493
494 cfg.run(10)
if(pathvar)
Class to store reference e/p mean and widths, as well as reference energy density radial profile fit ...
Inherits from IPFClusterCollectionTool and AthAlgTool.
Class to store reference e/p mean and widths, as well as reference energy density radial profile fit ...
Definition PFCfg.py:1
PFTrackExtensionCfg(flags, tracktype, tracksin)
MuonCaloTagCfg(flags, tracktype, tracksin, extcache, cellsin)
HLTPFTrackSelectorCfg(inputFlags, tracktype, tracksin, verticesin, clustersin, cellsin=None)
MuonIsoTagCfg(flags, tracktype, tracksin, verticesin, extcache, clustersin)
getHLTPFCellLevelSubtractionTool(inputFlags, toolName)
TrackingGeoCfg(inputFlags)
getHLTPFMomentCalculatorTool(inputFlags)
CaloGeoAndNoiseCfg(inputFlags)
getHLTPFRecoverSplitShowersTool(inputFlags, toolName)
getMonTool_PFTrackClusterMatching(flags)
getMonTool_PFTrackSelector(flags)
getMonTool_eflowTrackCaloExtensionTool(flags)
Definition PFOnlineMon.py:3
getMonTool_PFAlgorithm(flags)
getMonTool_ParticleCaloExtensionTool(flags)