ATLAS Offline Software
Loading...
Searching...
No Matches
CaloLCWPerformanceConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2# CA config of job to get performance plots for local hadronic
3# calibration on single pions
4
5
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8
9
10
11def GetLCWPerfCfg(flags):
12
13 cfg=ComponentAccumulator()
14
15 lcPerf = CompFactory.GetLCSinglePionsPerf("LocalHadPerformance")
16
17 # collection name to study cluster moments
18 lcPerf.ClusterBasicCollName = "CaloTopoClusters"
19
20 # collections names to study engReco wrt Truth after different correction steps
21 lcPerf.ClusterCollectionNames = ["CaloTopoClusters", "CaloWTopoCluster", "CaloOOCTopoCluster", "CaloCalTopoClusters"]
22
23 lcPerf.CalibrationHitContainerNames= ["LArCalibrationHitInactive","LArCalibrationHitActive","TileCalibHitActiveCell","TileCalibHitInactiveCell"]
24 lcPerf.DMCalibrationHitContainerNames= ["LArCalibrationHitDeadMaterial_DEAD","LArCalibrationHitInactive_DEAD","LArCalibrationHitActive_DEAD","TileCalibHitDeadMaterial"]
25
26 from math import pi
27 lcPerf.DistanceCut = 1.5
28 lcPerf.doEngRecOverTruth = True
29 lcPerf.doEngTag = True
30 lcPerf.doEngRecSpect = True
31 lcPerf.doEngNoiseClus = True
32 lcPerf.doClusMoments = True
33 lcPerf.doRecoEfficiency = True
34 lcPerf.etamin = 0.0
35 lcPerf.etamax = 5.0
36 lcPerf.netabin = 25
37 lcPerf.phimin = -pi
38 lcPerf.phimax = pi
39 lcPerf.nphibin = 1
40 lcPerf.logenermin = 2.0
41 lcPerf.logenermax = 6.4
42 lcPerf.nlogenerbin = 22
43 lcPerf.useGoodClus = False
44 lcPerf.usePionClustersOnly = False
45 lcPerf.useRecoEfficiency = False
46
47 lcPerf.OutputFileName = flags.LCW.outFileNamePerf
48
49 cfg.addEventAlgo(lcPerf)
50
51 return cfg
52
53
54if __name__=="__main__":
55 from AthenaConfiguration.AllConfigFlags import initConfigFlags
56 flags = initConfigFlags()
57 from CaloLocalHadCalib.LCWConfigFlags import addLCWFlags
58 addLCWFlags(flags)
59
60 #flags.Input.Files = ["/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/mc20e_13TeV/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.ESD.e4993_s3227_r12689/myESD.pool.root"]
61 #flags.Input.Files = ["/home/pavol/mc10_7TeV/ESD.371532._001990.pool.root.1"]
62 flags.Input.Files = ["/home/pavol/mc16_13TeV/ESD.29275544._000648.pool.root.1"]
63 flags.Output.ESDFileName="esdOut.pool.root"
64 from AthenaConfiguration.Enums import LHCPeriod
65 flags.GeoModel.Run = LHCPeriod.Run1
66 from AthenaConfiguration.TestDefaults import defaultGeometryTags
67 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN1_2010
68
69
70 flags.fillFromArgs()
71
72 # for debugging
73 from AthenaCommon.Constants import DEBUG
74 flags.Exec.OutputLevel=DEBUG
75
76 # redo topo clusters on LC scale
77 flags.Calo.TopoCluster.doTopoClusterLocalCalib = True
78 flags.Calo.TopoCluster.doCellWeightCalib = False
79 flags.Calo.TopoCluster.doCalibHitMoments = True
80
81 flags.Digitization.HighGainEMECIW = False
82 flags.Calo.Noise.fixedLumiForNoise=60*0.1724*50/25 # mu=60; dt=25ns
83 flags.Calo.Noise.useCaloNoiseLumi=False
84
85 flags.lock()
86
87 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
88 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
89
90 cfg = MainServicesCfg(flags)
91 cfg.merge(PoolReadCfg(flags))
92
93 from CaloRec.CaloTopoClusterConfig import CaloTopoClusterCfg
94 cfg.merge(CaloTopoClusterCfg(flags))
95
96 topoAlg = cfg.getEventAlgo("CaloCalTopoClustersMaker")
97 topoAlg.ClusterCorrectionTools.__getitem__("TopoCalibMoments").MatchDmType = 1 # 1=loose, 2=medium (default), 3=tight
98 topoAlg.ClusterCorrectionTools.__getitem__("TopoCalibMoments").MomentsNames += ["ENG_CALIB_OUT_L"]
99 topoAlg.ClusterCorrectionTools.__getitem__("TopoCalibMoments").CalibrationHitContainerNames = ["LArCalibrationHitInactive","LArCalibrationHitActive","TileCalibHitActiveCell","TileCalibHitInactiveCell"]
100 topoAlg.ClusterCorrectionTools.__getitem__("TopoCalibMoments").DMCalibrationHitContainerNames = ["LArCalibrationHitDeadMaterial_DEAD","LArCalibrationHitInactive_DEAD","LArCalibrationHitActive_DEAD","TileCalibHitDeadMaterial"]
101
102 # here add snapshots
103 from CaloRec.CaloTopoClusterConfig import addSnapshot
104 addSnapshot(topoAlg,"OOCPi0Calib","CaloOOCTopoCluster")
105 addSnapshot(topoAlg,"LocalCalib","CaloWTopoCluster")
106
107 cfg.merge(GetLCWPerfCfg(flags))
108
109 # configure output
110 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
111 myItemList = ['EventInfo#*', "McEventCollection#TruthEvent",
112 'xAOD::CaloClusterContainer#CaloCalTopoClusters',
113 'xAOD::CaloClusterAuxContainer#CaloCalTopoClustersAux.']
114
115 cfg.merge( OutputStreamCfg(flags,"StreamDPD", ItemList=myItemList,
116 disableEventTag=True, takeItemsFromInput=False))
117
118 # remove the default folders
119 from IOVDbSvc.IOVDbSvcConfig import blockFolder
120 blockFolder(cfg,"/CALO/Ofl/HadCalibration2/CaloEMFrac")
121 blockFolder(cfg,"/CALO/Ofl/HadCalibration2/H1ClusterCellWeights")
122 blockFolder(cfg,"/CALO/Ofl/HadCalibration2/CaloOutOfCluster")
123 blockFolder(cfg,"/CALO/Ofl/HadCalibration2/CaloOutOfClusterPi0")
124 blockFolder(cfg,"/CALO/Ofl/HadCalibration2/CaloDMCorr2")
125
126
127
128 # LCW folders from sqlite files
129 clFolders=( ("/CALO/HadCalibration2/CaloEMFrac<tag>CaloEMFrac2-R3S-2021-02-00-00-FTFP-BERT-DT25-EPOS-A3-OFC25-MU60</tag>", "myclwooc.db","CaloLocalHadCoeff"),
130 ("/CALO/HadCalibration2/H1ClusterCellWeights<tag>CaloH1CellWeights2-R3S-2021-02-00-00-FTFP-BERT-DT25-EPOS-A3-OFC25-MU60</tag>", "myclwooc.db","CaloLocalHadCoeff"),
131 ("/CALO/HadCalibration2/CaloOutOfCluster<tag>CaloHadOOCCorr2-R3S-2021-02-00-00-FTFP-BERT-DT25-EPOS-A3-OFC25-MU60</tag>", "myclwooc.db","CaloLocalHadCoeff"),
132 ("/CALO/HadCalibration2/CaloOutOfClusterPi0<tag>CaloHadOOCCorrPi02-R3S-2021-02-00-00-FTFP-BERT-DT25-EPOS-A3-OFC25-MU60</tag>", "myclwooc.db","CaloLocalHadCoeff"),
133 ("/CALO/HadCalibration2/CaloDMCorr2<tag>CaloHadDMCorr2-R3S-2021-02-00-00-FTFP-BERT-DT25-EPOS-A3-OFC25-MU60</tag>", "myDm.db","CaloLocalHadCoeff") )
134 from IOVDbSvc.IOVDbSvcConfig import addFolderList
135 cfg.merge(addFolderList(flags, clFolders, db="OFLP200"))
136
137 # for debugging purposes:
138 cfg.getService("StoreGateSvc").Dump=True
139 cfg.getService("MessageSvc").defaultLimit=999999
140
141 cfg.run(10)