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')
100 configSeq.setOptionValue(
'.enableExpertMode',
True)
102 configSeq += config.makeConfig(
'PileupReweighting')
106 configSeq += config.makeConfig (
'EventCleaning')
107 configSeq.setOptionValue (
'.runEventCleaning',
True)
111 if geometry
is LHCPeriod.Run2:
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)
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)
134 configSeq += config.makeConfig(
'Jets.JVT' )
135 configSeq.setOptionValue (
'.containerName',
'AnaJets')
137 configSeq += config.makeConfig(
'Jets.FTagTriggerMatching' )
138 configSeq.setOptionValue(
'.containerName',
'AnaJets')
139 configSeq.setOptionValue(
'.triggerChainsPerYear', bjetTriggerChainsPerYear)
143 if geometry
is not LHCPeriod.Run4:
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')
154 configSeq += config.makeConfig(
'Jets.FlavourTaggingEventSF' )
155 configSeq.setOptionValue (
'.containerName',
'AnaJets.baselineJvt')
156 configSeq.setOptionValue (
'.btagger', btagger)
159 configSeq += config.makeConfig(
'Jets',
160 containerName=
'AnaLargeRJets',
161 jetCollection=
'AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets' )
162 outputContainers[
'larger_jet_'] =
'OutLargeRJets'
163 configSeq.setOptionValue (
'.recalibratePhyslite',
False)
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)
181 configSeq.setOptionValue (
'.identificationWP',
'LooseBLayerLH')
183 configSeq.setOptionValue (
'.identificationWP',
'LooseDNN')
184 configSeq.setOptionValue (
'.isolationWP',
'Tight_VarRad')
185 configSeq.setOptionValue (
'.chargeIDSelectionRun2',
True)
186 configSeq.setOptionValue (
'.addChargeMisIDSF', geometry
is LHCPeriod.Run2)
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_')
194 configSeq += config.makeConfig (
'Electrons.PtEtaSelection')
195 configSeq.setOptionValue (
'.containerName',
'AnaElectrons')
196 configSeq.setOptionValue (
'.minPt', electronMinPt)
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)
215 configSeq += config.makeConfig (
'Photons.PtEtaSelection')
216 configSeq.setOptionValue (
'.containerName',
'AnaPhotons')
217 configSeq.setOptionValue (
'.minPt', photonMinPt)
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)
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')
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_')
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')
254 configSeq += config.makeConfig(
'TauJets.TriggerSF')
255 configSeq.setOptionValue(
'.containerName',
'AnaTauJets')
256 configSeq.setOptionValue(
'.tauID',
'Tight')
257 configSeq.setOptionValue(
'.triggerChainsPerYear', tauTriggerChainsSF)
259 configSeq += config.makeConfig (
'TauJets.MCTCClassification')
260 configSeq.setOptionValue (
'.containerName',
'AnaTauJets')
261 configSeq.setOptionValue (
'.prefix',
'truth_')
265 configSeq += config.makeConfig(
'SystObjectLink')
266 configSeq.setOptionValue (
'.containerName',
'AnaJets')
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')
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)
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)
303 configSeq += config.makeConfig (
'PL_Neutrinos')
304 configSeq.setOptionValue (
'.skipOnData',
True)
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)
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)
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)
330 configSeq += config.makeConfig (
'PL_MissingET')
331 configSeq.setOptionValue (
'.skipOnData',
True)
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)
342 if dataType
is not DataType.Data :
344 configSeq += config.makeConfig(
'GeneratorLevelAnalysis')
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')
362 configSeq.setOptionValue (
'.muons',
'AnaMuons.medium')
366 configSeq += config.makeConfig(
'OverlapRemoval' )
367 configSeq.setOptionValue (
'.electrons',
'AnaElectrons.loose')
368 configSeq.setOptionValue (
'.photons',
'AnaPhotons.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 )
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')
397 if geometry
is not LHCPeriod.Run4:
404 from EventSelectionAlgorithms.EventSelectionConfig
import makeMultipleEventSelectionConfigs
406 met =
'AnaMET', btagDecoration =
'ftag_select_ftag',
407 selectionCutsDict = exampleSelectionCuts, noFilter =
True,
408 cutFlowHistograms =
True)
410 configSeq += config.makeConfig (
'Bootstraps')
411 configSeq.setOptionValue (
'.nReplicas', 2000 )
412 configSeq.setOptionValue (
'.skipOnMC',
False)
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')
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')
443 configSeq += config.makeConfig (
'Thinning')
444 configSeq.setOptionValue (
'.containerName',
'AnaLargeRJets')
445 configSeq.setOptionValue (
'.outputName',
'OutLargeRJets')
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)
468 configSeq += config.makeConfig (
'Output')
469 configSeq.setOptionValue (
'.treeName',
'analysis')
470 configSeq.setOptionValue (
'.vars', [
471 'EventInfo.actualInteractionsPerCrossing -> actualMuScaled',
473 configSeq.setOptionValue (
'.metVars', [
474 'AnaMET_%SYS%.met -> met_%SYS%',
476 configSeq.setOptionValue (
'.truthMetVars', [
477 'TruthMET_NOSYS.met -> truth_met',
479 configSeq.setOptionValue (
'.containers', outputContainers)
480 configSeq.setOptionValue (
'.containersOnlyForMC', outputContainersForMC)
481 configSeq.setOptionValue (
'.commands', [
482 'disable actualInteractionsPerCrossing',
486 configSeq += config.makeConfig (
'PrintConfiguration')
492 configAccumulator = ConfigAccumulator (algSeq=algSeq, flags=autoconfigFromFlags, noSystematics=noSystematics)
493 configSeq.fullConfigure (configAccumulator)
496 configSeq.printOptions()
498 from AnaAlgorithm.DualUseConfig
import isAthena, useComponentAccumulator
499 if isAthena
and useComponentAccumulator:
500 return configAccumulator.CA
507 """print the algorithms in the sequence without the sequence structure
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)
524 isPhyslite = False, geometry = None,
525 autoconfigFromFlags = None, onlyNominalOR = False,
526 forceEGammaFullSimConfig = False,
527 bleedingEdge = False) :
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)
541 from AnalysisAlgorithmsConfig.ConfigText
import makeSequence
as makeSequenceText
542 ca = makeSequenceText(yamlPath, algSeq=algSeq, flags=autoconfigFromFlags,
543 noSystematics=noSystematics)