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