ATLAS Offline Software
Loading...
Searching...
No Matches
python.ConfigText_unitTest Namespace Reference

Functions

 compareConfigSeq (seq1, seq2, *, checkOrder=False)
 compareTextBuilder (yamlPath='', *, checkOrder=False)
 compareBlockConfig (yamlPath='', *, checkOrder=False)

Variables

 parser = optparse.OptionParser()
 dest
 default
 action
 help
 False
 options
 args
 textConfig = options.text_config
 compareBlock = options.compare_block
 compareBuilder = options.compare_builder
 checkOrder = options.check_order

Function Documentation

◆ compareBlockConfig()

python.ConfigText_unitTest.compareBlockConfig ( yamlPath = '',
* ,
checkOrder = False )
Create a configSequence using provided YAML file and a
configSequence using the block configuration and compare.

Will raise an exception if configSequences differ

Definition at line 508 of file ConfigText_unitTest.py.

508def compareBlockConfig(yamlPath='', *, checkOrder=False) :
509 """
510 Create a configSequence using provided YAML file and a
511 configSequence using the block configuration and compare.
512
513 Will raise an exception if configSequences differ
514 """
515 from AthenaConfiguration.Enums import LHCPeriod
516 # create configSeq for block configuration
517 from AnalysisAlgorithmsConfig.FullCPAlgorithmsTest import makeTestSequenceBlocks
518 configSeq = makeTestSequenceBlocks(dataType='fullsim', algSeq=None,
519 geometry=LHCPeriod.Run2,
520 isPhyslite=False, forceEGammaFullSimConfig=True,
521 returnConfigSeq=True)
522
523 # create text config object to build text configurations
524 from AnalysisAlgorithmsConfig.ConfigText import TextConfig
525 textConfig = TextConfig(yamlPath)
526 textConfigSeq = textConfig.configure()
527
528 # compare - will raise error if False
529 compareConfigSeq(configSeq, textConfigSeq, checkOrder=checkOrder)
530
531

◆ compareConfigSeq()

python.ConfigText_unitTest.compareConfigSeq ( seq1,
seq2,
* ,
checkOrder = False )
Compares two ConfigSequences

Definition at line 7 of file ConfigText_unitTest.py.

7def compareConfigSeq(seq1, seq2, *, checkOrder=False):
8 """Compares two ConfigSequences"""
9 blocks1 = seq1._blocks
10 blocks2 = seq2._blocks
11 print("Block order for each config sequence")
12 print("\033[4m{0:<30} {1:<30}\033[0m".format("Sequence1", "Sequence2"))
13 for i in range(max(len(blocks1), len(blocks2))):
14 name1, name2 = '', ''
15 if i < len(blocks1):
16 name1 = blocks1[i].__class__.__name__
17 if i < len(blocks2):
18 name2 = blocks2[i].__class__.__name__
19 print(f"{name1:<30} {name2}")
20 if not checkOrder:
21 print("Sorting blocks by name (will not sort blocks with same name)")
22 blocks1.sort(key=lambda x: x.__class__.__name__)
23 blocks2.sort(key=lambda x: x.__class__.__name__)
24 if len(blocks1) != len(blocks2):
25 raise Exception("Number of blocks are different")
26 for i in range(len(blocks1)):
27 block1 = blocks1[i]
28 block2 = blocks2[i]
29 name1 = block1.__class__.__name__
30 name2 = block2.__class__.__name__
31 if name1 != name2:
32 raise Exception(f"In position {i} "
33 f"the first sequence results in {name1} "
34 f"and the second sequence results in {name2}")
35 for name in block1.getOptions():
36 if name == 'groupName':
37 continue
38 value1 = block1.getOptionValue(name)
39 value2 = block2.getOptionValue(name)
40 if value1 != value2:
41 raise Exception(f"For block {name1}, the block "
42 f"option {name} the first sequence results in {value1} "
43 f"and the second sequence results in {value2}")
44
45
void print(char *figname, TCanvas *c1)
#define max(a, b)
Definition cfImp.cxx:41

◆ compareTextBuilder()

python.ConfigText_unitTest.compareTextBuilder ( yamlPath = '',
* ,
checkOrder = False )
Create a configSequence using provided YAML file and a
configSequence using ConfigText python commands and compare.

Will raise an exception if configSequences differ

Definition at line 46 of file ConfigText_unitTest.py.

46def compareTextBuilder(yamlPath='', *, checkOrder=False) :
47 """
48 Create a configSequence using provided YAML file and a
49 configSequence using ConfigText python commands and compare.
50
51 Will raise an exception if configSequences differ
52 """
53 # create text config object to build text configurations
54 from AnalysisAlgorithmsConfig.ConfigText import TextConfig
55 config = TextConfig()
56
57 # CommonServices
58 config.addBlock('CommonServices')
59 config.setOptions(systematicsHistogram='systematicsList')
60 config.setOptions(enableExpertMode=True)
61
62 # PileupReweighting
63 config.addBlock('PileupReweighting')
64
65 # EventCleaning
66 config.addBlock('EventCleaning')
67 config.setOptions (runEventCleaning=True)
68
69 # Jets
70 config.addBlock('Jets')
71 config.setOptions (containerName='AnaJets')
72 config.setOptions (jetCollection='AntiKt4EMPFlowJets')
73 config.setOptions (runJvtUpdate=False)
74 config.setOptions (runNNJvtUpdate=True)
75 config.setOptions (runJvtSelection=False) # deprecated, done via JVTWorkingPoint block now
76 config.setOptions (recalibratePhyslite=False)
77 # Jets.JVTWorkingPoint
78 config.addBlock('Jets.JVTWorkingPoint')
79 config.setOptions (containerName='AnaJets')
80 config.setOptions (selectionName='baselineJvt')
81 config.setOptions (jvtWP='FixedEffPt')
82 # Jets.FlavourTagging
83 config.addBlock( 'Jets.FlavourTagging')
84 config.setOptions (containerName='AnaJets')
85 config.setOptions (selectionName='ftag')
86 config.setOptions (btagger='GN2v01')
87 config.setOptions (btagWP='FixedCutBEff_65')
88 config.setOptions (saveScores='All')
89 # FTagJetTriggerMatching
90 bjetTriggerChainsPerYear = {
91 2022: ['HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
92 2023: ['HLT_2j45_0eta290_020jvt_bgn160_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25'],
93 }
94 config.addBlock( 'Jets.FTagTriggerMatching' )
95 config.setOptions (containerName='AnaJets')
96 config.setOptions (triggerChainsPerYear=bjetTriggerChainsPerYear)
97 # Jets.FlavourTaggingEventSF
98 config.addBlock( 'Jets.FlavourTaggingEventSF')
99 config.setOptions (containerName='AnaJets.baselineJvt')
100 config.setOptions (btagger='GN2v01')
101 config.setOptions (triggerChainsPerYear=bjetTriggerChainsPerYear)
102
103 # Large-R jets
104 config.addBlock('Jets')
105 config.setOptions (containerName='AnaLargeRJets')
106 config.setOptions (jetCollection='AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets')
107 config.setOptions (recalibratePhyslite=False)
108
109 # Electrons
110 config.addBlock ('Electrons')
111 config.setOptions (containerName='AnaElectrons')
112 config.setOptions (forceFullSimConfigForIso=True)
113 config.setOptions (recalibratePhyslite=False)
114 config.setOptions (decorateTruth=True)
115 config.setOptions (decorateCaloClusterEta=True)
116 config.setOptions (writeTrackD0Z0=True)
117 config.setOptions (minPt=10000.0)
118 # Electrons.WorkingPoint
119 config.addBlock ('Electrons.WorkingPoint')
120 config.setOptions (containerName='AnaElectrons')
121 config.setOptions (selectionName='loose')
122 config.setOptions (forceFullSimConfig=True)
123 config.setOptions (identificationWP='LooseBLayerLH')
124 config.setOptions (isolationWP='Tight_VarRad')
125 config.setOptions (chargeIDSelectionRun2=True)
126 config.setOptions (addChargeMisIDSF=True)
127 # Electrons.TriggerSF
128 config.addBlock ('Electrons.TriggerSF')
129 config.setOptions (containerName='AnaElectrons')
130 config.setOptions (electronID='LooseBLayerLH')
131 config.setOptions (electronIsol='Tight_VarRad')
132 triggerChainsPerYear = {
133 2015: ['HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose', 'HLT_mu20_iloose_L1MU15 || HLT_mu40', 'HLT_2g20_tight'],
134 2016: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium || HLT_mu50', 'HLT_g35_loose_g25_loose'],
135 2017: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_2g22_tight_L12EM15VHI', 'HLT_mu50'],
136 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'],
137 }
138 config.setOptions (triggerChainsPerYear=triggerChainsPerYear)
139 # Electrons.PtEtaSelection
140 config.addBlock ('Electrons.PtEtaSelection')
141 config.setOptions (containerName='AnaElectrons')
142 config.setOptions (minPt=10000.0)
143 # Electrons.IFFClassification
144 config.addBlock ('Electrons.IFFClassification')
145 config.setOptions (containerName='AnaElectrons')
146 # Electrons.MCTCClassification
147 config.addBlock ('Electrons.MCTCClassification')
148 config.setOptions (containerName='AnaElectrons')
149 config.setOptions (prefix='truth_')
150
151
152 # Photons
153 config.addBlock ('Photons', containerName='AnaPhotons')
154 config.setOptions (forceFullSimConfigForIso=True)
155 config.setOptions (recomputeIsEM=False)
156 config.setOptions (recalibratePhyslite=False)
157 config.setOptions (decorateTruth=True)
158 # Photons.WorkingPoint
159 config.addBlock ('Photons.WorkingPoint')
160 config.setOptions (containerName='AnaPhotons')
161 config.setOptions (selectionName='tight')
162 config.setOptions (forceFullSimConfigForID=True)
163 config.setOptions (forceFullSimConfigForIso=True)
164 config.setOptions (qualityWP='Tight')
165 config.setOptions (isolationWP='FixedCutTight')
166 config.setOptions (recomputeIsEM=False)
167 # Photons.PtEtaSelection
168 config.addBlock ('Photons.PtEtaSelection')
169 config.setOptions (containerName='AnaPhotons')
170 config.setOptions (minPt=10000.0)
171
172 # Muons
173 config.addBlock ('Muons', containerName='AnaMuons')
174 config.setOptions (recalibratePhyslite=False)
175 config.setOptions (decorateTruth=True)
176 config.setOptions (writeTrackD0Z0=True)
177 # Muons.WorkingPoint
178 config.addBlock ('Muons.WorkingPoint')
179 config.setOptions (containerName='AnaMuons')
180 config.setOptions (selectionName='medium')
181 config.setOptions (quality='Medium')
182 config.setOptions (isolation='Loose_VarRad')
183 # Muons.IFFClassification
184 config.addBlock ('Muons.IFFClassification')
185 config.setOptions (containerName='AnaMuons')
186 # Muons.MCTCClassification
187 config.addBlock ('Muons.MCTCClassification')
188 config.setOptions (containerName='AnaMuons')
189 config.setOptions (prefix='truth_')
190
191 # TauJets
192 config.addBlock ('TauJets', containerName='AnaTauJets')
193 config.setOptions (decorateTruth=True)
194 # TauJets.WorkingPoint
195 config.addBlock ('TauJets.WorkingPoint')
196 config.setOptions (containerName='AnaTauJets')
197 config.setOptions (selectionName='tight')
198 config.setOptions (quality='Tight')
199 # TauJets.TriggerSF
200 tauTriggerChainsSF = {
201 2015: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
202 2016: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
203 2017: ['HLT_tau25_medium1_tracktwo', 'HLT_tau35_medium1_tracktwo'],
204 2018: ['HLT_tau25_medium1_tracktwoEF', 'HLT_tau35_medium1_tracktwoEF'],
205 2022: ['HLT_tau25_mediumRNN_tracktwoMVA', 'HLT_tau35_mediumRNN_tracktwoMVA'],
206 2023: ['HLT_tau25_mediumRNN_tracktwoMVA', 'HLT_tau35_mediumRNN_tracktwoMVA'],
207 }
208 config.addBlock ('TauJets.TriggerSF')
209 config.setOptions (containerName='AnaTauJets')
210 config.setOptions (tauID='Tight')
211 config.setOptions (triggerChainsPerYear=tauTriggerChainsSF)
212 # TauJets.MCTCClassification
213 config.addBlock ('TauJets.MCTCClassification')
214 config.setOptions (containerName='AnaTauJets')
215 config.setOptions (prefix='truth_')
216
217 # InDetTracks
218 config.addBlock ('InDetTracks')
219 config.setOptions (containerName='AnaTracks')
220 config.setOptions (minPt=500)
221 config.setOptions (maxEta=2.5)
222 config.setOptions (outputTrackSummaryInfo=True)
223 # InDetTracks.WorkingPoint
224 config.addBlock ('InDetTracks.WorkingPoint')
225 config.setOptions (containerName='AnaTracks')
226 config.setOptions (selectionName='tight')
227 config.setOptions (cutLevel='TightPrimary')
228
229 config.addBlock ('SystObjectLink')
230 config.setOptions (containerName='AnaJets')
231 config.addBlock ('SystObjectLink')
232 config.setOptions (containerName='AnaLargeRJets')
233 config.addBlock ('SystObjectLink')
234 config.setOptions (containerName='AnaElectrons')
235 config.addBlock ('SystObjectLink')
236 config.setOptions (containerName='AnaPhotons')
237 config.addBlock ('SystObjectLink')
238 config.setOptions (containerName='AnaMuons')
239 config.addBlock ('SystObjectLink')
240 config.setOptions (containerName='AnaTauJets')
241
242 config.addBlock ('ObjectCutFlow')
243 config.setOptions (containerName='AnaJets')
244 config.setOptions (selectionName='jvt')
245 config.addBlock ('ObjectCutFlow')
246 config.setOptions (containerName='AnaElectrons')
247 config.setOptions (selectionName='loose')
248 config.addBlock ('ObjectCutFlow')
249 config.setOptions (containerName='AnaPhotons')
250 config.setOptions (selectionName='tight')
251 config.addBlock ('ObjectCutFlow')
252 config.setOptions (containerName='AnaMuons')
253 config.setOptions (selectionName='medium')
254 config.addBlock ('ObjectCutFlow')
255 config.setOptions (containerName='AnaTauJets')
256 config.setOptions (selectionName='tight')
257 config.addBlock ('ObjectCutFlow')
258 config.setOptions (containerName='AnaTracks')
259 config.setOptions (selectionName='tight')
260
261 # GeneratorLevelAnalysis
262 config.addBlock( 'GeneratorLevelAnalysis')
263
264 # MissingET
265 config.addBlock ('MissingET')
266 config.setOptions (containerName='AnaMET')
267 config.setOptions (jets='AnaJets')
268 config.setOptions (taus='AnaTauJets.tight')
269 config.setOptions (electrons='AnaElectrons.loose')
270 config.setOptions (photons='AnaPhotons.tight')
271 config.setOptions (muons='AnaMuons.medium')
272
273 # OverlapRemoval
274 config.addBlock( 'OverlapRemoval' )
275 config.setOptions (inputLabel='preselectOR')
276 config.setOptions (outputLabel='passesOR' )
277 config.setOptions (jets='AnaJets.baselineJvt')
278 config.setOptions (taus='AnaTauJets.tight')
279 config.setOptions (electrons='AnaElectrons.loose')
280 config.setOptions (photons='AnaPhotons.tight')
281 config.setOptions (muons='AnaMuons.medium')
282
283 # Particle-level objects
284 config.addBlock ('PL_Electrons')
285 config.setOptions (containerName='TruthElectrons')
286 config.addBlock ('PL_Electrons.PtEtaSelection')
287 config.setOptions (containerName='TruthElectrons')
288 config.setOptions (skipOnData=True)
289 config.setOptions (useDressedProperties=True)
290 config.setOptions (minPt=20e3)
291 config.addBlock ('PL_Electrons.MCTCClassification')
292 config.setOptions (containerName='TruthElectrons')
293 config.setOptions (prefix='')
294
295 config.addBlock ('PL_Photons')
296 config.setOptions (containerName='TruthPhotons')
297 config.addBlock ('PL_Photons.PtEtaSelection')
298 config.setOptions (containerName='TruthPhotons')
299 config.setOptions (skipOnData=True)
300 config.setOptions (minPt=20e3)
301
302 config.addBlock ('PL_Muons')
303 config.setOptions (containerName='TruthMuons')
304 config.addBlock ('PL_Muons.PtEtaSelection')
305 config.setOptions (containerName='TruthMuons')
306 config.setOptions (skipOnData=True)
307 config.setOptions (useDressedProperties=True)
308 config.setOptions (minPt=20e3)
309 config.addBlock ('PL_Muons.MCTCClassification')
310 config.setOptions (containerName='TruthMuons')
311 config.setOptions (prefix='')
312
313 config.addBlock ('PL_Taus')
314 config.setOptions (containerName='TruthTaus')
315 config.addBlock ('PL_Taus.PtEtaSelection')
316 config.setOptions (containerName='TruthTaus')
317 config.setOptions (skipOnData=True)
318 config.setOptions (minPt=20e3)
319 config.addBlock ('PL_Taus.MCTCClassification')
320 config.setOptions (containerName='TruthTaus')
321 config.setOptions (prefix='')
322
323 config.addBlock ('PL_Jets')
324 config.setOptions (containerName='AntiKt4TruthDressedWZJets')
325 config.addBlock ('PL_Jets.PtEtaSelection')
326 config.setOptions (containerName='AntiKt4TruthDressedWZJets')
327 config.setOptions (skipOnData=True)
328 config.setOptions (minPt=20e3)
329
330 config.addBlock ('PL_Neutrinos')
331 config.setOptions (skipOnData=True)
332 config.addBlock ('PL_MissingET')
333 config.setOptions (skipOnData=True)
334
335 config.addBlock ('PL_OverlapRemoval')
336 config.setOptions (skipOnData=True)
337 config.setOptions (electrons='TruthElectrons')
338 config.setOptions (muons='TruthMuons')
339 config.setOptions (photons='TruthPhotons')
340 config.setOptions (jets='AntiKt4TruthDressedWZJets')
341 config.setOptions (useRapidityForDeltaR=False)
342
343 # Parton history
344 config.addBlock ('PartonHistory')
345 config.setOptions (history='Ttbar')
346
347 # Thinning
348 config.addBlock ('Thinning')
349 config.setOptions (containerName='AnaElectrons')
350 config.setOptions (selectionName='loose')
351 config.setOptions (outputName='OutElectrons')
352 config.addBlock ('Thinning')
353 config.setOptions (containerName='AnaPhotons')
354 config.setOptions (selectionName='tight')
355 config.setOptions (outputName='OutPhotons')
356 config.addBlock ('Thinning')
357 config.setOptions (containerName='AnaMuons')
358 config.setOptions (selectionName='medium')
359 config.setOptions (outputName='OutMuons')
360 config.addBlock ('Thinning')
361 config.setOptions (containerName='AnaTauJets')
362 config.setOptions (selectionName='tight')
363 config.setOptions (outputName='OutTauJets')
364 config.addBlock ('Thinning')
365 config.setOptions (containerName='AnaJets')
366 config.setOptions (outputName='OutJets')
367 config.addBlock ('Thinning')
368 config.setOptions (containerName='AnaLargeRJets')
369 config.setOptions (outputName='OutLargeRJets')
370 config.addBlock ('Thinning')
371 config.setOptions (containerName='AnaTracks')
372 config.setOptions (selectionName='tight')
373 config.setOptions (outputName='OutTracks')
374 config.addBlock ('Thinning')
375 config.setOptions (containerName='TruthElectrons')
376 config.setOptions (skipOnData=True)
377 config.setOptions (outputName='OutTruthElectrons')
378 config.addBlock ('Thinning')
379 config.setOptions (containerName='TruthPhotons')
380 config.setOptions (skipOnData=True)
381 config.setOptions (outputName='OutTruthPhotons')
382 config.addBlock ('Thinning')
383 config.setOptions (containerName='TruthMuons')
384 config.setOptions (skipOnData=True)
385 config.setOptions (outputName='OutTruthMuons')
386 config.addBlock ('Thinning')
387 config.setOptions (containerName='TruthTaus')
388 config.setOptions (skipOnData=True)
389 config.setOptions (outputName='OutTruthTaus')
390 config.addBlock ('Thinning')
391 config.setOptions (containerName='AntiKt4TruthDressedWZJets')
392 config.setOptions (outputName='OutTruthJets')
393 config.setOptions (skipOnData=True)
394
395 # Trigger
396 triggerMatchingChainsPerYear = {
397 2015: ['HLT_e24_lhmedium_L1EM20VH || HLT_e60_lhmedium || HLT_e120_lhloose', 'HLT_mu20_iloose_L1MU15 || HLT_mu40'],
398 2016: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium || HLT_mu50'],
399 2017: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu50'],
400 2018: ['HLT_e26_lhtight_nod0_ivarloose || HLT_e60_lhmedium_nod0 || HLT_e140_lhloose_nod0', 'HLT_mu26_ivarmedium'],
401 }
402 config.addBlock ('Trigger')
403 config.setOptions (triggerChainsPerYear=triggerChainsPerYear)
404 config.setOptions (noFilter=True)
405 config.setOptions (electrons='AnaElectrons.loose')
406 config.setOptions (photons='AnaPhotons.tight')
407 config.setOptions (muons='AnaMuons.medium')
408 config.setOptions (taus='AnaTauJets.tight')
409 config.setOptions (electronID='Tight')
410 config.setOptions (electronIsol='Tight_VarRad')
411 config.setOptions (photonIsol='TightCaloOnly')
412 config.setOptions (muonID='Tight')
413 config.setOptions (triggerMatchingChainsPerYear=triggerMatchingChainsPerYear)
414
415 # EventSelection
416 # Example cuts used for event selection algorithm test
417 exampleSelectionCuts = {
418 'SUBcommon': """JET_N_BTAG >= 2
419JET_N 25000 >= 4
420MET >= 20000
421SAVE
422""",
423 'ejets': """IMPORT SUBcommon
424EL_N 5000 == 1
425MU_N 3000 == 0
426MWT < 170000
427MET+MWT > 40000
428SAVE
429""",
430 'mujets': """IMPORT SUBcommon
431EL_N 5000 == 0
432MU_N medium 25000 > 0
433SAVE
434"""
435 }
436 for sel_name,sel_cuts in exampleSelectionCuts.items():
437 config.addBlock ('EventSelection')
438 config.setOptions (electrons='AnaElectrons.loose')
439 config.setOptions (muons='AnaMuons.medium')
440 config.setOptions (jets='AnaJets.baselineJvt')
441 config.setOptions (met='AnaMET')
442 config.setOptions (btagDecoration='ftag_select_ftag')
443 config.setOptions (noFilter=True)
444 config.setOptions (cutFlowHistograms=True)
445 config.setOptions (selectionName=sel_name)
446 config.setOptions (selectionCuts=sel_cuts)
447
448 # Bootstraps
449 config.addBlock ('Bootstraps')
450 config.setOptions (nReplicas=2000)
451 config.setOptions (skipOnMC=False)
452
453 # LeptonSF
454 config.addBlock ('LeptonSF')
455 config.setOptions (muons='AnaMuons.medium')
456 config.setOptions (photons='AnaPhotons.tight')
457 config.setOptions (lepton_postfix='nominal')
458
459 # Output
460 outputContainers = {
461 'mu_': 'OutMuons',
462 'el_': 'OutElectrons',
463 'ph_' : 'OutPhotons',
464 'tau_': 'OutTauJets',
465 'jet_': 'OutJets',
466 'larger_jet_': 'OutLargeRJets',
467 'met_': 'AnaMET',
468 'trk_': 'OutTracks',
469 '': 'EventInfo'}
470 outputContainersForMC = {'truth_mu_' : 'OutTruthMuons',
471 'truth_el_' : 'OutTruthElectrons',
472 'truth_ph_' : 'OutTruthPhotons',
473 'truth_tau_': 'OutTruthTaus',
474 'truth_jet_': 'OutTruthJets',
475 'truth_met_': 'TruthMET'}
476 config.addBlock ('Output')
477 config.setOptions (treeName='analysis')
478 config.setOptions (vars=[
479 'EventInfo.actualInteractionsPerCrossing -> actualMuScaled',
480 'OutMuons_NOSYS.muonType -> mu_muonType type=uint16' #types are typically not needed, but if needed this is how you add them
481 ])
482 config.setOptions (metVars=[
483 'AnaMET_%SYS%.met -> met_%SYS%',
484 ])
485 config.setOptions (truthMetVars=[
486 'TruthMET_NOSYS.met -> truth_met',
487 ])
488 config.setOptions (containers=outputContainers)
489 config.setOptions (containersOnlyForMC=outputContainersForMC)
490 config.setOptions (commands=[
491 "disable actualInteractionsPerCrossing",
492 ])
493
494 # save the tool configuration to a txt file
495 config.addBlock ('PrintConfiguration')
496
497 # configure ConfigSequence
498 configSeq = config.configure()
499
500 # create text config object to build text configurations
501 textConfig = TextConfig(yamlPath)
502 textConfigSeq = textConfig.configure()
503
504 # compare - will raise error if False
505 compareConfigSeq(configSeq, textConfigSeq, checkOrder=checkOrder)
506
507

Variable Documentation

◆ action

python.ConfigText_unitTest.action

Definition at line 537 of file ConfigText_unitTest.py.

◆ args

python.ConfigText_unitTest.args

Definition at line 548 of file ConfigText_unitTest.py.

◆ checkOrder

python.ConfigText_unitTest.checkOrder = options.check_order

Definition at line 552 of file ConfigText_unitTest.py.

◆ compareBlock

python.ConfigText_unitTest.compareBlock = options.compare_block

Definition at line 550 of file ConfigText_unitTest.py.

◆ compareBuilder

python.ConfigText_unitTest.compareBuilder = options.compare_builder

Definition at line 551 of file ConfigText_unitTest.py.

◆ default

python.ConfigText_unitTest.default

Definition at line 537 of file ConfigText_unitTest.py.

◆ dest

python.ConfigText_unitTest.dest

Definition at line 536 of file ConfigText_unitTest.py.

◆ False

python.ConfigText_unitTest.False

Definition at line 540 of file ConfigText_unitTest.py.

◆ help

python.ConfigText_unitTest.help

Definition at line 538 of file ConfigText_unitTest.py.

◆ options

python.ConfigText_unitTest.options

Definition at line 548 of file ConfigText_unitTest.py.

◆ parser

python.ConfigText_unitTest.parser = optparse.OptionParser()

Definition at line 535 of file ConfigText_unitTest.py.

◆ textConfig

python.ConfigText_unitTest.textConfig = options.text_config

Definition at line 549 of file ConfigText_unitTest.py.