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 configSeq += subConfig
64 subConfig = factory.makeConfig ('Muons.WorkingPoint')
65 subConfig.setOptionValue ('.containerName', 'AnalysisMuons')
66 subConfig.setOptionValue ('.selectionName', 'loose')
67 subConfig.setOptionValue ('.trackSelection', False)
68 subConfig.setOptionValue ('.quality', 'Loose')
69 subConfig.setOptionValue ('.isolation', 'NonIso')
70 configSeq += subConfig
71 subConfig = factory.makeConfig ('Thinning')
72 subConfig.setOptionValue ('.containerName', 'AnalysisMuons')
73 subConfig.setOptionValue ('.selectionName', 'loose')
74 subConfig.setOptionValue ('.deepCopy', True)
75 subConfig.setOptionValue ('.sortPt', True)
76 subConfig.setOptionValue ('.noUniformSelection', True)
77 configSeq += subConfig
78
79
80
81 logPLCPAlgCfg.info('Do Electrons')
82
83 subConfig = factory.makeConfig ('Electrons')
84 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
85 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
86 subConfig.setOptionValue ('.isolationCorrection', True)
87 subConfig.setOptionValue ('.minPt', 0.)
88 subConfig.setOptionValue ('.decorateSamplingPattern', True)
89 subConfig.setOptionValue ('.decorateEmva', True)
90 configSeq += subConfig
91 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
92 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
93 subConfig.setOptionValue ('.selectionName', 'looseLH')
94 subConfig.setOptionValue ('.trackSelection', False)
95 subConfig.setOptionValue ('.identificationWP', 'LooseLH')
96 subConfig.setOptionValue ('.addSelectionToPreselection', False)
97 subConfig.setOptionValue ('.isolationWP', 'NonIso')
98 subConfig.setOptionValue ('.doFSRSelection', True)
99 subConfig.setOptionValue ('.noEffSF', True)
100 configSeq += subConfig
101 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
102 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
103 subConfig.setOptionValue ('.selectionName', 'looseDNN')
104 subConfig.setOptionValue ('.trackSelection', False)
105 subConfig.setOptionValue ('.identificationWP', 'LooseDNN')
106 subConfig.setOptionValue ('.addSelectionToPreselection', False)
107 subConfig.setOptionValue ('.isolationWP', 'NonIso')
108 subConfig.setOptionValue ('.doFSRSelection', True)
109 subConfig.setOptionValue ('.noEffSF', True)
110 configSeq += subConfig
111 subConfig = factory.makeConfig ('Thinning')
112 subConfig.setOptionValue ('.containerName', 'AnalysisElectrons')
113 subConfig.setOptionValue ('.selectionName', 'looseLH||looseDNN')
114 subConfig.setOptionValue ('.deepCopy', True)
115 subConfig.setOptionValue ('.sortPt', True)
116 subConfig.setOptionValue ('.noUniformSelection', True)
117 configSeq += subConfig
118
119
120 subConfig = factory.makeConfig ('Electrons')
121 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
122 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
123 subConfig.setOptionValue ('.isolationCorrection', True)
124 subConfig.setOptionValue ('.minPt', 0.)
125 subConfig.setOptionValue ('.postfix', 'SiHit')
126 subConfig.setOptionValue ('.decorateEmva', True)
127 configSeq += subConfig
128 subConfig = factory.makeConfig ('Electrons.WorkingPoint')
129 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
130 subConfig.setOptionValue ('.selectionName', 'SiHits')
131 subConfig.setOptionValue ('.trackSelection', False)
132 subConfig.setOptionValue ('.identificationWP', 'SiHitElectron')
133 subConfig.setOptionValue ('.isolationWP', 'NonIso')
134 subConfig.setOptionValue ('.doFSRSelection', True)
135 subConfig.setOptionValue ('.noEffSF', True)
136 subConfig.setOptionValue ('.postfix', 'SiHit')
137 configSeq += subConfig
138 subConfig = factory.makeConfig ('Thinning')
139 subConfig.setOptionValue ('.containerName', 'AnalysisSiHitElectrons')
140 subConfig.setOptionValue ('.selectionName', 'SiHits')
141 subConfig.setOptionValue ('.deepCopy', True)
142 subConfig.setOptionValue ('.sortPt', True)
143 subConfig.setOptionValue ('.noUniformSelection', True)
144 configSeq += subConfig
145
146
147
148 logPLCPAlgCfg.info('Do Photons')
149
150 subConfig = factory.makeConfig ('Photons')
151 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
152 subConfig.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
153 subConfig.setOptionValue ('.recomputeIsEM', False)
154 subConfig.setOptionValue ('.minPt', 0.)
155 subConfig.setOptionValue ('.decorateEmva', True)
156 configSeq += subConfig
157 subConfig = factory.makeConfig ('Photons.WorkingPoint')
158 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
159 subConfig.setOptionValue ('.selectionName', 'loose')
160 subConfig.setOptionValue ('.qualityWP', 'Loose')
161 subConfig.setOptionValue ('.isolationWP', 'NonIso')
162 subConfig.setOptionValue ('.doFSRSelection', True)
163 subConfig.setOptionValue ('.recomputeIsEM', False)
164 subConfig.setOptionValue ('.noEffSFForID', True)
165 subConfig.setOptionValue ('.noEffSFForIso', True)
166 configSeq += subConfig
167 subConfig = factory.makeConfig ('Thinning')
168 subConfig.setOptionValue ('.containerName', 'AnalysisPhotons')
169 subConfig.setOptionValue ('.selectionName', 'loose')
170 subConfig.setOptionValue ('.deepCopy', True)
171 subConfig.setOptionValue ('.sortPt', True)
172 subConfig.setOptionValue ('.noUniformSelection', True)
173 configSeq += subConfig
174
175
176
177
178
179 subConfig = factory.makeConfig ('TauJets')
180 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
181 configSeq += subConfig
182 subConfig = factory.makeConfig ('TauJets.WorkingPoint')
183 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
184 subConfig.setOptionValue ('.selectionName', 'baseline')
185 subConfig.setOptionValue ('.quality', 'Baseline')
186 configSeq += subConfig
187 subConfig = factory.makeConfig ('Thinning')
188 subConfig.setOptionValue ('.containerName', 'AnalysisTauJets')
189 subConfig.setOptionValue ('.selectionName', 'baseline')
190 subConfig.setOptionValue ('.deepCopy', True)
191 subConfig.setOptionValue ('.sortPt', True)
192 subConfig.setOptionValue ('.noUniformSelection', True)
193 configSeq += subConfig
194
195
196 jetContainer = 'AntiKt4EMPFlowJets'
197 subConfig = factory.makeConfig ('Jets', containerName='AnalysisJets',
198 jetCollection=jetContainer)
199 subConfig.setOptionValue ('.runFJvtSelection', False)
200 subConfig.setOptionValue ('.runJvtSelection', False)
201 configSeq += subConfig
202 subConfig = factory.makeConfig ('Jets.Uncertainties')
203 subConfig.setOptionValue ('.containerName', 'AnalysisJets')
204 configSeq += subConfig
205 subConfig = factory.makeConfig ('Thinning')
206 subConfig.setOptionValue ('.containerName', 'AnalysisJets')
207 subConfig.setOptionValue ('.deepCopy', True)
208 subConfig.setOptionValue ('.sortPt', True)
209 subConfig.setOptionValue ('.noUniformSelection', True)
210 configSeq += subConfig
211
212 largeRjetContainer='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets'
213 subConfig = factory.makeConfig ('Jets', containerName='AnalysisLargeRJets',
214 jetCollection=largeRjetContainer)
215 subConfig.setOptionValue ('.runGhostMuonAssociation', False)
216
217 subConfig.setOptionValue ('.minPt', 0.)
218 subConfig.setOptionValue ('.maxPt', 0.)
219 subConfig.setOptionValue ('.maxRapidity', 0.)
220 subConfig.setOptionValue ('.minMass', 0.)
221 subConfig.setOptionValue ('.maxMass', 0.)
222 configSeq += subConfig
223 subConfig = factory.makeConfig ('Thinning')
224 subConfig.setOptionValue ('.containerName', 'AnalysisLargeRJets')
225 subConfig.setOptionValue ('.deepCopy', True)
226 subConfig.setOptionValue ('.sortPt', True)
227 subConfig.setOptionValue ('.noUniformSelection', True)
228 configSeq += subConfig
229
230 from AnalysisAlgorithmsConfig.ConfigAccumulator import ConfigAccumulator
231 configAccumulator = ConfigAccumulator (dataType=None, algSeq=None,
232 autoconfigFromFlags=flags, noSysSuffix=True, noSystematics=True)
233 configSeq.fullConfigure (configAccumulator)
234 return configAccumulator.CA
235
236
237
238