ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCellMakerConfig.py
Go to the documentation of this file.
1#!/usr/bin/env athena.py
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
4
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory import CompFactory
7from AthenaConfiguration.Enums import LHCPeriod
8from LArCellRec.LArCellBuilderConfig import LArCellBuilderCfg,LArCellCorrectorCfg
9from TileRecUtils.TileCellBuilderConfig import TileCellBuilderCfg
10from CaloCellCorrection.CaloCellCorrectionConfig import CaloCellPedestalCorrCfg, CaloCellNeighborsAverageCorrCfg, CaloCellTimeCorrCfg, CaloEnergyRescalerCfg
11
12def CaloCellMakerCfg(flags, addToOutputStream=True):
13 result=ComponentAccumulator()
14
15 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
16 from TileGeoModel.TileGMConfig import TileGMCfg
17
18 result.merge(LArGMCfg(flags))
19 result.merge(TileGMCfg(flags))
20
21 larCellBuilder = result.popToolsAndMerge(LArCellBuilderCfg(flags))
22 larCellCorrectors = result.popToolsAndMerge(LArCellCorrectorCfg(flags))
23 tileCellBuilder = result.popToolsAndMerge(TileCellBuilderCfg(flags))
24 cellFinalizer = CompFactory.CaloCellContainerFinalizerTool()
25
26 cellMakerTools=[larCellBuilder,tileCellBuilder,cellFinalizer]+larCellCorrectors
27
28 #Add corrections tools that are not LAr or Tile specific:
29 if flags.Calo.Cell.doPileupOffsetBCIDCorr or flags.Calo.Cell.doPedestalCorr:
30 theCaloCellPedestalCorr=CaloCellPedestalCorrCfg(flags)
31 cellMakerTools.append(result.popToolsAndMerge(theCaloCellPedestalCorr))
32
33 #LAr HV scale corr must come after pedestal corr
34 if flags.LAr.doHVCorr:
35 from LArCellRec.LArCellBuilderConfig import LArHVCellContCorrCfg
36 theLArHVCellContCorr=LArHVCellContCorrCfg(flags)
37 cellMakerTools.append(result.popToolsAndMerge(theLArHVCellContCorr))
38
39
40 if flags.Calo.Cell.doDeadCellCorr:
41 theCaloCellNeighborAvg=CaloCellNeighborsAverageCorrCfg(flags)
42 cellMakerTools.append(result.popToolsAndMerge(theCaloCellNeighborAvg))
43
44 if flags.Calo.Cell.doEnergyCorr:
45 theCaloCellEnergyRescaler=CaloEnergyRescalerCfg(flags)
46 cellMakerTools.append(result.popToolsAndMerge(theCaloCellEnergyRescaler))
47 if flags.Calo.Cell.doTimeCorr:
48 theCaloTimeCorr=CaloCellTimeCorrCfg(flags)
49 cellMakerTools.append(result.popToolsAndMerge(theCaloTimeCorr))
50
51 if flags.LAr.doDeadOTxCorr:
52 from LArCellRec.LArCellBuilderConfig import LArDeadOTXCorrCfg
53 theLArDeadOTXCorr=LArDeadOTXCorrCfg(flags)
54 cellMakerTools.append(result.popToolsAndMerge(theLArDeadOTXCorr))
55
56 cellAlgo = CompFactory.CaloCellMaker(CaloCellMakerToolNames=cellMakerTools,
57 CaloCellsOutputName="AllCalo",
58 EnableChronoStat=(flags.Concurrency.NumThreads == 0))
59
60 result.addEventAlgo(cellAlgo, primary=True)
61
62 outputContainers = [f'CaloCellContainer#{flags.Egamma.Keys.Input.CaloCells}']
63 if flags.GeoModel.Run in [LHCPeriod.Run1, LHCPeriod.Run2, LHCPeriod.Run3]:
64 outputContainers += ["TileCellContainer#MBTSContainer"]
65 if flags.GeoModel.Run is LHCPeriod.Run2:
66 outputContainers += ["TileCellContainer#E4prContainer"]
67 if addToOutputStream:
68 from OutputStreamAthenaPool.OutputStreamConfig import addToESD, addToAOD
69 result.merge(addToESD(flags, outputContainers))
70 result.merge(addToAOD(flags, outputContainers))
71
72 # Add a SuperCell container creation, if asked by flags
73 if flags.LAr.DT.storeET_ID or flags.LAr.DT.storeET_additional:
74 from LArConfiguration.LArSuperCellConfig import LArSuperCellCfg
75 result.merge(LArSuperCellCfg(flags))
76
77 return result
78
79
80
81if __name__=="__main__":
82 from AthenaCommon.Logging import log
83 from AthenaCommon.Constants import DEBUG
84 log.setLevel(DEBUG)
85
86 from AthenaConfiguration.AllConfigFlags import initConfigFlags
87 from AthenaConfiguration.TestDefaults import defaultTestFiles,defaultGeometryTags
88 flags = initConfigFlags()
89 flags.Input.Files = defaultTestFiles.RDO_RUN2
90 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
91 flags.lock()
92
93 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
94 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
95 cfg=MainServicesCfg(flags)
96 cfg.merge(PoolReadCfg(flags))
97 from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
98 cfg.merge(EventInfoCnvAlgCfg(flags, disableBeamSpot=True),sequenceName="AthAlgSeq")
99
100
102 acc.getPrimary().CaloCellsOutputName="AllCaloNew"
103 cfg.merge(acc)
104
105 from AthenaCommon.Utils.unixtools import find_datafile
106 reffile=find_datafile("CaloRec/CaloCells.txt.ref")
107 if not reffile:
108 log.error("Reference file 'CaloRec/CaloCells.txt.ref' not found")
109 reffile=""
110
111 from AthenaCommon.SystemOfUnits import GeV
112 cfg.addEventAlgo(CompFactory.CaloCellDumper(InputContainer="AllCaloNew",EnergyCut=2*GeV,
113 RefName=reffile))
114
115 cfg.run(5)
116
CaloCellMakerCfg(flags, addToOutputStream=True)