ATLAS Offline Software
HIGlobalConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD, addToESD
6 
7 def HITowerWeightToolCfg(flags, name="WeightTool", **kwargs):
8  """Configures HITowerWeightTool"""
10 
11  if "InputFile" not in kwargs:
12  from HIJetRec.HIJetRecUtilsCA import getHIClusterGeoWeightFile
13  kwargs.setdefault("InputFile", getHIClusterGeoWeightFile(flags))
14  kwargs.setdefault("ApplyCorrection", flags.HeavyIon.Jet.ApplyTowerEtaPhiCorrection)
15  kwargs.setdefault("ConfigDir", 'HIJetCorrection/')
16 
17  acc.setPrivateTools(CompFactory.HITowerWeightTool(name, **kwargs))
18  return acc
19 
20 def HIEventShapeMapToolCfg(flags, name="HIEventShapeMapTool", **kwargs):
21  """Configures HIEventShapeMapTool"""
22  acc = ComponentAccumulator()
23  acc.setPrivateTools(CompFactory.HIEventShapeMapTool(name, **kwargs))
24  return acc
25 
26 def HIEventShapeFillerToolCfg(flags, name="HIEventShapeFillerTool", **kwargs):
27  """Configures HIEventShapeFillerTool"""
28  acc = ComponentAccumulator()
29  if "EventShapeMapTool" not in kwargs:
30  eventShapeMapTool = acc.popToolsAndMerge(HIEventShapeMapToolCfg(flags, name="HIEventShapeMapTool"))
31  kwargs.setdefault("EventShapeMapTool", eventShapeMapTool)
32  kwargs.setdefault("UseClusters", False)
33  if kwargs["UseClusters"]:
34  #Add weight tool to filler tool
35  TWTool=acc.popToolsAndMerge(HITowerWeightToolCfg(flags, name="WeightTool"))
36  kwargs.setdefault("TowerWeightTool", TWTool)
37 
38  acc.setPrivateTools(CompFactory.HIEventShapeFillerTool(name, **kwargs))
39  return acc
40 
41 def HIEventShapeMakerCfg(flags, name="HIEventShapeMaker", doWeighted=False, **kwargs):
42  """Configures HIEventShapeMaker, either with weights (for HIJets) or without weight (for HIGlobal)"""
43  acc = ComponentAccumulator()
44 
45  # merge dependencies
46  if not flags.HeavyIon.isDerivation:
47  from CaloRec.CaloRecoConfig import CaloRecoCfg
48  acc.merge(CaloRecoCfg(flags))
49 
50  from CaloRec.CaloTowerMakerConfig import CaloTowerMakerCfg
51  towerMaker = acc.getPrimaryAndMerge(CaloTowerMakerCfg(flags))
52 
53  kwargs.setdefault("NaviTowerKey", towerMaker.TowerContainerName)
54  kwargs.setdefault("InputTowerKey", "")
55  else:
56  kwargs.setdefault("InputTowerKey", "HIClusters")
57 
58  kwargs.setdefault("OutputContainerKey", "HIEventShape")
59  if "HIEventShapeFillerTool" not in kwargs:
60  name_esft="HIEventShapeFillerTool_Weighted" if doWeighted else "HIEventShapeFillerTool"
61  eventShapeTool = acc.popToolsAndMerge(HIEventShapeFillerToolCfg(flags,
62  name=name_esft,
63  UseClusters=doWeighted))
64  kwargs.setdefault("HIEventShapeFillerTool",eventShapeTool)
65 
66  acc.addEventAlgo(CompFactory.HIEventShapeMaker(name, **kwargs))
67  return acc
68 
69 def HIEventShapeSummaryToolCfg(flags, name="HIEventShapeSummaryTool", **kwargs):
70  """Configures HIEventShapeSummaryTool"""
71  acc = ComponentAccumulator()
72 
73  # TODO configure MBTS &FWD conversion once available
74  kwargs.setdefault("SubCalos", ['FCal','EMCal','HCal','ALL'])
75  kwargs.setdefault("Samplings", ['FCAL0','FCAL1','FCAL2'])
76  kwargs.setdefault("DoPositiveNegativeSides", False)
77 
78  acc.setPrivateTools(CompFactory.HIEventShapeSummaryTool(name, **kwargs))
79  return acc
80 
81 def HIGlobalRecCfg(flags):
82  """Configures Heavy Ion Global quantities """
83  acc = ComponentAccumulator()
84 
85  shapeKey=flags.HeavyIon.Global.EventShape
86  output = [ f"xAOD::HIEventShapeContainer#{shapeKey}", f"xAOD::HIEventShapeAuxContainer#{shapeKey}Aux."]
87 
88  kwargs_hies=dict()
89  if flags.HeavyIon.Global.doEventShapeSummary:
90  summaryKey = "CaloSums"
91  summaryTool = acc.popToolsAndMerge(HIEventShapeSummaryToolCfg(flags))
92  kwargs_hies["SummaryTool"] = summaryTool
93  kwargs_hies["SummaryContainerKey"] = summaryKey
94  output.extend([ f"xAOD::HIEventShapeContainer#{summaryKey}", f"xAOD::HIEventShapeAuxContainer#{summaryKey}Aux."])
95 
96  acc.merge(HIEventShapeMakerCfg(flags, **kwargs_hies))
97 
98  acc.merge(addToESD(flags, output))
99  acc.merge(addToAOD(flags, output))
100 
101  return acc
102 
103 
104 if __name__ == "__main__":
105  from AthenaConfiguration.AllConfigFlags import initConfigFlags
106  from AthenaConfiguration.TestDefaults import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
107  flags = initConfigFlags()
108  flags.Input.Files = [defaultTestFiles.d + "/RecJobTransformTests/data18_hi.00367384.physics_HardProbes.daq.RAW._lb0145._SFO-8._0001.data"]
109  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
110  flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
111  flags.Exec.MaxEvents=5
112  flags.Concurrency.NumThreads=1
113 
114  flags.fillFromArgs() # enable unit tests to switch only parts of reco: python -m HIRecConfig.HIRecConfig HeavyIon.doGlobal = 0 and so on
115  flags.lock()
116 
117  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
118  acc = MainServicesCfg(flags)
119  from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
120  acc.merge(ByteStreamReadCfg(flags))
121 
122  acc.merge(HIGlobalRecCfg(flags))
123  from AthenaCommon.Constants import DEBUG
124  acc.getEventAlgo("HIEventShapeMaker").OutputLevel=DEBUG
125 
126  acc.printConfig(withDetails=True, summariseProps=True)
127  flags.dump()
128 
129  import sys
130  sys.exit(acc.run().isFailure())
HIGlobalConfig.HITowerWeightToolCfg
def HITowerWeightToolCfg(flags, name="WeightTool", **kwargs)
Definition: HIGlobalConfig.py:7
python.CaloRecoConfig.CaloRecoCfg
def CaloRecoCfg(flags, clustersname=None)
Definition: CaloRecoConfig.py:9
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
HIJetRecUtilsCA.getHIClusterGeoWeightFile
def getHIClusterGeoWeightFile(flags)
Definition: HIJetRecUtilsCA.py:9
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
HIGlobalConfig.HIEventShapeMapToolCfg
def HIEventShapeMapToolCfg(flags, name="HIEventShapeMapTool", **kwargs)
Definition: HIGlobalConfig.py:20
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:310
Constants
some useful constants -------------------------------------------------—
HIGlobalConfig.HIEventShapeSummaryToolCfg
def HIEventShapeSummaryToolCfg(flags, name="HIEventShapeSummaryTool", **kwargs)
Definition: HIGlobalConfig.py:69
python.OutputStreamConfig.addToESD
def addToESD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:187
HIGlobalConfig.HIEventShapeFillerToolCfg
def HIEventShapeFillerToolCfg(flags, name="HIEventShapeFillerTool", **kwargs)
Definition: HIGlobalConfig.py:26
python.CaloTowerMakerConfig.CaloTowerMakerCfg
def CaloTowerMakerCfg(flags)
Definition: CaloTowerMakerConfig.py:7
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:202
HIGlobalConfig.HIEventShapeMakerCfg
def HIEventShapeMakerCfg(flags, name="HIEventShapeMaker", doWeighted=False, **kwargs)
Definition: HIGlobalConfig.py:41
HIGlobalConfig.HIGlobalRecCfg
def HIGlobalRecCfg(flags)
Definition: HIGlobalConfig.py:81