5 from AnaAlgorithm.AlgSequence
import AlgSequence
6 from AnalysisAlgorithmsConfig.ConfigSequence
import ConfigSequence
7 from AnalysisAlgorithmsConfig.ConfigAccumulator
import ConfigAccumulator, DataType
8 from AthenaConfiguration.Enums
import LHCPeriod
12 triggerChainsPerYear = {
13 2015: [
'HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose',
'HLT_mu20_iloose_L1MU15 || HLT_mu40',
'HLT_2g20_tight'],
14 2016: [
'HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0',
'HLT_mu26_ivarmedium || HLT_mu50',
'HLT_g35_loose_g25_loose'],
15 2017: [
'HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0',
'HLT_2g22_tight_L12EM15VHI',
'HLT_mu50'],
16 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'],
20 triggerMatchingChainsPerYear = {
21 2015: [
'HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose',
'HLT_mu20_iloose_L1MU15 || HLT_mu40'],
22 2016: [
'HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0',
'HLT_mu26_ivarmedium || HLT_mu50'],
23 2017: [
'HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0',
'HLT_mu50'],
24 2018: [
'HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0',
'HLT_mu26_ivarmedium'],
26 tauTriggerChainsSF = {
27 2015: [
'HLT_tau25_medium1_tracktwo',
'HLT_tau35_medium1_tracktwo'],
28 2016: [
'HLT_tau25_medium1_tracktwo',
'HLT_tau35_medium1_tracktwo'],
29 2017: [
'HLT_tau25_medium1_tracktwo',
'HLT_tau35_medium1_tracktwo'],
30 2018: [
'HLT_tau25_medium1_tracktwoEF',
'HLT_tau35_medium1_tracktwoEF'],
31 2022: [
'HLT_tau25_mediumRNN_tracktwoMVA',
'HLT_tau35_mediumRNN_tracktwoMVA'],
32 2023: [
'HLT_tau25_mediumRNN_tracktwoMVA',
'HLT_tau35_mediumRNN_tracktwoMVA'],
34 bjetTriggerChainsPerYear = {
35 2022: [
'HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
36 2023: [
'HLT_2j45_0eta290_020jvt_bgn160_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
37 2024: [
'HLT_2j45_0eta290_020jvt_bgn260_2j45_pf_ftf_presel2j25XX2j25bgtwo85_L14jJ40p0ETA25'],
41 exampleSelectionCuts = {
42 'SUBcommon':
"""JET_N_BTAG >= 2
47 'ejets':
"""IMPORT SUBcommon
54 'mujets':
"""IMPORT SUBcommon
61 electronMinPt = 10*GeV
66 geometry=None, autoconfigFromFlags=None, noSystematics=None,
67 onlyNominalOR=False, forceEGammaFullSimConfig=False,
68 returnConfigSeq=False,
74 if autoconfigFromFlags
is not None:
76 geometry = autoconfigFromFlags.GeoModel.Run
78 configSeq = ConfigSequence ()
80 outputContainers = {
'mu_' :
'OutMuons',
81 'el_' :
'OutElectrons',
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'}
95 from AnalysisAlgorithmsConfig.ConfigFactory
import ConfigFactory
96 config = ConfigFactory()
98 configSeq += config.makeConfig(
'CommonServices')
99 configSeq.setOptionValue(
'.systematicsHistogram',
'systematicsList')
101 configSeq += config.makeConfig(
'PileupReweighting')
105 configSeq += config.makeConfig (
'EventCleaning')
106 configSeq.setOptionValue (
'.runEventCleaning',
True)
110 if geometry
is LHCPeriod.Run2:
112 configSeq += config.makeConfig(
'Trigger' )
113 configSeq.setOptionValue (
'.triggerChainsPerYear', triggerChainsPerYear )
114 configSeq.setOptionValue (
'.noFilter',
True )
115 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose' )
116 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight' )
117 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium' )
118 configSeq.setOptionValue (
'.taus',
'AnaTauJets.tight' )
119 configSeq.setOptionValue (
'.electronID',
'Tight' )
120 configSeq.setOptionValue (
'.electronIsol',
'Tight_VarRad')
121 configSeq.setOptionValue (
'.photonIsol',
'TightCaloOnly')
122 configSeq.setOptionValue (
'.muonID',
'Tight')
123 configSeq.setOptionValue (
'.triggerMatchingChainsPerYear', triggerMatchingChainsPerYear)
126 configSeq += config.makeConfig(
'Jets',
127 containerName=
'AnaJets',
128 jetCollection=
'AntiKt4EMPFlowJets')
129 configSeq.setOptionValue (
'.runJvtUpdate',
False )
130 configSeq.setOptionValue (
'.runNNJvtUpdate',
True )
131 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
133 configSeq += config.makeConfig(
'Jets.JVT' )
134 configSeq.setOptionValue (
'.containerName',
'AnaJets')
136 configSeq += config.makeConfig(
'Jets.FTagTriggerMatching' )
137 configSeq.setOptionValue(
'.containerName',
'AnaJets')
138 configSeq.setOptionValue(
'.triggerChainsPerYear', bjetTriggerChainsPerYear)
142 if geometry
is not LHCPeriod.Run4:
145 btagWP =
"FixedCutBEff_65"
146 configSeq += config.makeConfig(
'Jets.FlavourTagging' )
147 configSeq.setOptionValue (
'.containerName',
'AnaJets')
148 configSeq.setOptionValue (
'.selectionName',
'ftag')
149 configSeq.setOptionValue (
'.btagger', btagger)
150 configSeq.setOptionValue (
'.btagWP', btagWP)
151 configSeq.setOptionValue (
'.saveScores',
'All')
153 configSeq += config.makeConfig(
'Jets.FlavourTaggingEventSF' )
154 configSeq.setOptionValue (
'.containerName',
'AnaJets.baselineJvt')
155 configSeq.setOptionValue (
'.btagger', btagger)
158 configSeq += config.makeConfig(
'Jets',
159 containerName=
'AnaLargeRJets',
160 jetCollection=
'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' )
161 outputContainers[
'larger_jet_'] =
'OutLargeRJets'
162 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
167 configSeq += config.makeConfig (
'Electrons')
168 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
169 configSeq.setOptionValue (
'.decorateTruth',
True)
170 configSeq.setOptionValue (
'.decorateCaloClusterEta',
True)
171 configSeq.setOptionValue (
'.writeTrackD0Z0',
True)
172 configSeq.setOptionValue (
'.forceFullSimConfigForIso', forceEGammaFullSimConfig)
173 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
174 configSeq.setOptionValue (
'.minPt', electronMinPt)
175 configSeq += config.makeConfig (
'Electrons.WorkingPoint')
176 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
177 configSeq.setOptionValue (
'.selectionName',
'loose')
178 configSeq.setOptionValue (
'.forceFullSimConfig', forceEGammaFullSimConfig)
180 configSeq.setOptionValue (
'.identificationWP',
'LooseBLayerLH')
182 configSeq.setOptionValue (
'.identificationWP',
'LooseDNN')
183 configSeq.setOptionValue (
'.isolationWP',
'Tight_VarRad')
184 configSeq.setOptionValue (
'.chargeIDSelectionRun2',
True)
185 configSeq.setOptionValue (
'.addChargeMisIDSF', geometry
is LHCPeriod.Run2)
187 configSeq += config.makeConfig (
'Electrons.IFFClassification')
188 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
189 configSeq += config.makeConfig (
'Electrons.MCTCClassification')
190 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
191 configSeq.setOptionValue (
'.prefix',
'truth_')
193 configSeq += config.makeConfig (
'Electrons.PtEtaSelection')
194 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
195 configSeq.setOptionValue (
'.minPt', electronMinPt)
199 configSeq += config.makeConfig (
'Photons')
200 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
201 configSeq.setOptionValue (
'.decorateTruth',
True)
202 configSeq.setOptionValue (
'.forceFullSimConfigForIso', forceEGammaFullSimConfig)
203 configSeq.setOptionValue (
'.recomputeIsEM',
False)
204 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
205 configSeq += config.makeConfig (
'Photons.WorkingPoint')
206 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
207 configSeq.setOptionValue (
'.selectionName',
'tight')
208 configSeq.setOptionValue (
'.forceFullSimConfigForID', forceEGammaFullSimConfig)
209 configSeq.setOptionValue (
'.forceFullSimConfigForIso', forceEGammaFullSimConfig)
210 configSeq.setOptionValue (
'.qualityWP',
'Tight')
211 configSeq.setOptionValue (
'.isolationWP',
'FixedCutTight')
212 configSeq.setOptionValue (
'.recomputeIsEM',
False)
214 configSeq += config.makeConfig (
'Photons.PtEtaSelection')
215 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
216 configSeq.setOptionValue (
'.minPt', photonMinPt)
220 configSeq += config.makeConfig (
'Muons')
221 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
222 configSeq.setOptionValue (
'.decorateTruth',
True)
223 configSeq.setOptionValue (
'.writeTrackD0Z0',
True)
224 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
226 configSeq += config.makeConfig (
'Muons.WorkingPoint')
227 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
228 configSeq.setOptionValue (
'.selectionName',
'medium')
229 configSeq.setOptionValue (
'.quality',
'Medium')
230 configSeq.setOptionValue (
'.isolation',
'Loose_VarRad')
232 configSeq += config.makeConfig (
'Muons.IFFClassification')
233 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
234 configSeq += config.makeConfig (
'Muons.MCTCClassification')
235 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
236 configSeq.setOptionValue (
'.prefix',
'truth_')
245 configSeq += config.makeConfig (
'TauJets')
246 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
247 configSeq.setOptionValue (
'.decorateTruth',
True)
248 configSeq += config.makeConfig (
'TauJets.WorkingPoint')
249 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
250 configSeq.setOptionValue (
'.selectionName',
'tight')
251 configSeq.setOptionValue (
'.quality',
'Tight')
253 configSeq += config.makeConfig(
'TauJets.TriggerSF')
254 configSeq.setOptionValue(
'.containerName',
'AnaTauJets')
255 configSeq.setOptionValue(
'.tauID',
'Tight')
256 configSeq.setOptionValue(
'.triggerChainsPerYear', tauTriggerChainsSF)
258 configSeq += config.makeConfig (
'TauJets.MCTCClassification')
259 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
260 configSeq.setOptionValue (
'.prefix',
'truth_')
264 configSeq += config.makeConfig(
'SystObjectLink')
265 configSeq.setOptionValue (
'.containerName',
'AnaJets')
267 configSeq += config.makeConfig(
'SystObjectLink')
268 configSeq.setOptionValue (
'.containerName',
'AnaLargeRJets')
269 configSeq += config.makeConfig(
'SystObjectLink')
270 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
271 configSeq += config.makeConfig(
'SystObjectLink')
272 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
273 configSeq += config.makeConfig(
'SystObjectLink')
274 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
275 configSeq += config.makeConfig(
'SystObjectLink')
276 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
280 configSeq += config.makeConfig (
'PL_Electrons')
281 configSeq.setOptionValue (
'.containerName',
'TruthElectrons')
282 configSeq += config.makeConfig (
'PL_Electrons.MCTCClassification')
283 configSeq.setOptionValue (
'.containerName',
'TruthElectrons')
284 configSeq.setOptionValue (
'.prefix',
'')
285 configSeq += config.makeConfig (
'PL_Electrons.PtEtaSelection')
286 configSeq.setOptionValue (
'.containerName',
'TruthElectrons')
287 configSeq.setOptionValue (
'.skipOnData',
True)
288 configSeq.setOptionValue (
'.useDressedProperties',
True)
289 configSeq.setOptionValue (
'.minPt', 20e3)
291 configSeq += config.makeConfig (
'PL_Muons')
292 configSeq.setOptionValue (
'.containerName',
'TruthMuons')
293 configSeq += config.makeConfig (
'PL_Muons.MCTCClassification')
294 configSeq.setOptionValue (
'.containerName',
'TruthMuons')
295 configSeq.setOptionValue (
'.prefix',
'')
296 configSeq += config.makeConfig (
'PL_Muons.PtEtaSelection')
297 configSeq.setOptionValue (
'.containerName',
'TruthMuons')
298 configSeq.setOptionValue (
'.skipOnData',
True)
299 configSeq.setOptionValue (
'.useDressedProperties',
True)
300 configSeq.setOptionValue (
'.minPt', 20e3)
302 configSeq += config.makeConfig (
'PL_Neutrinos')
303 configSeq.setOptionValue (
'.skipOnData',
True)
305 configSeq += config.makeConfig (
'PL_Jets')
306 configSeq.setOptionValue (
'.containerName',
'AntiKt4TruthDressedWZJets')
307 configSeq += config.makeConfig (
'PL_Jets.PtEtaSelection')
308 configSeq.setOptionValue (
'.containerName',
'AntiKt4TruthDressedWZJets')
309 configSeq.setOptionValue (
'.skipOnData',
True)
310 configSeq.setOptionValue (
'.minPt', 20e3)
312 configSeq += config.makeConfig (
'PL_Taus')
313 configSeq.setOptionValue (
'.containerName',
'TruthTaus')
314 configSeq += config.makeConfig (
'PL_Taus.MCTCClassification')
315 configSeq.setOptionValue (
'.containerName',
'TruthTaus')
316 configSeq.setOptionValue (
'.prefix',
'')
317 configSeq += config.makeConfig (
'PL_Taus.PtEtaSelection')
318 configSeq.setOptionValue (
'.containerName',
'TruthTaus')
319 configSeq.setOptionValue (
'.skipOnData',
True)
320 configSeq.setOptionValue (
'.minPt', 20e3)
322 configSeq += config.makeConfig (
'PL_Photons')
323 configSeq.setOptionValue (
'.containerName',
'TruthPhotons')
324 configSeq += config.makeConfig (
'PL_Photons.PtEtaSelection')
325 configSeq.setOptionValue (
'.containerName',
'TruthPhotons')
326 configSeq.setOptionValue (
'.skipOnData',
True)
327 configSeq.setOptionValue (
'.minPt', 20e3)
329 configSeq += config.makeConfig (
'PL_MissingET')
330 configSeq.setOptionValue (
'.skipOnData',
True)
332 configSeq += config.makeConfig (
'PL_OverlapRemoval')
333 configSeq.setOptionValue (
'.skipOnData',
True)
334 configSeq.setOptionValue (
'.electrons',
'TruthElectrons')
335 configSeq.setOptionValue (
'.muons',
'TruthMuons')
336 configSeq.setOptionValue (
'.photons',
'TruthPhotons')
337 configSeq.setOptionValue (
'.jets',
'AntiKt4TruthDressedWZJets')
338 configSeq.setOptionValue (
'.useRapidityForDeltaR',
False)
341 if dataType
is not DataType.Data :
343 configSeq += config.makeConfig(
'GeneratorLevelAnalysis')
347 configSeq += config.makeConfig (
'MissingET')
348 configSeq.setOptionValue (
'.containerName',
'AnaMET')
349 configSeq.setOptionValue (
'.jets',
'AnaJets')
350 configSeq.setOptionValue (
'.taus',
'AnaTauJets.tight')
351 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
352 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight')
361 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
365 configSeq += config.makeConfig(
'OverlapRemoval' )
366 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
367 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight')
370 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
371 configSeq.setOptionValue (
'.jets',
'AnaJets.baselineJvt')
372 configSeq.setOptionValue (
'.taus',
'AnaTauJets.tight')
373 configSeq.setOptionValue (
'.inputLabel',
'preselectOR')
374 configSeq.setOptionValue (
'.outputLabel',
'passesOR' )
375 configSeq.setOptionValue (
'.nominalOnly', onlyNominalOR )
379 configSeq += config.makeConfig (
'ObjectCutFlow')
380 configSeq.setOptionValue (
'.containerName',
'AnaJets')
381 configSeq.setOptionValue (
'.selectionName',
'jvt')
382 configSeq += config.makeConfig (
'ObjectCutFlow')
383 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
384 configSeq.setOptionValue (
'.selectionName',
'loose')
385 configSeq += config.makeConfig (
'ObjectCutFlow')
386 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
387 configSeq.setOptionValue (
'.selectionName',
'tight')
388 configSeq += config.makeConfig (
'ObjectCutFlow')
389 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
390 configSeq.setOptionValue (
'.selectionName',
'medium')
391 configSeq += config.makeConfig (
'ObjectCutFlow')
392 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
393 configSeq.setOptionValue (
'.selectionName',
'tight')
396 if geometry
is not LHCPeriod.Run4:
403 from EventSelectionAlgorithms.EventSelectionConfig
import makeMultipleEventSelectionConfigs
405 met =
'AnaMET', btagDecoration =
'ftag_select_ftag',
406 selectionCutsDict = exampleSelectionCuts, noFilter =
True,
407 cutFlowHistograms =
True)
409 configSeq += config.makeConfig (
'Bootstraps')
410 configSeq.setOptionValue (
'.nReplicas', 2000 )
411 configSeq.setOptionValue (
'.skipOnMC',
False)
414 configSeq += config.makeConfig (
'LeptonSF')
415 if geometry
is not LHCPeriod.Run2:
416 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
417 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
418 configSeq.setOptionValue (
'.photons',
'AnaPhotons.tight')
419 configSeq.setOptionValue (
'.lepton_postfix',
'nominal')
422 configSeq += config.makeConfig (
'Thinning')
423 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
424 configSeq.setOptionValue (
'.selectionName',
'loose')
425 configSeq.setOptionValue (
'.outputName',
'OutElectrons')
426 configSeq += config.makeConfig (
'Thinning')
427 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
428 configSeq.setOptionValue (
'.selectionName',
'tight')
429 configSeq.setOptionValue (
'.outputName',
'OutPhotons')
430 configSeq += config.makeConfig (
'Thinning')
431 configSeq.setOptionValue (
'.containerName',
'AnaMuons')
432 configSeq.setOptionValue (
'.selectionName',
'medium')
433 configSeq.setOptionValue (
'.outputName',
'OutMuons')
434 configSeq += config.makeConfig (
'Thinning')
435 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
436 configSeq.setOptionValue (
'.selectionName',
'tight')
437 configSeq.setOptionValue (
'.outputName',
'OutTauJets')
438 configSeq += config.makeConfig (
'Thinning')
439 configSeq.setOptionValue (
'.containerName',
'AnaJets')
440 configSeq.setOptionValue (
'.outputName',
'OutJets')
442 configSeq += config.makeConfig (
'Thinning')
443 configSeq.setOptionValue (
'.containerName',
'AnaLargeRJets')
444 configSeq.setOptionValue (
'.outputName',
'OutLargeRJets')
446 configSeq += config.makeConfig (
'Thinning')
447 configSeq.setOptionValue (
'.containerName',
'TruthElectrons')
448 configSeq.setOptionValue (
'.skipOnData',
True)
449 configSeq.setOptionValue (
'.outputName',
'OutTruthElectrons')
450 configSeq += config.makeConfig (
'Thinning')
451 configSeq.setOptionValue (
'.containerName',
'TruthPhotons')
452 configSeq.setOptionValue (
'.skipOnData',
True)
453 configSeq.setOptionValue (
'.outputName',
'OutTruthPhotons')
454 configSeq += config.makeConfig (
'Thinning')
455 configSeq.setOptionValue (
'.containerName',
'TruthMuons')
456 configSeq.setOptionValue (
'.skipOnData',
True)
457 configSeq.setOptionValue (
'.outputName',
'OutTruthMuons')
458 configSeq += config.makeConfig (
'Thinning')
459 configSeq.setOptionValue (
'.containerName',
'TruthTaus')
460 configSeq.setOptionValue (
'.skipOnData',
True)
461 configSeq.setOptionValue (
'.outputName',
'OutTruthTaus')
462 configSeq += config.makeConfig (
'Thinning')
463 configSeq.setOptionValue (
'.containerName',
'AntiKt4TruthDressedWZJets')
464 configSeq.setOptionValue (
'.outputName',
'OutTruthJets')
465 configSeq.setOptionValue (
'.skipOnData',
True)
467 configSeq += config.makeConfig (
'Output')
468 configSeq.setOptionValue (
'.treeName',
'analysis')
469 configSeq.setOptionValue (
'.vars', [
470 'EventInfo.actualInteractionsPerCrossing -> actualMuScaled',
472 configSeq.setOptionValue (
'.metVars', [
473 'AnaMET_%SYS%.met -> met_%SYS%',
475 configSeq.setOptionValue (
'.truthMetVars', [
476 'TruthMET_NOSYS.met -> truth_met',
478 configSeq.setOptionValue (
'.containers', outputContainers)
479 configSeq.setOptionValue (
'.containersOnlyForMC', outputContainersForMC)
480 configSeq.setOptionValue (
'.commands', [
481 'disable actualInteractionsPerCrossing',
485 configSeq += config.makeConfig (
'PrintConfiguration')
491 configAccumulator = ConfigAccumulator (algSeq=algSeq, flags=autoconfigFromFlags, noSystematics=noSystematics)
492 configSeq.fullConfigure (configAccumulator)
495 configSeq.printOptions()
497 from AnaAlgorithm.DualUseConfig
import isAthena, useComponentAccumulator
498 if isAthena
and useComponentAccumulator:
499 return configAccumulator.CA
506 """print the algorithms in the sequence without the sequence structure
508 This is mostly meant for easy comparison of different sequences
509 during configuration, particularly the sequences resulting from
510 the old sequence configuration and the new block configuration.
511 Those have different sequence structures in the output, but the
512 algorithms should essentially be configured the same way."""
513 if isinstance (sequence, AlgSequence) :
514 for alg
in sequence :
515 printSequenceAlgs (alg)
523 isPhyslite = False, geometry = None,
524 autoconfigFromFlags = None, onlyNominalOR = False,
525 forceEGammaFullSimConfig = False,
526 bleedingEdge = False) :
532 ca = makeTestSequenceBlocks (dataType, algSeq,
533 isPhyslite=isPhyslite,
534 geometry=geometry, onlyNominalOR=onlyNominalOR,
535 autoconfigFromFlags=autoconfigFromFlags,
536 noSystematics=noSystematics,
537 forceEGammaFullSimConfig=forceEGammaFullSimConfig,
538 bleedingEdge=bleedingEdge)
540 from AnalysisAlgorithmsConfig.ConfigText
import makeSequence
as makeSequenceText
541 ca = makeSequenceText(yamlPath, algSeq=algSeq, flags=autoconfigFromFlags,
542 noSystematics=noSystematics)