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

500 def makeSequence (dataType, noSystematics,
501  yamlPath=None,
502  isPhyslite = False, geometry = None,
503  autoconfigFromFlags = None, onlyNominalOR = False,
504  forceEGammaFullSimConfig = False,
505  bleedingEdge = False) :
506 
507  algSeq = AlgSequence('AnalysisSequence')
508 
509  ca = None
510  if not yamlPath:
511  ca = makeTestSequenceBlocks (dataType, algSeq,
512  isPhyslite=isPhyslite,
513  geometry=geometry, onlyNominalOR=onlyNominalOR,
514  autoconfigFromFlags=autoconfigFromFlags,
515  noSystematics=noSystematics,
516  forceEGammaFullSimConfig=forceEGammaFullSimConfig,
517  bleedingEdge=bleedingEdge)
518  else:
519  from AnalysisAlgorithmsConfig.ConfigText import makeSequence as makeSequenceText
520  ca = makeSequenceText(yamlPath, dataType, algSeq, geometry=geometry,
521  isPhyslite=isPhyslite,
522  autoconfigFromFlags=autoconfigFromFlags,
523  noSystematics=noSystematics)
524 
525  if ca is not None:
526  return ca
527  else:
528  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 ('.forceFullSimConfigForIso', 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 ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
189  configSeq.setOptionValue ('.recomputeIsEM', False)
190  configSeq.setOptionValue ('.recalibratePhyslite', False)
191  configSeq += config.makeConfig ('Photons.WorkingPoint',
192  containerName='AnaPhotons',
193  selectionName='tight')
194  configSeq.setOptionValue ('.forceFullSimConfigForID', forceEGammaFullSimConfig)
195  configSeq.setOptionValue ('.forceFullSimConfigForIso', forceEGammaFullSimConfig)
196  configSeq.setOptionValue ('.qualityWP', 'Tight')
197  configSeq.setOptionValue ('.isolationWP', 'FixedCutTight')
198  configSeq.setOptionValue ('.recomputeIsEM', False)
199 
200  configSeq += config.makeConfig ('Photons.PtEtaSelection',
201  containerName='AnaPhotons')
202  configSeq.setOptionValue ('.minPt', photonMinPt)
203 
204 
205  # set up the muon analysis algorithm sequence:
206  configSeq += config.makeConfig ('Muons',
207  containerName='AnaMuons')
208  configSeq.setOptionValue ('.decorateTruth', True)
209  configSeq.setOptionValue ('.writeTrackD0Z0', True)
210  configSeq.setOptionValue ('.recalibratePhyslite', False)
211  configSeq += config.makeConfig ('Muons.WorkingPoint',
212  containerName='AnaMuons',
213  selectionName='medium')
214  configSeq.setOptionValue ('.quality', 'Medium')
215  configSeq.setOptionValue ('.isolation', 'Loose_VarRad')
216 
217  configSeq += config.makeConfig ('Muons.IFFClassification',
218  containerName='AnaMuons')
219  configSeq += config.makeConfig ('Muons.MCTCClassification',
220  containerName='AnaMuons')
221  configSeq.setOptionValue ('.prefix', 'truth_')
222 
223 
224  # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
225  # configSeq += config.makeConfig ('Muons.Selection', 'AnaMuons.tight')
226  # configSeq.setOptionValue ('.quality', 'Tight')
227  # configSeq.setOptionValue ('.isolation', 'Loose_VarRad')
228 
229  # Include, and then set up the tau analysis algorithm sequence:
230  configSeq += config.makeConfig ('TauJets',
231  containerName='AnaTauJets')
232  configSeq.setOptionValue ('.decorateTruth', True)
233  configSeq += config.makeConfig ('TauJets.WorkingPoint',
234  containerName='AnaTauJets',
235  selectionName='tight')
236  configSeq.setOptionValue ('.quality', 'Tight')
237 
238  configSeq += config.makeConfig('TauJets.TriggerSF')
239  configSeq.setOptionValue('.containerName', 'AnaTauJets')
240  configSeq.setOptionValue('.tauID', 'Tight')
241  configSeq.setOptionValue('.triggerChainsPerYear', tauTriggerChainsSF)
242 
243  configSeq += config.makeConfig ('TauJets.MCTCClassification',
244  containerName='AnaTauJets')
245  configSeq.setOptionValue ('.prefix', 'truth_')
246 
247 
248  # Add systematic object links
249  configSeq += config.makeConfig('SystObjectLink', containerName='AnaJets')
250  if largeRJets:
251  configSeq += config.makeConfig('SystObjectLink', containerName='AnaLargeRJets')
252  configSeq += config.makeConfig('SystObjectLink', containerName='AnaElectrons')
253  configSeq += config.makeConfig('SystObjectLink', containerName='AnaPhotons')
254  configSeq += config.makeConfig('SystObjectLink', containerName='AnaMuons')
255  configSeq += config.makeConfig('SystObjectLink', containerName='AnaTauJets')
256 
257 
258  # Particle-level objects
259  configSeq += config.makeConfig ('PL_Electrons',
260  containerName='TruthElectrons')
261  configSeq += config.makeConfig ('PL_Electrons.MCTCClassification',
262  containerName='TruthElectrons')
263  configSeq.setOptionValue ('.prefix', '')
264  configSeq += config.makeConfig ('PL_Electrons.PtEtaSelection',
265  containerName='TruthElectrons')
266  configSeq.setOptionValue ('.skipOnData', True)
267  configSeq.setOptionValue ('.useDressedProperties', True)
268  configSeq.setOptionValue ('.minPt', 20e3)
269 
270  configSeq += config.makeConfig ('PL_Muons',
271  containerName='TruthMuons')
272  configSeq += config.makeConfig ('PL_Muons.MCTCClassification',
273  containerName='TruthMuons')
274  configSeq.setOptionValue ('.prefix', '')
275  configSeq += config.makeConfig ('PL_Muons.PtEtaSelection',
276  containerName='TruthMuons')
277  configSeq.setOptionValue ('.skipOnData', True)
278  configSeq.setOptionValue ('.useDressedProperties', True)
279  configSeq.setOptionValue ('.minPt', 20e3)
280 
281  configSeq += config.makeConfig ('PL_Neutrinos')
282  configSeq.setOptionValue ('.skipOnData', True)
283 
284  configSeq += config.makeConfig ('PL_Jets',
285  containerName='AntiKt4TruthDressedWZJets')
286  configSeq += config.makeConfig ('PL_Jets.PtEtaSelection',
287  containerName='AntiKt4TruthDressedWZJets')
288  configSeq.setOptionValue ('.skipOnData', True)
289  configSeq.setOptionValue ('.minPt', 20e3)
290 
291  configSeq += config.makeConfig ('PL_Taus',
292  containerName='TruthTaus')
293  configSeq += config.makeConfig ('PL_Taus.MCTCClassification',
294  containerName='TruthTaus')
295  configSeq.setOptionValue ('.prefix', '')
296  configSeq += config.makeConfig ('PL_Taus.PtEtaSelection',
297  containerName='TruthTaus')
298  configSeq.setOptionValue ('.skipOnData', True)
299  configSeq.setOptionValue ('.minPt', 20e3)
300 
301  configSeq += config.makeConfig ('PL_Photons',
302  containerName='TruthPhotons')
303  configSeq += config.makeConfig ('PL_Photons.PtEtaSelection',
304  containerName='TruthPhotons')
305  configSeq.setOptionValue ('.skipOnData', True)
306  configSeq.setOptionValue ('.minPt', 20e3)
307 
308  configSeq += config.makeConfig ('PL_MissingET')
309  configSeq.setOptionValue ('.skipOnData', True)
310 
311  configSeq += config.makeConfig ('PL_OverlapRemoval')
312  configSeq.setOptionValue ('.skipOnData', True)
313  configSeq.setOptionValue ('.electrons', 'TruthElectrons')
314  configSeq.setOptionValue ('.muons', 'TruthMuons')
315  configSeq.setOptionValue ('.photons', 'TruthPhotons')
316  configSeq.setOptionValue ('.jets', 'AntiKt4TruthDressedWZJets')
317  configSeq.setOptionValue ('.useRapidityForDeltaR', False)
318 
319 
320  if dataType is not DataType.Data :
321  # Include, and then set up the generator analysis sequence:
322  configSeq += config.makeConfig( 'GeneratorLevelAnalysis')
323 
324 
325  # Include, and then set up the met analysis algorithm config:
326  configSeq += config.makeConfig ('MissingET',
327  containerName='AnaMET')
328  configSeq.setOptionValue ('.jets', 'AnaJets')
329  configSeq.setOptionValue ('.taus', 'AnaTauJets.tight')
330  configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
331  configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
332  # Note that the configuration for the muons is not what you'd
333  # normally do. This is specifically here because this is a unit
334  # test and I wanted to make sure that selection expressions work.
335  # For an actual analysis that would just be `AnaMuons.medium`, but
336  # since `tight` is a strict subset of `medium` it doesn't matter
337  # if we do an "or" of the two.
338  # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
339  # configSeq.setOptionValue ('.muons', 'AnaMuons.medium||tight')
340  configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
341 
342 
343  # Include, and then set up the overlap analysis algorithm config:
344  configSeq += config.makeConfig( 'OverlapRemoval' )
345  configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
346  configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
347  # TODO: MCP should restore this when the recommendations for Tight WP exist in R23
348  # configSeq.setOptionValue ('.muons', 'AnaMuons.medium||tight')
349  configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
350  configSeq.setOptionValue ('.jets', 'AnaJets.baselineJvt')
351  configSeq.setOptionValue ('.taus', 'AnaTauJets.tight')
352  configSeq.setOptionValue ('.inputLabel', 'preselectOR')
353  configSeq.setOptionValue ('.outputLabel', 'passesOR' )
354  configSeq.setOptionValue ('.nominalOnly', onlyNominalOR )
355 
356 
357  # ObjectCutFlow blocks
358  configSeq += config.makeConfig ('ObjectCutFlow',
359  containerName='AnaJets',
360  selectionName='jvt')
361  configSeq += config.makeConfig ('ObjectCutFlow',
362  containerName='AnaElectrons',
363  selectionName='loose')
364  configSeq += config.makeConfig ('ObjectCutFlow',
365  containerName='AnaPhotons',
366  selectionName='tight')
367  configSeq += config.makeConfig ('ObjectCutFlow',
368  containerName='AnaMuons',
369  selectionName='medium')
370  configSeq += config.makeConfig ('ObjectCutFlow',
371  containerName='AnaTauJets',
372  selectionName='tight')
373 
374 
375  # Include and set up a basic run of the event selection algorithm config:
376  if geometry is not LHCPeriod.Run4:
377  # configSeq += config.makeConfig( 'EventSelection', None )
378  # configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
379  # configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
380  # configSeq.setOptionValue ('.jets', 'AnaJets')
381  # configSeq.setOptionValue ('.met', 'AnaMET')
382  # configSeq.setOptionValue ('.selectionCutsDict', exampleSelectionCuts)
383  from EventSelectionAlgorithms.EventSelectionConfig import makeMultipleEventSelectionConfigs
384  makeMultipleEventSelectionConfigs(configSeq, electrons = 'AnaElectrons.loose', muons = 'AnaMuons.medium', jets = 'AnaJets.baselineJvt',
385  met = 'AnaMET', btagDecoration = 'ftag_select_ftag',
386  selectionCutsDict = exampleSelectionCuts, noFilter = True,
387  cutFlowHistograms = True)
388 
389  configSeq += config.makeConfig ('Bootstraps')
390  configSeq.setOptionValue ('.nReplicas', 2000 )
391  configSeq.setOptionValue ('.skipOnMC', False)
392 
393  # per-event lepton SF
394  configSeq += config.makeConfig ('LeptonSF')
395  if geometry is not LHCPeriod.Run2:
396  configSeq.setOptionValue ('.electrons', 'AnaElectrons.loose')
397  configSeq.setOptionValue ('.muons', 'AnaMuons.medium')
398  configSeq.setOptionValue ('.photons', 'AnaPhotons.tight')
399  configSeq.setOptionValue ('.lepton_postfix', 'nominal')
400 
401  # Thinning blocks
402  configSeq += config.makeConfig ('Thinning',
403  containerName='AnaElectrons')
404  configSeq.setOptionValue ('.selectionName', 'loose')
405  configSeq.setOptionValue ('.outputName', 'OutElectrons')
406  configSeq += config.makeConfig ('Thinning',
407  containerName='AnaPhotons')
408  configSeq.setOptionValue ('.selectionName', 'tight')
409  configSeq.setOptionValue ('.outputName', 'OutPhotons')
410  configSeq += config.makeConfig ('Thinning',
411  containerName='AnaMuons')
412  configSeq.setOptionValue ('.selectionName', 'medium')
413  configSeq.setOptionValue ('.outputName', 'OutMuons')
414  configSeq += config.makeConfig ('Thinning',
415  containerName='AnaTauJets')
416  configSeq.setOptionValue ('.selectionName', 'tight')
417  configSeq.setOptionValue ('.outputName', 'OutTauJets')
418  configSeq += config.makeConfig ('Thinning',
419  containerName='AnaJets')
420  configSeq.setOptionValue ('.outputName', 'OutJets')
421  if largeRJets :
422  configSeq += config.makeConfig ('Thinning',
423  containerName='AnaLargeRJets')
424  configSeq.setOptionValue ('.outputName', 'OutLargeRJets')
425  configSeq += config.makeConfig ('Thinning',
426  containerName='TruthElectrons')
427  configSeq.setOptionValue ('.skipOnData', True)
428  configSeq.setOptionValue ('.outputName', 'OutTruthElectrons')
429  configSeq += config.makeConfig ('Thinning',
430  containerName='TruthPhotons')
431  configSeq.setOptionValue ('.skipOnData', True)
432  configSeq.setOptionValue ('.outputName', 'OutTruthPhotons')
433  configSeq += config.makeConfig ('Thinning',
434  containerName='TruthMuons')
435  configSeq.setOptionValue ('.skipOnData', True)
436  configSeq.setOptionValue ('.outputName', 'OutTruthMuons')
437  configSeq += config.makeConfig ('Thinning',
438  containerName='TruthTaus')
439  configSeq.setOptionValue ('.skipOnData', True)
440  configSeq.setOptionValue ('.outputName', 'OutTruthTaus')
441  configSeq += config.makeConfig ('Thinning',
442  containerName='AntiKt4TruthDressedWZJets')
443  configSeq.setOptionValue ('.outputName', 'OutTruthJets')
444  configSeq.setOptionValue ('.skipOnData', True)
445 
446  configSeq += config.makeConfig ('Output')
447  configSeq.setOptionValue ('.treeName', 'analysis')
448  configSeq.setOptionValue ('.vars', [
449  'EventInfo.actualInteractionsPerCrossing -> actualMuScaled',
450  ])
451  configSeq.setOptionValue ('.metVars', [
452  'AnaMET_%SYS%.met -> met_%SYS%',
453  ])
454  configSeq.setOptionValue ('.truthMetVars', [
455  'TruthMET_NOSYS.met -> truth_met',
456  ])
457  configSeq.setOptionValue ('.containers', outputContainers)
458  configSeq.setOptionValue ('.containersOnlyForMC', outputContainersForMC)
459  configSeq.setOptionValue ('.commands', [
460  'disable actualInteractionsPerCrossing',
461  ])
462 
463  # save the tool configuration to a txt file
464  configSeq += config.makeConfig ('PrintConfiguration')
465 
466  # return configSeq for unit test
467  if returnConfigSeq:
468  return configSeq
469 
470  configAccumulator = ConfigAccumulator (algSeq, dataType, isPhyslite, geometry, autoconfigFromFlags=autoconfigFromFlags, noSystematics=noSystematics)
471  configSeq.fullConfigure (configAccumulator)
472 
473  # order can change during fullConfigure
474  configSeq.printOptions()
475 
476  from AnaAlgorithm.DualUseConfig import isAthena, useComponentAccumulator
477  if isAthena and useComponentAccumulator:
478  return configAccumulator.CA
479  else:
480  return None
481 
482 
483 

◆ 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 484 of file FullCPAlgorithmsTest.py.

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

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:500
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:484