3 from collections
import OrderedDict
as odict
4 from dataclasses
import dataclass
7 from AthenaCommon.Logging
import logging
8 log = logging.getLogger(__name__)
10 from ..Base.ThresholdType
import ThrType
11 from .FexThresholdParameters
import eta_dependent_cuts
15 Class to encode a working point with eta dependence
16 - Initialised with a list of prioritised cut values
17 - Converts to a mapping from eta bin to highest priority cut
18 - Logic should match that in ValueWithEtaDependence
19 defined in L1ThresholdBase.h
26 values_with_prio: list,
27 eta_range: list = (-49,49,1),
31 self.
name = f
"{working_point}.{variable}"
37 for etabin
in range(*eta_range):
39 for v
in values_with_prio:
43 and etabin < v[
"etamax"]
45 if v[
"priority"] == current_priority:
46 raise ValueError(f
"{v} overlaps another value {priority_value} with same priority {current_priority}")
47 if v[
"priority"] > current_priority:
48 current_priority = v[
"priority"]
55 def leq_all_eta(lhs: ValueWithEtaDependence, rhs: ValueWithEtaDependence):
56 for (k,v)
in lhs.eta_to_value.items():
57 if v>rhs.eta_to_value[k]:
58 log.error(f
"{lhs.name} ({v}) > {rhs.name} ({rhs.eta_to_value[k]}) for eta bin {k}")
65 if "etamin" in conf[wpl][0]:
68 assert leq_all_eta(_lesser,_greater), f
"Working point ordering violated for {_lesser.name}, {_greater.name}"
70 assert len(conf[wpl])==1
and len(conf[wpg])==1, (
71 f
"Unsupported comparison between eta-dependent and eta-independent WPs {wpl}.{var}, {wpg}.{var}"
73 assert conf[wpl][0][var] <= conf[wpg][0][var], f
"Working point ordering violated: {wpl}.{var} > {wpg}.{var}"
78 decimal = 1/(1+fw/
pow(2,bitshift))
82 decimal =
pow(2,bitshift)/fw
95 fw =
round((1-decimal)/decimal)
103 if isinstance(ttype, str):
104 ttype = ThrType[ttype]
106 if ttype == ThrType.MU:
108 if ttype == ThrType.eEM:
110 if ttype == ThrType.jEM:
112 if ttype == ThrType.eTAU:
114 if ttype == ThrType.cTAU:
116 if ttype == ThrType.jTAU:
118 if ttype == ThrType.jJ:
120 if ttype == ThrType.jLJ:
122 if ttype == ThrType.gJ:
124 if ttype == ThrType.gLJ:
126 if ttype == ThrType.jXE:
128 if ttype == ThrType.jTE:
130 if ttype == ThrType.gXE:
132 if ttype == ThrType.gTE:
134 if ttype == ThrType.EM:
136 if ttype == ThrType.TAU:
138 if ttype == ThrType.JET:
140 if ttype == ThrType.XS:
147 confObj[
"exclusionLists"] = odict()
148 confObj[
"exclusionLists"][
"rpcFeet"] = []
149 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B21"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
150 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B22"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
151 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B25"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
152 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B26"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
153 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B53"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
154 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B54"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
155 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B57"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
156 confObj[
"exclusionLists"][
"rpcFeet"].
append( odict([(
"sectorName",
"B58"), (
"rois",[8,9,10,11,16,17,18,19,20,21,22,23,28,29,30,31])]) )
160 confObj[
"roads"] = odict()
161 confObj[
"roads"][
"rpc"] = odict([(0,0), (4,1), (6,2), (8,3), (10,4), (12,5), (14,6)])
162 confObj[
"roads"][
"tgc"] = odict([(0,0)] +
list(zip([3,4,5,6,7,8,9,10,11,12,13,14,15,18,20],
list(
range(1,16)))))
165 for muonDet
in (
"rpc",
"tgc"):
168 for ptValue
in confObj[
"roads"][muonDet]:
169 if ptValue
in ptValues:
170 raise RuntimeError(
"Muon roads: pt value %s is duplicated, please fix.",
str(ptValue) )
172 ptValues += [ptValue]
173 road = confObj[
"roads"][muonDet][ptValue]
174 if road !=0
and road
in roads:
175 raise RuntimeError(
"Muon roads: road %s is duplicated, please fix.",
str(road) )
178 if len(confObj[
"roads"][
"rpc"])!=7
or len(confObj[
"roads"][
"tgc"])!=16:
179 raise RuntimeError(
"Muon roads: number of roads not as expected. TGC=%s (exp 16), RCP=%s (exp 7)", len(confObj[
"roads"][
"tgc"]), len(confObj[
"roads"][
"rpc"]) )
186 confObj[
"workingPoints"] = odict()
200 confObj[
"workingPoints"][
"Loose"] = [
202 (
"wstot_fw", 0), (
"wstot", 0),
204 (
"etamin", -49), (
"etamax", -24), (
"priority", 0)]),
208 (
"etamin", -24), (
"etamax", 24), (
"priority", 0)]),
210 (
"wstot_fw", 0), (
"wstot", 0),
212 (
"etamin", 24), (
"etamax", 49), (
"priority", 0)]),
216 confObj[
"workingPoints"][
"Medium"] = [
218 (
"wstot_fw", 0), (
"wstot", 0),
220 (
"etamin", -49), (
"etamax", -24), (
"priority", 0)]),
224 (
"etamin", -24), (
"etamax", 24), (
"priority", 0)]),
226 (
"wstot_fw", 0), (
"wstot", 0),
228 (
"etamin", 24), (
"etamax", 49), (
"priority", 0)]),
231 confObj[
"workingPoints"][
"Tight"] = [
233 (
"wstot_fw", 0), (
"wstot", 0),
235 (
"etamin", -49), (
"etamax", -24), (
"priority", 0)]),
239 (
"etamin", -24), (
"etamax", 24), (
"priority", 0)]),
241 (
"wstot_fw", 0), (
"wstot", 0),
243 (
"etamin", 24), (
"etamax", 49), (
"priority", 0)]),
246 confObj[
"ptMinToTopo"] = 1
if do_HI_tob_thresholds
else 3
247 confObj[
"maxEt"] = 60
248 confObj[
"resolutionMeV"] = 100
252 eEM_eta_cuts = eta_dependent_cuts[
"eEM"]
253 for wp
in confObj[
"workingPoints"]:
254 if wp
in eEM_eta_cuts:
257 etarange = eEM_eta_cuts[wp][
"etarange"]
259 n_eta_bins = (etarange[1]-etarange[0]) / stride
260 assert len(eEM_eta_cuts[wp][
"rhad"]) == n_eta_bins
261 assert len(eEM_eta_cuts[wp][
"rhad"]) == n_eta_bins
262 assert len(eEM_eta_cuts[wp][
"wstot"]) == n_eta_bins
263 for ieta, etalow
in enumerate(
range(*etarange)):
264 reta_cut = eEM_eta_cuts[wp][
"reta"][ieta]
265 rhad_cut = eEM_eta_cuts[wp][
"rhad"][ieta]
266 wstot_cut = eEM_eta_cuts[wp][
"wstot"][ieta]
267 confObj[
"workingPoints"][wp].
append(
269 (
"wstot_fw", wstot_cut), (
"wstot", wstot_cut),
271 (
"etamin", etalow), (
"etamax", etalow+stride), (
"priority", 2)])
275 for wp
in confObj[
"workingPoints"]:
276 for ssthr
in confObj[
"workingPoints"][wp]:
277 for ssthr_i
in ssthr:
279 if not isinstance(ssthr[ssthr_i], int):
280 raise RuntimeError(
"Threshold %s in eEM configuration is not an integer!", ssthr_i )
283 for var
in [
"reta_fw",
"rhad_fw",
"wstot_fw"]:
291 iso_loose_float = 0.1
292 iso_medium_float = 0.1
293 iso_tight_float = 0.1
294 frac_loose_float = 0.2
295 frac_medium_float = 0.2
296 frac_tight_float = 0.2
297 frac2_loose_float = 0.3
298 frac2_medium_float = 0.3
299 frac2_tight_float = 0.3
302 confObj[
"workingPoints"] = odict()
303 confObj[
"workingPoints"][
"Loose"] = [
307 (
"etamin", -49), (
"etamax", 49), (
"priority", 0)]),
309 confObj[
"workingPoints"][
"Medium"] = [
313 (
"etamin", -49), (
"etamax", 49), (
"priority", 0)]),
315 confObj[
"workingPoints"][
"Tight"] = [
319 (
"etamin", -49), (
"etamax", 49), (
"priority", 0)]),
321 confObj[
"ptMinToTopo1"] = 5
322 confObj[
"ptMinToTopo2"] = 5
323 confObj[
"ptMinToTopo3"] = 5
324 confObj[
"ptMinxTOB1"] = 5
325 confObj[
"ptMinxTOB2"] = 5
326 confObj[
"ptMinxTOB3"] = 5
327 confObj[
"maxEt"] = 50
328 confObj[
"resolutionMeV"] = 200
331 for wp
in confObj[
"workingPoints"]:
332 for ssthr
in confObj[
"workingPoints"][wp]:
333 for ssthr_i
in ssthr:
335 if not isinstance(ssthr[ssthr_i], int):
336 raise RuntimeError(
"Threshold %s in jEM configuration is not an integer!", ssthr_i )
339 for var
in [
"iso_fw",
"frac_fw",
"frac2_fw"]:
384 def __call__(self, do_eFex_BDT_Tau=True, do_HI_tob_thresholds=False) -> odict:
391 confObj[
"workingPoints"] = odict()
392 confObj[
"workingPoints"][
"Loose"] = [
397 confObj[
"workingPoints"][
"Medium"] = [
402 confObj[
"workingPoints"][
"Tight"] = [
407 confObj[
"ptMinToTopo"] = 1
if do_HI_tob_thresholds
else 5
408 confObj[
"resolutionMeV"] = 100
409 confObj[
"minIsoEt"] = 13.0
410 confObj[
"maxEt"] = 50
411 confObj[
"algoVersion"] =
int(do_eFex_BDT_Tau)
414 for wp
in confObj[
"workingPoints"]:
415 for ssthr
in confObj[
"workingPoints"][wp]:
416 for ssthr_i
in ssthr:
418 if not isinstance(ssthr[ssthr_i], int):
419 raise RuntimeError(
"Threshold %s in eTAU configuration is not an integer!", ssthr_i )
420 elif ssthr[ssthr_i] < 0:
421 raise RuntimeError(
"Threshold %s in eTAU configuration is negative!", ssthr_i )
424 for var
in [
"rCore_fw",
"rHad_fw"]:
458 isolation_fw_loose: int = 410
459 isolation_jTAUCoreScale_fw_loose: int = 0
460 eTAU_rCoreMin_WP_fw_loose: eTAUWP = eTAUWP.NoSelection
461 eTAU_rHadMin_WP_fw_loose: eTAUWP = eTAUWP.NoSelection
463 isolation_fw_medium: int = 358
464 isolation_jTAUCoreScale_fw_medium: int = 0
465 eTAU_rCoreMin_WP_fw_medium: eTAUWP = eTAUWP.NoSelection
466 eTAU_rHadMin_WP_fw_medium: eTAUWP = eTAUWP.NoSelection
468 isolation_fw_tight: int = 307
469 isolation_jTAUCoreScale_fw_tight: int = 0
470 eTAU_rCoreMin_WP_fw_tight: eTAUWP = eTAUWP.NoSelection
471 eTAU_rHadMin_WP_fw_tight: eTAUWP = eTAUWP.NoSelection
475 isolation_fw_medium12: int = 400
476 isolation_jTAUCoreScale_fw_medium12: int = 0
477 eTAU_rCoreMin_WP_fw_medium12: eTAUWP = eTAUWP.NoSelection
478 eTAU_rHadMin_WP_fw_medium12: eTAUWP = eTAUWP.NoSelection
481 isolation_fw_medium20: int = 600 + 550
482 isolation_jTAUCoreScale_fw_medium20: int = 550
483 eTAU_rCoreMin_WP_fw_medium20: eTAUWP = eTAUWP.NoSelection
484 eTAU_rHadMin_WP_fw_medium20: eTAUWP = eTAUWP.NoSelection
487 isolation_fw_medium30: int = 600 + 550
488 isolation_jTAUCoreScale_fw_medium30: int = 550
489 eTAU_rCoreMin_WP_fw_medium30: eTAUWP = eTAUWP.NoSelection
490 eTAU_rHadMin_WP_fw_medium30: eTAUWP = eTAUWP.NoSelection
493 isolation_fw_medium35: int = 600 + 550
494 isolation_jTAUCoreScale_fw_medium35: int = 550
495 eTAU_rCoreMin_WP_fw_medium35: eTAUWP = eTAUWP.NoSelection
496 eTAU_rHadMin_WP_fw_medium35: eTAUWP = eTAUWP.NoSelection
500 for default_wp, wp_list
in {
'Loose': [
'Loose12',
'Loose20',
'Loose30',
'Loose35'],
'Tight': [
'Tight12',
'Tight20',
'Tight30',
'Tight35']}.
items():
502 setattr(self, f
'isolation_fw_{wp.lower()}', getattr(self, f
'isolation_fw_{default_wp.lower()}'))
503 setattr(self, f
'isolation_jTAUCoreScale_fw_{wp.lower()}', getattr(self, f
'isolation_jTAUCoreScale_fw_{default_wp.lower()}'))
504 setattr(self, f
'eTAU_rCoreMin_WP_fw_{wp.lower()}', getattr(self, f
'eTAU_rCoreMin_WP_fw_{default_wp.lower()}'))
505 setattr(self, f
'eTAU_rHadMin_WP_fw_{wp.lower()}', getattr(self, f
'eTAU_rHadMin_WP_fw_{default_wp.lower()}'))
509 confObj[
'workingPoints'] = odict()
511 for wp
in [
'Loose',
'Medium',
'Tight',
'Loose12',
'Loose20',
'Loose30',
'Loose35',
'Medium12',
'Medium20',
'Medium30',
'Medium35',
'Tight12',
'Tight20',
'Tight30',
'Tight35']:
512 confObj[
'workingPoints'][wp] = [
513 odict([(
'isolation',
cTAUfwToFlowConversion(getattr(self, f
'isolation_fw_{wp.lower()}'))), (
'isolation_fw', getattr(self, f
'isolation_fw_{wp.lower()}')),
514 (
'isolation_jTAUCoreScale',
cTAUfwToFlowConversion(getattr(self, f
'isolation_jTAUCoreScale_fw_{wp.lower()}'))), (
'isolation_jTAUCoreScale_fw', getattr(self, f
'isolation_jTAUCoreScale_fw_{wp.lower()}')),
515 (
'eTAU_rCoreMin', getattr(self, f
'eTAU_rCoreMin_WP_fw_{wp.lower()}').rCoreMinCut(do_eFex_BDT_Tau)), (
'eTAU_rCoreMin_WP_fw', getattr(self, f
'eTAU_rCoreMin_WP_fw_{wp.lower()}').value),
516 (
'eTAU_rHadMin', getattr(self, f
'eTAU_rHadMin_WP_fw_{wp.lower()}').rHadMinCut(do_eFex_BDT_Tau)), (
'eTAU_rHadMin_WP_fw', getattr(self, f
'eTAU_rHadMin_WP_fw_{wp.lower()}').value)]),
519 confObj[
'resolutionMeV'] = 100
522 for wp
in confObj[
'workingPoints']:
523 for ssthr
in confObj[
'workingPoints'][wp]:
524 for ssthr_i
in ssthr:
526 if not isinstance(ssthr[ssthr_i], int):
527 raise RuntimeError(f
'Threshold {ssthr_i} in cTAU configuration is not an integer!')
528 elif ssthr[ssthr_i] < 0:
529 raise RuntimeError(
'Threshold {ssthr_i} in cTAU configuration is negative!')
542 isolation_fw_loose: int = 410
543 isolation_fw_medium: int = 358
544 isolation_fw_tight: int = 307
547 def __call__(self,do_HI_tob_thresholds=False) -> odict:
549 confObj[
"workingPoints"] = odict()
550 confObj[
"workingPoints"][
"Loose"] = [
551 odict([(
"isolation",
cTAUfwToFlowConversion(self.isolation_fw_loose)), (
"isolation_fw", self.isolation_fw_loose),
554 confObj[
"workingPoints"][
"Medium"] = [
555 odict([(
"isolation",
cTAUfwToFlowConversion(self.isolation_fw_medium)), (
"isolation_fw", self.isolation_fw_medium),
558 confObj[
"workingPoints"][
"Tight"] = [
559 odict([(
"isolation",
cTAUfwToFlowConversion(self.isolation_fw_tight)), (
"isolation_fw", self.isolation_fw_tight),
562 confObj[
"ptMinToTopo1"] = 1
if do_HI_tob_thresholds
else 5
563 confObj[
"ptMinToTopo2"] = 1
if do_HI_tob_thresholds
else 5
564 confObj[
"ptMinToTopo3"] = 1
if do_HI_tob_thresholds
else 5
565 confObj[
"ptMinxTOB1"] = 1
if do_HI_tob_thresholds
else 5
566 confObj[
"ptMinxTOB2"] = 1
if do_HI_tob_thresholds
else 5
567 confObj[
"ptMinxTOB3"] = 1
if do_HI_tob_thresholds
else 5
568 confObj[
"resolutionMeV"] = 200
569 confObj[
"maxEt"] = 50
572 for wp
in confObj[
"workingPoints"]:
573 for ssthr
in confObj[
"workingPoints"][wp]:
574 for ssthr_i
in ssthr:
576 if not isinstance(ssthr[ssthr_i], int):
577 raise RuntimeError(
"Threshold %s in jTAU configuration is not an integer!", ssthr_i )
578 elif ssthr[ssthr_i] < 0:
579 raise RuntimeError(
"Threshold %s in jTAU configuration is negative!", ssthr_i )
583 for var
in [
"isolation_fw"]:
593 confObj[
"ptMinToTopo1"] = 15
594 confObj[
"ptMinToTopo2"] = 15
595 confObj[
"ptMinToTopo3"] = 15
596 confObj[
"ptMinxTOB1"] = 15
597 confObj[
"ptMinxTOB2"] = 15
598 confObj[
"ptMinxTOB3"] = 15
599 confObj[
"resolutionMeV"] = 200
604 confObj[
"ptMinToTopo1"] = 15
605 confObj[
"ptMinToTopo2"] = 15
606 confObj[
"ptMinToTopo3"] = 15
607 confObj[
"ptMinxTOB1"] = 15
608 confObj[
"ptMinxTOB2"] = 15
609 confObj[
"ptMinxTOB3"] = 15
610 confObj[
"resolutionMeV"] = 200
615 confObj[
"ptMinToTopo1"] = 0
616 confObj[
"ptMinToTopo2"] = 0
617 confObj[
"resolutionMeV"] = 200
622 confObj[
"ptMinToTopo1"] = 6
623 confObj[
"ptMinToTopo2"] = 6
624 confObj[
"seedThrA"] = 20
625 confObj[
"seedThrB"] = 20
626 confObj[
"seedThrC"] = 20
627 confObj[
"rhoTowerMinA"] = -9.6
628 confObj[
"rhoTowerMinB"] = -9.6
629 confObj[
"rhoTowerMinC"] = -9.6
630 confObj[
"rhoTowerMaxA"] = 10
631 confObj[
"rhoTowerMaxB"] = 10
632 confObj[
"rhoTowerMaxC"] = 10
633 confObj[
"resolutionMeV"] = 200
636 for param
in confObj:
637 if int(confObj[param]*1000) != (confObj[param]*1000):
638 raise RuntimeError(
"Param %s in gLJ configuration is not an integer in MeV! %d", param, confObj[param])
643 confObj[
"resolutionMeV"] = 200
648 def convertTowerToEta(tower, module):
649 boundaries1 = {0:16, 1:17, 2:18, 3:19, 4:20, 5:21, 6:22, 7:23, 8:24, 9:25, 10:27, 11:29, 12:31, 13:32, 14:49}
650 boundaries2 = {0:8, 1:9, 2:10, 3:11, 4:12, 5:13, 6:14, 7:15, 8:16}
651 boundaries3 = {0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8}
653 return boundaries1[tower]
655 return boundaries2[tower]
657 return boundaries3[tower]
659 raise RuntimeError(
"getConfig_jTE::convertTowerToEta: module not recognised")
666 confObj[
"etaBoundary1"] = convertTowerToEta(module1,1)
667 confObj[
"etaBoundary1_fw"] = module1
668 confObj[
"etaBoundary2"] = convertTowerToEta(module2,2)
669 confObj[
"etaBoundary2_fw"] = module2
670 confObj[
"etaBoundary3"] = convertTowerToEta(module3,3)
671 confObj[
"etaBoundary3_fw"] = module3
672 confObj[
"resolutionMeV"] = 200
677 confObj[
"seedThrA"] = 16
678 confObj[
"seedThrB"] = 16
679 confObj[
"seedThrC"] = 16
680 confObj[
"XERHO_sigmaPosA"] = 3
681 confObj[
"XERHO_sigmaPosB"] = 3
682 confObj[
"XERHO_sigmaPosC"] = 3
683 confObj[
"XERHO_sigmaNegA"] = 8
684 confObj[
"XERHO_sigmaNegB"] = 8
685 confObj[
"XERHO_sigmaNegC"] = 8
686 confObj[
"XEJWOJ_a_A"] = 1003
687 confObj[
"XEJWOJ_a_B"] = 1003
688 confObj[
"XEJWOJ_a_C"] = 1003
689 confObj[
"XEJWOJ_b_A"] = 409
690 confObj[
"XEJWOJ_b_B"] = 409
691 confObj[
"XEJWOJ_b_C"] = 0
692 confObj[
"XEJWOJ_c_A"] = 0
693 confObj[
"XEJWOJ_c_B"] = 0
694 confObj[
"XEJWOJ_c_C"] = 0
695 confObj[
"resolutionMeV"] = 200
700 confObj[
"resolutionMeV"] = 800
708 confObj[
"isolation"] = odict()
709 confObj[
"isolation"][
"HAIsoForEMthr"] = odict([ (
"thrtype",
"HAIsoForEMthr" ), (
"Parametrization", []) ])
710 confObj[
"isolation"][
"HAIsoForEMthr"][
"Parametrization"] += [
711 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 1), (
"mincut", 10), (
"offset", -2), (
"priority", 0), (
"slope", 230), (
"upperlimit", 50)]),
712 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 2), (
"mincut", 0), (
"offset", 0), (
"priority", 0), (
"slope", 0), (
"upperlimit", 0)]),
713 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 3), (
"mincut", 10), (
"offset", -2), (
"priority", 0), (
"slope", 230), (
"upperlimit", 50)]),
714 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 4), (
"mincut", 10), (
"offset", -2), (
"priority", 0), (
"slope", 230), (
"upperlimit", 50)]),
715 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 5), (
"mincut", 10), (
"offset", -2), (
"priority", 0), (
"slope", 230), (
"upperlimit", 50)]),
717 confObj[
"isolation"][
"EMIsoForEMthr"] = odict([ (
"thrtype",
"EMIsoForEMthr" ), (
"Parametrization", []) ])
718 confObj[
"isolation"][
"EMIsoForEMthr"][
"Parametrization"] += [
719 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 1), (
"mincut", 0), (
"offset", 0), (
"priority", 0), (
"slope", 0), (
"upperlimit", 0)]),
720 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 2), (
"mincut", 20), (
"offset", -18), (
"priority", 0), (
"slope", 80), (
"upperlimit", 50)]),
721 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 3), (
"mincut", 20), (
"offset", -18), (
"priority", 0), (
"slope", 80), (
"upperlimit", 50)]),
722 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 4), (
"mincut", 10), (
"offset", -20), (
"priority", 0), (
"slope", 80), (
"upperlimit", 50)]),
723 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 5), (
"mincut", 20), (
"offset", -18), (
"priority", 0), (
"slope", 80), (
"upperlimit", 50)]),
725 confObj[
"ptMinToTopo"] = 8
if do_HI_tob_thresholds
else 3
726 confObj[
"resolutionMeV"] = 500
732 confObj[
"isolation"] = odict()
733 confObj[
"isolation"][
"EMIsoForTAUthr"] = odict([ (
"thrtype",
"EMIsoForTAUthr" ), (
"Parametrization", []) ])
734 confObj[
"isolation"][
"EMIsoForTAUthr"][
"Parametrization"] += [
735 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 1), (
"mincut", 0), (
"offset", 30), (
"priority", 0), (
"slope", 100), (
"upperlimit", 60)]),
736 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 2), (
"mincut", 0), (
"offset", 20), (
"priority", 0), (
"slope", 100), (
"upperlimit", 60)]),
737 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 3), (
"mincut", 0), (
"offset", 15), (
"priority", 0), (
"slope", 100), (
"upperlimit", 60)]),
738 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 4), (
"mincut", 0), (
"offset", 40), (
"priority", 0), (
"slope", 0), (
"upperlimit", 124)]),
739 odict([ (
"etamax", 49), (
"etamin", -49), (
"isobit", 5), (
"mincut", 0), (
"offset", 30), (
"priority", 0), (
"slope", 100), (
"upperlimit", 60)])
741 confObj[
"ptMinToTopo"] = 1
if do_HI_tob_thresholds
else 8
742 confObj[
"resolutionMeV"] = 500
748 confObj[
"ptMinToTopoLargeWindow"] = 12
749 confObj[
"ptMinToTopoSmallWindow"] = 12
755 confObj[
"significance"] = odict()
756 confObj[
"significance"][
"xeMin"] = 11
757 confObj[
"significance"][
"xeMax"] = 63
758 confObj[
"significance"][
"teSqrtMin"] = 4
759 confObj[
"significance"][
"teSqrtMax"] = 63
760 confObj[
"significance"][
"xsSigmaScale"] = 1150
761 confObj[
"significance"][
"xsSigmaOffset"] = 1640