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)
760 "algoname" :
"INVM_INVDPHI_eEMsl6",
767 "ocut1List" : [ 9, 12],
770 "ocut2List" : [ 9, 12 ],
776 for x
in eINVM_DPHIMap:
781 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
783 for bitId, ocut1Value
in enumerate(d.ocut1List):
784 toponames.append (
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi,
785 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
786 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
787 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = d.algoname, inputs = inputList, outputs = toponames )
789 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
790 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
791 alg.addgeneric(
'MaxTob1', d.nleading1)
792 alg.addgeneric(
'MaxTob2', d.nleading2)
793 alg.addgeneric(
'NumResultBits', len(toponames))
794 for bitId
in range(len(toponames)):
795 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
796 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
797 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
798 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
799 alg.addvariable(
'MinDeltaPhi', d.minDphi * _phi_conversion, bitId)
800 alg.addvariable(
'MaxDeltaPhi', d.maxDphi * _phi_conversion, bitId)
802 tm.registerTopoAlgo(alg)
818 "algoname" :
"INVM_BOOSTDR_eEMsl6",
825 "ocut1List" : [ 9, 12 ],
828 "ocut2List" : [ 9, 12 ],
834 for x
in eINVM_DRMap:
839 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
841 for bitId, ocut1Value
in enumerate(d.ocut1List):
842 toponames.append (
"%iINVM%i-%iDR%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDR, d.maxDR,
843 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
844 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
846 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
847 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
848 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
849 alg.addgeneric(
'MaxTob1', d.nleading1)
850 alg.addgeneric(
'MaxTob2', d.nleading2)
851 alg.addgeneric(
'NumResultBits', len(toponames))
852 for bitId
in range(len(toponames)):
853 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
854 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
855 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
856 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
857 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
858 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
860 tm.registerTopoAlgo(alg)
873 eINVM_Ranges_DRMap = [
875 "algoname" :
"INVM_BOOSTDR_Ranges_eEM12sl6",
882 "ocut1List" : [12,12],
885 "ocut2List" : [12,12],
891 for x
in eINVM_Ranges_DRMap:
896 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
898 for bitId, ocut1Value
in enumerate(d.ocut1List):
899 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],
900 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
901 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
903 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
904 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
905 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
906 alg.addgeneric(
'MaxTob1', d.nleading1)
907 alg.addgeneric(
'MaxTob2', d.nleading2)
908 alg.addgeneric(
'NumResultBits', len(toponames))
909 for bitId
in range(len(toponames)):
910 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
911 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
912 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
913 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
914 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
915 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
917 tm.registerTopoAlgo(alg)
931 eINVM_Ranges_Asymm_DRMap = [
933 "algoname" :
"INVM_BOOSTDR_Ranges_Asymm_eEMsl6",
940 "ocut1List" : [12,12],
949 for x
in eINVM_Ranges_Asymm_DRMap:
954 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
956 for bitId, ocut1Value
in enumerate(d.ocut1List):
957 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],
958 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
959 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
961 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
962 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
963 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
964 alg.addgeneric(
'MaxTob1', d.nleading1)
965 alg.addgeneric(
'MaxTob2', d.nleading2)
966 alg.addgeneric(
'NumResultBits', len(toponames))
967 for bitId
in range(len(toponames)):
968 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
969 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
970 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
971 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
972 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
973 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
975 tm.registerTopoAlgo(alg)
980 INVM_DR_2MU5VFabMap = [
982 "algoname":
"INVM_DR_2MU5VFab",
987 "otype1" :
"MU5VFab",
991 for x
in INVM_DR_2MU5VFabMap:
998 for bitId
in range(len(d.minDR)):
999 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
1000 d.minDR[bitId] , d.maxDR[bitId],
1004 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
1005 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1006 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1007 alg.addgeneric(
'NumResultBits', len(toponames))
1008 for bitId
in range(len(toponames)):
1009 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
1010 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
1011 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
1012 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
1013 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1014 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1015 tm.registerTopoAlgo(alg)
1020 INVM_2MU3VFab_Map = [
1022 "algoname":
"INVM_2MU3VFab",
1024 "maxInvm" : [14,22],
1025 "otype1" :
"MU3VFab",
1029 for x
in INVM_2MU3VFab_Map:
1034 inputList = d.otype1
1036 for bitId
in range(len(d.maxInvm)):
1037 toponames.append(
"%iINVM%i-%i%s" % ( d.minInvm, d.maxInvm[bitId],
1041 alg = AlgConf.InvariantMassInclusive1( name = d.algoname, inputs = inputList, outputs = toponames)
1042 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1043 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1044 alg.addgeneric(
'NumResultBits', len(toponames))
1045 for bitId
in range(len(toponames)):
1046 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
1047 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
1048 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
1049 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
1050 tm.registerTopoAlgo(alg)
1055 invm_map = {
"algoname":
'INVM_eEMs6' ,
"ocutlist": [ 9, 15 ],
"minInvm": 1,
"maxInvm": 5,
"otype" :
"eEM",
"olist" :
"s",
1056 "nleading" : 1,
"inputwidth": HW.eEmOutputWidthSort}
1057 for x
in [ invm_map ]:
1061 setattr (d, k, x[k])
1062 inputList = d.otype + d.olist
1064 for ocut
in d.ocutlist:
1065 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 "")
1066 toponames.append(toponame)
1067 alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = [inputList,
'eEMs'], outputs = toponames)
1068 alg.addgeneric(
'InputWidth1', d.inputwidth)
1069 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
1070 alg.addgeneric(
'MaxTob1', d.nleading)
1071 alg.addgeneric(
'MaxTob2', HW.eEmOutputWidthSort)
1072 alg.addgeneric(
'NumResultBits', len(toponames))
1073 for bitid, ocut
in enumerate(d.ocutlist):
1075 alg.addvariable(
'MinET2', 0*_et_conversion, bitid)
1076 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
1077 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitid)
1078 tm.registerTopoAlgo(alg)
1083 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1084 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3Vab" ,
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1085 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 80,
"olist2" :
"ab"},
1086 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3VFab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
1087 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3VFab",
"otype2" :
"CjJ",
"ocut2": 20,
"olist2" :
"ab"},
1088 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 20,
"olist2" :
"ab"},
1094 setattr (d, k, x[k])
1095 toponame =
"%iDR%02d-%s-%s%s%s" % (d.minDr, d.maxDr, d.otype1, d.otype2,
str(d.ocut2), d.olist2)
1096 log.debug(
"Define %s", toponame)
1097 inputList = [d.otype1, d.otype2 + d.olist2]
1098 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1099 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1100 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1101 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1102 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1103 alg.addgeneric(
'NumResultBits', 1)
1104 alg.addvariable(
'MinET1', 0*_et_conversion, 0)
1105 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1106 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1107 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1108 tm.registerTopoAlgo(alg)
1117 {
"minInvm": 2,
"maxInvm": 8,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1118 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1119 {
"minInvm": 8,
"maxInvm": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1120 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1121 {
"minInvm": 2,
"maxInvm": 9,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1122 {
"minInvm": 8,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1123 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1124 {
"minInvm": 7,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1125 {
"minInvm": 7,
"maxInvm": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1126 {
"minInvm": 7,
"maxInvm": 14,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1127 {
"minInvm": 7,
"maxInvm": 14,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1129 for x
in listofalgos:
1133 setattr (d, k, x[k])
1134 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1135 obj2 =
"-%s" % (d.otype2)
1136 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1137 log.debug(
"Define %s", toponame)
1138 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1139 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1140 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1142 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1143 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1145 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1146 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1147 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1148 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1149 alg.addgeneric(
'NumResultBits', 1)
1150 alg.addvariable(
'MinET1', 0*_et_conversion)
1151 alg.addvariable(
'MinET2', 0*_et_conversion)
1152 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1153 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1154 tm.registerTopoAlgo(alg)
1156 toponame =
"8INVM15-2CMU3Vab"
1157 log.debug(
"Define %s", toponame)
1158 inputList = [
'CMU3Vab']
1159 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame )
1160 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1161 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1162 alg.addgeneric(
'NumResultBits', 1)
1163 alg.addvariable(
'MinET1', 0*_et_conversion)
1164 alg.addvariable(
'MinET2', 0*_et_conversion)
1165 alg.addvariable(
'MinMSqr', 8*8*_et_conversion*_et_conversion)
1166 alg.addvariable(
'MaxMSqr', 15*15*_et_conversion*_et_conversion)
1167 tm.registerTopoAlgo(alg)
1170 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab"},
1176 setattr (d, k, x[k])
1177 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1178 obj2 =
"-%s" % (d.otype2)
1179 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1180 log.debug(
"Define %s", toponame)
1181 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1182 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1183 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1185 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1186 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1187 alg.addgeneric(
'RequireOneBarrel', d.onebarrel)
1189 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1190 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1191 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1192 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1193 alg.addgeneric(
'NumResultBits', 1)
1194 alg.addvariable(
'MinET1', 0*_et_conversion)
1195 alg.addvariable(
'MinET2', 0*_et_conversion)
1196 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1197 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1198 tm.registerTopoAlgo(alg)
1202 {
"minDr": 0,
"maxDr": 24,
"mult": 2,
"otype1" :
"CMU3Vab",
"otype2" :
"", },
1203 {
"minDr": 1,
"maxDr": 24,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab", },
1209 setattr (d, k, x[k])
1210 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1211 obj2 =
"-%s" % (d.otype2)
1212 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
1213 log.debug(
"Define %s", toponame)
1214 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1215 algoname = AlgConf.DeltaRSqrIncl1
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2
1216 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1218 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1219 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1221 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1222 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1223 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1224 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1225 alg.addgeneric(
'NumResultBits', 1)
1226 alg.addvariable(
'MinET1', 0*_et_conversion)
1227 alg.addvariable(
'MinET2', 0*_et_conversion)
1228 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr *_dr_conversion*_dr_conversion)
1229 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr *_dr_conversion*_dr_conversion)
1230 tm.registerTopoAlgo(alg)
1234 toponame =
'100RATIO-0MATCH-eTAU40si2-eEMall'
1235 alg = AlgConf.RatioMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1236 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1237 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1238 alg.addgeneric(
'MaxTob1', 2)
1239 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1240 alg.addgeneric(
'NumResultBits', 1)
1242 alg.addvariable(
'MinET2', 0*_et_conversion)
1243 alg.addvariable(
'Ratio', 100, 0)
1244 tm.registerTopoAlgo(alg)
1247 toponame =
'NOT-0MATCH-eTAU40si1-eEMall'
1248 alg = AlgConf.NotMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1249 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1250 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1251 alg.addgeneric(
'MaxTob1', 1)
1252 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1253 alg.addgeneric(
'NumResultBits', 1)
1255 alg.addvariable(
'MinET2', 0*_et_conversion)
1256 alg.addvariable(
'EtaMin1', 0*_eta_conversion)
1257 alg.addvariable(
'EtaMax1', 49*_eta_conversion)
1258 alg.addvariable(
'EtaMin2', 0*_eta_conversion)
1259 alg.addvariable(
'EtaMax2', 49*_eta_conversion)
1260 alg.addvariable(
'DRCut', 0)
1261 tm.registerTopoAlgo(alg)
1264 xemap = [{
"etcut": 0,
"Threlist": [55, 60, 65, 75 ]}]
1269 setattr (d, k, x[k])
1270 log.debug(
"Define %s", toponame)
1271 inputList = [
'jXENoSort_1BC',
'AjJall_1BC']
1273 for minxe
in d.Threlist:
1274 toponames.append(
"KF-jXE%s-AjJall" % (minxe))
1275 alg = AlgConf.KalmanMETCorrection( name =
"KF-jXE-AjJall", inputs = inputList, outputs = toponames )
1276 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
1277 alg.addgeneric(
'NumResultBits', len(toponames))
1278 for key, value
in KFMETweightParameters.items():
1282 alg.addvariable(key, value)
1283 alg.addvariable(
'MinET', 0)
1284 for bitid,minxe
in enumerate(d.Threlist):
1285 alg.addvariable(
'KFXE',
str(minxe*_et_conversion), bitid)
1286 tm.registerTopoAlgo(alg)
1292 {
"otype" :
"LATE-MU",
"ocut" : 10,
"inputwidth": HW.NumberOfDelayedMuons},
1298 setattr (d, k, x[k])
1300 toponame =
"%s%ss1" % ( d.otype,
str(d.ocut) )
1302 log.debug(
"Define %s", toponame)
1306 alg = AlgConf.EtCut( name = toponame, inputs = inputList, outputs = toponame )
1307 alg.addgeneric(
'InputWidth', d.inputwidth)
1308 alg.addgeneric(
'MaxTob', 1)
1309 alg.addgeneric(
'NumResultBits', 1)
1310 alg.addvariable(
'MinET',
str(d.ocut*_et_conversion))
1311 tm.registerTopoAlgo(alg)
1316 {
"itemNameMinHT": 175,
"minHT": 176,
"otype" :
"SCjJ",
"ocut" : 10,
"olist" :
"ab",
"nleading" : HW.jJetOutputWidthSelect,
"inputwidth": HW.jJetOutputWidthSelect,
"oeta" : 26},
1322 setattr (d, k, x[k])
1323 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))
1324 log.debug(
"Define %s", toponame)
1325 inputList = d.otype + d.olist
1326 alg = AlgConf.SimpleCone( name = toponame, inputs = inputList, outputs = [toponame] )
1327 alg.addgeneric(
'InputWidth', d.inputwidth)
1328 alg.addgeneric(
'NumResultBits', 1)
1329 alg.addvariable(
'MinET', d.ocut*_et_conversion)
1330 alg.addvariable(
'MinSumET', d.minHT*_et_conversion)
1331 alg.addvariable(
'MaxRSqr', 15*15*_dr_conversion*_dr_conversion)
1332 tm.registerTopoAlgo(alg)
1336 {
"minInvm" : 0,
"maxInvm": 9,
"otype" :
"eEM",
"ocut1" : 9,
"olist" :
"ab",
"inputwidth": HW.eEmOutputWidthSelect,
"ocut2" : 0},
1342 setattr (d, k, x[k])
1343 inputList = d.otype + d.olist
1344 toponame =
"%iINVM%i-%s%s%s-%s%s" % (d.minInvm, d.maxInvm,
1345 d.otype,
str(d.ocut1) , d.olist,
1347 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame)
1348 alg.addgeneric(
'InputWidth', d.inputwidth)
1349 alg.addgeneric(
'MaxTob', HW.eEmOutputWidthSelect)
1350 alg.addgeneric(
'NumResultBits', 1)
1353 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
1354 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
1355 tm.registerTopoAlgo(alg)
1360 {
"minDr": 0,
"maxDr": 3,
"otype1" :
"eEM" ,
"ocut1": 9,
"olist1" :
"ab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"}
1366 setattr (d, k, x[k])
1367 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)
1368 log.debug(
"Define %s", toponame)
1369 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
1370 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1371 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
1372 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1373 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSelect)
1374 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1375 alg.addgeneric(
'NumResultBits', 1)
1376 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1377 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1378 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1379 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1380 tm.registerTopoAlgo(alg)
1386 {
"minDphi": 27,
"maxDphi": 32,
"otype" :
"eEM",
"ocut1" : 0,
"olist" :
"s",
"nleading1" : 1,
"inputwidth1": HW.eEmOutputWidthSort,
"ocut2" : 0,
"nleading2": 6},
1392 setattr (d, k, x[k])
1393 toponame =
"%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minDphi, d.maxDphi,
1394 d.otype,
str(d.ocut1)
if d.ocut1 > 0
else "", d.olist,
str(d.nleading1)
if d.olist==
"s" else "",
1395 d.otype,
str(d.ocut2)
if d.ocut2 > 0
else "", d.olist,
str(d.nleading2)
if d.olist==
"s" else "")
1396 log.debug(
"Define %s", toponame)
1397 inputList = d.otype + d.olist
1398 alg = AlgConf.DeltaPhiIncl1( name = toponame, inputs = inputList, outputs = toponame )
1399 alg.addgeneric(
'InputWidth', d.inputwidth1)
1400 alg.addgeneric(
'MaxTob', d.nleading2)
1401 alg.addgeneric(
'NumResultBits', 1)
1404 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion, 0)
1405 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, 0)
1406 tm.registerTopoAlgo(alg)
1410 {
"minDr": 0,
"maxDr": 28,
"otype1" :
"eTAU" ,
"ocut1": 30,
"olist1" :
"abl",
1411 "nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
"otype2" :
"eTAU",
"ocut2": 20,
"olist2" :
"abl",
1412 "nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect},
1413 {
"minDr": 0,
"maxDr": 28,
"otype1" :
"eTAU" ,
"ocut1": 30,
"olist1" :
"abm",
1414 "nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
"otype2" :
"eTAU",
"ocut2": 20,
"olist2" :
"abm",
1415 "nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect},
1421 setattr (d, k, x[k])
1422 obj1 =
"%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1423 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1424 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1, obj2)
1425 log.debug(
"Define %s", toponame)
1426 inputList = [d.otype1 + d.olist1]
if d.otype1==d.otype2
else [d.otype1 + d.olist1, d.otype2 + d.olist2]
1427 algoname = AlgConf.DeltaRSqrIncl1
if d.otype1==d.otype2
else AlgConf.DeltaRSqrIncl2
1428 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1429 if d.otype1==d.otype2:
1430 alg.addgeneric(
'InputWidth', d.inputwidth1)
1431 alg.addgeneric(
'MaxTob', d.nleading1)
1433 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1434 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1435 alg.addgeneric(
'MaxTob1', d.nleading1)
1436 alg.addgeneric(
'MaxTob2', d.nleading2)
1437 alg.addgeneric(
'NumResultBits', 1)
1438 if d.otype1==d.otype2:
1441 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
1442 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
1444 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , 0)
1445 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , 0)
1446 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1447 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1448 tm.registerTopoAlgo(alg)
1451 DISAMB_DR_jJ_eTau_eTau_Map = [
1453 "algoname":
"2DISAMB_jJ55ab_DR_eTAU_eTAU",
1460 "nleading1": HW.eTauOutputWidthSelect,
1461 "inputwidth1": HW.eTauOutputWidthSelect,
1464 "nleading2": HW.eTauOutputWidthSelect,
1465 "inputwidth2": HW.eTauOutputWidthSelect,
1469 "nleading3": HW.jJetOutputWidthSelect,
1470 "inputwidth3": HW.jJetOutputWidthSelect,
1474 "algoname":
"2DISAMB_jJ50ab_DR_eTAU_eTAU",
1481 "nleading1": HW.eTauOutputWidthSelect,
1482 "inputwidth1": HW.eTauOutputWidthSelect,
1485 "nleading2": HW.eTauOutputWidthSelect,
1486 "inputwidth2": HW.eTauOutputWidthSelect,
1490 "nleading3": HW.jJetOutputWidthSelect,
1491 "inputwidth3": HW.jJetOutputWidthSelect,
1495 "algoname":
"2DISAMB_jJ40ab_DR_eTAU_eTAU",
1502 "nleading1": HW.eTauOutputWidthSelect,
1503 "inputwidth1": HW.eTauOutputWidthSelect,
1506 "nleading2": HW.eTauOutputWidthSelect,
1507 "inputwidth2": HW.eTauOutputWidthSelect,
1511 "nleading3": HW.jJetOutputWidthSelect,
1512 "inputwidth3": HW.jJetOutputWidthSelect,
1516 "algoname":
"2DISAMB_jJ30ab_DR_eTAU_eTAU",
1523 "nleading1": HW.eTauOutputWidthSelect,
1524 "inputwidth1": HW.eTauOutputWidthSelect,
1527 "nleading2": HW.eTauOutputWidthSelect,
1528 "inputwidth2": HW.eTauOutputWidthSelect,
1532 "nleading3": HW.jJetOutputWidthSelect,
1533 "inputwidth3": HW.jJetOutputWidthSelect,
1537 for x
in DISAMB_DR_jJ_eTau_eTau_Map:
1542 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1544 for bitId
in range(len(d.maxDR)):
1545 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1546 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1547 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1548 toponames.append(
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "",
1549 obj3, d.minDR, d.maxDR[bitId], obj1, obj2))
1551 alg = AlgConf.DisambiguationDRIncl3( name = d.algoname, inputs = inputList, outputs = toponames )
1552 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1553 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1554 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1555 alg.addgeneric(
'MaxTob1', d.nleading1)
1556 alg.addgeneric(
'MaxTob2', d.nleading2)
1557 alg.addgeneric(
'MaxTob3', d.nleading3)
1558 alg.addgeneric(
'NumResultBits', len(toponames))
1560 for bitId
in range(len(toponames)):
1561 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1562 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1563 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, bitId)
1564 alg.addvariable(
'DisambDRSqrMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1565 alg.addvariable(
'DisambDRSqrMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1566 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, bitId)
1568 tm.registerTopoAlgo(alg)
1574 DR_eTau30_eTau20_Map = [
1576 "algoname":
"DR_eTAU30ab_eTAU20ab",
1584 "inputwidth": HW.eTauOutputWidthSelect,
1588 for x
in DR_eTau30_eTau20_Map:
1593 inputList = [d.otype1 + d.olist1]
1595 for bitId
in range(len(d.maxDR)):
1596 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1597 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1598 toponames.append(
"%dDR%d%s%s" % ( d.minDR, d.maxDR[bitId], obj1, obj2))
1600 alg = AlgConf.DeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames )
1602 alg.addgeneric(
'InputWidth', d.inputwidth)
1603 alg.addgeneric(
'MaxTob', HW.eTauOutputWidthSelect)
1604 alg.addgeneric(
'NumResultBits', len(toponames) )
1606 for bitId
in range(len(toponames)):
1607 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1608 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1609 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1610 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1613 tm.registerTopoAlgo(alg)
1618 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"abl",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1619 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"abl",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1620 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1621 "drcutmin": 0,
"drcutmax": 28},
1623 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"abm",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1624 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"abm",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1625 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1626 "drcutmin": 0,
"drcutmax": 28},
1628 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1629 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1630 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1631 "drcutmin": 4 ,
"drcutmax": 28},
1633 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1634 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1635 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1636 "drcutmin": 4 ,
"drcutmax": 32},
1638 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1639 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1640 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1641 "drcutmin": 10 ,
"drcutmax": 32},
1647 setattr (d, k, x[k])
1648 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1649 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1650 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1651 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1652 log.debug(
"Define %s", toponame)
1653 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1654 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1655 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1656 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1657 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1658 alg.addgeneric(
'MaxTob1', d.nleading1)
1659 alg.addgeneric(
'MaxTob2', d.nleading2)
1660 alg.addgeneric(
'MaxTob3', d.nleading3)
1661 alg.addgeneric(
'NumResultBits', 1)
1662 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1663 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1664 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1665 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1666 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1667 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1668 tm.registerTopoAlgo(alg)
1673 {
"minDeta": 0,
"maxDeta": 20,
"otype" :
"jJ",
"ocut1" : 90,
"olist" :
"s",
1674 "nleading1" : 1,
"inputwidth1": HW.jJetOutputWidthSort,
"ocut2" : 0,
"nleading2": 2},
1675 {
"minDeta": 0,
"maxDeta" : 24,
"otype" :
"eTAU" ,
"olist" :
"s",
"inputwidth1": HW.eTauOutputWidthSort,
1676 "ocut1" : 30,
"nleading1": 2,
1677 "ocut2" : 12,
"nleading2": 2},
1683 setattr (d, k, x[k])
1684 toponame =
"%iDETA%i-%s%s%s%s-%s%s%s%s" % (d.minDeta, d.maxDeta,
1685 d.otype, d.ocut1
if d.ocut1 > 0
else "", d.olist, d.nleading1,
1686 d.otype, d.ocut2
if d.ocut2 > 0
else "", d.olist, d.nleading2)
1687 log.debug(
"Define %s", toponame)
1688 inputList = d.otype + d.olist
1689 alg = AlgConf.DeltaEtaIncl1( name = toponame, inputs = inputList, outputs = toponame )
1690 alg.addgeneric(
'InputWidth', d.inputwidth1)
1691 alg.addgeneric(
'MaxTob', d.nleading2)
1692 alg.addgeneric(
'NumResultBits', 1)
1693 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype, d.ocut1)*_et_conversion, 0)
1694 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype, d.ocut2)*_et_conversion, 0)
1695 alg.addvariable(
'MinDeltaEta', d.minDeta*_eta_conversion, 0)
1696 alg.addvariable(
'MaxDeltaEta', d.maxDeta*_eta_conversion, 0)
1697 tm.registerTopoAlgo(alg)
1703 DPHI_jXE40delay_jJ40s_map = [
1705 "algoname" :
"DPHI_jXE40delay_jJ40s",
1708 "InputWidth1": HW.metOutputWidth,
1709 "InputWidth2": HW.jJetOutputWidthSort,
1712 "MinET1" : 40*_et_conversion,
1713 "MinET2" : 40*_et_conversion,
1714 "MinDeltaPhi": 0*_phi_conversion,
1715 "phi_thresholds": [10, 99],
1719 for x
in DPHI_jXE40delay_jJ40s_map:
1724 inputList = [
'jXEs',
'jJs']
1726 for bitId
in range(len(d.phi_thresholds)):
1727 toponames.append(
"0DPHI%d-jXE40delay-jJ40s" % (d.phi_thresholds[bitId]))
1729 alg = AlgConf.DeltaPhiIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
1731 alg.addgeneric(
'InputWidth1', d.InputWidth1)
1732 alg.addgeneric(
'InputWidth2', d.InputWidth2)
1733 alg.addgeneric(
'MaxTob1', d.MaxTob1)
1734 alg.addgeneric(
'MaxTob2', d.MaxTob2)
1735 alg.addgeneric(
'NumResultBits', len(toponames) )
1736 alg.addgeneric(
'Delay1', d.Delay1)
1737 alg.addgeneric(
'Delay2', d.Delay2)
1740 for bitId
in range(len(toponames)):
1741 alg.addvariable(
'MinET1', d.MinET1, bitId)
1742 alg.addvariable(
'MinET2', d.MinET2, bitId)
1743 alg.addvariable(
'MinDeltaPhi', d.MinDeltaPhi, bitId)
1744 alg.addvariable(
'MaxDeltaPhi', d.phi_thresholds[bitId]*_phi_conversion, bitId)
1745 tm.registerTopoAlgo(alg)
1750 "algoname" :
"TeAsymmetry-jTENoSort",
1751 "deltaAbsMin" : [0,10,0,0],
1752 "asymFactor" : [0,0,0.2,0],
1753 "asymOffset" : [0,0,0,0],
1754 "maxTeProduct": [5000,10000,999999,999999],
1758 for x
in TeAsymmetry_map:
1763 inputList = [
'jTENoSort_1BC']
1766 for bitId
in range(len(d.deltaAbsMin)):
1767 toponames.append(
"TeAsymmetry_jTENoSort_ParamSet%d" % (bitId))
1769 alg = AlgConf.TeAsymmetry( name = d.algoname, inputs = inputList, outputs = toponames )
1770 alg.addgeneric(
'InputWidth', 1)
1771 alg.addgeneric(
'NumResultBits', len(toponames))
1772 alg.addgeneric(
"Delay", 1)
1774 for bitId
in range(len(toponames)):
1776 alg.addvariable(
'deltaAbsMin', d.deltaAbsMin[bitId]*_et_conversion, bitId)
1777 alg.addvariable(
'asymFactor', d.asymFactor[bitId], bitId)
1778 alg.addvariable(
'asymOffset', d.asymOffset[bitId]*_et_conversion, bitId)
1779 alg.addvariable(
'maxTeProduct', d.maxTeProduct[bitId]*_et_conversion*_et_conversion, bitId)
1780 tm.registerTopoAlgo(alg)
1785 "algoname" :
"TeATIME-jTENoSort",
1786 "teFlavor" : [1,1,1,3],
1787 "combination" : [0,1,2,1],
1788 "nextBcOffset" : [10,10,10,10],
1791 "nextBcFactor" : [2.5,2.5,2.5,2.5]
1795 for x
in TeATIME_map:
1800 inputList = [
'jTENoSort_1BC']
1803 for bitId
in range(4):
1804 toponames.append(
"TeATIME_jTENoSort_ParamSet%d" % (bitId))
1807 alg = AlgConf.TeATIME( name = d.algoname, inputs = inputList, outputs = toponames )
1808 alg.addgeneric(
'InputWidth', 1)
1809 alg.addgeneric(
'NumResultBits', len(toponames))
1810 for bitId
in range(len(d.teFlavor)):
1811 alg.addvariable(
'algoLogic', d.teFlavor[bitId] + ( d.combination[bitId] << 2 ) , bitId)
1812 alg.addvariable(
'nextBcFactor',
round(d.nextBcFactor[bitId] *
pow(2,8)), bitId)
1813 alg.addvariable(
'nextBcOffset',
round(d.nextBcOffset[bitId] * _et_conversion), bitId)
1814 tm.registerTopoAlgo(alg)
1821 "otype1" :
"eTAU",
"ocut1": 20,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1822 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1823 "otype3" :
"jJ",
"ocut3": 40,
"olist3":
"ab",
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1824 "drcutmin": 0,
"drcutmax": 10},
1830 setattr (d, k, x[k])
1831 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1832 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1833 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1834 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1835 log.debug(
"Define %s", toponame)
1836 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1837 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1838 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1839 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1840 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1841 alg.addgeneric(
'MaxTob1', d.nleading1)
1842 alg.addgeneric(
'MaxTob2', d.nleading2)
1843 alg.addgeneric(
'MaxTob3', d.nleading3)
1844 alg.addgeneric(
'NumResultBits', 1)
1845 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1846 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1847 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1848 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1849 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1850 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1851 tm.registerTopoAlgo(alg)
1855 "algoname":
"ADBDT-MU0s",
1856 "otype1":
"MU",
"olist1":
"s",
"inputwidth1": 6,
"nleading1": 3,
1857 "WPList": [
"Tight",
"Loose"],
1860 "ScoreThreshold": [40, 25]
1867 setattr(d, k, algo[k])
1869 toponames = [f
"ADBDT-{d.nleading1}{d.otype1}0{d.olist1}-{wp}" for wp
in d.WPList]
1871 alg = AlgConf.AnomalyDetectionBDT(
1873 inputs=[d.otype1 + d.olist1],
1876 alg.addgeneric(
'NumResultBits', 2)
1877 alg.addgeneric(
'MaxTob',d.nleading1)
1879 alg.addvariable(
'MinET1',d.MinET1*_et_conversion)
1880 alg.addvariable(
'MinET2',d.MinET2*_et_conversion)
1881 for bitId
in range(len(toponames)):
1882 alg.addvariable(
'ScoreThreshold', d.ScoreThreshold[bitId], bitId)
1884 tm.registerTopoAlgo(alg)
1896 "algoname" :
"ADVAE2A-jJ0s-eTAU0s-MU0s-jXE0s",
1897 "otype1" :
"jJ",
"olist1":
"s",
"inputwidth1": 6,
"nleading1": 6,
1898 "otype2" :
"eTAU",
"olist2":
"s",
"inputwidth2": 6,
"nleading2": 4,
1899 "otype3" :
"MU",
"olist3":
"s",
"inputwidth3": 6,
"nleading3": 4,
1900 "otype4" :
"jXE",
"olist4":
"s",
"inputwidth4": 1,
"nleading4": 1,
1901 "WPList" : [
"Tight",
"Loose"],
1906 "ScaleSqr1" : [128, 128],
1907 "ScaleSqr2" : [128, 128],
1908 "ScaleSqr3" : [128, 128],
1909 "AnomalyScoreThresh" : [1521991, 1333204],
1914 setattr (d, k, algo[k])
1917 toponames.append(
"ADVAE2A-%s%s0%s-%s%s0%s-%s%s0%s-%s0%s-%s" %(
str(d.nleading1), d.otype1, d.olist1,
1918 str(d.nleading2), d.otype2, d.olist2,
1919 str(d.nleading3), d.otype3, d.olist3,
1922 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3, d.otype4 + d.olist4]
1923 alg = AlgConf.ADVAE_2A( name = d.algoname, inputs = inputList, outputs = toponames)
1924 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1925 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1926 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1927 alg.addgeneric(
'InputWidth4', d.inputwidth4)
1928 alg.addgeneric(
'MaxTob1', d.nleading1)
1929 alg.addgeneric(
'MaxTob2', d.nleading2)
1930 alg.addgeneric(
'MaxTob3', d.nleading3)
1931 alg.addgeneric(
'MaxTob4', d.nleading4)
1932 alg.addgeneric(
'NumResultBits', len(toponames))
1933 alg.addgeneric(
'ADVAEVersion', 1)
1934 alg.addvariable(
'MinET1', d.MinET1 * _et_conversion)
1935 alg.addvariable(
'MinET2', d.MinET2 * _et_conversion)
1936 alg.addvariable(
'MinET3', d.MinET3 * _et_conversion)
1937 alg.addvariable(
'MinET4', d.MinET4 * _et_conversion)
1938 for bitId
in range(len(toponames)):
1939 alg.addvariable(
'ScaleSqr1', d.ScaleSqr1[bitId], bitId)
1940 alg.addvariable(
'ScaleSqr2', d.ScaleSqr2[bitId], bitId)
1941 alg.addvariable(
'ScaleSqr3', d.ScaleSqr3[bitId], bitId)
1942 alg.addvariable(
'AnomalyScoreThresh', d.AnomalyScoreThresh[bitId], bitId)
1943 tm.registerTopoAlgo(alg)
1947 "otype1" :
"eTAU",
"ocut1": 20,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1948 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1949 "otype3" :
"jJ",
"ocut3": 30,
"olist3":
"ab",
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1950 "drcutmin": 0,
"drcutmax": 10},
1956 setattr (d, k, x[k])
1957 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1958 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1959 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1960 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1961 log.debug(
"Define %s", toponame)
1962 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1963 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1964 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1965 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1966 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1967 alg.addgeneric(
'MaxTob1', d.nleading1)
1968 alg.addgeneric(
'MaxTob2', d.nleading2)
1969 alg.addgeneric(
'MaxTob3', d.nleading3)
1970 alg.addgeneric(
'NumResultBits', 1)
1971 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1972 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1973 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1974 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1975 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1976 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1977 tm.registerTopoAlgo(alg)
1981 {
"itemNameMinInvm": 400,
"minInvm": 640 ,
"minDphi": 0,
"maxDphiList": [26, 24, 22, 20],
1982 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
1983 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
1985 for x
in NFFDphimap:
1989 setattr (d, k, x[k])
1990 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1992 for maxDphi
in d.maxDphiList:
1993 toponames.append (
"%iINVM-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.itemNameMinInvm, d.minDphi, maxDphi,
1994 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1995 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
1996 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'jINVM_DPHI', inputs = inputList, outputs = toponames)
1997 alg.addgeneric(
'InputWidth1', d.inputwidth)
1998 alg.addgeneric(
'InputWidth2', d.inputwidth)
1999 alg.addgeneric(
'MaxTob1', d.nleading1)
2000 alg.addgeneric(
'MaxTob2', d.nleading2)
2001 alg.addgeneric(
'NumResultBits', len(toponames))
2002 for bitid,maxDphi
in enumerate(d.maxDphiList):
2003 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
2004 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2005 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm *_et_conversion*_et_conversion , bitid)
2006 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2007 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion , bitid)
2008 alg.addvariable(
'MaxDeltaPhi', maxDphi*_phi_conversion, bitid)
2009 tm.registerTopoAlgo(alg)
2014 {
"itemNameMinInvm": 400,
"minInvm": 640,
"otype1" :
"AjJ",
"ocut1": 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth1": HW.jJetOutputWidthSort,
2015 "otype2" :
"AjJ",
"ocut2": 50,
"olist2" :
"s",
"nleading2" : 6,
"inputwidth2": HW.jJetOutputWidthSort,
"applyEtaCut":1,
2016 "minEta1": 0 ,
"maxEta1": 32 ,
"minEta2": 30 ,
"maxEta2": 49 , },
2022 setattr (d, k, x[k])
2023 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)
2024 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)
2025 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
2026 toponame =
"%iINVM-%s%s" % (d.itemNameMinInvm, obj1, obj2)
2027 alg = AlgConf.InvariantMassInclusive2( name = toponame, inputs = inputList, outputs = toponame)
2028 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2029 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2030 alg.addgeneric(
'MaxTob1', d.nleading1)
2031 alg.addgeneric(
'MaxTob2', d.nleading2)
2032 alg.addgeneric(
'NumResultBits', 1)
2033 if (d.applyEtaCut>0):
2034 alg.addgeneric(
'ApplyEtaCut', d.applyEtaCut)
2037 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion )
2038 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold )
2039 if (d.applyEtaCut>0):
2040 alg.addvariable(
'MinEta1', d.minEta1*_eta_conversion )
2041 alg.addvariable(
'MaxEta1', d.maxEta1*_eta_conversion )
2042 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion )
2043 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion )
2044 tm.registerTopoAlgo(alg)
2048 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
2049 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
2050 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
2056 setattr (d, k, x[k])
2057 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
2059 for minInvm
in d.itemNameMinInvmList:
2060 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
2061 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2062 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
2063 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM', inputs = inputList, outputs = toponames)
2064 alg.addgeneric(
'InputWidth1', d.inputwidth)
2065 alg.addgeneric(
'InputWidth2', d.inputwidth)
2066 alg.addgeneric(
'MaxTob1', d.nleading1)
2067 alg.addgeneric(
'MaxTob2', d.nleading2)
2068 alg.addgeneric(
'NumResultBits', len(toponames))
2069 for bitid,minInvm
in enumerate(d.minInvmList):
2070 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
2071 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2072 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
2073 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2074 tm.registerTopoAlgo(alg)
2078 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
2079 "otype1" :
"jJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
2080 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
2086 setattr (d, k, x[k])
2087 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
2089 for minInvm
in d.itemNameMinInvmList:
2090 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
2091 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2092 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
2093 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM_NFF', inputs = inputList, outputs = toponames)
2094 alg.addgeneric(
'InputWidth1', d.inputwidth)
2095 alg.addgeneric(
'InputWidth2', d.inputwidth)
2096 alg.addgeneric(
'MaxTob1', d.nleading1)
2097 alg.addgeneric(
'MaxTob2', d.nleading2)
2098 alg.addgeneric(
'NumResultBits', len(toponames))
2099 for bitid,minInvm
in enumerate(d.minInvmList):
2100 alg.addvariable(
'MinET1',
get_threshold_cut(
"CjJ", d.ocut1)*_et_conversion , bitid)
2101 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
2102 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
2103 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
2104 tm.registerTopoAlgo(alg)
2111 toponame =
"0INVM10-3MU3Vab"
2112 log.debug(
"Define %s", toponame)
2113 inputList =
'MU3Vab'
2114 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
2115 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2116 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2117 alg.addgeneric(
'NumResultBits', 1)
2118 alg.addvariable(
'MinET1', 0*_et_conversion)
2119 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2120 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2121 tm.registerTopoAlgo(alg)
2123 toponame =
"0INVM10-3MU3VFab"
2124 log.debug(
"Define %s", toponame)
2125 inputList =
'MU3VFab'
2126 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
2127 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2128 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2129 alg.addgeneric(
'NumResultBits', 1)
2130 alg.addvariable(
'MinET1', 0*_et_conversion)
2131 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2132 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2133 tm.registerTopoAlgo(alg)
2136 toponame =
"0INVM10C-3MU3Vab"
2137 log.debug(
"Define %s", toponame)
2138 inputList =
'MU3Vab'
2139 alg = AlgConf.InvariantMassThreeTOBsIncl1Charge( name = toponame, inputs = inputList, outputs = toponame )
2140 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2141 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2142 alg.addgeneric(
'NumResultBits', 1)
2143 alg.addvariable(
'MinET1', 0*_et_conversion)
2144 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
2145 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
2146 tm.registerTopoAlgo(alg)
2162 INVM_DR_eEM_MU_Map = [{
2163 "algoname":
"INVM_DR_eEM_MU",
2172 "olist2": [
"Fab",
"VFab"],
2174 "ocut2Offset" : [3,0]
2178 for x
in INVM_DR_eEM_MU_Map:
2183 inputList = [d.otype1 + d.olist1, d.otype2 +
str(d.ocut2) + d.olist2[1] ]
2185 for bitId
in range(len(d.ocut1)):
2186 obj1 =
"-%s%s%s" % (d.otype1,
str( d.ocut1[bitId] ) , d.olist1)
2187 obj2 =
"-%s%s%s" % (d.otype2,
str( d.ocut2 + d.ocut2Offset[bitId] ) , d.olist2[bitId])
2188 toponames.append(
"%dINVM%d-%dDR%d%s%s" % ( d.minInvm, d.maxInvm, d.minDR, d.maxDR, obj1, obj2))
2190 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
2192 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
2193 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2194 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSort)
2195 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2196 alg.addgeneric(
'ApplyEtaCut', 1)
2198 alg.addgeneric(
'NumResultBits', len(toponames) )
2200 for bitId
in range(len(toponames)):
2201 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1[bitId])*_et_conversion, bitId)
2202 alg.addvariable(
'MinET2', (d.ocut2 + d.ocut2Offset[bitId])*_et_conversion, bitId)
2203 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
2204 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
2205 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitId)
2206 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitId)
2207 alg.addvariable(
'MinEta2', 0*_eta_conversion, bitId)
2208 alg.addvariable(
'MaxEta2', 49*_eta_conversion, bitId)
2209 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
2210 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
2213 tm.registerTopoAlgo(alg)
2229 {
"minInvm": 60 ,
"minDphiList": [4, 25],
"maxDphi": 32,
"minEta2": 25,
"maxEta2": 49,
2230 "inputwidth1": HW.eEmOutputWidthSelect,
"otype1" :
"eEM",
"ocut1" : 18,
"olist1" :
"abm",
2231 "nleading1" : HW.eEmOutputWidthSelect,
"inputwidth2": HW.jEmOutputWidthSort,
"ocut2" : 20,
"ocut3" : 25,
"nleading2" : 6 }
2233 for x
in ZAFBDphimap:
2237 setattr (d, k, x[k])
2238 inputList = [d.otype1 + d.olist1,
'jEMs25ETA49']
2240 for minDphi
in d.minDphiList:
2241 toponames.append (
"%iINVM-%02dDPHI%i-%s%s%s%s-jEM%ss%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi,
2242 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2243 str(d.ocut3) ,
str(d.nleading2) , d.minEta2, d.maxEta2))
2244 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'ZAFB_DPHI', inputs = inputList, outputs = toponames)
2245 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2246 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2247 alg.addgeneric(
'MaxTob1', d.nleading1)
2248 alg.addgeneric(
'MaxTob2', d.nleading2)
2249 alg.addgeneric(
'NumResultBits', len(toponames))
2250 alg.addgeneric(
'ApplyEtaCut', 1)
2251 for bitid,minDphi
in enumerate(d.minDphiList):
2252 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitid)
2253 alg.addvariable(
'MinET2',
get_threshold_cut(
'jEM', d.ocut3)*_et_conversion, bitid)
2254 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
2255 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold, bitid)
2256 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitid)
2257 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitid)
2258 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion, bitid)
2259 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion, bitid)
2260 alg.addvariable(
'MinDeltaPhi', minDphi*_phi_conversion, bitid)
2261 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, bitid)
2262 tm.registerTopoAlgo(alg)
2264 inputList = [d.otype1 + d.olist1,
'jEMsm25ETA49']
2266 for minDphi
in d.minDphiList:
2267 toponames.append (
"%iINVM-%02dDPHI%i-%s%s%s%s-jEM%ssm%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi,
2268 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
2269 str(d.ocut2) ,
str(d.nleading2) , d.minEta2, d.maxEta2))
2270 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'ZAFB_DPHIM', inputs = inputList, outputs = toponames)
2271 alg.addgeneric(
'InputWidth1', d.inputwidth1)
2272 alg.addgeneric(
'InputWidth2', d.inputwidth2)
2273 alg.addgeneric(
'MaxTob1', d.nleading1)
2274 alg.addgeneric(
'MaxTob2', d.nleading2)
2275 alg.addgeneric(
'NumResultBits', len(toponames))
2276 alg.addgeneric(
'ApplyEtaCut', 1)
2277 for bitid,minDphi
in enumerate(d.minDphiList):
2278 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitid)
2279 alg.addvariable(
'MinET2',
get_threshold_cut(
'jEM', d.ocut2)*_et_conversion, bitid)
2280 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
2281 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold, bitid)
2282 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitid)
2283 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitid)
2284 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion, bitid)
2285 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion, bitid)
2286 alg.addvariable(
'MinDeltaPhi', minDphi*_phi_conversion, bitid)
2287 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, bitid)
2288 tm.registerTopoAlgo(alg)
2292 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"s",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
2293 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"sl",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
2295 for x
in listofalgos:
2299 setattr (d, k, x[k])
2300 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))
2301 log.debug(
"Define %s", toponame)
2302 inputList = [d.otype + d.olist, d.otype + d.olist]
2303 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = toponame, inputs = inputList, outputs = toponame )
2304 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
2305 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
2306 alg.addgeneric(
'MaxTob1', d.nleading1)
2307 alg.addgeneric(
'MaxTob2', d.nleading2)
2308 alg.addgeneric(
'NumResultBits', 1)
2311 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2312 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2313 alg.addgeneric(
'ApplyEtaCut', 1)
2314 alg.addvariable(
'MinEta1', 0*_eta_conversion)
2315 alg.addvariable(
'MaxEta1',49*_eta_conversion)
2316 alg.addvariable(
'MinEta2', 0*_eta_conversion)
2317 alg.addvariable(
'MaxEta2',49*_eta_conversion)
2318 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
2319 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
2320 tm.registerTopoAlgo(alg)
2326 INVM_DR_2MU3Vab_Map = [
2328 "algoname":
"7INVM22_DR_2MU3Vab",
2333 "otype1" :
"MU3Vab",
2337 for x
in INVM_DR_2MU3Vab_Map:
2342 inputList = d.otype1
2344 for bitId
in range(len(d.minDR)):
2345 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm, d.maxInvm,
2346 d.minDR[bitId] , d.maxDR[bitId],
2350 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2351 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2352 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2353 alg.addgeneric(
'NumResultBits', len(toponames))
2354 for bitId
in range(len(toponames)):
2355 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2356 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2357 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
2358 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
2359 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2360 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2361 tm.registerTopoAlgo(alg)
2369 INVM_DR_2MU3VFab_Map = [
2371 "algoname":
"INVM_DR_2MU3VFab",
2373 "maxInvm" : [9,11,22],
2376 "otype1" :
"MU3VFab",
2380 for x
in INVM_DR_2MU3VFab_Map:
2385 inputList = d.otype1
2387 for bitId
in range(len(d.minDR)):
2388 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
2389 d.minDR[bitId] , d.maxDR[bitId],
2393 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2394 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2395 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2396 alg.addgeneric(
'NumResultBits', len(toponames))
2397 for bitId
in range(len(toponames)):
2398 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2399 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2400 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
2401 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
2402 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2403 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2404 tm.registerTopoAlgo(alg)
2410 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2411 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2412 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"", },
2415 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2416 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2417 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2418 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2420 {
"minInvm": 7,
"maxInvm": 22,
"minDr": 0,
"maxDr": 20,
"mult": 2,
"otype1" :
"MU3VFab",
"otype2":
"",},
2422 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"CMU5VFab",
"otype2":
"CMU3Vab",},
2424 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2425 {
"minInvm": 7,
"maxInvm": 11,
"minDr": 25,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2426 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3VFab", },
2430 for x
in listofalgos:
2434 setattr (d, k, x[k])
2435 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2436 obj2 =
"-%s" % (d.otype2)
2437 toponame =
"%iINVM%i-%iDR%i-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2438 log.debug(
"Define %s", toponame)
2439 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2440 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2
2441 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2443 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2444 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2446 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2447 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2448 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2449 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2450 alg.addgeneric(
'NumResultBits', 1)
2451 alg.addvariable(
'MinET1', 0*_et_conversion)
2452 alg.addvariable(
'MinET2', 0*_et_conversion)
2453 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2454 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2455 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2456 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2457 tm.registerTopoAlgo(alg)
2461 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab",},
2462 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2464 for x
in listofalgos:
2468 setattr (d, k, x[k])
2469 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2470 obj2 =
"-%s" % (d.otype2)
2471 toponame =
"%iINVM%i-%iDR%i-C-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2472 log.debug(
"Define %s", toponame)
2473 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2474 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2Charge
2475 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2477 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2478 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2480 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2481 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2482 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2483 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2484 alg.addgeneric(
'NumResultBits', 1)
2485 alg.addvariable(
'MinET1', 0*_et_conversion)
2486 alg.addvariable(
'MinET2', 0*_et_conversion)
2487 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2488 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2489 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2490 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2491 tm.registerTopoAlgo(alg)
2501 {
"minDphi": 23,
"maxDphi": 32,
"mult": 2,
"otype1" :
"eEM",
2502 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.eEmOutputWidthSort,
"minET1":0.9,
"otype2" :
"",
"minET2":0.8},
2503 {
"minDphi": 23,
"maxDphi": 32,
"mult": 2,
"otype1" :
"eTAU",
2504 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.eTauOutputWidthSort,
"minET1":0.8,
"otype2" :
"",
"minET2":0.8},
2505 {
"minDphi": 23,
"maxDphi": 32,
"mult": 2,
"otype1" :
"jTAU",
2506 "ocut1": 1,
"olist1":
"s",
"nleading1": HW.jTauOutputWidthSort,
"minET1":1.4,
"otype2" :
"",
"minET2":1.4},
2512 setattr (d, k, x[k])
2513 obj =
"%s" % (
str(d.mult)+d.otype1+
str(d.ocut1)+
str(d.olist1))
2514 toponame =
"%sDPHI%s-%s" % (d.minDphi, d.maxDphi, obj)
2515 log.debug(
"Define %s", toponame)
2516 inputList = [d.otype1+d.olist1]
2517 algoname = AlgConf.DeltaPhiIncl1
2518 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2519 alg.addgeneric(
'NumResultBits', 1)
2520 alg.addgeneric(
'InputWidth', d.nleading1)
2521 alg.addgeneric(
'MaxTob', d.nleading1)
2522 alg.addvariable(
'MinET1', d.minET1*_et_conversion)
2523 alg.addvariable(
'MinET2', d.minET2*_et_conversion)
2524 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
2525 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
2526 tm.registerTopoAlgo(alg)
2529 from dataclasses
import dataclass
2532 class InvMassDPhiSumETAlgoParams:
2533 """ Parameters for InvariantMassDeltaPhiInclusive1 and InvariantMassDeltaPhiSumEtInclusive1 Topo algorithms """
2536 DeltaPhiMin: int = 23
2537 DeltaPhiMax: int = 32
2539 MaxInvMass : int = 1000
2541 MaxSumEt: int = 1000
2543 def AddInvMassDPhiSumETAlgos(otype: str, nleading, list_of_algos: list[InvMassDPhiSumETAlgoParams]):
2544 for x
in list_of_algos:
2546 is_InvMass_set = x.MinInvMass != 0
or x.MaxInvMass != 1000
2547 is_SumEt_set = x.MinSumEt != 0
or x.MaxSumEt != 1000
2548 algoname = AlgConf.InvariantMassDeltaPhiSumEtInclusive1
if is_SumEt_set
else AlgConf.InvariantMassDeltaPhiInclusive1
2550 obj = f
'2{otype}{round(x.MinEt1)}s'
2551 toponame = f
'{x.DeltaPhiMin}DPHI{x.DeltaPhiMax}-{obj}'
2554 toponame = f
'{x.MinSumEt}SUM{x.MaxSumEt}-{toponame}'
2556 toponame = f
'{x.MinInvMass}INVM{x.MaxInvMass}-{toponame}'
2557 log.debug(
'Define %s', toponame)
2559 alg = algoname(name=toponame, inputs=[f
'{otype}s'], outputs=[toponame])
2560 alg.addgeneric(
'NumResultBits', 1)
2561 alg.addgeneric(
'InputWidth', nleading)
2562 alg.addgeneric(
'MaxTob', nleading)
2563 alg.addvariable(
'MinET1', x.MinEt1 * _et_conversion)
2564 alg.addvariable(
'MinET2', x.MinEt2 * _et_conversion)
2565 alg.addvariable(
'MinMSqr', (x.MinInvMass * _et_conversion) ** 2)
2566 alg.addvariable(
'MaxMSqr', (x.MaxInvMass * _et_conversion) ** 2)
2567 alg.addvariable(
'MinDeltaPhi', x.DeltaPhiMin * _phi_conversion)
2568 alg.addvariable(
'MaxDeltaPhi', x.DeltaPhiMax * _phi_conversion)
2571 alg.addvariable(
'MinSumEt', x.MinSumEt * _et_conversion)
2572 alg.addvariable(
'MaxSumEt', x.MaxSumEt * _et_conversion)
2573 tm.registerTopoAlgo(alg)
2577 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinInvMass=1, MaxInvMass=200),
2578 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinInvMass=2, MaxInvMass=200),
2579 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinInvMass=3, MaxInvMass=200),
2580 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinInvMass=4, MaxInvMass=200),
2581 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinSumEt=3, MaxSumEt=200),
2582 InvMassDPhiSumETAlgoParams(MinEt1=0.8, MinEt2=0.8, MinSumEt=4, MaxSumEt=200),
2584 AddInvMassDPhiSumETAlgos(
'eTAU', HW.eTauOutputWidthSort, algo_list)
2588 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=10, MaxInvMass=200),
2589 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=15, MaxInvMass=200),
2590 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=20, MaxInvMass=200),
2591 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=25, MaxInvMass=200),
2592 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinSumEt=10, MaxSumEt=200),
2593 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinSumEt=15, MaxSumEt=200),
2594 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinSumEt=20, MaxSumEt=200),
2595 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinSumEt=25, MaxSumEt=200),
2596 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=15, MaxInvMass=200, MinSumEt=15, MaxSumEt=200),
2597 InvMassDPhiSumETAlgoParams(MinEt1=5, MinEt2=5, DeltaPhiMin=20, MinInvMass=20, MaxInvMass=200, MinSumEt=20, MaxSumEt=200),
2599 AddInvMassDPhiSumETAlgos(
'jJ', HW.jJetOutputWidthSort, algo_list)
2602 Algo = namedtuple(
'Algo', [
'dPhiMin',
'dPhiMax',
'otype',
'olist',
'ocut1',
'ocut2',
'nTOB'])
2604 Algo(dPhiMin=30, dPhiMax=32, otype=
'eTAU', olist=
's', ocut1=50, ocut2=50, nTOB=HW.eTauOutputWidthSort),
2607 name = f
'{x.dPhiMin}DPHI{x.dPhiMax}-'
2608 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}'
2610 alg = AlgConf.DeltaPhiIncl1(name=name, inputs=[x.otype+x.olist], outputs=[name])
2611 alg.addgeneric(
'NumResultBits', 1)
2612 alg.addgeneric(
'InputWidth', x.nTOB)
2613 alg.addgeneric(
'MaxTob', x.nTOB)
2616 alg.addvariable(
'MinDeltaPhi', x.dPhiMin*_phi_conversion)
2617 alg.addvariable(
'MaxDeltaPhi', x.dPhiMax*_phi_conversion)
2618 tm.registerTopoAlgo(alg)