Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Functions | Variables
python.FullCPAlgorithmsTest Namespace Reference

Functions

def makeTestSequenceBlocks (dataType, algSeq, isPhyslite, geometry=None, autoconfigFromFlags=None, noSystematics=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, returnConfigSeq=False, bleedingEdge=False)
 
def printSequenceAlgs (sequence)
 
def makeSequence (dataType, noSystematics, yamlPath=None, isPhyslite=False, geometry=None, autoconfigFromFlags=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, bleedingEdge=False)
 

Variables

dictionary triggerChainsPerYear
 
dictionary triggerMatchingChainsPerYear
 
dictionary tauTriggerChainsSF
 
dictionary exampleSelectionCuts
 
int electronMinPt = 10*GeV
 
int photonMinPt = 10*GeV
 

Function Documentation

◆ makeSequence()

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

Definition at line 501 of file FullCPAlgorithmsTest.py.

501 def makeSequence (dataType, noSystematics,
502  yamlPath=None,
503  isPhyslite = False, geometry = None,
504  autoconfigFromFlags = None, onlyNominalOR = False,
505  forceEGammaFullSimConfig = False,
506  bleedingEdge = False) :
507 
508  algSeq = AlgSequence('AnalysisSequence')
509 
510  ca = None
511  if not yamlPath:
512  ca = makeTestSequenceBlocks (dataType, algSeq,
513  isPhyslite=isPhyslite,
514  geometry=geometry, onlyNominalOR=onlyNominalOR,
515  autoconfigFromFlags=autoconfigFromFlags,
516  noSystematics=noSystematics,
517  forceEGammaFullSimConfig=forceEGammaFullSimConfig,
518  bleedingEdge=bleedingEdge)
519  else:
520  from AnalysisAlgorithmsConfig.ConfigText import makeSequence as makeSequenceText
521  ca = makeSequenceText(yamlPath, dataType, algSeq, geometry=geometry,
522  isPhyslite=isPhyslite,
523  autoconfigFromFlags=autoconfigFromFlags,
524  noSystematics=noSystematics)
525 
526  if ca is not None:
527  return ca
528  else:
529  return algSeq

◆ makeTestSequenceBlocks()

def python.FullCPAlgorithmsTest.makeTestSequenceBlocks (   dataType,
  algSeq,
  isPhyslite,
  geometry = None,
  autoconfigFromFlags = None,
  noSystematics = None,
  onlyNominalOR = False,
  forceEGammaFullSimConfig = False,
  returnConfigSeq = False,
  bleedingEdge = False 
)

Definition at line 58 of file FullCPAlgorithmsTest.py.

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

◆ printSequenceAlgs()

def 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 485 of file FullCPAlgorithmsTest.py.

485 def printSequenceAlgs (sequence) :
486  """print the algorithms in the sequence without the sequence structure
487 
488  This is mostly meant for easy comparison of different sequences
489  during configuration, particularly the sequences resulting from
490  the old sequence configuration and the new block configuration.
491  Those have different sequence structures in the output, but the
492  algorithms should essentially be configured the same way."""
493  if isinstance (sequence, AlgSequence) :
494  for alg in sequence :
495  printSequenceAlgs (alg)
496  else :
497  # assume this is an algorithm then
498  print (sequence)
499 
500 

Variable Documentation

◆ electronMinPt

int python.FullCPAlgorithmsTest.electronMinPt = 10*GeV

Definition at line 54 of file FullCPAlgorithmsTest.py.

◆ exampleSelectionCuts

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

Definition at line 34 of file FullCPAlgorithmsTest.py.

◆ photonMinPt

int python.FullCPAlgorithmsTest.photonMinPt = 10*GeV

Definition at line 55 of file FullCPAlgorithmsTest.py.

◆ tauTriggerChainsSF

dictionary 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_OR_mediumRNN_tracktwoMVA', 'HLT_tau35_medium1_tracktwoEF_OR_mediumRNN_tracktwoMVA'],
6 }

Definition at line 26 of file FullCPAlgorithmsTest.py.

◆ triggerChainsPerYear

dictionary 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 12 of file FullCPAlgorithmsTest.py.

◆ triggerMatchingChainsPerYear

dictionary 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 20 of file FullCPAlgorithmsTest.py.

python.FullCPAlgorithmsTest.makeSequence
def makeSequence(dataType, noSystematics, yamlPath=None, isPhyslite=False, geometry=None, autoconfigFromFlags=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, bleedingEdge=False)
Definition: FullCPAlgorithmsTest.py:501
python.AlgSequence.AlgSequence
AlgSequence
Definition: PhysicsAnalysis/D3PDTools/AnaAlgorithm/python/AlgSequence.py:7
python.FullCPAlgorithmsTest.makeTestSequenceBlocks
def makeTestSequenceBlocks(dataType, algSeq, isPhyslite, geometry=None, autoconfigFromFlags=None, noSystematics=None, onlyNominalOR=False, forceEGammaFullSimConfig=False, returnConfigSeq=False, bleedingEdge=False)
Definition: FullCPAlgorithmsTest.py:58
python.EventSelectionConfig.makeMultipleEventSelectionConfigs
def makeMultipleEventSelectionConfigs(seq, electrons=None, muons=None, jets=None, largeRjets=None, photons=None, taus=None, met=None, metTerm=None, btagDecoration=None, preselection=None, selectionCutsDict=None, noFilter=None, debugMode=None, cutFlowHistograms=None)
Definition: EventSelectionConfig.py:962
python.FullCPAlgorithmsTest.printSequenceAlgs
def printSequenceAlgs(sequence)
Definition: FullCPAlgorithmsTest.py:485