10 import L1TopoAlgorithms.L1TopoAlgConfig
as AlgConf
11 import L1TopoHardware.L1TopoHardware
as HW
12 from .L1CaloThresholdMapping
import get_threshold_cut
13 from .L1TopoKFMETweights
import KFMETweightParameters
15 from AthenaCommon.Logging
import logging
16 log = logging.getLogger(__name__)
18 from collections
import namedtuple
26 _no_m_upper_threshold = 1024*1024*10*10*10
38 alg = AlgConf.eEmNoSort( name =
'eEMall', inputs =
'eEmTobs', outputs =
'eEMall' )
39 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
40 alg.addgeneric(
'OutputWidth', HW.eEmInputWidth)
41 alg.addvariable(
'REtaMin', 0)
42 alg.addvariable(
'RHadMin', 0)
43 alg.addvariable(
'WsTotMin', 0)
44 tm.registerTopoAlgo(alg)
48 alg = AlgConf.eEmSort( name =
'eEMs', inputs =
'eEmTobs', outputs =
'eEMs' )
49 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
50 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
51 alg.addvariable(
'REtaMin', 0)
52 alg.addvariable(
'RHadMin', 0)
53 alg.addvariable(
'WsTotMin', 0)
54 tm.registerTopoAlgo(alg)
56 alg = AlgConf.eEmSort( name =
'eEMsl', inputs =
'eEmTobs', outputs =
'eEMsl' )
57 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
58 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
59 alg.addvariable(
'REtaMin', 1)
60 alg.addvariable(
'RHadMin', 1)
61 alg.addvariable(
'WsTotMin', 1)
62 tm.registerTopoAlgo(alg)
64 alg = AlgConf.eEmSort( name =
'eEMsm', inputs =
'eEmTobs', outputs =
'eEMsm' )
65 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
66 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
67 alg.addvariable(
'REtaMin', 2)
68 alg.addvariable(
'RHadMin', 2)
69 alg.addvariable(
'WsTotMin', 2)
70 tm.registerTopoAlgo(alg)
74 alg = AlgConf.eEmSelect( name =
'eEMab', inputs =
'eEmTobs', outputs =
'eEMab' )
75 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
76 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
78 alg.addvariable(
'REtaMin', 0)
79 alg.addvariable(
'RHadMin', 0)
80 alg.addvariable(
'WsTotMin', 0)
81 tm.registerTopoAlgo(alg)
83 alg = AlgConf.eEmSelect( name =
'eEMabl', inputs =
'eEmTobs', outputs =
'eEMabl' )
84 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
85 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
87 alg.addvariable(
'REtaMin', 1)
88 alg.addvariable(
'RHadMin', 1)
89 alg.addvariable(
'WsTotMin', 1)
90 tm.registerTopoAlgo(alg)
92 alg = AlgConf.eEmSelect( name =
'eEMabm', inputs =
'eEmTobs', outputs =
'eEMabm' )
93 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
94 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
96 alg.addvariable(
'REtaMin', 2)
97 alg.addvariable(
'RHadMin', 2)
98 alg.addvariable(
'WsTotMin', 2)
99 tm.registerTopoAlgo(alg)
106 alg = AlgConf.eTauNoSort( name =
'eTAUall', inputs =
'eTauTobs', outputs =
'eTAUall')
107 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
108 alg.addgeneric(
'OutputWidth', HW.eTauInputWidth)
109 alg.addvariable(
'RCoreMin', 0)
110 alg.addvariable(
'RHadMin', 0)
111 tm.registerTopoAlgo(alg)
115 alg = AlgConf.eTauSort( name =
'eTAUs', inputs =
'eTauTobs', outputs =
'eTAUs' )
116 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
117 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSort)
118 alg.addvariable(
'RCoreMin', 0)
119 alg.addvariable(
'RHadMin', 0)
120 tm.registerTopoAlgo(alg)
124 alg = AlgConf.eTauSelect( name =
'eTAUab', inputs =
'eTauTobs', outputs =
'eTAUab' )
125 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
126 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSelect)
128 alg.addvariable(
'RCoreMin', 0)
129 alg.addvariable(
'RHadMin', 0)
130 tm.registerTopoAlgo(alg)
132 alg = AlgConf.eTauSelect( name =
'eTAUabl', inputs =
'eTauTobs', outputs =
'eTAUabl' )
133 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
134 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSelect)
136 alg.addvariable(
'RCoreMin', 1)
137 alg.addvariable(
'RHadMin', 0)
138 tm.registerTopoAlgo(alg)
140 alg = AlgConf.eTauSelect( name =
'eTAUabm', inputs =
'eTauTobs', outputs =
'eTAUabm' )
141 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
142 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSelect)
144 alg.addvariable(
'RCoreMin', 2)
145 alg.addvariable(
'RHadMin', 0)
146 tm.registerTopoAlgo(alg)
160 alg = AlgConf.MuonSelect( name =
'MU3Vab', inputs =
'MuonTobs', outputs =
'MU3Vab' )
161 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
162 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
163 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
164 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
165 alg.addvariable(
'MinEta', 0*_eta_conversion)
166 alg.addvariable(
'MaxEta', 25*_eta_conversion)
167 alg.addvariable(
'InnerCoinCut', 0)
168 alg.addvariable(
'FullStationCut',0)
169 alg.addvariable(
'GoodMFieldCut', 0)
170 tm.registerTopoAlgo(alg)
172 alg = AlgConf.MuonSelect( name =
'MU3VFab', inputs =
'MuonTobs', outputs =
'MU3VFab' )
173 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
174 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
175 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
176 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
177 alg.addvariable(
'MinEta', 0*_eta_conversion)
178 alg.addvariable(
'MaxEta', 25*_eta_conversion)
179 alg.addvariable(
'InnerCoinCut', 0)
180 alg.addvariable(
'FullStationCut',1)
181 alg.addvariable(
'GoodMFieldCut', 0)
182 tm.registerTopoAlgo(alg)
184 alg = AlgConf.MuonSelect( name =
'MU5VFab', inputs =
'MuonTobs', outputs =
'MU5VFab' )
185 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
186 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
187 alg.addvariable(
'MinEtRPC', 6*_et_conversion)
188 alg.addvariable(
'MinEtTGC', 5*_et_conversion)
189 alg.addvariable(
'MinEta', 0*_eta_conversion)
190 alg.addvariable(
'MaxEta', 25*_eta_conversion)
191 alg.addvariable(
'InnerCoinCut', 0)
192 alg.addvariable(
'FullStationCut',1)
193 alg.addvariable(
'GoodMFieldCut', 0)
194 tm.registerTopoAlgo(alg)
196 alg = AlgConf.MuonSelect( name =
'MU8Fab', inputs =
'MuonTobs', outputs =
'MU8Fab' )
197 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
198 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
199 alg.addvariable(
'MinEtRPC', 8*_et_conversion)
200 alg.addvariable(
'MinEtTGC', 8*_et_conversion)
201 alg.addvariable(
'MinEta', 0*_eta_conversion)
202 alg.addvariable(
'MaxEta', 25*_eta_conversion)
203 alg.addvariable(
'InnerCoinCut', 0)
204 alg.addvariable(
'FullStationCut',1)
205 alg.addvariable(
'GoodMFieldCut', 0)
206 tm.registerTopoAlgo(alg)
208 alg = AlgConf.MuonSelect( name =
'CMU3Vab', inputs =
'MuonTobs', outputs =
'CMU3Vab' )
209 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
210 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
211 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
212 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
213 alg.addvariable(
'MinEta', 0*_eta_conversion)
214 alg.addvariable(
'MaxEta', 10*_eta_conversion)
215 alg.addvariable(
'InnerCoinCut', 0)
216 alg.addvariable(
'FullStationCut',0)
217 alg.addvariable(
'GoodMFieldCut', 0)
218 tm.registerTopoAlgo(alg)
220 alg = AlgConf.MuonSelect( name =
'CMU5VFab', inputs =
'MuonTobs', outputs =
'CMU5VFab' )
221 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
222 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
223 alg.addvariable(
'MinEtRPC', 6*_et_conversion)
224 alg.addvariable(
'MinEtTGC', 5*_et_conversion)
225 alg.addvariable(
'MinEta', 0*_eta_conversion)
226 alg.addvariable(
'MaxEta', 10*_eta_conversion)
227 alg.addvariable(
'InnerCoinCut', 0)
228 alg.addvariable(
'FullStationCut',1)
229 alg.addvariable(
'GoodMFieldCut', 0)
230 tm.registerTopoAlgo(alg)
233 alg = AlgConf.MuonSort( name =
'MUs', inputs =
'MuonTobs', outputs =
'MUs' )
234 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
235 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSort)
237 alg.addvariable(
'MinEta', 0*_eta_conversion)
238 alg.addvariable(
'MaxEta', 25*_eta_conversion)
239 alg.addvariable(
'InnerCoinCut', 0)
240 alg.addvariable(
'FullStationCut', 0)
241 alg.addvariable(
'GoodMFieldCut', 0)
242 tm.registerTopoAlgo(alg)
245 alg = AlgConf.MuonSort_1BC( name =
'LMUs', inputs =
'LateMuonTobArray', outputs =
'LMUs' )
246 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
247 alg.addgeneric(
'OutputWidth', 1)
248 alg.addgeneric(
'nDelayedMuons', 1)
249 alg.addvariable(
'MinEta', 0*_eta_conversion)
250 alg.addvariable(
'MaxEta', 25*_eta_conversion)
251 alg.addvariable(
'InnerCoinCut', 0)
252 alg.addvariable(
'FullStationCut', 1)
253 alg.addvariable(
'GoodMFieldCut', 0)
254 tm.registerTopoAlgo(alg)
257 alg = AlgConf.jJetNoSort( name =
'AjJall_1BC', inputs =
'jJetTobs', outputs =
'AjJall_1BC' )
258 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
259 alg.addgeneric(
'OutputWidth', HW.jJetInputWidth)
262 alg.addgeneric(
'NumRegisters', 1)
263 tm.registerTopoAlgo(alg)
268 {
"otype" :
"jJ",
"ocut" : 50,
"olist" :
"ab",
"etamin" : 0,
"etamax" : 32},
269 {
"otype" :
"CjJ",
"ocut" : 20,
"olist" :
"ab",
"etamin" : 0,
"etamax" : 26},
270 {
"otype" :
"SCjJ",
"ocut" : 10,
"olist" :
"ab",
"etamin" : 0,
"etamax" : 26},
271 {
"otype" :
"FjJ",
"ocut" : 40,
"olist" :
"ab",
"etamin" : 30,
"etamax" : 49},
278 listname =
"%s%s" % (d.otype,d.olist)
279 algoname = AlgConf.jJetSelect
280 alg = algoname( name = listname, inputs =
'jJetTobs', outputs = listname )
281 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
282 alg.addgeneric(
'OutputWidth', HW.jJetOutputWidthSelect)
285 alg.addvariable(
'MinEta', d.etamin*_eta_conversion)
286 alg.addvariable(
'MaxEta', d.etamax*_eta_conversion)
287 tm.registerTopoAlgo(alg)
290 {
"otype" :
"FjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 30,
"etamax" : 49},
291 {
"otype" :
"jJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 32},
292 {
"otype" :
"CjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 26},
293 {
"otype" :
"AjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 49},
300 listname =
"%s%s" % (d.otype,d.olist)
301 algoname = AlgConf.jJetSort
302 alg = algoname( name = listname, inputs =
'jJetTobs', outputs = listname )
303 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
304 alg.addgeneric(
'OutputWidth', HW.jJetOutputWidthSort)
306 alg.addvariable(
'MinET', d.ocut*_et_conversion)
307 alg.addvariable(
'MinEta', d.etamin*_eta_conversion)
308 alg.addvariable(
'MaxEta', d.etamax*_eta_conversion)
309 tm.registerTopoAlgo(alg)
314 alg = AlgConf.jEmSort( name =
'jEMs25ETA49', inputs =
'jEmTobs', outputs =
'jEMs25ETA49' )
315 alg.addgeneric(
'InputWidth', HW.jEmInputWidth)
316 alg.addgeneric(
'OutputWidth', HW.jEmOutputWidthSort)
317 alg.addvariable(
'MinEta', 25*_eta_conversion)
318 alg.addvariable(
'MaxEta', 49*_eta_conversion)
320 alg.addvariable(
'IsoMin', 0)
321 alg.addvariable(
'Frac1Min', 0)
322 alg.addvariable(
'Frac2Min', 0)
323 tm.registerTopoAlgo(alg)
325 alg = AlgConf.jEmSort( name =
'jEMsm25ETA49', inputs =
'jEmTobs', outputs =
'jEMsm25ETA49' )
326 alg.addgeneric(
'InputWidth', HW.jEmInputWidth)
327 alg.addgeneric(
'OutputWidth', HW.jEmOutputWidthSort)
328 alg.addvariable(
'MinEta', 25*_eta_conversion)
329 alg.addvariable(
'MaxEta', 49*_eta_conversion)
331 alg.addvariable(
'IsoMin', 2)
332 alg.addvariable(
'Frac1Min', 2)
333 alg.addvariable(
'Frac2Min', 2)
334 tm.registerTopoAlgo(alg)
338 alg = AlgConf.jTauNoSort( name =
'jTAUall', inputs =
'jTauTobs', outputs =
'jTAUall')
339 alg.addgeneric(
'InputWidth', HW.jTauInputWidth)
340 alg.addgeneric(
'OutputWidth', HW.jTauInputWidth)
341 alg.addvariable(
'Isolation',0)
342 alg.addvariable(
'passIsolation',
True)
343 tm.registerTopoAlgo(alg)
346 alg = AlgConf.jTauSort( name =
'jTAUs', inputs =
'jTauTobs', outputs =
'jTAUs' )
347 alg.addgeneric(
'InputWidth', HW.jTauInputWidth)
348 alg.addgeneric(
'OutputWidth', HW.jTauOutputWidthSort)
349 alg.addvariable(
'MinEta', 0*_eta_conversion)
350 alg.addvariable(
'MaxEta', 32*_eta_conversion)
351 alg.addvariable(
'Isolation',0)
352 alg.addvariable(
'passIsolation',
True)
353 tm.registerTopoAlgo(alg)
357 alg = AlgConf.jXENoSort( name =
'jXENoSort_1BC', inputs =
'jXETobs', outputs =
'jXENoSort_1BC' )
358 alg.addgeneric(
'InputWidth', HW.jMetInputWidth)
359 alg.addgeneric(
'OutputWidth', HW.metOutputWidth)
362 alg.addgeneric(
'NumRegisters', 1)
363 tm.registerTopoAlgo(alg)
365 alg = AlgConf.jXESort( name =
'jXEs', inputs =
'jXETobs', outputs =
'jXEs' )
366 alg.addgeneric(
'InputWidth', HW.jMetInputWidth)
367 alg.addgeneric(
'OutputWidth', HW.metOutputWidth)
368 tm.registerTopoAlgo(alg)
371 alg = AlgConf.jTENoSort( name =
'jTENoSort_1BC', inputs =
'jTETobs', outputs =
'jTENoSort_1BC' )
372 alg.addgeneric(
'InputWidth', HW.jSumEtTotalInputWidth)
373 alg.addgeneric(
'OutputWidth', 1)
374 alg.addgeneric(
'NumRegisters', 1)
375 tm.registerTopoAlgo(alg)
386 {
"otype" :
"eEM",
"ocut1" : 24,
"ocut2" : 24,
"olist" :
"sm",
"nleading1" : 2,
"minInvm" : 60,
"maxInvm" : 100,
"inputwidth": HW.eEmOutputWidthSort},
393 toponame =
'ZEE-eEM24sm2'
394 log.debug(
"Define %s", toponame)
395 inputList = d.otype + d.olist
396 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame)
397 alg.addgeneric(
'InputWidth', d.inputwidth)
398 alg.addgeneric(
'MaxTob', d.nleading1)
399 alg.addgeneric(
'NumResultBits', 1)
402 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion )
403 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion )
404 tm.registerTopoAlgo(alg)
411 {
"minDr": 3,
"maxDr": 99,
"mult": 1,
"otype1" :
"MU8Fab" ,
"otype2" :
"eTAU",
"ocut2" : 30,
"olist2" :
"ab", },
412 {
"minDr": 3,
"maxDr": 35,
"mult": 1,
"otype1" :
"MU8Fab" ,
"otype2" :
"eTAU",
"ocut2" : 30,
"olist2" :
"ab", },
413 {
"minDr": 3,
"maxDr": 30,
"mult": 1,
"otype1" :
"MU8Fab" ,
"otype2" :
"eTAU",
"ocut2" : 30,
"olist2" :
"ab", },
414 {
"minDr": 3,
"maxDr": 28,
"mult": 1,
"otype1" :
"MU8Fab" ,
"otype2" :
"eTAU",
"ocut2" : 30,
"olist2" :
"ab", },
422 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
423 obj2 =
"-%s%d%s" % (d.otype2, d.ocut2, d.olist2)
424 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1, obj2)
425 log.debug(
"Define %s", toponame)
426 inputList = [ d.otype1,
'eTAUs']
427 algoname = AlgConf.DeltaRSqrIncl2
428 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
430 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
431 alg.addgeneric(
'InputWidth2', HW.eTauOutputWidthSort)
432 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
433 alg.addgeneric(
'MaxTob2', 1)
434 alg.addgeneric(
'NumResultBits', 1)
435 alg.addvariable(
'MinET1', 0*_et_conversion)
437 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
438 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
439 tm.registerTopoAlgo(alg)
449 {
"minDr": 0,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
450 {
"minDr": 0,
"maxDr": 24,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
452 {
"minDr": 1,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab", },
453 {
"minDr": 1,
"maxDr": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab", },
454 {
"minDr": 2,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
455 {
"minDr": 0,
"maxDr": 22,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
456 {
"minDr": 2,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
458 for x
in listofalgos:
463 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
464 obj2 =
"-%s" % (d.otype2)
465 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
466 log.debug(
"Define %s", toponame)
467 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
468 algoname = AlgConf.DeltaRSqrIncl1
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2
469 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
471 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
472 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
474 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
475 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
476 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
477 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
478 alg.addgeneric(
'NumResultBits', 1)
479 alg.addvariable(
'MinET1', 0*_et_conversion)
480 alg.addvariable(
'MinET2', 0*_et_conversion)
481 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
482 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
483 tm.registerTopoAlgo(alg)
492 {
"minDr": 0,
"maxDr": 12,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
494 for x
in listofalgos:
499 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
500 obj2 =
"-%s" % (d.otype2)
501 toponame =
"%iDR%iC-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
502 log.debug(
"Define %s", toponame)
503 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
504 algoname = AlgConf.DeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2Charge
505 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
507 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
508 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
510 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
511 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
512 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
513 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
514 alg.addgeneric(
'NumResultBits', 1)
515 alg.addvariable(
'MinET1', 0*_et_conversion)
516 alg.addvariable(
'MinET2', 0*_et_conversion)
517 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
518 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
519 tm.registerTopoAlgo(alg)
530 {
"minInvm":7,
"maxInvm":22,
"minDr": 0,
"maxDr": 20,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
532 for x
in listofalgos:
537 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
538 obj2 =
"-%s" % (d.otype2)
539 toponame =
"%iINVM%i-%iDR%iC-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
540 log.debug(
"Define %s", toponame)
541 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
542 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2Charge
543 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
545 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
546 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
548 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
549 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
550 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
551 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
552 alg.addgeneric(
'NumResultBits', 1)
553 alg.addvariable(
'MinET1', 0*_et_conversion)
554 alg.addvariable(
'MinET2', 0*_et_conversion)
555 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
556 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
557 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
558 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
559 tm.registerTopoAlgo(alg)
570 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 1,
571 "otype1" :
"MU5VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
572 "otype2" :
"MU3Vab" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
573 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
574 "otype1" :
"MU5VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
575 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
576 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
577 "otype1" :
"MU3Vab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
578 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
579 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
580 "otype1" :
"MU3VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
581 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
582 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 4,
"maxDphi": 99,
"mult": 1,
583 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
584 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
585 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 4,
"maxDphi": 99,
"mult": 1,
586 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
587 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
588 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 10,
"maxDphi": 99,
"mult": 1,
589 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
590 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
597 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1+
str(d.ocut1)+
str(d.olist1))
598 obj2 =
"-%s" % (d.otype2+
str(d.ocut2)+
str(d.olist2))
599 toponame =
"%sDETA%s-%sDPHI%s-%s%s" % (d.minDeta, d.maxDeta, d.minDphi, d.maxDphi, obj1,
"" if d.mult>1
else obj2)
600 log.debug(
"Define %s", toponame)
601 inputList = [d.otype1+d.olist1]
if (d.mult>1)
else [d.otype1+d.olist1, d.otype2+d.olist2]
602 algoname = AlgConf.DeltaEtaPhiIncl1
if (d.mult>1)
else AlgConf.DeltaEtaPhiIncl2
603 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
604 alg.addgeneric(
'NumResultBits', 1)
606 alg.addgeneric(
'InputWidth', d.nleading1)
607 alg.addgeneric(
'MaxTob', d.nleading1)
608 alg.addvariable(
'MinET1', 0*_et_conversion)
609 alg.addvariable(
'MinET2', 0*_et_conversion)
610 alg.addvariable(
'MinDeltaEta', d.minDeta*_eta_conversion)
611 alg.addvariable(
'MaxDeltaEta', d.maxDeta*_eta_conversion)
612 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
613 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
615 alg.addgeneric(
'InputWidth1', d.nleading1)
616 alg.addgeneric(
'InputWidth2', d.nleading2)
617 alg.addgeneric(
'MaxTob1', d.nleading1)
618 alg.addgeneric(
'MaxTob2', d.nleading2)
619 alg.addvariable(
'MinET1', 0*_et_conversion)
620 alg.addvariable(
'MinET2', 0*_et_conversion)
621 alg.addvariable(
'DeltaEtaMin', d.minDeta*_eta_conversion)
622 alg.addvariable(
'DeltaEtaMax', d.maxDeta*_eta_conversion)
623 alg.addvariable(
'DeltaPhiMin', d.minDphi*_phi_conversion)
624 alg.addvariable(
'DeltaPhiMax', d.maxDphi*_phi_conversion)
625 tm.registerTopoAlgo(alg)
630 {
"itemNameMinHT": 150,
"minHT": 240,
"otype" :
"jJ",
"ocut" : 50,
"olist" :
"s",
"nleading" : 5,
"inputwidth": HW.jJetOutputWidthSort,
"oeta" : 32},
631 {
"itemNameMinHT": 190,
"minHT": 300,
"otype" :
"jJ",
"ocut" : 40,
"olist" :
"s",
"nleading" : 5,
"inputwidth": HW.jJetOutputWidthSort,
"oeta" : 21},
638 toponame =
"HT%d-%s%s%s%spETA%s" % (d.itemNameMinHT, d.otype,
str(d.ocut), d.olist,
str(d.nleading)
if d.olist==
"s" else "",
str(d.oeta))
639 log.debug(
"Define %s", toponame)
640 inputList = d.otype + d.olist
641 alg = AlgConf.JetHT( name = toponame, inputs = inputList, outputs = [toponame] )
642 alg.addgeneric(
'InputWidth', d.inputwidth)
643 alg.addgeneric(
'MaxTob', d.nleading)
644 alg.addgeneric(
'NumRegisters', 2
if d.olist==
"all" else 0)
645 alg.addgeneric(
'NumResultBits', 1)
647 alg.addvariable(
'MinEta', 0*_eta_conversion)
648 alg.addvariable(
'MaxEta', d.oeta*_eta_conversion)
649 alg.addvariable(
'MinHt', d.minHT*_et_conversion)
650 tm.registerTopoAlgo(alg)
657 "algoname" :
"DR_2MU5VFab",
660 "otype1" :
"MU5VFab",
666 for x
in DR_2MU5FMap:
671 inputList = [ d.otype1 ]
673 for bitId
in range(len(d.minDR)):
674 toponames.append(
"%iDR%i-%s%s" % (d.minDR[bitId], d.maxDR[bitId],
str(d.mult1[bitId]),
677 alg = AlgConf.DeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
678 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
679 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
680 alg.addgeneric(
'NumResultBits', len(toponames) )
682 for bitId
in range(len(toponames)):
683 alg.addvariable(
'MinET1', 0 * _et_conversion, bitId )
684 alg.addvariable(
'MinET2', 0 * _et_conversion, bitId )
685 alg.addvariable(
"DeltaRMin", d.minDR[bitId] * d.minDR[bitId] * _dr_conversion * _dr_conversion, bitId)
686 alg.addvariable(
"DeltaRMax", d.maxDR[bitId] * d.maxDR[bitId] * _dr_conversion * _dr_conversion, bitId)
688 tm.registerTopoAlgo(alg)
702 "algoname" :
"INVM_DPHI_eEMsm6",
709 "ocut1List" : [ 12, 15 ],
712 "ocut2List" : [ 12, 15 ],
719 for x
in eINVM_DPHIMap:
724 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
726 for bitId, ocut1Value
in enumerate(d.ocut1List):
727 toponames.append (
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi,
728 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sm" else "",
729 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sm" else ""))
730 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = d.algoname, inputs = inputList, outputs = toponames )
731 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
732 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
733 alg.addgeneric(
'MaxTob1', d.nleading1)
734 alg.addgeneric(
'MaxTob2', d.nleading2)
735 alg.addgeneric(
'NumResultBits', len(toponames))
736 for bitId
in range(len(toponames)):
737 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
738 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
739 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
740 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
741 alg.addvariable(
'MinDeltaPhi', d.minDphi * _phi_conversion, bitId)
742 alg.addvariable(
'MaxDeltaPhi', d.maxDphi * _phi_conversion, bitId)
744 tm.registerTopoAlgo(alg)
749 "algoname":
"110INVM150-eEM50s-eEM10s-2DISAMB-jJ60s",
757 "nleading1": HW.eEmOutputWidthSelect,
758 "inputwidth1": HW.eEmOutputWidthSelect,
761 "nleading2": HW.jJetOutputWidthSelect,
762 "inputwidth2": HW.jJetOutputWidthSelect,
766 for x
in INVM_DISAMB_Map:
771 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
772 obj1a =
"-%s%s%s" % (d.otype1,
str(d.ocut1a), d.olist1)
773 obj1b =
"-%s%s%s" % (d.otype1,
str(d.ocut1b), d.olist1)
774 obj2 =
"%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
775 toponame =
"%iINVM%i%s%s-%sDISAMB-%s" % (d.minInvm, d.maxInvm, obj1a, obj1b,
str(d.disamb)
if d.disamb>0
else "", obj2)
777 alg = AlgConf.InvariantMassInclusive1Disambiguation2( name = d.algoname, inputs = inputList, outputs = [ toponame ] )
778 alg.addgeneric(
'InputWidth1', d.inputwidth1)
779 alg.addgeneric(
'InputWidth2', d.inputwidth2)
780 alg.addgeneric(
'MaxTob1', d.nleading1)
781 alg.addgeneric(
'MaxTob2', d.nleading2)
782 alg.addgeneric(
'NumResultBits', 1)
783 alg.addvariable(
'MinET1a',
get_threshold_cut(d.otype1, d.ocut1a)*_et_conversion, 0)
784 alg.addvariable(
'MinET1b',
get_threshold_cut(d.otype1, d.ocut1b)*_et_conversion, 0)
785 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
786 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, 0)
787 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, 0)
788 alg.addvariable(
'DisambDRSqrMin', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
790 tm.registerTopoAlgo(alg)
805 "algoname" :
"INVM_INVDPHI_eEMsl6",
812 "ocut1List" : [ 9, 12],
815 "ocut2List" : [ 9, 12 ],
821 for x
in eINVM_DPHIMap:
826 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
828 for bitId, ocut1Value
in enumerate(d.ocut1List):
829 toponames.append (
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi,
830 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
831 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
832 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = d.algoname, inputs = inputList, outputs = toponames )
834 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
835 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
836 alg.addgeneric(
'MaxTob1', d.nleading1)
837 alg.addgeneric(
'MaxTob2', d.nleading2)
838 alg.addgeneric(
'NumResultBits', len(toponames))
839 for bitId
in range(len(toponames)):
840 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
841 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
842 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
843 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
844 alg.addvariable(
'MinDeltaPhi', d.minDphi * _phi_conversion, bitId)
845 alg.addvariable(
'MaxDeltaPhi', d.maxDphi * _phi_conversion, bitId)
847 tm.registerTopoAlgo(alg)
863 "algoname" :
"INVM_BOOSTDR_eEMsl6",
870 "ocut1List" : [ 9, 12 ],
873 "ocut2List" : [ 9, 12 ],
879 for x
in eINVM_DRMap:
884 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
886 for bitId, ocut1Value
in enumerate(d.ocut1List):
887 toponames.append (
"%iINVM%i-%iDR%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDR, d.maxDR,
888 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
889 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
891 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
892 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
893 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
894 alg.addgeneric(
'MaxTob1', d.nleading1)
895 alg.addgeneric(
'MaxTob2', d.nleading2)
896 alg.addgeneric(
'NumResultBits', len(toponames))
897 for bitId
in range(len(toponames)):
898 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
899 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
900 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
901 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
902 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
903 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
905 tm.registerTopoAlgo(alg)
918 eINVM_Ranges_DRMap = [
920 "algoname" :
"INVM_BOOSTDR_Ranges_eEM12sl6",
927 "ocut1List" : [12,12],
930 "ocut2List" : [12,12],
936 for x
in eINVM_Ranges_DRMap:
941 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
943 for bitId, ocut1Value
in enumerate(d.ocut1List):
944 toponames.append (
"%iINVM%i-%iDR%i-%s%s%s%s-%s%s%s%s" % (d.minInvm[bitId], d.maxInvm[bitId], d.minDR[bitId], d.maxDR[bitId],
945 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
946 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
948 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
949 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
950 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
951 alg.addgeneric(
'MaxTob1', d.nleading1)
952 alg.addgeneric(
'MaxTob2', d.nleading2)
953 alg.addgeneric(
'NumResultBits', len(toponames))
954 for bitId
in range(len(toponames)):
955 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
956 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
957 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
958 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
959 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
960 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
962 tm.registerTopoAlgo(alg)
976 eINVM_Ranges_Asymm_DRMap = [
978 "algoname" :
"INVM_BOOSTDR_Ranges_Asymm_eEMsl6",
985 "ocut1List" : [12,12],
994 for x
in eINVM_Ranges_Asymm_DRMap:
999 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1001 for bitId, ocut1Value
in enumerate(d.ocut1List):
1002 toponames.append (
"%iINVM%i-%iDR%i-%s%s%s%s-%s%s%s%s" % (d.minInvm[bitId], d.maxInvm[bitId], d.minDR[bitId], d.maxDR[bitId],
1003 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
1004 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
1006 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
1007 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
1008 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
1009 alg.addgeneric(
'MaxTob1', d.nleading1)
1010 alg.addgeneric(
'MaxTob2', d.nleading2)
1011 alg.addgeneric(
'NumResultBits', len(toponames))
1012 for bitId
in range(len(toponames)):
1013 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
1014 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
1015 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
1016 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
1017 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1018 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1020 tm.registerTopoAlgo(alg)
1025 INVM_DR_2MU5VFabMap = [
1027 "algoname":
"INVM_DR_2MU5VFab",
1032 "otype1" :
"MU5VFab",
1036 for x
in INVM_DR_2MU5VFabMap:
1041 inputList = d.otype1
1043 for bitId
in range(len(d.minDR)):
1044 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
1045 d.minDR[bitId] , d.maxDR[bitId],
1049 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
1050 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1051 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1052 alg.addgeneric(
'NumResultBits', len(toponames))
1053 for bitId
in range(len(toponames)):
1054 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
1055 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
1056 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
1057 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
1058 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1059 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1060 tm.registerTopoAlgo(alg)
1065 INVM_2MU3VFab_Map = [
1067 "algoname":
"INVM_2MU3VFab",
1069 "maxInvm" : [14,22],
1070 "otype1" :
"MU3VFab",
1074 for x
in INVM_2MU3VFab_Map:
1079 inputList = d.otype1
1081 for bitId
in range(len(d.maxInvm)):
1082 toponames.append(
"%iINVM%i-%i%s" % ( d.minInvm, d.maxInvm[bitId],
1086 alg = AlgConf.InvariantMassInclusive1( name = d.algoname, inputs = inputList, outputs = toponames)
1087 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1088 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1089 alg.addgeneric(
'NumResultBits', len(toponames))
1090 for bitId
in range(len(toponames)):
1091 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
1092 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
1093 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
1094 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
1095 tm.registerTopoAlgo(alg)
1100 invm_map = {
"algoname":
'INVM_eEMs6' ,
"ocutlist": [ 9, 15 ],
"minInvm": 1,
"maxInvm": 5,
"otype" :
"eEM",
"olist" :
"s",
1101 "nleading" : 1,
"inputwidth": HW.eEmOutputWidthSort}
1102 for x
in [ invm_map ]:
1106 setattr (d, k, x[k])
1107 inputList = d.otype + d.olist
1109 for ocut
in d.ocutlist:
1110 toponame =
"%iINVM%i-%s%s%s%s-eEMs6" % (d.minInvm, d.maxInvm, d.otype,
str(ocut)
if ocut > 0
else "", d.olist,
str(d.nleading)
if d.olist==
"s" else "")
1111 toponames.append(toponame)
1112 alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = [inputList,
'eEMs'], outputs = toponames)
1113 alg.addgeneric(
'InputWidth1', d.inputwidth)
1114 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
1115 alg.addgeneric(
'MaxTob1', d.nleading)
1116 alg.addgeneric(
'MaxTob2', HW.eEmOutputWidthSort)
1117 alg.addgeneric(
'NumResultBits', len(toponames))
1118 for bitid, ocut
in enumerate(d.ocutlist):
1120 alg.addvariable(
'MinET2', 0*_et_conversion, bitid)
1121 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
1122 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitid)
1123 tm.registerTopoAlgo(alg)
1128 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1129 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3Vab" ,
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1130 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 80,
"olist2" :
"ab"},
1131 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3VFab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1132 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3VFab",
"otype2" :
"CjJ",
"ocut2": 20,
"olist2" :
"ab"},
1133 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 20,
"olist2" :
"ab"},
1139 setattr (d, k, x[k])
1140 toponame =
"%iDR%02d-%s-%s%s%s" % (d.minDr, d.maxDr, d.otype1, d.otype2,
str(d.ocut2), d.olist2)
1141 log.debug(
"Define %s", toponame)
1142 inputList = [d.otype1, d.otype2 + d.olist2]
1143 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1144 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1145 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1146 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1147 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1148 alg.addgeneric(
'NumResultBits', 1)
1149 alg.addvariable(
'MinET1', 0*_et_conversion, 0)
1150 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1151 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1152 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1153 tm.registerTopoAlgo(alg)
1162 {
"minInvm": 2,
"maxInvm": 8,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1163 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1164 {
"minInvm": 8,
"maxInvm": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1165 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1166 {
"minInvm": 2,
"maxInvm": 9,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1167 {
"minInvm": 8,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1168 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1169 {
"minInvm": 7,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1170 {
"minInvm": 7,
"maxInvm": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1171 {
"minInvm": 7,
"maxInvm": 14,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1172 {
"minInvm": 7,
"maxInvm": 14,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1174 for x
in listofalgos:
1178 setattr (d, k, x[k])
1179 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1180 obj2 =
"-%s" % (d.otype2)
1181 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1182 log.debug(
"Define %s", toponame)
1183 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1184 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1185 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1187 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1188 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1190 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1191 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1192 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1193 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1194 alg.addgeneric(
'NumResultBits', 1)
1195 alg.addvariable(
'MinET1', 0*_et_conversion)
1196 alg.addvariable(
'MinET2', 0*_et_conversion)
1197 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1198 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1199 tm.registerTopoAlgo(alg)
1201 toponame =
"8INVM15-2CMU3Vab"
1202 log.debug(
"Define %s", toponame)
1203 inputList = [
'CMU3Vab']
1204 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame )
1205 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1206 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1207 alg.addgeneric(
'NumResultBits', 1)
1208 alg.addvariable(
'MinET1', 0*_et_conversion)
1209 alg.addvariable(
'MinET2', 0*_et_conversion)
1210 alg.addvariable(
'MinMSqr', 8*8*_et_conversion*_et_conversion)
1211 alg.addvariable(
'MaxMSqr', 15*15*_et_conversion*_et_conversion)
1212 tm.registerTopoAlgo(alg)
1215 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab"},
1221 setattr (d, k, x[k])
1222 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1223 obj2 =
"-%s" % (d.otype2)
1224 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1225 log.debug(
"Define %s", toponame)
1226 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1227 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1228 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1230 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1231 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1232 alg.addgeneric(
'RequireOneBarrel', d.onebarrel)
1234 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1235 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1236 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1237 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1238 alg.addgeneric(
'NumResultBits', 1)
1239 alg.addvariable(
'MinET1', 0*_et_conversion)
1240 alg.addvariable(
'MinET2', 0*_et_conversion)
1241 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1242 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1243 tm.registerTopoAlgo(alg)
1247 {
"minDr": 0,
"maxDr": 24,
"mult": 2,
"otype1" :
"CMU3Vab",
"otype2" :
"", },
1248 {
"minDr": 1,
"maxDr": 24,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab", },
1254 setattr (d, k, x[k])
1255 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1256 obj2 =
"-%s" % (d.otype2)
1257 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
1258 log.debug(
"Define %s", toponame)
1259 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1260 algoname = AlgConf.DeltaRSqrIncl1
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2
1261 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1263 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1264 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1266 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1267 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1268 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1269 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1270 alg.addgeneric(
'NumResultBits', 1)
1271 alg.addvariable(
'MinET1', 0*_et_conversion)
1272 alg.addvariable(
'MinET2', 0*_et_conversion)
1273 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr *_dr_conversion*_dr_conversion)
1274 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr *_dr_conversion*_dr_conversion)
1275 tm.registerTopoAlgo(alg)
1279 toponame =
'100RATIO-0MATCH-eTAU40si2-eEMall'
1280 alg = AlgConf.RatioMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1281 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1282 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1283 alg.addgeneric(
'MaxTob1', 2)
1284 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1285 alg.addgeneric(
'NumResultBits', 1)
1287 alg.addvariable(
'MinET2', 0*_et_conversion)
1288 alg.addvariable(
'Ratio', 100, 0)
1289 tm.registerTopoAlgo(alg)
1292 toponame =
'NOT-0MATCH-eTAU40si1-eEMall'
1293 alg = AlgConf.NotMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1294 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1295 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1296 alg.addgeneric(
'MaxTob1', 1)
1297 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1298 alg.addgeneric(
'NumResultBits', 1)
1300 alg.addvariable(
'MinET2', 0*_et_conversion)
1301 alg.addvariable(
'EtaMin1', 0*_eta_conversion)
1302 alg.addvariable(
'EtaMax1', 49*_eta_conversion)
1303 alg.addvariable(
'EtaMin2', 0*_eta_conversion)
1304 alg.addvariable(
'EtaMax2', 49*_eta_conversion)
1305 alg.addvariable(
'DRCut', 0)
1306 tm.registerTopoAlgo(alg)
1309 xemap = [{
"etcut": 0,
"Threlist": [55, 60, 65, 75 ]}]
1314 setattr (d, k, x[k])
1315 log.debug(
"Define %s", toponame)
1316 inputList = [
'jXENoSort_1BC',
'AjJall_1BC']
1318 for minxe
in d.Threlist:
1319 toponames.append(
"KF-jXE%s-AjJall" % (minxe))
1320 alg = AlgConf.KalmanMETCorrection( name =
"KF-jXE-AjJall", inputs = inputList, outputs = toponames )
1321 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
1322 alg.addgeneric(
'NumResultBits', len(toponames))
1323 for key, value
in KFMETweightParameters.items():
1327 alg.addvariable(key, value)
1328 alg.addvariable(
'MinET', 0)
1329 for bitid,minxe
in enumerate(d.Threlist):
1330 alg.addvariable(
'KFXE',
str(minxe*_et_conversion), bitid)
1331 tm.registerTopoAlgo(alg)
1337 {
"otype" :
"LATE-MU",
"ocut" : 10,
"inputwidth": HW.NumberOfDelayedMuons},
1343 setattr (d, k, x[k])
1345 toponame =
"%s%ss1" % ( d.otype,
str(d.ocut) )
1347 log.debug(
"Define %s", toponame)
1351 alg = AlgConf.EtCut( name = toponame, inputs = inputList, outputs = toponame )
1352 alg.addgeneric(
'InputWidth', d.inputwidth)
1353 alg.addgeneric(
'MaxTob', 1)
1354 alg.addgeneric(
'NumResultBits', 1)
1355 alg.addvariable(
'MinET',
str(d.ocut*_et_conversion))
1356 tm.registerTopoAlgo(alg)
1361 {
"itemNameMinHT": 175,
"minHT": 176,
"otype" :
"SCjJ",
"ocut" : 10,
"olist" :
"ab",
"nleading" : HW.jJetOutputWidthSelect,
"inputwidth": HW.jJetOutputWidthSelect,
"oeta" : 26},
1367 setattr (d, k, x[k])
1368 toponame =
"SC%d-%s%s%s%spETA%s" % (d.itemNameMinHT, d.otype,
str(d.ocut), d.olist,
str(d.nleading)
if d.olist==
"s" else "",
str(d.oeta))
1369 log.debug(
"Define %s", toponame)
1370 inputList = d.otype + d.olist
1371 alg = AlgConf.SimpleCone( name = toponame, inputs = inputList, outputs = [toponame] )
1372 alg.addgeneric(
'InputWidth', d.inputwidth)
1373 alg.addgeneric(
'NumResultBits', 1)
1374 alg.addvariable(
'MinET', d.ocut*_et_conversion)
1375 alg.addvariable(
'MinSumET', d.minHT*_et_conversion)
1376 alg.addvariable(
'MaxRSqr', 15*15*_dr_conversion*_dr_conversion)
1377 tm.registerTopoAlgo(alg)
1381 {
"minInvm" : 0,
"maxInvm": 9,
"otype" :
"eEM",
"ocut1" : 9,
"olist" :
"ab",
"inputwidth": HW.eEmOutputWidthSelect,
"ocut2" : 0},
1387 setattr (d, k, x[k])
1388 inputList = d.otype + d.olist
1389 toponame =
"%iINVM%i-%s%s%s-%s%s" % (d.minInvm, d.maxInvm,
1390 d.otype,
str(d.ocut1) , d.olist,
1392 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame)
1393 alg.addgeneric(
'InputWidth', d.inputwidth)
1394 alg.addgeneric(
'MaxTob', HW.eEmOutputWidthSelect)
1395 alg.addgeneric(
'NumResultBits', 1)
1398 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
1399 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
1400 tm.registerTopoAlgo(alg)
1405 {
"minDr": 0,
"maxDr": 3,
"otype1" :
"eEM" ,
"ocut1": 9,
"olist1" :
"ab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"}
1411 setattr (d, k, x[k])
1412 toponame =
"%iDR%02d-%s%s%s-%s%s%s" % (d.minDr, d.maxDr, d.otype1,
str(d.ocut1), d.olist1, d.otype2,
str(d.ocut2), d.olist2)
1413 log.debug(
"Define %s", toponame)
1414 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
1415 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1416 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
1417 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1418 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSelect)
1419 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1420 alg.addgeneric(
'NumResultBits', 1)
1421 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1422 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1423 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1424 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1425 tm.registerTopoAlgo(alg)
1431 {
"minDphi": 27,
"maxDphi": 32,
"otype" :
"eEM",
"ocut1" : 0,
"olist" :
"s",
"nleading1" : 1,
"inputwidth1": HW.eEmOutputWidthSort,
"ocut2" : 0,
"nleading2": 6},
1437 setattr (d, k, x[k])
1438 toponame =
"%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minDphi, d.maxDphi,
1439 d.otype,
str(d.ocut1)
if d.ocut1 > 0
else "", d.olist,
str(d.nleading1)
if d.olist==
"s" else "",
1440 d.otype,
str(d.ocut2)
if d.ocut2 > 0
else "", d.olist,
str(d.nleading2)
if d.olist==
"s" else "")
1441 log.debug(
"Define %s", toponame)
1442 inputList = d.otype + d.olist
1443 alg = AlgConf.DeltaPhiIncl1( name = toponame, inputs = inputList, outputs = toponame )
1444 alg.addgeneric(
'InputWidth', d.inputwidth1)
1445 alg.addgeneric(
'MaxTob', d.nleading2)
1446 alg.addgeneric(
'NumResultBits', 1)
1449 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion, 0)
1450 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, 0)
1451 tm.registerTopoAlgo(alg)
1455 {
"minDr": 0,
"maxDr": 28,
"otype1" :
"eTAU" ,
"ocut1": 30,
"olist1" :
"abl",
1456 "nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
"otype2" :
"eTAU",
"ocut2": 20,
"olist2" :
"abl",
1457 "nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect},
1458 {
"minDr": 0,
"maxDr": 28,
"otype1" :
"eTAU" ,
"ocut1": 30,
"olist1" :
"abm",
1459 "nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
"otype2" :
"eTAU",
"ocut2": 20,
"olist2" :
"abm",
1460 "nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect},
1466 setattr (d, k, x[k])
1467 obj1 =
"%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1468 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1469 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1, obj2)
1470 log.debug(
"Define %s", toponame)
1471 inputList = [d.otype1 + d.olist1]
if d.otype1==d.otype2
else [d.otype1 + d.olist1, d.otype2 + d.olist2]
1472 algoname = AlgConf.DeltaRSqrIncl1
if d.otype1==d.otype2
else AlgConf.DeltaRSqrIncl2
1473 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1474 if d.otype1==d.otype2:
1475 alg.addgeneric(
'InputWidth', d.inputwidth1)
1476 alg.addgeneric(
'MaxTob', d.nleading1)
1478 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1479 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1480 alg.addgeneric(
'MaxTob1', d.nleading1)
1481 alg.addgeneric(
'MaxTob2', d.nleading2)
1482 alg.addgeneric(
'NumResultBits', 1)
1483 if d.otype1==d.otype2:
1486 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
1487 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
1489 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , 0)
1490 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , 0)
1491 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1492 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1493 tm.registerTopoAlgo(alg)
1496 DISAMB_DR_jJ_eTau_eTau_Map = [
1498 "algoname":
"2DISAMB_jJ55ab_DR_eTAU_eTAU",
1505 "nleading1": HW.eTauOutputWidthSelect,
1506 "inputwidth1": HW.eTauOutputWidthSelect,
1509 "nleading2": HW.eTauOutputWidthSelect,
1510 "inputwidth2": HW.eTauOutputWidthSelect,
1514 "nleading3": HW.jJetOutputWidthSelect,
1515 "inputwidth3": HW.jJetOutputWidthSelect,
1519 "algoname":
"2DISAMB_jJ50ab_DR_eTAU_eTAU",
1526 "nleading1": HW.eTauOutputWidthSelect,
1527 "inputwidth1": HW.eTauOutputWidthSelect,
1530 "nleading2": HW.eTauOutputWidthSelect,
1531 "inputwidth2": HW.eTauOutputWidthSelect,
1535 "nleading3": HW.jJetOutputWidthSelect,
1536 "inputwidth3": HW.jJetOutputWidthSelect,
1540 "algoname":
"2DISAMB_jJ40ab_DR_eTAU_eTAU",
1547 "nleading1": HW.eTauOutputWidthSelect,
1548 "inputwidth1": HW.eTauOutputWidthSelect,
1551 "nleading2": HW.eTauOutputWidthSelect,
1552 "inputwidth2": HW.eTauOutputWidthSelect,
1556 "nleading3": HW.jJetOutputWidthSelect,
1557 "inputwidth3": HW.jJetOutputWidthSelect,
1561 "algoname":
"2DISAMB_jJ30ab_DR_eTAU_eTAU",
1568 "nleading1": HW.eTauOutputWidthSelect,
1569 "inputwidth1": HW.eTauOutputWidthSelect,
1572 "nleading2": HW.eTauOutputWidthSelect,
1573 "inputwidth2": HW.eTauOutputWidthSelect,
1577 "nleading3": HW.jJetOutputWidthSelect,
1578 "inputwidth3": HW.jJetOutputWidthSelect,
1582 for x
in DISAMB_DR_jJ_eTau_eTau_Map:
1587 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1589 for bitId
in range(len(d.maxDR)):
1590 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1591 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1592 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1593 toponames.append(
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "",
1594 obj3, d.minDR, d.maxDR[bitId], obj1, obj2))
1596 alg = AlgConf.DisambiguationDRIncl3( name = d.algoname, inputs = inputList, outputs = toponames )
1597 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1598 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1599 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1600 alg.addgeneric(
'MaxTob1', d.nleading1)
1601 alg.addgeneric(
'MaxTob2', d.nleading2)
1602 alg.addgeneric(
'MaxTob3', d.nleading3)
1603 alg.addgeneric(
'NumResultBits', len(toponames))
1605 for bitId
in range(len(toponames)):
1606 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1607 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1608 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, bitId)
1609 alg.addvariable(
'DisambDRSqrMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1610 alg.addvariable(
'DisambDRSqrMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1611 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, bitId)
1613 tm.registerTopoAlgo(alg)
1619 DR_eTau30_eTau20_Map = [
1621 "algoname":
"DR_eTAU30ab_eTAU20ab",
1629 "inputwidth": HW.eTauOutputWidthSelect,
1633 for x
in DR_eTau30_eTau20_Map:
1638 inputList = [d.otype1 + d.olist1]
1640 for bitId
in range(len(d.maxDR)):
1641 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1642 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1643 toponames.append(
"%dDR%d%s%s" % ( d.minDR, d.maxDR[bitId], obj1, obj2))
1645 alg = AlgConf.DeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames )
1647 alg.addgeneric(
'InputWidth', d.inputwidth)
1648 alg.addgeneric(
'MaxTob', HW.eTauOutputWidthSelect)
1649 alg.addgeneric(
'NumResultBits', len(toponames) )
1651 for bitId
in range(len(toponames)):
1652 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1653 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1654 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1655 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1658 tm.registerTopoAlgo(alg)
1663 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"abl",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1664 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"abl",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1665 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1666 "drcutmin": 0,
"drcutmax": 28},
1668 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"abm",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1669 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"abm",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1670 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1671 "drcutmin": 0,
"drcutmax": 28},
1673 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1674 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1675 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1676 "drcutmin": 4 ,
"drcutmax": 28},
1678 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1679 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1680 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1681 "drcutmin": 4 ,
"drcutmax": 32},
1683 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1684 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1685 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1686 "drcutmin": 10 ,
"drcutmax": 32},
1692 setattr (d, k, x[k])
1693 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1694 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1695 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1696 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1697 log.debug(
"Define %s", toponame)
1698 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1699 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1700 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1701 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1702 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1703 alg.addgeneric(
'MaxTob1', d.nleading1)
1704 alg.addgeneric(
'MaxTob2', d.nleading2)
1705 alg.addgeneric(
'MaxTob3', d.nleading3)
1706 alg.addgeneric(
'NumResultBits', 1)
1707 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1708 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1709 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1710 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1711 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1712 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1713 tm.registerTopoAlgo(alg)
1718 {
"minDeta": 0,
"maxDeta": 20,
"otype" :
"jJ",
"ocut1" : 90,
"olist" :
"s",
1719 "nleading1" : 1,
"inputwidth1": HW.jJetOutputWidthSort,
"ocut2" : 0,
"nleading2": 2},
1720 {
"minDeta": 0,
"maxDeta" : 24,
"otype" :
"eTAU" ,
"olist" :
"s",
"inputwidth1": HW.eTauOutputWidthSort,
1721 "ocut1" : 30,
"nleading1": 2,
1722 "ocut2" : 12,
"nleading2": 2},
1728 setattr (d, k, x[k])
1729 toponame =
"%iDETA%i-%s%s%s%s-%s%s%s%s" % (d.minDeta, d.maxDeta,
1730 d.otype, d.ocut1
if d.ocut1 > 0
else "", d.olist, d.nleading1,
1731 d.otype, d.ocut2
if d.ocut2 > 0
else "", d.olist, d.nleading2)
1732 log.debug(
"Define %s", toponame)
1733 inputList = d.otype + d.olist
1734 alg = AlgConf.DeltaEtaIncl1( name = toponame, inputs = inputList, outputs = toponame )
1735 alg.addgeneric(
'InputWidth', d.inputwidth1)
1736 alg.addgeneric(
'MaxTob', d.nleading2)
1737 alg.addgeneric(
'NumResultBits', 1)
1738 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype, d.ocut1)*_et_conversion, 0)
1739 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype, d.ocut2)*_et_conversion, 0)
1740 alg.addvariable(
'MinDeltaEta', d.minDeta*_eta_conversion, 0)
1741 alg.addvariable(
'MaxDeltaEta', d.maxDeta*_eta_conversion, 0)
1742 tm.registerTopoAlgo(alg)
1748 DPHI_jXE40delay_jJ40s_map = [
1750 "algoname" :
"DPHI_jXE40delay_jJ40s",
1753 "InputWidth1": HW.metOutputWidth,
1754 "InputWidth2": HW.jJetOutputWidthSort,
1757 "MinET1" : 40*_et_conversion,
1758 "MinET2" : 40*_et_conversion,
1759 "MinDeltaPhi": 0*_phi_conversion,
1760 "phi_thresholds": [10, 99],
1764 for x
in DPHI_jXE40delay_jJ40s_map:
1769 inputList = [
'jXEs',
'jJs']
1771 for bitId
in range(len(d.phi_thresholds)):
1772 toponames.append(
"0DPHI%d-jXE40delay-jJ40s" % (d.phi_thresholds[bitId]))
1774 alg = AlgConf.DeltaPhiIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
1776 alg.addgeneric(
'InputWidth1', d.InputWidth1)
1777 alg.addgeneric(
'InputWidth2', d.InputWidth2)
1778 alg.addgeneric(
'MaxTob1', d.MaxTob1)
1779 alg.addgeneric(
'MaxTob2', d.MaxTob2)
1780 alg.addgeneric(
'NumResultBits', len(toponames) )
1781 alg.addgeneric(
'Delay1', d.Delay1)
1782 alg.addgeneric(
'Delay2', d.Delay2)
1785 for bitId
in range(len(toponames)):
1786 alg.addvariable(
'MinET1', d.MinET1, bitId)
1787 alg.addvariable(
'MinET2', d.MinET2, bitId)
1788 alg.addvariable(
'MinDeltaPhi', d.MinDeltaPhi, bitId)
1789 alg.addvariable(
'MaxDeltaPhi', d.phi_thresholds[bitId]*_phi_conversion, bitId)
1790 tm.registerTopoAlgo(alg)
1795 "algoname" :
"TeAsymmetry-jTENoSort",
1796 "deltaAbsMin" : [5, 5, 3, 7],
1797 "asymFactor" : [1, 1.05, 1, 0.9],
1798 "asymOffset" : [-5, -24, -5, -7],
1799 "maxTeProduct": [200, 200, 200, 200],
1803 for x
in TeAsymmetry_map:
1808 inputList = [
'jTENoSort_1BC']
1811 for bitId
in range(len(d.deltaAbsMin)):
1812 toponames.append(
"TeAsymmetry_jTENoSort_ParamSet%d" % (bitId))
1814 alg = AlgConf.TeAsymmetry( name = d.algoname, inputs = inputList, outputs = toponames )
1815 alg.addgeneric(
'InputWidth', 1)
1816 alg.addgeneric(
'NumResultBits', len(toponames))
1817 alg.addgeneric(
"Delay", 1)
1819 for bitId
in range(len(toponames)):
1821 alg.addvariable(
'deltaAbsMin', d.deltaAbsMin[bitId]*_et_conversion, bitId)
1822 alg.addvariable(
'asymFactor', d.asymFactor[bitId], bitId)
1823 alg.addvariable(
'asymOffset', d.asymOffset[bitId]*_et_conversion, bitId)
1824 alg.addvariable(
'maxTeProduct', d.maxTeProduct[bitId]*_et_conversion*_et_conversion, bitId)
1825 tm.registerTopoAlgo(alg)
1830 "algoname" :
"TeATIME-jTENoSort",
1831 "teFlavor" : [2,1,2,3],
1832 "combination" : [0,0,0,1],
1833 "nextBcOffset" : [-2.5,10,10,10],
1836 "nextBcFactor" : [0.9,2.5,2.5,2.5]
1840 for x
in TeATIME_map:
1845 inputList = [
'jTENoSort_1BC']
1848 for bitId
in range(4):
1849 toponames.append(
"TeATIME_jTENoSort_ParamSet%d" % (bitId))
1852 alg = AlgConf.TeATIME( name = d.algoname, inputs = inputList, outputs = toponames )
1853 alg.addgeneric(
'InputWidth', 1)
1854 alg.addgeneric(
'NumResultBits', len(toponames))
1855 for bitId
in range(len(d.teFlavor)):
1856 alg.addvariable(
'algoLogic', d.teFlavor[bitId] + ( d.combination[bitId] << 2 ) , bitId)
1857 alg.addvariable(
'nextBcFactor',
round(d.nextBcFactor[bitId] *
pow(2,8)), bitId)
1858 alg.addvariable(
'nextBcOffset',
round(d.nextBcOffset[bitId] * _et_conversion), bitId)
1859 tm.registerTopoAlgo(alg)
1866 "otype1" :
"eTAU",
"ocut1": 20,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1867 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1868 "otype3" :
"jJ",
"ocut3": 40,
"olist3":
"ab",
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1869 "drcutmin": 0,
"drcutmax": 10},
1875 setattr (d, k, x[k])
1876 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1877 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1878 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1879 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1880 log.debug(
"Define %s", toponame)
1881 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1882 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1883 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1884 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1885 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1886 alg.addgeneric(
'MaxTob1', d.nleading1)
1887 alg.addgeneric(
'MaxTob2', d.nleading2)
1888 alg.addgeneric(
'MaxTob3', d.nleading3)
1889 alg.addgeneric(
'NumResultBits', 1)
1890 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1891 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1892 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1893 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1894 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1895 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1896 tm.registerTopoAlgo(alg)
1900 "algoname":
"ADBDT-MU0s",
1901 "otype1":
"MU",
"olist1":
"s",
"inputwidth1": 6,
"nleading1": 3,
1902 "WPList": [
"Tight",
"Loose"],
1905 "ScoreThreshold": [40, 25]
1912 setattr(d, k, algo[k])
1914 toponames = [f
"ADBDT-{d.nleading1}{d.otype1}0{d.olist1}-{wp}" for wp
in d.WPList]
1916 alg = AlgConf.AnomalyDetectionBDT(
1918 inputs=[d.otype1 + d.olist1],
1921 alg.addgeneric(
'NumResultBits', 2)
1922 alg.addgeneric(
'MaxTob',d.nleading1)
1924 alg.addvariable(
'MinET1',d.MinET1*_et_conversion)
1925 alg.addvariable(
'MinET2',d.MinET2*_et_conversion)
1926 for bitId
in range(len(toponames)):
1927 alg.addvariable(
'ScoreThreshold', d.ScoreThreshold[bitId], bitId)
1929 tm.registerTopoAlgo(alg)
1941 "algoname" :
"ADVAE2A-jJ0s-eTAU0s-MU0s-jXE0s",
1942 "otype1" :
"jJ",
"olist1":
"s",
"inputwidth1": 6,
"nleading1": 6,
1943 "otype2" :
"eTAU",
"olist2":
"s",
"inputwidth2": 6,
"nleading2": 4,
1944 "otype3" :
"MU",
"olist3":
"s",
"inputwidth3": 6,
"nleading3": 4,
1945 "otype4" :
"jXE",
"olist4":
"s",
"inputwidth4": 1,
"nleading4": 1,
1946 "WPList" : [
"Tight",
"Loose"],
1951 "ScaleSqr1" : [128, 128],
1952 "ScaleSqr2" : [128, 128],
1953 "ScaleSqr3" : [128, 128],
1954 "AnomalyScoreThresh" : [1521991, 1333204],
1959 setattr (d, k, algo[k])
1962 toponames.append(
"ADVAE2A-%s%s0%s-%s%s0%s-%s%s0%s-%s0%s-%s" %(
str(d.nleading1), d.otype1, d.olist1,
1963 str(d.nleading2), d.otype2, d.olist2,
1964 str(d.nleading3), d.otype3, d.olist3,
1967 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3, d.otype4 + d.olist4]
1968 alg = AlgConf.ADVAE_2A( name = d.algoname, inputs = inputList, outputs = toponames)
1969 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1970 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1971 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1972 alg.addgeneric(
'InputWidth4', d.inputwidth4)
1973 alg.addgeneric(
'MaxTob1', d.nleading1)
1974 alg.addgeneric(
'MaxTob2', d.nleading2)
1975 alg.addgeneric(
'MaxTob3', d.nleading3)
1976 alg.addgeneric(
'MaxTob4', d.nleading4)
1977 alg.addgeneric(
'NumResultBits', len(toponames))
1978 alg.addgeneric(
'ADVAEVersion', 1)
1979 alg.addvariable(
'MinET1', d.MinET1 * _et_conversion)
1980 alg.addvariable(
'MinET2', d.MinET2 * _et_conversion)
1981 alg.addvariable(
'MinET3', d.MinET3 * _et_conversion)
1982 alg.addvariable(
'MinET4', d.MinET4 * _et_conversion)
1983 for bitId
in range(len(toponames)):
1984 alg.addvariable(
'ScaleSqr1', d.ScaleSqr1[bitId], bitId)
1985 alg.addvariable(
'ScaleSqr2', d.ScaleSqr2[bitId], bitId)
1986 alg.addvariable(
'ScaleSqr3', d.ScaleSqr3[bitId], bitId)
1987 alg.addvariable(
'AnomalyScoreThresh', d.AnomalyScoreThresh[bitId], bitId)
1988 tm.registerTopoAlgo(alg)
1992 "otype1" :
"eTAU",
"ocut1": 20,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1993 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1994 "otype3" :
"jJ",
"ocut3": 30,
"olist3":
"ab",
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1995 "drcutmin": 0,
"drcutmax": 10},
2001 setattr (d, k, x[k])
2002 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
2003 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
2004 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
2005 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
2006 log.debug(
"Define %s", toponame)
2007 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
2008 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
2009 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2010 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2011 alg.addgeneric(
'InputWidth3', d.inputwidth3)
2012 alg.addgeneric(
'MaxTob1', d.nleading1)
2013 alg.addgeneric(
'MaxTob2', d.nleading2)
2014 alg.addgeneric(
'MaxTob3', d.nleading3)
2015 alg.addgeneric(
'NumResultBits', 1)
2016 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
2017 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
2018 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
2019 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
2020 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
2021 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
2022 tm.registerTopoAlgo(alg)
2026 {
"itemNameMinInvm": 400,
"minInvm": 640 ,
"minDphi": 0,
"maxDphiList": [26, 24, 22, 20],
2027 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
2028 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
2030 for x
in NFFDphimap:
2034 setattr (d, k, x[k])
2035 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
2037 for maxDphi
in d.maxDphiList:
2038 toponames.append (
"%iINVM-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.itemNameMinInvm, d.minDphi, maxDphi,
2039 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2040 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
2041 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'jINVM_DPHI', inputs = inputList, outputs = toponames)
2042 alg.addgeneric(
'InputWidth1', d.inputwidth)
2043 alg.addgeneric(
'InputWidth2', d.inputwidth)
2044 alg.addgeneric(
'MaxTob1', d.nleading1)
2045 alg.addgeneric(
'MaxTob2', d.nleading2)
2046 alg.addgeneric(
'NumResultBits', len(toponames))
2047 for bitid,maxDphi
in enumerate(d.maxDphiList):
2048 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
2049 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2050 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm *_et_conversion*_et_conversion , bitid)
2051 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2052 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion , bitid)
2053 alg.addvariable(
'MaxDeltaPhi', maxDphi*_phi_conversion, bitid)
2054 tm.registerTopoAlgo(alg)
2059 {
"itemNameMinInvm": 400,
"minInvm": 640,
"otype1" :
"AjJ",
"ocut1": 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth1": HW.jJetOutputWidthSort,
2060 "otype2" :
"AjJ",
"ocut2": 50,
"olist2" :
"s",
"nleading2" : 6,
"inputwidth2": HW.jJetOutputWidthSort,
"applyEtaCut":1,
2061 "minEta1": 0 ,
"maxEta1": 32 ,
"minEta2": 30 ,
"maxEta2": 49 , },
2067 setattr (d, k, x[k])
2068 obj1 =
"%s%s%sp%sETA%i" % (d.otype1,
str(d.ocut1), d.olist1 + (
str(d.nleading1)
if d.olist1.find(
's')>=0
else ""),
str(d.minEta1)
if d.minEta1>0
else "", d.maxEta1)
2069 obj2 =
"-%s%s%sp%sETA%i" % (d.otype2,
str(d.ocut2), d.olist2 + (
str(d.nleading2)
if d.olist2.find(
's')>=0
else ""),
str(d.minEta2)
if d.minEta2>0
else "", d.maxEta2)
2070 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
2071 toponame =
"%iINVM-%s%s" % (d.itemNameMinInvm, obj1, obj2)
2072 alg = AlgConf.InvariantMassInclusive2( name = toponame, inputs = inputList, outputs = toponame)
2073 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2074 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2075 alg.addgeneric(
'MaxTob1', d.nleading1)
2076 alg.addgeneric(
'MaxTob2', d.nleading2)
2077 alg.addgeneric(
'NumResultBits', 1)
2078 if (d.applyEtaCut>0):
2079 alg.addgeneric(
'ApplyEtaCut', d.applyEtaCut)
2082 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion )
2083 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold )
2084 if (d.applyEtaCut>0):
2085 alg.addvariable(
'MinEta1', d.minEta1*_eta_conversion )
2086 alg.addvariable(
'MaxEta1', d.maxEta1*_eta_conversion )
2087 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion )
2088 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion )
2089 tm.registerTopoAlgo(alg)
2093 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
2094 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
2095 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
2101 setattr (d, k, x[k])
2102 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
2104 for minInvm
in d.itemNameMinInvmList:
2105 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
2106 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2107 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
2108 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM', inputs = inputList, outputs = toponames)
2109 alg.addgeneric(
'InputWidth1', d.inputwidth)
2110 alg.addgeneric(
'InputWidth2', d.inputwidth)
2111 alg.addgeneric(
'MaxTob1', d.nleading1)
2112 alg.addgeneric(
'MaxTob2', d.nleading2)
2113 alg.addgeneric(
'NumResultBits', len(toponames))
2114 for bitid,minInvm
in enumerate(d.minInvmList):
2115 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
2116 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2117 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
2118 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2119 tm.registerTopoAlgo(alg)
2123 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
2124 "otype1" :
"jJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
2125 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
2131 setattr (d, k, x[k])
2132 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
2134 for minInvm
in d.itemNameMinInvmList:
2135 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
2136 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2137 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
2138 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM_NFF', inputs = inputList, outputs = toponames)
2139 alg.addgeneric(
'InputWidth1', d.inputwidth)
2140 alg.addgeneric(
'InputWidth2', d.inputwidth)
2141 alg.addgeneric(
'MaxTob1', d.nleading1)
2142 alg.addgeneric(
'MaxTob2', d.nleading2)
2143 alg.addgeneric(
'NumResultBits', len(toponames))
2144 for bitid,minInvm
in enumerate(d.minInvmList):
2145 alg.addvariable(
'MinET1',
get_threshold_cut(
"CjJ", d.ocut1)*_et_conversion , bitid)
2146 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2147 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
2148 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2149 tm.registerTopoAlgo(alg)
2156 toponame =
"0INVM10-3MU3Vab"
2157 log.debug(
"Define %s", toponame)
2158 inputList =
'MU3Vab'
2159 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
2160 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2161 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2162 alg.addgeneric(
'NumResultBits', 1)
2163 alg.addvariable(
'MinET1', 0*_et_conversion)
2164 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2165 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2166 tm.registerTopoAlgo(alg)
2168 toponame =
"0INVM10-3MU3VFab"
2169 log.debug(
"Define %s", toponame)
2170 inputList =
'MU3VFab'
2171 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
2172 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2173 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2174 alg.addgeneric(
'NumResultBits', 1)
2175 alg.addvariable(
'MinET1', 0*_et_conversion)
2176 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2177 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2178 tm.registerTopoAlgo(alg)
2181 toponame =
"0INVM10C-3MU3Vab"
2182 log.debug(
"Define %s", toponame)
2183 inputList =
'MU3Vab'
2184 alg = AlgConf.InvariantMassThreeTOBsIncl1Charge( name = toponame, inputs = inputList, outputs = toponame )
2185 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2186 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2187 alg.addgeneric(
'NumResultBits', 1)
2188 alg.addvariable(
'MinET1', 0*_et_conversion)
2189 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2190 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2191 tm.registerTopoAlgo(alg)
2207 INVM_DR_eEM_MU_Map = [{
2208 "algoname":
"INVM_DR_eEM_MU",
2217 "olist2": [
"Fab",
"VFab"],
2219 "ocut2Offset" : [3,0]
2223 for x
in INVM_DR_eEM_MU_Map:
2228 inputList = [d.otype1 + d.olist1, d.otype2 +
str(d.ocut2) + d.olist2[1] ]
2230 for bitId
in range(len(d.ocut1)):
2231 obj1 =
"-%s%s%s" % (d.otype1,
str( d.ocut1[bitId] ) , d.olist1)
2232 obj2 =
"-%s%s%s" % (d.otype2,
str( d.ocut2 + d.ocut2Offset[bitId] ) , d.olist2[bitId])
2233 toponames.append(
"%dINVM%d-%dDR%d%s%s" % ( d.minInvm, d.maxInvm, d.minDR, d.maxDR, obj1, obj2))
2235 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
2237 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
2238 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2239 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSelect)
2240 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2241 alg.addgeneric(
'ApplyEtaCut', 1)
2243 alg.addgeneric(
'NumResultBits', len(toponames) )
2245 for bitId
in range(len(toponames)):
2246 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1[bitId])*_et_conversion, bitId)
2247 alg.addvariable(
'MinET2', (d.ocut2 + d.ocut2Offset[bitId])*_et_conversion, bitId)
2248 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
2249 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
2250 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitId)
2251 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitId)
2252 alg.addvariable(
'MinEta2', 0*_eta_conversion, bitId)
2253 alg.addvariable(
'MaxEta2', 49*_eta_conversion, bitId)
2254 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
2255 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
2258 tm.registerTopoAlgo(alg)
2274 {
"minInvm": 60 ,
"minDphiList": [4, 25],
"maxDphi": 32,
"minEta2": 25,
"maxEta2": 49,
2275 "inputwidth1": HW.eEmOutputWidthSelect,
"otype1" :
"eEM",
"ocut1" : 18,
"olist1" :
"abm",
2276 "nleading1" : HW.eEmOutputWidthSelect,
"inputwidth2": HW.jEmOutputWidthSort,
"ocut2" : 20,
"ocut3" : 25,
"nleading2" : 6 }
2278 for x
in ZAFBDphimap:
2282 setattr (d, k, x[k])
2283 inputList = [d.otype1 + d.olist1,
'jEMs25ETA49']
2285 for minDphi
in d.minDphiList:
2286 toponames.append (
"%iINVM-%02dDPHI%i-%s%s%s%s-jEM%ss%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi,
2287 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2288 str(d.ocut3) ,
str(d.nleading2) , d.minEta2, d.maxEta2))
2289 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'ZAFB_DPHI', inputs = inputList, outputs = toponames)
2290 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2291 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2292 alg.addgeneric(
'MaxTob1', d.nleading1)
2293 alg.addgeneric(
'MaxTob2', d.nleading2)
2294 alg.addgeneric(
'NumResultBits', len(toponames))
2295 alg.addgeneric(
'ApplyEtaCut', 1)
2296 for bitid,minDphi
in enumerate(d.minDphiList):
2297 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitid)
2298 alg.addvariable(
'MinET2',
get_threshold_cut(
'jEM', d.ocut3)*_et_conversion, bitid)
2299 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
2300 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold, bitid)
2301 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitid)
2302 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitid)
2303 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion, bitid)
2304 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion, bitid)
2305 alg.addvariable(
'MinDeltaPhi', minDphi*_phi_conversion, bitid)
2306 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, bitid)
2307 tm.registerTopoAlgo(alg)
2309 inputList = [d.otype1 + d.olist1,
'jEMsm25ETA49']
2311 for minDphi
in d.minDphiList:
2312 toponames.append (
"%iINVM-%02dDPHI%i-%s%s%s%s-jEM%ssm%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi,
2313 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2314 str(d.ocut2) ,
str(d.nleading2) , d.minEta2, d.maxEta2))
2315 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'ZAFB_DPHIM', inputs = inputList, outputs = toponames)
2316 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2317 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2318 alg.addgeneric(
'MaxTob1', d.nleading1)
2319 alg.addgeneric(
'MaxTob2', d.nleading2)
2320 alg.addgeneric(
'NumResultBits', len(toponames))
2321 alg.addgeneric(
'ApplyEtaCut', 1)
2322 for bitid,minDphi
in enumerate(d.minDphiList):
2323 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitid)
2324 alg.addvariable(
'MinET2',
get_threshold_cut(
'jEM', d.ocut2)*_et_conversion, bitid)
2325 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
2326 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold, bitid)
2327 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitid)
2328 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitid)
2329 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion, bitid)
2330 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion, bitid)
2331 alg.addvariable(
'MinDeltaPhi', minDphi*_phi_conversion, bitid)
2332 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, bitid)
2333 tm.registerTopoAlgo(alg)
2337 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"s",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
2338 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"sl",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
2340 for x
in listofalgos:
2344 setattr (d, k, x[k])
2345 toponame =
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi, d.otype,
str(d.ocut1), d.olist,
str(d.nleading1), d.otype,
str(d.ocut2), d.olist,
str(d.nleading2))
2346 log.debug(
"Define %s", toponame)
2347 inputList = [d.otype + d.olist, d.otype + d.olist]
2348 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = toponame, inputs = inputList, outputs = toponame )
2349 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
2350 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
2351 alg.addgeneric(
'MaxTob1', d.nleading1)
2352 alg.addgeneric(
'MaxTob2', d.nleading2)
2353 alg.addgeneric(
'NumResultBits', 1)
2356 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2357 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2358 alg.addgeneric(
'ApplyEtaCut', 1)
2359 alg.addvariable(
'MinEta1', 0*_eta_conversion)
2360 alg.addvariable(
'MaxEta1',49*_eta_conversion)
2361 alg.addvariable(
'MinEta2', 0*_eta_conversion)
2362 alg.addvariable(
'MaxEta2',49*_eta_conversion)
2363 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
2364 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
2365 tm.registerTopoAlgo(alg)
2371 INVM_DR_2MU3Vab_Map = [
2373 "algoname":
"7INVM22_DR_2MU3Vab",
2378 "otype1" :
"MU3Vab",
2382 for x
in INVM_DR_2MU3Vab_Map:
2387 inputList = d.otype1
2389 for bitId
in range(len(d.minDR)):
2390 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm, d.maxInvm,
2391 d.minDR[bitId] , d.maxDR[bitId],
2395 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2396 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2397 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2398 alg.addgeneric(
'NumResultBits', len(toponames))
2399 for bitId
in range(len(toponames)):
2400 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2401 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2402 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
2403 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
2404 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2405 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2406 tm.registerTopoAlgo(alg)
2414 INVM_DR_2MU3VFab_Map = [
2416 "algoname":
"INVM_DR_2MU3VFab",
2418 "maxInvm" : [9,11,22],
2421 "otype1" :
"MU3VFab",
2425 for x
in INVM_DR_2MU3VFab_Map:
2430 inputList = d.otype1
2432 for bitId
in range(len(d.minDR)):
2433 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
2434 d.minDR[bitId] , d.maxDR[bitId],
2438 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2439 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2440 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2441 alg.addgeneric(
'NumResultBits', len(toponames))
2442 for bitId
in range(len(toponames)):
2443 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2444 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2445 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
2446 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
2447 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2448 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2449 tm.registerTopoAlgo(alg)
2455 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2456 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2457 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"", },
2460 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2461 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2462 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2463 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2465 {
"minInvm": 7,
"maxInvm": 22,
"minDr": 0,
"maxDr": 20,
"mult": 2,
"otype1" :
"MU3VFab",
"otype2":
"",},
2467 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"CMU5VFab",
"otype2":
"CMU3Vab",},
2469 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2470 {
"minInvm": 7,
"maxInvm": 11,
"minDr": 25,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2471 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3VFab", },
2475 for x
in listofalgos:
2479 setattr (d, k, x[k])
2480 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2481 obj2 =
"-%s" % (d.otype2)
2482 toponame =
"%iINVM%i-%iDR%i-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2483 log.debug(
"Define %s", toponame)
2484 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2485 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2
2486 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2488 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2489 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2491 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2492 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2493 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2494 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2495 alg.addgeneric(
'NumResultBits', 1)
2496 alg.addvariable(
'MinET1', 0*_et_conversion)
2497 alg.addvariable(
'MinET2', 0*_et_conversion)
2498 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2499 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2500 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2501 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2502 tm.registerTopoAlgo(alg)
2506 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab",},
2507 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2509 for x
in listofalgos:
2513 setattr (d, k, x[k])
2514 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2515 obj2 =
"-%s" % (d.otype2)
2516 toponame =
"%iINVM%i-%iDR%i-C-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2517 log.debug(
"Define %s", toponame)
2518 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2519 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2Charge
2520 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2522 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2523 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2525 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2526 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2527 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2528 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2529 alg.addgeneric(
'NumResultBits', 1)
2530 alg.addvariable(
'MinET1', 0*_et_conversion)
2531 alg.addvariable(
'MinET2', 0*_et_conversion)
2532 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2533 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2534 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2535 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2536 tm.registerTopoAlgo(alg)
2546 {
"minDphi": 23,
"maxDphi": 32,
"mult": 2,
"otype1" :
"eEM",
2547 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.eEmOutputWidthSort,
"minET1":0.9,
"otype2" :
"",
"minET2":0.8},
2548 {
"minDphi": 26,
"maxDphi": 32,
"mult": 2,
"otype1" :
"eTAU",
2549 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.eTauOutputWidthSort,
"minET1":0.8,
"otype2" :
"",
"minET2":0.8},
2550 {
"minDphi": 23,
"maxDphi": 32,
"mult": 2,
"otype1" :
"jTAU",
2551 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.jTauOutputWidthSort,
"minET1":1.4,
"otype2" :
"",
"minET2":1.4},
2557 setattr (d, k, x[k])
2558 obj =
"%s" % (
str(d.mult)+d.otype1+
str(d.ocut1)+
str(d.olist1))
2559 toponame =
"%sDPHI%s-%s" % (d.minDphi, d.maxDphi, obj)
2560 log.debug(
"Define %s", toponame)
2561 inputList = [d.otype1+d.olist1]
2562 algoname = AlgConf.DeltaPhiIncl1
2563 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2564 alg.addgeneric(
'NumResultBits', 1)
2565 alg.addgeneric(
'InputWidth', d.nleading1)
2566 alg.addgeneric(
'MaxTob', d.nleading1)
2567 alg.addvariable(
'MinET1', d.minET1*_et_conversion)
2568 alg.addvariable(
'MinET2', d.minET2*_et_conversion)
2569 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
2570 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
2571 tm.registerTopoAlgo(alg)
2574 from dataclasses
import dataclass
2577 class InvMassDPhiSumETAlgoParams:
2578 """ Parameters for InvariantMassDeltaPhiInclusive1 and InvariantMassDeltaPhiSumEtInclusive1 Topo algorithms """
2581 DeltaPhiMin: int = 23
2582 DeltaPhiMax: int = 32
2583 MinInvMassSq: float = 0
2584 MaxInvMassSq: float = 1000 ** 2
2586 MaxSumEt: float = 1000
2588 def AddInvMassDPhiSumETAlgos(otype: str, nleading, list_of_algos: list[InvMassDPhiSumETAlgoParams]):
2589 for x
in list_of_algos:
2591 is_InvMass_set = x.MinInvMassSq != 0
or x.MaxInvMassSq != 1000 ** 2
2592 is_SumEt_set = x.MinSumEt != 0
or x.MaxSumEt != 1000
2593 algoname = AlgConf.InvariantMassDeltaPhiSumEtInclusive1
if is_SumEt_set
else AlgConf.InvariantMassDeltaPhiInclusive1
2595 if float(x.MinEt1) !=
int(x.MinEt1):
2596 obj = f
'2{otype}0{round(x.MinEt1 * 10)}s'
2598 obj = f
'2{otype}{round(x.MinEt1)}s'
2599 toponame = f
'{x.DeltaPhiMin}DPHI{x.DeltaPhiMax}-{obj}'
2602 toponame = f
'{x.MinSumEt}SUM{x.MaxSumEt}-{toponame}'
2604 if float(x.MinInvMassSq) !=
int(x.MinInvMassSq)
or float(x.MaxInvMassSq) !=
int(x.MaxInvMassSq):
2605 toponame = f
'{round(x.MinInvMassSq * 10)}INVM{round(x.MaxInvMassSq * 10)}-{toponame}'
2607 toponame = f
'{x.MinInvMassSq}INVM{x.MaxInvMassSq}-{toponame}'
2608 log.debug(
'Define %s', toponame)
2610 alg = algoname(name=toponame, inputs=[f
'{otype}s'], outputs=[toponame])
2611 alg.addgeneric(
'NumResultBits', 1)
2612 alg.addgeneric(
'InputWidth', nleading)
2613 alg.addgeneric(
'MaxTob', nleading)
2614 alg.addvariable(
'MinET1', x.MinEt1 * _et_conversion)
2615 alg.addvariable(
'MinET2', x.MinEt2 * _et_conversion)
2616 alg.addvariable(
'MinMSqr', x.MinInvMassSq * (_et_conversion ** 2))
2617 alg.addvariable(
'MaxMSqr', x.MaxInvMassSq * (_et_conversion ** 2))
2618 alg.addvariable(
'MinDeltaPhi', x.DeltaPhiMin * _phi_conversion)
2619 alg.addvariable(
'MaxDeltaPhi', x.DeltaPhiMax * _phi_conversion)
2622 alg.addvariable(
'MinSumEt', x.MinSumEt * _et_conversion)
2623 alg.addvariable(
'MaxSumEt', x.MaxSumEt * _et_conversion)
2624 tm.registerTopoAlgo(alg)
2628 InvMassDPhiSumETAlgoParams(MinEt1=0.7, MinEt2=0.7, DeltaPhiMin=24, MinInvMassSq=2.3, MaxInvMassSq=200 ** 2),
2629 InvMassDPhiSumETAlgoParams(MinEt1=0.7, MinEt2=0.7, DeltaPhiMin=24, MinInvMassSq=2.8, MaxInvMassSq=200 ** 2),
2630 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, DeltaPhiMin=25, MinInvMassSq=2.3, MaxInvMassSq=200 ** 2),
2631 InvMassDPhiSumETAlgoParams(MinEt1=0.7, MinEt2=0.7, DeltaPhiMin=25, MinInvMassSq=3.3, MaxInvMassSq=200 ** 2),
2632 InvMassDPhiSumETAlgoParams(MinEt1=0.7, MinEt2=0.7, DeltaPhiMin=27, MinInvMassSq=2.3, MaxInvMassSq=200 ** 2),
2634 AddInvMassDPhiSumETAlgos(
'eTAU', HW.eTauOutputWidthSort, algo_list)
2638 AddInvMassDPhiSumETAlgos(
'jJ', HW.jJetOutputWidthSort, algo_list)
2641 Algo = namedtuple(
'Algo', [
'dPhiMin',
'dPhiMax',
'otype',
'olist',
'ocut1',
'ocut2',
'nTOB'])
2643 Algo(dPhiMin=30, dPhiMax=32, otype=
'eTAU', olist=
's', ocut1=50, ocut2=50, nTOB=HW.eTauOutputWidthSort),
2646 name = f
'{x.dPhiMin}DPHI{x.dPhiMax}-'
2647 name += f
'2{x.otype}{x.ocut1}{x.olist}' if x.ocut1 == x.ocut2
else f
'{x.otype}{x.ocut1}{x.olist}-{x.otype}{x.ocut2}{x.olist}'
2649 alg = AlgConf.DeltaPhiIncl1(name=name, inputs=[x.otype+x.olist], outputs=[name])
2650 alg.addgeneric(
'NumResultBits', 1)
2651 alg.addgeneric(
'InputWidth', x.nTOB)
2652 alg.addgeneric(
'MaxTob', x.nTOB)
2655 alg.addvariable(
'MinDeltaPhi', x.dPhiMin*_phi_conversion)
2656 alg.addvariable(
'MaxDeltaPhi', x.dPhiMax*_phi_conversion)
2657 tm.registerTopoAlgo(alg)