ATLAS Offline Software
Loading...
Searching...
No Matches
python.FullCPAlgorithmsTest Namespace Reference

Functions

 makeTestSequenceBlocks (dataType, algSeq, isPhyslite, geometry=None, autoconfigFromFlags=None, noSystematics=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, returnConfigSeq=False, bleedingEdge=False # Enabled for CI tests running on new derivations from derivation CI output)
 printSequenceAlgs (sequence)
 makeSequence (dataType, noSystematics, yamlPath=None, isPhyslite=False, geometry=None, autoconfigFromFlags=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, bleedingEdge=False)

Variables

dict triggerChainsPerYear
dict triggerMatchingChainsPerYear
dict tauTriggerChainsSF
dict bjetTriggerChainsPerYear
dict exampleSelectionCuts
int electronMinPt = 10*GeV
int photonMinPt = 10*GeV

Function Documentation

◆ makeSequence()

python.FullCPAlgorithmsTest.makeSequence ( dataType,
noSystematics,
yamlPath = None,
isPhyslite = False,
geometry = None,
autoconfigFromFlags = None,
onlyNominalOR = False,
forceEGammaFullSimConfig = False,
bleedingEdge = False )

Definition at line 525 of file FullCPAlgorithmsTest.py.

530 bleedingEdge = False) :
531
532 algSeq = AlgSequence('AnalysisSequence')
533
534 ca = None
535 if not yamlPath:
536 ca = makeTestSequenceBlocks (dataType, algSeq,
537 isPhyslite=isPhyslite,
538 geometry=geometry, onlyNominalOR=onlyNominalOR,
539 autoconfigFromFlags=autoconfigFromFlags,
540 noSystematics=noSystematics,
541 forceEGammaFullSimConfig=forceEGammaFullSimConfig,
542 bleedingEdge=bleedingEdge)
543 else:
544 from AnalysisAlgorithmsConfig.ConfigText import makeSequence as makeSequenceText
545 ca = makeSequenceText(yamlPath, algSeq=algSeq, flags=autoconfigFromFlags,
546 noSystematics=noSystematics)
547
548 if ca is not None:
549 return ca
550 else:
551 return algSeq

◆ makeTestSequenceBlocks()

python.FullCPAlgorithmsTest.makeTestSequenceBlocks ( dataType,
algSeq,
isPhyslite,
geometry = None,
autoconfigFromFlags = None,
noSystematics = None,
onlyNominalOR = False,
forceEGammaFullSimConfig = False,
returnConfigSeq = False,
bleedingEdge = False # Enabled for CI tests running on new derivations from derivation CI output )

Definition at line 65 of file FullCPAlgorithmsTest.py.

70 ) :
71
72 largeRJets = True
73
74 if autoconfigFromFlags is not None:
75 if geometry is None:
76 geometry = autoconfigFromFlags.GeoModel.Run
77
78 configSeq = ConfigSequence ()
79
80 outputContainers = {'mu_' : 'OutMuons',
81 'el_' : 'OutElectrons',
82 'ph_' : 'OutPhotons',
83 'tau_': 'OutTauJets',
84 'jet_': 'OutJets',
85 'met_': 'AnaMET',
86 '' : 'EventInfo'}
87 outputContainersForMC = {'truth_mu_' : 'OutTruthMuons',
88 'truth_el_' : 'OutTruthElectrons',
89 'truth_ph_' : 'OutTruthPhotons',
90 'truth_tau_': 'OutTruthTaus',
91 'truth_jet_': 'OutTruthJets',
92 'truth_met_': 'TruthMET'}
93
94 # create factory object to build block configurations
95 from AnalysisAlgorithmsConfig.ConfigFactory import ConfigFactory
96 config = ConfigFactory()
97
98 configSeq += config.makeConfig('CommonServices')
99 configSeq.setOptionValue('.systematicsHistogram', 'systematicsList')
100 configSeq.setOptionValue('.enableExpertMode', True)
101
102 configSeq += config.makeConfig('PileupReweighting')
103
104 # Skip events with no primary vertex,
105 # and perform loose jet cleaning
106 configSeq += config.makeConfig ('EventCleaning')
107 configSeq.setOptionValue ('.runEventCleaning', True)
108
109 # disabling comparisons for triggers, because the config blocks do a
110 # lot more than the sequences. Also disabling for Run 3+4, as there is no SF yet
111 if geometry is LHCPeriod.Run2:
112 # Include, and then set up the trigger analysis sequence:
113 configSeq += config.makeConfig( 'Trigger' )
114 configSeq.setOptionValue ('.triggerChainsPerYear', triggerChainsPerYear )
115 configSeq.setOptionValue ('.noFilter', True )
116 configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose' )
117 configSeq.setOptionValue ('.photons', 'AnaPhotons.tight' )
118 configSeq.setOptionValue ('.muons', 'AnaMuons.medium' )
119 configSeq.setOptionValue ('.taus', 'AnaTauJets.tight' )
120 configSeq.setOptionValue ('.electronID', 'Tight' )
121 configSeq.setOptionValue ('.electronIsol', 'Tight_VarRad')
122 configSeq.setOptionValue ('.photonIsol', 'TightCaloOnly')
123 configSeq.setOptionValue ('.muonID', 'Tight')
124 configSeq.setOptionValue ('.triggerMatchingChainsPerYear', triggerMatchingChainsPerYear)
125
126 # Include, and then set up the jet analysis algorithm sequence:
127 configSeq += config.makeConfig( 'Jets',
128 containerName='AnaJets',
129 jetCollection='AntiKt4EMPFlowJets')
130 configSeq.setOptionValue ('.runJvtUpdate', False )
131 configSeq.setOptionValue ('.runNNJvtUpdate', True )
132 configSeq.setOptionValue ('.recalibratePhyslite', False)
133
134 configSeq += config.makeConfig( 'Jets.JVT' )
135 configSeq.setOptionValue ('.containerName', 'AnaJets')
136
137 configSeq += config.makeConfig( 'Jets.FTagTriggerMatching' )
138 configSeq.setOptionValue('.containerName', 'AnaJets')
139 configSeq.setOptionValue('.triggerChainsPerYear', bjetTriggerChainsPerYear)
140
141 # disabling flavor tagging for Run 4, as the configuration just
142 # refuses to work on that
143 if geometry is not LHCPeriod.Run4:
144
145 btagger = "GN2v01"
146 btagWP = "FixedCutBEff_65"
147 configSeq += config.makeConfig( 'Jets.FlavourTagging' )
148 configSeq.setOptionValue ('.containerName', 'AnaJets')
149 configSeq.setOptionValue ('.selectionName', 'ftag')
150 configSeq.setOptionValue ('.btagger', btagger)
151 configSeq.setOptionValue ('.btagWP', btagWP)
152 configSeq.setOptionValue ('.saveScores', 'All')
153
154 configSeq += config.makeConfig( 'Jets.FlavourTaggingEventSF' )
155 configSeq.setOptionValue ('.containerName', 'AnaJets.baselineJvt')
156 configSeq.setOptionValue ('.btagger', btagger)
157 configSeq.setOptionValue('.triggerChainsPerYear',
158 bjetTriggerChainsPerYear)
159
160 if largeRJets :
161 configSeq += config.makeConfig( 'Jets',
162 containerName='AnaLargeRJets',
163 jetCollection='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' )
164 outputContainers['larger_jet_'] = 'OutLargeRJets'
165 configSeq.setOptionValue ('.recalibratePhyslite', False)
166
167
168 # Include, and then set up the electron analysis algorithm sequence:
169 likelihood = True
170 configSeq += config.makeConfig ('Electrons')
171 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
172 configSeq.setOptionValue ('.decorateTruth', True)
173 configSeq.setOptionValue ('.decorateCaloClusterEta', True)
174 configSeq.setOptionValue ('.writeTrackD0Z0', True)
175 configSeq.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
176 configSeq.setOptionValue ('.recalibratePhyslite', False)
177 configSeq.setOptionValue ('.minPt', electronMinPt)
178 configSeq += config.makeConfig ('Electrons.WorkingPoint')
179 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
180 configSeq.setOptionValue ('.selectionName', 'loose')
181 configSeq.setOptionValue ('.forceFullSimConfig', forceEGammaFullSimConfig)
182 if likelihood:
183 configSeq.setOptionValue ('.identificationWP', 'LooseBLayerLH')
184 else:
185 configSeq.setOptionValue ('.identificationWP', 'LooseDNN')
186 configSeq.setOptionValue ('.isolationWP', 'Tight_VarRad')
187 configSeq.setOptionValue ('.chargeIDSelectionRun2', True)
188 configSeq.setOptionValue ('.addChargeMisIDSF', geometry is LHCPeriod.Run2)
189 configSeq += config.makeConfig('Electrons.TriggerSF')
190 configSeq.setOptionValue('.containerName', 'AnaElectrons')
191 configSeq.setOptionValue('.electronID', 'LooseBLayerLH')
192 configSeq.setOptionValue('.electronIsol', 'Tight_VarRad')
193 configSeq.setOptionValue('.triggerChainsPerYear', triggerChainsPerYear)
194
195 configSeq += config.makeConfig ('Electrons.IFFClassification')
196 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
197 configSeq += config.makeConfig ('Electrons.MCTCClassification')
198 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
199 configSeq.setOptionValue ('.prefix', 'truth_')
200
201 configSeq += config.makeConfig ('Electrons.PtEtaSelection')
202 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
203 configSeq.setOptionValue ('.minPt', electronMinPt)
204
205
206 # Include, and then set up the photon analysis algorithm sequence:
207 configSeq += config.makeConfig ('Photons')
208 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
209 configSeq.setOptionValue ('.decorateTruth', True)
210 configSeq.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
211 configSeq.setOptionValue ('.recomputeIsEM', False)
212 configSeq.setOptionValue ('.recalibratePhyslite', False)
213 configSeq += config.makeConfig ('Photons.WorkingPoint')
214 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
215 configSeq.setOptionValue ('.selectionName', 'tight')
216 configSeq.setOptionValue ('.forceFullSimConfigForID', forceEGammaFullSimConfig)
217 configSeq.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
218 configSeq.setOptionValue ('.qualityWP', 'Tight')
219 configSeq.setOptionValue ('.isolationWP', 'FixedCutTight')
220 configSeq.setOptionValue ('.recomputeIsEM', False)
221
222 configSeq += config.makeConfig ('Photons.PtEtaSelection')
223 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
224 configSeq.setOptionValue ('.minPt', photonMinPt)
225
226
227 # set up the muon analysis algorithm sequence:
228 configSeq += config.makeConfig ('Muons')
229 configSeq.setOptionValue ('.containerName', 'AnaMuons')
230 configSeq.setOptionValue ('.decorateTruth', True)
231 configSeq.setOptionValue ('.writeTrackD0Z0', True)
232 configSeq.setOptionValue ('.recalibratePhyslite', False)
233
234 configSeq += config.makeConfig ('Muons.WorkingPoint')
235 configSeq.setOptionValue ('.containerName', 'AnaMuons')
236 configSeq.setOptionValue ('.selectionName', 'medium')
237 configSeq.setOptionValue ('.quality', 'Medium')
238 configSeq.setOptionValue ('.isolation', 'Loose_VarRad')
239
240 configSeq += config.makeConfig ('Muons.IFFClassification')
241 configSeq.setOptionValue ('.containerName', 'AnaMuons')
242 configSeq += config.makeConfig ('Muons.MCTCClassification')
243 configSeq.setOptionValue ('.containerName', 'AnaMuons')
244 configSeq.setOptionValue ('.prefix', 'truth_')
245
246
247 # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
248 # configSeq += config.makeConfig ('Muons.Selection', 'AnaMuons.tight')
249 # configSeq.setOptionValue ('.quality', 'Tight')
250 # configSeq.setOptionValue ('.isolation', 'Loose_VarRad')
251
252 # Include, and then set up the tau analysis algorithm sequence:
253 configSeq += config.makeConfig ('TauJets')
254 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
255 configSeq.setOptionValue ('.decorateTruth', True)
256 configSeq += config.makeConfig ('TauJets.WorkingPoint')
257 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
258 configSeq.setOptionValue ('.selectionName', 'tight')
259 configSeq.setOptionValue ('.quality', 'Tight')
260
261 configSeq += config.makeConfig('TauJets.TriggerSF')
262 configSeq.setOptionValue('.containerName', 'AnaTauJets')
263 configSeq.setOptionValue('.tauID', 'Tight')
264 configSeq.setOptionValue('.triggerChainsPerYear', tauTriggerChainsSF)
265
266 configSeq += config.makeConfig ('TauJets.MCTCClassification')
267 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
268 configSeq.setOptionValue ('.prefix', 'truth_')
269
270
271 # Add systematic object links
272 configSeq += config.makeConfig('SystObjectLink')
273 configSeq.setOptionValue ('.containerName', 'AnaJets')
274 if largeRJets:
275 configSeq += config.makeConfig('SystObjectLink')
276 configSeq.setOptionValue ('.containerName', 'AnaLargeRJets')
277 configSeq += config.makeConfig('SystObjectLink')
278 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
279 configSeq += config.makeConfig('SystObjectLink')
280 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
281 configSeq += config.makeConfig('SystObjectLink')
282 configSeq.setOptionValue ('.containerName', 'AnaMuons')
283 configSeq += config.makeConfig('SystObjectLink')
284 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
285
286
287 # Particle-level objects
288 configSeq += config.makeConfig ('PL_Electrons')
289 configSeq.setOptionValue ('.containerName', 'TruthElectrons')
290 configSeq += config.makeConfig ('PL_Electrons.MCTCClassification')
291 configSeq.setOptionValue ('.containerName', 'TruthElectrons')
292 configSeq.setOptionValue ('.prefix', '')
293 configSeq += config.makeConfig ('PL_Electrons.PtEtaSelection')
294 configSeq.setOptionValue ('.containerName', 'TruthElectrons')
295 configSeq.setOptionValue ('.skipOnData', True)
296 configSeq.setOptionValue ('.useDressedProperties', True)
297 configSeq.setOptionValue ('.minPt', 20e3)
298
299 configSeq += config.makeConfig ('PL_Muons')
300 configSeq.setOptionValue ('.containerName', 'TruthMuons')
301 configSeq += config.makeConfig ('PL_Muons.MCTCClassification')
302 configSeq.setOptionValue ('.containerName', 'TruthMuons')
303 configSeq.setOptionValue ('.prefix', '')
304 configSeq += config.makeConfig ('PL_Muons.PtEtaSelection')
305 configSeq.setOptionValue ('.containerName', 'TruthMuons')
306 configSeq.setOptionValue ('.skipOnData', True)
307 configSeq.setOptionValue ('.useDressedProperties', True)
308 configSeq.setOptionValue ('.minPt', 20e3)
309
310 configSeq += config.makeConfig ('PL_Neutrinos')
311 configSeq.setOptionValue ('.skipOnData', True)
312
313 configSeq += config.makeConfig ('PL_Jets')
314 configSeq.setOptionValue ('.containerName', 'AntiKt4TruthDressedWZJets')
315 configSeq += config.makeConfig ('PL_Jets.PtEtaSelection')
316 configSeq.setOptionValue ('.containerName', 'AntiKt4TruthDressedWZJets')
317 configSeq.setOptionValue ('.skipOnData', True)
318 configSeq.setOptionValue ('.minPt', 20e3)
319
320 configSeq += config.makeConfig ('PL_Taus')
321 configSeq.setOptionValue ('.containerName', 'TruthTaus')
322 configSeq += config.makeConfig ('PL_Taus.MCTCClassification')
323 configSeq.setOptionValue ('.containerName', 'TruthTaus')
324 configSeq.setOptionValue ('.prefix', '')
325 configSeq += config.makeConfig ('PL_Taus.PtEtaSelection')
326 configSeq.setOptionValue ('.containerName', 'TruthTaus')
327 configSeq.setOptionValue ('.skipOnData', True)
328 configSeq.setOptionValue ('.minPt', 20e3)
329
330 configSeq += config.makeConfig ('PL_Photons')
331 configSeq.setOptionValue ('.containerName', 'TruthPhotons')
332 configSeq += config.makeConfig ('PL_Photons.PtEtaSelection')
333 configSeq.setOptionValue ('.containerName', 'TruthPhotons')
334 configSeq.setOptionValue ('.skipOnData', True)
335 configSeq.setOptionValue ('.minPt', 20e3)
336
337 configSeq += config.makeConfig ('PL_MissingET')
338 configSeq.setOptionValue ('.skipOnData', True)
339
340 configSeq += config.makeConfig ('PL_OverlapRemoval')
341 configSeq.setOptionValue ('.skipOnData', True)
342 configSeq.setOptionValue ('.electrons', 'TruthElectrons')
343 configSeq.setOptionValue ('.muons', 'TruthMuons')
344 configSeq.setOptionValue ('.photons', 'TruthPhotons')
345 configSeq.setOptionValue ('.jets', 'AntiKt4TruthDressedWZJets')
346 configSeq.setOptionValue ('.useRapidityForDeltaR', False)
347
348
349 if dataType is not DataType.Data :
350 # Include, and then set up the generator analysis sequence:
351 configSeq += config.makeConfig( 'GeneratorLevelAnalysis')
352
353
354 # Include, and then set up the met analysis algorithm config:
355 configSeq += config.makeConfig ('MissingET')
356 configSeq.setOptionValue ('.containerName', 'AnaMET')
357 configSeq.setOptionValue ('.jets', 'AnaJets')
358 configSeq.setOptionValue ('.taus', 'AnaTauJets.tight')
359 configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
360 configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
361 # Note that the configuration for the muons is not what you'd
362 # normally do. This is specifically here because this is a unit
363 # test and I wanted to make sure that selection expressions work.
364 # For an actual analysis that would just be `AnaMuons.medium`, but
365 # since `tight` is a strict subset of `medium` it doesn't matter
366 # if we do an "or" of the two.
367 # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
368 # configSeq.setOptionValue ('.muons', 'AnaMuons.medium||tight')
369 configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
370
371
372 # Include, and then set up the overlap analysis algorithm config:
373 configSeq += config.makeConfig( 'OverlapRemoval' )
374 configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
375 configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
376 # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
377 # configSeq.setOptionValue ('.muons', 'AnaMuons.medium||tight')
378 configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
379 configSeq.setOptionValue ('.jets', 'AnaJets.baselineJvt')
380 configSeq.setOptionValue ('.taus', 'AnaTauJets.tight')
381 configSeq.setOptionValue ('.inputLabel', 'preselectOR')
382 configSeq.setOptionValue ('.outputLabel', 'passesOR' )
383 configSeq.setOptionValue ('.nominalOnly', onlyNominalOR )
384
385
386 # ObjectCutFlow blocks
387 configSeq += config.makeConfig ('ObjectCutFlow')
388 configSeq.setOptionValue ('.containerName', 'AnaJets')
389 configSeq.setOptionValue ('.selectionName', 'jvt')
390 configSeq += config.makeConfig ('ObjectCutFlow')
391 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
392 configSeq.setOptionValue ('.selectionName', 'loose')
393 configSeq += config.makeConfig ('ObjectCutFlow')
394 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
395 configSeq.setOptionValue ('.selectionName', 'tight')
396 configSeq += config.makeConfig ('ObjectCutFlow')
397 configSeq.setOptionValue ('.containerName', 'AnaMuons')
398 configSeq.setOptionValue ('.selectionName', 'medium')
399 configSeq += config.makeConfig ('ObjectCutFlow')
400 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
401 configSeq.setOptionValue ('.selectionName', 'tight')
402
403 # Include and set up a basic run of the event selection algorithm config:
404 if geometry is not LHCPeriod.Run4:
405 # configSeq += config.makeConfig( 'EventSelection', None )
406 # configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
407 # configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
408 # configSeq.setOptionValue ('.jets', 'AnaJets')
409 # configSeq.setOptionValue ('.met', 'AnaMET')
410 # configSeq.setOptionValue ('.selectionCutsDict', exampleSelectionCuts)
411 from EventSelectionAlgorithms.EventSelectionConfig import makeMultipleEventSelectionConfigs
412 makeMultipleEventSelectionConfigs(configSeq, electrons = 'AnaElectrons.loose', muons = 'AnaMuons.medium', jets = 'AnaJets.baselineJvt',
413 met = 'AnaMET', btagDecoration = 'ftag_select_ftag',
414 selectionCutsDict = exampleSelectionCuts, noFilter = True,
415 cutFlowHistograms = True)
416
417 configSeq += config.makeConfig ('Bootstraps')
418 configSeq.setOptionValue ('.nReplicas', 2000 )
419 configSeq.setOptionValue ('.skipOnMC', False)
420
421 # per-event lepton SF
422 configSeq += config.makeConfig ('LeptonSF')
423 if geometry is not LHCPeriod.Run2:
424 configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
425 configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
426 configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
427 configSeq.setOptionValue ('.lepton_postfix', 'nominal')
428
429 # Thinning blocks
430 configSeq += config.makeConfig ('Thinning')
431 configSeq.setOptionValue ('.containerName', 'AnaElectrons')
432 configSeq.setOptionValue ('.selectionName', 'loose')
433 configSeq.setOptionValue ('.outputName', 'OutElectrons')
434 configSeq += config.makeConfig ('Thinning')
435 configSeq.setOptionValue ('.containerName', 'AnaPhotons')
436 configSeq.setOptionValue ('.selectionName', 'tight')
437 configSeq.setOptionValue ('.outputName', 'OutPhotons')
438 configSeq += config.makeConfig ('Thinning')
439 configSeq.setOptionValue ('.containerName', 'AnaMuons')
440 configSeq.setOptionValue ('.selectionName', 'medium')
441 configSeq.setOptionValue ('.outputName', 'OutMuons')
442 configSeq += config.makeConfig ('Thinning')
443 configSeq.setOptionValue ('.containerName', 'AnaTauJets')
444 configSeq.setOptionValue ('.selectionName', 'tight')
445 configSeq.setOptionValue ('.outputName', 'OutTauJets')
446 configSeq += config.makeConfig ('Thinning')
447 configSeq.setOptionValue ('.containerName', 'AnaJets')
448 configSeq.setOptionValue ('.outputName', 'OutJets')
449 if largeRJets :
450 configSeq += config.makeConfig ('Thinning')
451 configSeq.setOptionValue ('.containerName', 'AnaLargeRJets')
452 configSeq.setOptionValue ('.outputName', 'OutLargeRJets')
453
454 configSeq += config.makeConfig ('Thinning')
455 configSeq.setOptionValue ('.containerName', 'TruthElectrons')
456 configSeq.setOptionValue ('.skipOnData', True)
457 configSeq.setOptionValue ('.outputName', 'OutTruthElectrons')
458 configSeq += config.makeConfig ('Thinning')
459 configSeq.setOptionValue ('.containerName', 'TruthPhotons')
460 configSeq.setOptionValue ('.skipOnData', True)
461 configSeq.setOptionValue ('.outputName', 'OutTruthPhotons')
462 configSeq += config.makeConfig ('Thinning')
463 configSeq.setOptionValue ('.containerName', 'TruthMuons')
464 configSeq.setOptionValue ('.skipOnData', True)
465 configSeq.setOptionValue ('.outputName', 'OutTruthMuons')
466 configSeq += config.makeConfig ('Thinning')
467 configSeq.setOptionValue ('.containerName', 'TruthTaus')
468 configSeq.setOptionValue ('.skipOnData', True)
469 configSeq.setOptionValue ('.outputName', 'OutTruthTaus')
470 configSeq += config.makeConfig ('Thinning')
471 configSeq.setOptionValue ('.containerName', 'AntiKt4TruthDressedWZJets')
472 configSeq.setOptionValue ('.outputName', 'OutTruthJets')
473 configSeq.setOptionValue ('.skipOnData', True)
474
475 configSeq += config.makeConfig ('Output')
476 configSeq.setOptionValue ('.treeName', 'analysis')
477 configSeq.setOptionValue ('.vars', [
478 'EventInfo.actualInteractionsPerCrossing -> actualMuScaled',
479 'OutMuons_NOSYS.muonType -> mu_muonType type=uint16' #types are typically not needed, but if needed this is how you add them
480 ])
481 configSeq.setOptionValue ('.metVars', [
482 'AnaMET_%SYS%.met -> met_%SYS%',
483 ])
484 configSeq.setOptionValue ('.truthMetVars', [
485 'TruthMET_NOSYS.met -> truth_met',
486 ])
487 configSeq.setOptionValue ('.containers', outputContainers)
488 configSeq.setOptionValue ('.containersOnlyForMC', outputContainersForMC)
489 configSeq.setOptionValue ('.commands', [
490 'disable actualInteractionsPerCrossing',
491 ])
492
493 # save the tool configuration to a txt file
494 configSeq += config.makeConfig ('PrintConfiguration')
495
496 # return configSeq for unit test
497 if returnConfigSeq:
498 return configSeq
499
500 configAccumulator = ConfigAccumulator (algSeq=algSeq, flags=autoconfigFromFlags, noSystematics=noSystematics)
501 configSeq.fullConfigure (configAccumulator)
502
503 # order can change during fullConfigure
504 configSeq.printOptions()
505
506 return configAccumulator.CA if isAthena else None
507
508

◆ printSequenceAlgs()

python.FullCPAlgorithmsTest.printSequenceAlgs ( sequence)
print the algorithms in the sequence without the sequence structure

This is mostly meant for easy comparison of different sequences
during configuration, particularly the sequences resulting from
the old sequence configuration and the new block configuration.
Those have different sequence structures in the output, but the
algorithms should essentially be configured the same way.

Definition at line 509 of file FullCPAlgorithmsTest.py.

509def printSequenceAlgs (sequence) :
510 """print the algorithms in the sequence without the sequence structure
511
512 This is mostly meant for easy comparison of different sequences
513 during configuration, particularly the sequences resulting from
514 the old sequence configuration and the new block configuration.
515 Those have different sequence structures in the output, but the
516 algorithms should essentially be configured the same way."""
517 if isinstance (sequence, AlgSequence) :
518 for alg in sequence :
519 printSequenceAlgs (alg)
520 else :
521 # assume this is an algorithm then
522 print (sequence)
523
524

Variable Documentation

◆ bjetTriggerChainsPerYear

dict python.FullCPAlgorithmsTest.bjetTriggerChainsPerYear
Initial value:
1= {
2 2022: ['HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
3 2023: ['HLT_2j45_0eta290_020jvt_bgn160_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
4}

Definition at line 35 of file FullCPAlgorithmsTest.py.

◆ electronMinPt

int python.FullCPAlgorithmsTest.electronMinPt = 10*GeV

Definition at line 61 of file FullCPAlgorithmsTest.py.

◆ exampleSelectionCuts

dict python.FullCPAlgorithmsTest.exampleSelectionCuts
Initial value:
1= {
2 'SUBcommon': ,
3 'ejets': ,
4 'mujets':
5}

Definition at line 41 of file FullCPAlgorithmsTest.py.

◆ photonMinPt

int python.FullCPAlgorithmsTest.photonMinPt = 10*GeV

Definition at line 62 of file FullCPAlgorithmsTest.py.

◆ tauTriggerChainsSF

dict python.FullCPAlgorithmsTest.tauTriggerChainsSF
Initial value:
1= {
2 2015: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
3 2016: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
4 2017: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
5 2018: ['HLT_tau25_medium1_tracktwoEF', 'HLT_tau35_medium1_tracktwoEF'],
6 2022: ['HLT_tau25_mediumRNN_tracktwoMVA', 'HLT_tau35_mediumRNN_tracktwoMVA'],
7 2023: ['HLT_tau25_mediumRNN_tracktwoMVA', 'HLT_tau35_mediumRNN_tracktwoMVA'],
8}

Definition at line 27 of file FullCPAlgorithmsTest.py.

◆ triggerChainsPerYear

dict python.FullCPAlgorithmsTest.triggerChainsPerYear
Initial value:
1= {
2 2015: ['HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose', 'HLT_mu20_iloose_L1MU15 || HLT_mu40', 'HLT_2g20_tight'],
3 2016: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium || HLT_mu50', 'HLT_g35_loose_g25_loose'],
4 2017: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_2g22_tight_L12EM15VHI', 'HLT_mu50'],
5 2018: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_g35_medium_g25_medium_L12EM20VH', 'HLT_mu26_ivarmedium', 'HLT_2mu14'],
6 # '2022': ['HLT_e26_lhtight_ivarloose_L1EM22VHI || HLT_e60_lhmedium_L1EM22VHI || HLT_e140_lhloose_L1EM22VHI'],
7 # '2023': ['HLT_e26_lhtight_ivarloose_L1EM22VHI || HLT_e60_lhmedium_L1EM22VHI || HLT_e140_lhloose_L1EM22VHI'],
8}

Definition at line 13 of file FullCPAlgorithmsTest.py.

◆ triggerMatchingChainsPerYear

dict python.FullCPAlgorithmsTest.triggerMatchingChainsPerYear
Initial value:
1= {
2 2015: ['HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose', 'HLT_mu20_iloose_L1MU15 || HLT_mu40'],
3 2016: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium || HLT_mu50'],
4 2017: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu50'],
5 2018: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium'],
6}

Definition at line 21 of file FullCPAlgorithmsTest.py.