ATLAS Offline Software
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 # Enabled for CI tests running on new derivations from derivation CI output)
 
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 bjetTriggerChainsPerYear
 
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 522 of file FullCPAlgorithmsTest.py.

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

◆ makeTestSequenceBlocks()

def 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.

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

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

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

Variable Documentation

◆ bjetTriggerChainsPerYear

dictionary 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  2024: ['HLT_2j45_0eta290_020jvt_bgn260_2j45_pf_ftf_presel2j25XX2j25bgtwo85_L14jJ40p0ETA25'],
5 }

Definition at line 34 of file FullCPAlgorithmsTest.py.

◆ electronMinPt

int python.FullCPAlgorithmsTest.electronMinPt = 10*GeV

Definition at line 61 of file FullCPAlgorithmsTest.py.

◆ exampleSelectionCuts

dictionary 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

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', '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 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:522
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 # Enabled for CI tests running on new derivations from derivation CI output)
Definition: FullCPAlgorithmsTest.py:65
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:983
python.FullCPAlgorithmsTest.printSequenceAlgs
def printSequenceAlgs(sequence)
Definition: FullCPAlgorithmsTest.py:506