17def CPAlgorithmsCfg(flags):
18 """do the CP algorithm configuration for PHYSLITE"""
19
20 from AthenaCommon.Logging import logging
21 logPLCPAlgCfg = logging.getLogger('PLCPAlgCfg')
22 logPLCPAlgCfg.info('****************** STARTING PHYSLITE CPAlgorithmsCfg *****************')
23
24 forceEGammaFullSimConfig = False
25 if not flags.Sim.ISF.Simulator.isFullSim():
26 logPLCPAlgCfg.warning("Forcing full simulation configuration for EGamma algorithms. This is not recommended for fast simulation but no recommendations available yet.")
27 forceEGammaFullSimConfig = True
28
29 FixedElDict = {}
30 FixedPhDict = {}
31 from egammaAlgs.egammaAODFixesConfig import runAODFix
32 doneFix, fixes = runAODFix(flags)
33 logPLCPAlgCfg.info(f'Existing egamma AOD fixes for timing cut issue : {fixes}')
34 if 'egammatopoIsoFix' in fixes:
35 FixedElDict.update({"ElectronIsolationCorrectionAlg.isolationCorrectionTool.FixTimingIssueInCore": False})
36 FixedPhDict.update({"PhotonIsolationCorrectionAlg.isolationCorrectionTool.FixTimingIssueInCore": False})
37 if 'egClusterL2_3Fix' in fixes:
38 FixedElDict.update({"ElectronCalibrationAndSmearingAlg.calibrationAndSmearingTool.FixForMissingCells": False})
39 FixedPhDict.update({"PhotonCalibrationAndSmearingAlg.calibrationAndSmearingTool.FixForMissingCells": False})
40
41 from AnalysisAlgorithmsConfig.ConfigFactory import ConfigFactory
42 from AnalysisAlgorithmsConfig.ConfigSequence import ConfigSequence
43 configSeq = ConfigSequence ()
44
45
46 factory = ConfigFactory()
47
48
49 subConfig = factory.makeConfig ('CommonServices')
50 subConfig.setOptionValue ('.runSystematics', False)
51 subConfig.setOptionValue ('.fixDAODTruthRecord', False)
52 configSeq += subConfig
53
54
55 import warnings
56 from AnalysisAlgorithmsConfig.ConfigAccumulator import ExpertModeWarning
57 warnings.simplefilter('ignore', ExpertModeWarning)
58
59
60 if flags.Input.isMC:
61
62 configSeq += factory.makeConfig ('PileupReweighting')
63
64
65 configSeq += factory.makeConfig ('EventCleaning')
66 configSeq.setOptionValue ('.noFilter', True)
67 configSeq.setOptionValue ('.GRLDict', getGoodRunsLists())
68
69
70
71 logPLCPAlgCfg.info('Do Muons')
72
73 subConfig = factory.makeConfig ('Muons')
74 subConfig.setOptionValue ('.containerName', 'AnalysisMuons')
75 subConfig.setOptionValue ('.addGlobalFELinksDep', True)
76 configSeq += subConfig
77 subConfig = factory.makeConfig ('Muons.WorkingPoint')
78 subConfig.setOptionValue ('.containerName', 'AnalysisMuons')
79 subConfig.setOptionValue ('.selectionName', 'loose')
80 subConfig.setOptionValue ('.trackSelection', False)
81 subConfig.setOptionValue ('.quality', 'Loose')
82 subConfig.setOptionValue ('.isolation', 'NonIso')
83 configSeq += subConfig
84 subConfig = factory.makeConfig ('Thinning')
85 subConfig.setOptionValue ('.containerName', 'AnalysisMuons')
86 subConfig.setOptionValue ('.selectionName', 'loose')
87 subConfig.setOptionValue ('.deepCopy', True)
88 subConfig.setOptionValue ('.sortPt', True)
89 subConfig.setOptionValue ('.noUniformSelection', True)
90 subConfig.setOptionValue ('.containerType', 'xAOD::MuonContainer')
91 configSeq += subConfig
92
93
94
95 logPLCPAlgCfg.info('Do Electrons')
96
97 subConfig = factory.makeConfig ('Electrons')
98 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
99 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
100 subConfig.setOptionValue ('.isolationCorrection', True)
101 subConfig.setOptionValue ('.minPt', 0.)
102 subConfig.setOptionValue ('.decorateSamplingPattern', True)
103 subConfig.setOptionValue ('.decorateEmva', True)
104 subConfig.setOptionValue ('.addGlobalFELinksDep', True)
105 if len(FixedElDict) > 0:
106 subConfig.setOptionValue ('.propertyOverrides', FixedElDict)
107 configSeq += subConfig
108 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
109 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
110 subConfig.setOptionValue ('.selectionName', 'looseLH')
111 subConfig.setOptionValue ('.trackSelection', False)
112 subConfig.setOptionValue ('.identificationWP', 'LooseLH')
113 subConfig.setOptionValue ('.addSelectionToPreselection', False)
114 subConfig.setOptionValue ('.isolationWP', 'NonIso')
115 subConfig.setOptionValue ('.doFSRSelection', True)
116 subConfig.setOptionValue ('.noEffSF', True)
117 configSeq += subConfig
118 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
119 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
120 subConfig.setOptionValue ('.selectionName', 'looseDNN')
121 subConfig.setOptionValue ('.trackSelection', False)
122 subConfig.setOptionValue ('.identificationWP', 'LooseDNN')
123 subConfig.setOptionValue ('.addSelectionToPreselection', False)
124 subConfig.setOptionValue ('.isolationWP', 'NonIso')
125 subConfig.setOptionValue ('.doFSRSelection', True)
126 subConfig.setOptionValue ('.noEffSF', True)
127 configSeq += subConfig
128 subConfig = factory.makeConfig ('Thinning')
129 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
130 subConfig.setOptionValue ('.selectionName', 'looseLH||looseDNN')
131 subConfig.setOptionValue ('.deepCopy', True)
132 subConfig.setOptionValue ('.sortPt', True)
133 subConfig.setOptionValue ('.noUniformSelection', True)
134 subConfig.setOptionValue ('.containerType', 'xAOD::ElectronContainer')
135 configSeq += subConfig
136
137
138 subConfig = factory.makeConfig ('Electrons')
139 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
140 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
141 subConfig.setOptionValue ('.isolationCorrection', True)
142 subConfig.setOptionValue ('.minPt', 0.)
143 subConfig.setOptionValue ('.postfix', 'SiHit')
144 subConfig.setOptionValue ('.decorateEmva', True)
145 subConfig.setOptionValue ('.addGlobalFELinksDep', True)
146 if len(FixedElDict) > 0:
147 subConfig.setOptionValue ('.propertyOverrides', FixedElDict)
148 configSeq += subConfig
149 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
150 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
151 subConfig.setOptionValue ('.selectionName', 'SiHits')
152 subConfig.setOptionValue ('.trackSelection', False)
153 subConfig.setOptionValue ('.identificationWP', 'SiHitElectron')
154 subConfig.setOptionValue ('.isolationWP', 'NonIso')
155 subConfig.setOptionValue ('.doFSRSelection', True)
156 subConfig.setOptionValue ('.noEffSF', True)
157 subConfig.setOptionValue ('.postfix', 'SiHit')
158 configSeq += subConfig
159 subConfig = factory.makeConfig ('Thinning')
160 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
161 subConfig.setOptionValue ('.selectionName', 'SiHits')
162 subConfig.setOptionValue ('.deepCopy', True)
163 subConfig.setOptionValue ('.sortPt', True)
164 subConfig.setOptionValue ('.noUniformSelection', True)
165 subConfig.setOptionValue ('.containerType', 'xAOD::ElectronContainer')
166 configSeq += subConfig
167
168
169
170 logPLCPAlgCfg.info('Do Photons')
171
172 subConfig = factory.makeConfig ('Photons')
173 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
174 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
175 subConfig.setOptionValue ('.recomputeIsEM', False)
176 subConfig.setOptionValue ('.minPt', 0.)
177 subConfig.setOptionValue ('.decorateEmva', True)
178 subConfig.setOptionValue ('.addGlobalFELinksDep', True)
179 if len(FixedPhDict) > 0:
180 subConfig.setOptionValue ('.propertyOverrides', FixedPhDict)
181 configSeq += subConfig
182 subConfig = factory.makeConfig ('Photons.WorkingPoint')
183 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
184 subConfig.setOptionValue ('.selectionName', 'loose')
185 subConfig.setOptionValue ('.qualityWP', 'Loose')
186 subConfig.setOptionValue ('.isolationWP', 'NonIso')
187 subConfig.setOptionValue ('.doFSRSelection', True)
188 subConfig.setOptionValue ('.recomputeIsEM', False)
189 subConfig.setOptionValue ('.noEffSFForID', True)
190 subConfig.setOptionValue ('.noEffSFForIso', True)
191 configSeq += subConfig
192 subConfig = factory.makeConfig ('Thinning')
193 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
194 subConfig.setOptionValue ('.selectionName', 'loose')
195 subConfig.setOptionValue ('.deepCopy', True)
196 subConfig.setOptionValue ('.sortPt', True)
197 subConfig.setOptionValue ('.noUniformSelection', True)
198 subConfig.setOptionValue ('.containerType', 'xAOD::PhotonContainer')
199 configSeq += subConfig
200
201
202
203
204
205 subConfig = factory.makeConfig ('TauJets')
206 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
207 subConfig.setOptionValue ('.addGlobalFELinksDep', True)
208 configSeq += subConfig
209 subConfig = factory.makeConfig ('TauJets.WorkingPoint')
210 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
211 subConfig.setOptionValue ('.selectionName', 'baseline')
212 subConfig.setOptionValue ('.quality', 'Baseline')
213 configSeq += subConfig
214 subConfig = factory.makeConfig ('Thinning')
215 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
216 subConfig.setOptionValue ('.selectionName', 'baseline')
217 subConfig.setOptionValue ('.deepCopy', True)
218 subConfig.setOptionValue ('.sortPt', True)
219 subConfig.setOptionValue ('.noUniformSelection', True)
220 subConfig.setOptionValue ('.containerType', 'xAOD::TauJetContainer')
221 configSeq += subConfig
222
223
224 jetContainer = 'AntiKt4EMPFlowJets'
225 subConfig = factory.makeConfig ('Jets')
226 subConfig.setOptionValue ('.containerName', 'AnalysisJets')
227 subConfig.setOptionValue ('.jetCollection', jetContainer)
228 subConfig.setOptionValue ('.runFJvtSelection', False)
229 subConfig.setOptionValue ('.runJvtSelection', False)
230 subConfig.setOptionValue ('.runUncertainties', False)
231 subConfig.setOptionValue ('.outputTruthLabelIDs', True)
232 configSeq += subConfig
233 subConfig = factory.makeConfig ('Thinning')
234 subConfig.setOptionValue ('.containerName', 'AnalysisJets')
235 subConfig.setOptionValue ('.deepCopy', True)
236 subConfig.setOptionValue ('.sortPt', True)
237 subConfig.setOptionValue ('.noUniformSelection', True)
238 subConfig.setOptionValue ('.containerType', 'xAOD::JetContainer')
239 configSeq += subConfig
240
241 largeRjetContainer='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets'
242 subConfig = factory.makeConfig ('Jets')
243 subConfig.setOptionValue ('.containerName', 'AnalysisLargeRJets')
244 subConfig.setOptionValue ('.jetCollection', largeRjetContainer)
245 subConfig.setOptionValue ('.runGhostMuonAssociation', False)
246
247 subConfig.setOptionValue ('.minPt', 0.)
248 subConfig.setOptionValue ('.maxPt', 0.)
249 subConfig.setOptionValue ('.maxRapidity', 0.)
250 subConfig.setOptionValue ('.minMass', 0.)
251 subConfig.setOptionValue ('.maxMass', 0.)
252 subConfig.setOptionValue ('.runUncertainties', False)
253 subConfig.setOptionValue ('.outputTruthLabelIDs', True)
254 configSeq += subConfig
255 subConfig = factory.makeConfig ('Thinning')
256 subConfig.setOptionValue ('.containerName', 'AnalysisLargeRJets')
257 subConfig.setOptionValue ('.deepCopy', True)
258 subConfig.setOptionValue ('.sortPt', True)
259 subConfig.setOptionValue ('.noUniformSelection', True)
260 subConfig.setOptionValue ('.containerType', 'xAOD::JetContainer')
261 configSeq += subConfig
262
263 from AnalysisAlgorithmsConfig.ConfigAccumulator import ConfigAccumulator
264 configAccumulator = ConfigAccumulator (dataType=None, algSeq=None,
265 autoconfigFromFlags=flags, noSysSuffix=True, noSystematics=True)
266 configSeq.fullConfigure (configAccumulator)
267 return configAccumulator.CA
268
269
270
271