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