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__)
24 _no_m_upper_threshold = 1024*1024*10*10*10
36 alg = AlgConf.eEmNoSort( name =
'eEMall', inputs =
'eEmTobs', outputs =
'eEMall' )
37 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
38 alg.addgeneric(
'OutputWidth', HW.eEmInputWidth)
39 alg.addvariable(
'REtaMin', 0)
40 alg.addvariable(
'RHadMin', 0)
41 alg.addvariable(
'WsTotMin', 0)
42 tm.registerTopoAlgo(alg)
46 alg = AlgConf.eEmSort( name =
'eEMs', inputs =
'eEmTobs', outputs =
'eEMs' )
47 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
48 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
49 alg.addvariable(
'REtaMin', 0)
50 alg.addvariable(
'RHadMin', 0)
51 alg.addvariable(
'WsTotMin', 0)
52 tm.registerTopoAlgo(alg)
54 alg = AlgConf.eEmSort( name =
'eEMsl', inputs =
'eEmTobs', outputs =
'eEMsl' )
55 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
56 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
57 alg.addvariable(
'REtaMin', 1)
58 alg.addvariable(
'RHadMin', 1)
59 alg.addvariable(
'WsTotMin', 1)
60 tm.registerTopoAlgo(alg)
62 alg = AlgConf.eEmSort( name =
'eEMsm', inputs =
'eEmTobs', outputs =
'eEMsm' )
63 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
64 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSort)
65 alg.addvariable(
'REtaMin', 2)
66 alg.addvariable(
'RHadMin', 2)
67 alg.addvariable(
'WsTotMin', 2)
68 tm.registerTopoAlgo(alg)
72 alg = AlgConf.eEmSelect( name =
'eEMab', inputs =
'eEmTobs', outputs =
'eEMab' )
73 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
74 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
76 alg.addvariable(
'REtaMin', 0)
77 alg.addvariable(
'RHadMin', 0)
78 alg.addvariable(
'WsTotMin', 0)
79 tm.registerTopoAlgo(alg)
81 alg = AlgConf.eEmSelect( name =
'eEMabl', inputs =
'eEmTobs', outputs =
'eEMabl' )
82 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
83 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
85 alg.addvariable(
'REtaMin', 1)
86 alg.addvariable(
'RHadMin', 1)
87 alg.addvariable(
'WsTotMin', 1)
88 tm.registerTopoAlgo(alg)
90 alg = AlgConf.eEmSelect( name =
'eEMabm', inputs =
'eEmTobs', outputs =
'eEMabm' )
91 alg.addgeneric(
'InputWidth', HW.eEmInputWidth)
92 alg.addgeneric(
'OutputWidth', HW.eEmOutputWidthSelect)
94 alg.addvariable(
'REtaMin', 2)
95 alg.addvariable(
'RHadMin', 2)
96 alg.addvariable(
'WsTotMin', 2)
97 tm.registerTopoAlgo(alg)
104 alg = AlgConf.eTauNoSort( name =
'eTAUall', inputs =
'eTauTobs', outputs =
'eTAUall')
105 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
106 alg.addgeneric(
'OutputWidth', HW.eTauInputWidth)
107 alg.addvariable(
'RCoreMin', 0)
108 alg.addvariable(
'RHadMin', 0)
109 tm.registerTopoAlgo(alg)
113 alg = AlgConf.eTauSort( name =
'eTAUs', inputs =
'eTauTobs', outputs =
'eTAUs' )
114 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
115 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSort)
116 alg.addvariable(
'RCoreMin', 0)
117 alg.addvariable(
'RHadMin', 0)
118 tm.registerTopoAlgo(alg)
122 alg = AlgConf.eTauSelect( name =
'eTAUab', inputs =
'eTauTobs', outputs =
'eTAUab' )
123 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
124 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSelect)
126 alg.addvariable(
'RCoreMin', 0)
127 alg.addvariable(
'RHadMin', 0)
128 tm.registerTopoAlgo(alg)
130 alg = AlgConf.eTauSelect( name =
'eTAUabm', inputs =
'eTauTobs', outputs =
'eTAUabm' )
131 alg.addgeneric(
'InputWidth', HW.eTauInputWidth)
132 alg.addgeneric(
'OutputWidth', HW.eTauOutputWidthSelect)
134 alg.addvariable(
'RCoreMin', 2)
135 alg.addvariable(
'RHadMin', 0)
136 tm.registerTopoAlgo(alg)
150 alg = AlgConf.MuonSelect( name =
'MU3Vab', inputs =
'MuonTobs', outputs =
'MU3Vab' )
151 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
152 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
153 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
154 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
155 alg.addvariable(
'MinEta', 0*_eta_conversion)
156 alg.addvariable(
'MaxEta', 25*_eta_conversion)
157 alg.addvariable(
'InnerCoinCut', 0)
158 alg.addvariable(
'FullStationCut',0)
159 alg.addvariable(
'GoodMFieldCut', 0)
160 tm.registerTopoAlgo(alg)
162 alg = AlgConf.MuonSelect( name =
'MU3VFab', inputs =
'MuonTobs', outputs =
'MU3VFab' )
163 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
164 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
165 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
166 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
167 alg.addvariable(
'MinEta', 0*_eta_conversion)
168 alg.addvariable(
'MaxEta', 25*_eta_conversion)
169 alg.addvariable(
'InnerCoinCut', 0)
170 alg.addvariable(
'FullStationCut',1)
171 alg.addvariable(
'GoodMFieldCut', 0)
172 tm.registerTopoAlgo(alg)
174 alg = AlgConf.MuonSelect( name =
'MU5VFab', inputs =
'MuonTobs', outputs =
'MU5VFab' )
175 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
176 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
177 alg.addvariable(
'MinEtRPC', 6*_et_conversion)
178 alg.addvariable(
'MinEtTGC', 5*_et_conversion)
179 alg.addvariable(
'MinEta', 0*_eta_conversion)
180 alg.addvariable(
'MaxEta', 25*_eta_conversion)
181 alg.addvariable(
'InnerCoinCut', 0)
182 alg.addvariable(
'FullStationCut',1)
183 alg.addvariable(
'GoodMFieldCut', 0)
184 tm.registerTopoAlgo(alg)
186 alg = AlgConf.MuonSelect( name =
'MU8Fab', inputs =
'MuonTobs', outputs =
'MU8Fab' )
187 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
188 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
189 alg.addvariable(
'MinEtRPC', 8*_et_conversion)
190 alg.addvariable(
'MinEtTGC', 8*_et_conversion)
191 alg.addvariable(
'MinEta', 0*_eta_conversion)
192 alg.addvariable(
'MaxEta', 25*_eta_conversion)
193 alg.addvariable(
'InnerCoinCut', 0)
194 alg.addvariable(
'FullStationCut',1)
195 alg.addvariable(
'GoodMFieldCut', 0)
196 tm.registerTopoAlgo(alg)
198 alg = AlgConf.MuonSelect( name =
'CMU3Vab', inputs =
'MuonTobs', outputs =
'CMU3Vab' )
199 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
200 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
201 alg.addvariable(
'MinEtRPC', 4*_et_conversion)
202 alg.addvariable(
'MinEtTGC', 3*_et_conversion)
203 alg.addvariable(
'MinEta', 0*_eta_conversion)
204 alg.addvariable(
'MaxEta', 10*_eta_conversion)
205 alg.addvariable(
'InnerCoinCut', 0)
206 alg.addvariable(
'FullStationCut',0)
207 alg.addvariable(
'GoodMFieldCut', 0)
208 tm.registerTopoAlgo(alg)
210 alg = AlgConf.MuonSelect( name =
'CMU5VFab', inputs =
'MuonTobs', outputs =
'CMU5VFab' )
211 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
212 alg.addgeneric(
'OutputWidth', HW.muonOutputWidthSelect)
213 alg.addvariable(
'MinEtRPC', 6*_et_conversion)
214 alg.addvariable(
'MinEtTGC', 5*_et_conversion)
215 alg.addvariable(
'MinEta', 0*_eta_conversion)
216 alg.addvariable(
'MaxEta', 10*_eta_conversion)
217 alg.addvariable(
'InnerCoinCut', 0)
218 alg.addvariable(
'FullStationCut',1)
219 alg.addvariable(
'GoodMFieldCut', 0)
220 tm.registerTopoAlgo(alg)
223 alg = AlgConf.MuonSort_1BC( name =
'LMUs', inputs =
'LateMuonTobArray', outputs =
'LMUs' )
224 alg.addgeneric(
'InputWidth', HW.muonInputWidth)
225 alg.addgeneric(
'OutputWidth', 1)
226 alg.addgeneric(
'nDelayedMuons', 1)
227 alg.addvariable(
'MinEta', 0*_eta_conversion)
228 alg.addvariable(
'MaxEta', 25*_eta_conversion)
229 alg.addvariable(
'InnerCoinCut', 0)
230 alg.addvariable(
'FullStationCut', 1)
231 alg.addvariable(
'GoodMFieldCut', 0)
232 tm.registerTopoAlgo(alg)
235 alg = AlgConf.jJetNoSort( name =
'AjJall_1BC', inputs =
'jJetTobs', outputs =
'AjJall_1BC' )
236 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
237 alg.addgeneric(
'OutputWidth', HW.jJetInputWidth)
240 alg.addgeneric(
'NumRegisters', 1)
241 tm.registerTopoAlgo(alg)
246 {
"otype" :
"jJ",
"ocut" : 50,
"olist" :
"ab",
"etamin" : 0,
"etamax" : 32},
247 {
"otype" :
"CjJ",
"ocut" : 40,
"olist" :
"ab",
"etamin" : 0,
"etamax" : 26},
248 {
"otype" :
"FjJ",
"ocut" : 40,
"olist" :
"ab",
"etamin" : 30,
"etamax" : 49},
255 listname =
"%s%s" % (d.otype,d.olist)
256 algoname = AlgConf.jJetSelect
257 alg = algoname( name = listname, inputs =
'jJetTobs', outputs = listname )
258 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
259 alg.addgeneric(
'OutputWidth', HW.jJetOutputWidthSelect)
262 alg.addvariable(
'MinEta', d.etamin*_eta_conversion)
263 alg.addvariable(
'MaxEta', d.etamax*_eta_conversion)
264 tm.registerTopoAlgo(alg)
267 {
"otype" :
"FjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 30,
"etamax" : 49},
268 {
"otype" :
"jJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 32},
269 {
"otype" :
"CjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 26},
270 {
"otype" :
"AjJ",
"ocut" : 0,
"olist" :
"s",
"etamin" : 0,
"etamax" : 49},
277 listname =
"%s%s" % (d.otype,d.olist)
278 algoname = AlgConf.jJetSort
279 alg = algoname( name = listname, inputs =
'jJetTobs', outputs = listname )
280 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
281 alg.addgeneric(
'OutputWidth', HW.jJetOutputWidthSort)
283 alg.addvariable(
'MinET', d.ocut*_et_conversion)
284 alg.addvariable(
'MinEta', d.etamin*_eta_conversion)
285 alg.addvariable(
'MaxEta', d.etamax*_eta_conversion)
286 tm.registerTopoAlgo(alg)
291 alg = AlgConf.jEmSort( name =
'jEMs25ETA49', inputs =
'jEmTobs', outputs =
'jEMs25ETA49' )
292 alg.addgeneric(
'InputWidth', HW.jEmInputWidth)
293 alg.addgeneric(
'OutputWidth', HW.jEmOutputWidthSort)
294 alg.addvariable(
'MinEta', 25*_eta_conversion)
295 alg.addvariable(
'MaxEta', 49*_eta_conversion)
297 alg.addvariable(
'IsoMin', 0)
298 alg.addvariable(
'Frac1Min', 0)
299 alg.addvariable(
'Frac2Min', 0)
300 tm.registerTopoAlgo(alg)
304 alg = AlgConf.jXENoSort( name =
'jXENoSort_1BC', inputs =
'jXETobs', outputs =
'jXENoSort_1BC' )
305 alg.addgeneric(
'InputWidth', HW.jMetInputWidth)
306 alg.addgeneric(
'OutputWidth', HW.metOutputWidth)
309 alg.addgeneric(
'NumRegisters', 1)
310 tm.registerTopoAlgo(alg)
312 alg = AlgConf.jXESort( name =
'jXEs', inputs =
'jXETobs', outputs =
'jXEs' )
313 alg.addgeneric(
'InputWidth', HW.jMetInputWidth)
314 alg.addgeneric(
'OutputWidth', HW.metOutputWidth)
315 tm.registerTopoAlgo(alg)
327 {
"otype" :
"eEM",
"ocut1" : 24,
"ocut2" : 24,
"olist" :
"sm",
"nleading1" : 2,
"minInvm" : 60,
"maxInvm" : 100,
"inputwidth": HW.eEmOutputWidthSort},
334 toponame =
'ZEE-eEM24sm2'
335 log.debug(
"Define %s", toponame)
336 inputList = d.otype + d.olist
337 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame)
338 alg.addgeneric(
'InputWidth', d.inputwidth)
339 alg.addgeneric(
'MaxTob', d.nleading1)
340 alg.addgeneric(
'NumResultBits', 1)
343 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion )
344 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion )
345 tm.registerTopoAlgo(alg)
354 {
"minDr": 0,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
355 {
"minDr": 0,
"maxDr": 24,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
357 {
"minDr": 1,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab", },
358 {
"minDr": 1,
"maxDr": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab", },
359 {
"minDr": 2,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
360 {
"minDr": 0,
"maxDr": 22,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
361 {
"minDr": 2,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab" ,
"otype2" :
"", },
364 for x
in listofalgos:
369 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
370 obj2 =
"-%s" % (d.otype2)
371 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
372 log.debug(
"Define %s", toponame)
373 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
374 algoname = AlgConf.DeltaRSqrIncl1
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2
375 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
377 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
378 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
380 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
381 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
382 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
383 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
384 alg.addgeneric(
'NumResultBits', 1)
385 alg.addvariable(
'MinET1', 0*_et_conversion)
386 alg.addvariable(
'MinET2', 0*_et_conversion)
387 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
388 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
389 tm.registerTopoAlgo(alg)
398 {
"minDr": 0,
"maxDr": 12,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
400 for x
in listofalgos:
405 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
406 obj2 =
"-%s" % (d.otype2)
407 toponame =
"%iDR%iC-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
408 log.debug(
"Define %s", toponame)
409 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
410 algoname = AlgConf.DeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2Charge
411 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
413 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
414 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
416 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
417 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
418 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
419 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
420 alg.addgeneric(
'NumResultBits', 1)
421 alg.addvariable(
'MinET1', 0*_et_conversion)
422 alg.addvariable(
'MinET2', 0*_et_conversion)
423 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
424 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
425 tm.registerTopoAlgo(alg)
436 {
"minInvm":7,
"maxInvm":22,
"minDr": 0,
"maxDr": 20,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
438 for x
in listofalgos:
443 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
444 obj2 =
"-%s" % (d.otype2)
445 toponame =
"%iINVM%i-%iDR%iC-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
446 log.debug(
"Define %s", toponame)
447 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
448 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2Charge
449 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
451 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
452 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
454 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
455 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
456 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
457 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
458 alg.addgeneric(
'NumResultBits', 1)
459 alg.addvariable(
'MinET1', 0*_et_conversion)
460 alg.addvariable(
'MinET2', 0*_et_conversion)
461 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
462 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
463 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
464 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
465 tm.registerTopoAlgo(alg)
476 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 1,
477 "otype1" :
"MU5VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
478 "otype2" :
"MU3Vab" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
479 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
480 "otype1" :
"MU5VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
481 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
482 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
483 "otype1" :
"MU3Vab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
484 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
485 {
"minDeta": 5,
"maxDeta": 99,
"minDphi": 5,
"maxDphi": 99,
"mult": 2,
486 "otype1" :
"MU3VFab",
"ocut1":
"",
"olist1":
"",
"nleading1": HW.muonOutputWidthSelect,
487 "otype2" :
"" ,
"ocut2":
"",
"olist2":
"",
"nleading2": HW.muonOutputWidthSelect},
488 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 4,
"maxDphi": 99,
"mult": 1,
489 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
490 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
491 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 4,
"maxDphi": 99,
"mult": 1,
492 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
493 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
494 {
"minDeta": 0,
"maxDeta": 24,
"minDphi": 10,
"maxDphi": 99,
"mult": 1,
495 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
496 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect},
503 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1+
str(d.ocut1)+
str(d.olist1))
504 obj2 =
"-%s" % (d.otype2+
str(d.ocut2)+
str(d.olist2))
505 toponame =
"%sDETA%s-%sDPHI%s-%s%s" % (d.minDeta, d.maxDeta, d.minDphi, d.maxDphi, obj1,
"" if d.mult>1
else obj2)
506 log.debug(
"Define %s", toponame)
507 inputList = [d.otype1+d.olist1]
if (d.mult>1)
else [d.otype1+d.olist1, d.otype2+d.olist2]
508 algoname = AlgConf.DeltaEtaPhiIncl1
if (d.mult>1)
else AlgConf.DeltaEtaPhiIncl2
509 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
510 alg.addgeneric(
'NumResultBits', 1)
512 alg.addgeneric(
'InputWidth', d.nleading1)
513 alg.addgeneric(
'MaxTob', d.nleading1)
514 alg.addvariable(
'MinET1', 0*_et_conversion)
515 alg.addvariable(
'MinET2', 0*_et_conversion)
516 alg.addvariable(
'MinDeltaEta', d.minDeta*_eta_conversion)
517 alg.addvariable(
'MaxDeltaEta', d.maxDeta*_eta_conversion)
518 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
519 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
521 alg.addgeneric(
'InputWidth1', d.nleading1)
522 alg.addgeneric(
'InputWidth2', d.nleading2)
523 alg.addgeneric(
'MaxTob1', d.nleading1)
524 alg.addgeneric(
'MaxTob2', d.nleading2)
525 alg.addvariable(
'MinET1', 0*_et_conversion)
526 alg.addvariable(
'MinET2', 0*_et_conversion)
527 alg.addvariable(
'DeltaEtaMin', d.minDeta*_eta_conversion)
528 alg.addvariable(
'DeltaEtaMax', d.maxDeta*_eta_conversion)
529 alg.addvariable(
'DeltaPhiMin', d.minDphi*_phi_conversion)
530 alg.addvariable(
'DeltaPhiMax', d.maxDphi*_phi_conversion)
531 tm.registerTopoAlgo(alg)
536 {
"itemNameMinHT": 150,
"minHT": 240,
"otype" :
"jJ",
"ocut" : 50,
"olist" :
"s",
"nleading" : 5,
"inputwidth": HW.jJetOutputWidthSort,
"oeta" : 32},
537 {
"itemNameMinHT": 190,
"minHT": 300,
"otype" :
"jJ",
"ocut" : 40,
"olist" :
"s",
"nleading" : 5,
"inputwidth": HW.jJetOutputWidthSort,
"oeta" : 21},
544 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))
545 log.debug(
"Define %s", toponame)
546 inputList = d.otype + d.olist
547 alg = AlgConf.JetHT( name = toponame, inputs = inputList, outputs = [toponame] )
548 alg.addgeneric(
'InputWidth', d.inputwidth)
549 alg.addgeneric(
'MaxTob', d.nleading)
550 alg.addgeneric(
'NumRegisters', 2
if d.olist==
"all" else 0)
551 alg.addgeneric(
'NumResultBits', 1)
553 alg.addvariable(
'MinEta', 0*_eta_conversion)
554 alg.addvariable(
'MaxEta', d.oeta*_eta_conversion)
555 alg.addvariable(
'MinHt', d.minHT*_et_conversion)
556 tm.registerTopoAlgo(alg)
563 "algoname" :
"DR_2MU5VFab",
566 "otype1" :
"MU5VFab",
572 for x
in DR_2MU5FMap:
577 inputList = [ d.otype1 ]
579 for bitId
in range(len(d.minDR)):
580 toponames.append(
"%iDR%i-%s%s" % (d.minDR[bitId], d.maxDR[bitId],
str(d.mult1[bitId]),
583 alg = AlgConf.DeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
584 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
585 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
586 alg.addgeneric(
'NumResultBits', len(toponames) )
588 for bitId
in range(len(toponames)):
589 alg.addvariable(
'MinET1', 0 * _et_conversion, bitId )
590 alg.addvariable(
'MinET2', 0 * _et_conversion, bitId )
591 alg.addvariable(
"DeltaRMin", d.minDR[bitId] * d.minDR[bitId] * _dr_conversion * _dr_conversion, bitId)
592 alg.addvariable(
"DeltaRMax", d.maxDR[bitId] * d.maxDR[bitId] * _dr_conversion * _dr_conversion, bitId)
594 tm.registerTopoAlgo(alg)
608 "algoname" :
"INVM_DPHI_eEMsm6",
615 "ocut1List" : [ 12, 15 ],
618 "ocut2List" : [ 12, 15 ],
625 for x
in eINVM_DPHIMap:
630 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
632 for bitId, ocut1Value
in enumerate(d.ocut1List):
633 toponames.append (
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi,
634 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sm" else "",
635 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sm" else ""))
636 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = d.algoname, inputs = inputList, outputs = toponames )
637 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
638 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
639 alg.addgeneric(
'MaxTob1', d.nleading1)
640 alg.addgeneric(
'MaxTob2', d.nleading2)
641 alg.addgeneric(
'NumResultBits', len(toponames))
642 for bitId
in range(len(toponames)):
643 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
644 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
645 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
646 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
647 alg.addvariable(
'MinDeltaPhi', d.minDphi * _phi_conversion, bitId)
648 alg.addvariable(
'MaxDeltaPhi', d.maxDphi * _phi_conversion, bitId)
650 tm.registerTopoAlgo(alg)
666 "algoname" :
"INVM_INVDPHI_eEMsl6",
673 "ocut1List" : [ 9, 12],
676 "ocut2List" : [ 9, 12 ],
682 for x
in eINVM_DPHIMap:
687 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
689 for bitId, ocut1Value
in enumerate(d.ocut1List):
690 toponames.append (
"%iINVM%i-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDphi, d.maxDphi,
691 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
692 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
693 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = d.algoname, inputs = inputList, outputs = toponames )
695 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
696 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
697 alg.addgeneric(
'MaxTob1', d.nleading1)
698 alg.addgeneric(
'MaxTob2', d.nleading2)
699 alg.addgeneric(
'NumResultBits', len(toponames))
700 for bitId
in range(len(toponames)):
701 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
702 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
703 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
704 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
705 alg.addvariable(
'MinDeltaPhi', d.minDphi * _phi_conversion, bitId)
706 alg.addvariable(
'MaxDeltaPhi', d.maxDphi * _phi_conversion, bitId)
708 tm.registerTopoAlgo(alg)
724 "algoname" :
"INVM_BOOSTDR_eEMsl6",
731 "ocut1List" : [ 9, 12 ],
734 "ocut2List" : [ 9, 12 ],
740 for x
in eINVM_DRMap:
745 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
747 for bitId, ocut1Value
in enumerate(d.ocut1List):
748 toponames.append (
"%iINVM%i-%iDR%i-%s%s%s%s-%s%s%s%s" % (d.minInvm, d.maxInvm, d.minDR, d.maxDR,
749 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
750 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
752 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
753 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
754 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
755 alg.addgeneric(
'MaxTob1', d.nleading1)
756 alg.addgeneric(
'MaxTob2', d.nleading2)
757 alg.addgeneric(
'NumResultBits', len(toponames))
758 for bitId
in range(len(toponames)):
759 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
760 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
761 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm * _et_conversion * _et_conversion, bitId)
762 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm * _et_conversion * _et_conversion, bitId)
763 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
764 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
766 tm.registerTopoAlgo(alg)
779 eINVM_Ranges_DRMap = [
781 "algoname" :
"INVM_BOOSTDR_Ranges_eEM12sl6",
788 "ocut1List" : [12,12],
791 "ocut2List" : [12,12],
797 for x
in eINVM_Ranges_DRMap:
802 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
804 for bitId, ocut1Value
in enumerate(d.ocut1List):
805 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],
806 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
807 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
809 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
810 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
811 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
812 alg.addgeneric(
'MaxTob1', d.nleading1)
813 alg.addgeneric(
'MaxTob2', d.nleading2)
814 alg.addgeneric(
'NumResultBits', len(toponames))
815 for bitId
in range(len(toponames)):
816 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
817 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
818 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
819 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
820 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
821 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
823 tm.registerTopoAlgo(alg)
837 eINVM_Ranges_Asymm_DRMap = [
839 "algoname" :
"INVM_BOOSTDR_Ranges_Asymm_eEMsl6",
846 "ocut1List" : [12,12],
855 for x
in eINVM_Ranges_Asymm_DRMap:
860 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
862 for bitId, ocut1Value
in enumerate(d.ocut1List):
863 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],
864 d.otype1,
str(ocut1Value) , d.olist1,
str(d.nleading1)
if d.olist1==
"sl" else "",
865 d.otype2,
str(d.ocut2List[bitId]) , d.olist2,
str(d.nleading2)
if d.olist2==
"sl" else ""))
867 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
868 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
869 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
870 alg.addgeneric(
'MaxTob1', d.nleading1)
871 alg.addgeneric(
'MaxTob2', d.nleading2)
872 alg.addgeneric(
'NumResultBits', len(toponames))
873 for bitId
in range(len(toponames)):
874 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1List[bitId]) * _et_conversion, bitId)
875 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype1, d.ocut2List[bitId]) * _et_conversion, bitId)
876 alg.addvariable(
'MinMSqr', d.minInvm[bitId] * d.minInvm[bitId] * _et_conversion * _et_conversion, bitId)
877 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId] * d.maxInvm[bitId] * _et_conversion * _et_conversion, bitId)
878 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
879 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
881 tm.registerTopoAlgo(alg)
886 INVM_DR_2MU5VFabMap = [
888 "algoname":
"INVM_DR_2MU5VFab",
893 "otype1" :
"MU5VFab",
897 for x
in INVM_DR_2MU5VFabMap:
904 for bitId
in range(len(d.minDR)):
905 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
906 d.minDR[bitId] , d.maxDR[bitId],
910 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
911 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
912 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
913 alg.addgeneric(
'NumResultBits', len(toponames))
914 for bitId
in range(len(toponames)):
915 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
916 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
917 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
918 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
919 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
920 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
921 tm.registerTopoAlgo(alg)
926 INVM_2MU3VFab_Map = [
928 "algoname":
"INVM_2MU3VFab",
931 "otype1" :
"MU3VFab",
935 for x
in INVM_2MU3VFab_Map:
942 for bitId
in range(len(d.maxInvm)):
943 toponames.append(
"%iINVM%i-%i%s" % ( d.minInvm, d.maxInvm[bitId],
947 alg = AlgConf.InvariantMassInclusive1( name = d.algoname, inputs = inputList, outputs = toponames)
948 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
949 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
950 alg.addgeneric(
'NumResultBits', len(toponames))
951 for bitId
in range(len(toponames)):
952 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
953 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
954 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
955 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
956 tm.registerTopoAlgo(alg)
961 invm_map = {
"algoname":
'INVM_eEMs6' ,
"ocutlist": [ 9, 15 ],
"minInvm": 1,
"maxInvm": 5,
"otype" :
"eEM",
"olist" :
"s",
962 "nleading" : 1,
"inputwidth": HW.eEmOutputWidthSort}
963 for x
in [ invm_map ]:
968 inputList = d.otype + d.olist
970 for ocut
in d.ocutlist:
971 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 "")
972 toponames.append(toponame)
973 alg = AlgConf.InvariantMassInclusive2( name = d.algoname, inputs = [inputList,
'eEMs'], outputs = toponames)
974 alg.addgeneric(
'InputWidth1', d.inputwidth)
975 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
976 alg.addgeneric(
'MaxTob1', d.nleading)
977 alg.addgeneric(
'MaxTob2', HW.eEmOutputWidthSort)
978 alg.addgeneric(
'NumResultBits', len(toponames))
979 for bitid, ocut
in enumerate(d.ocutlist):
981 alg.addvariable(
'MinET2', 0*_et_conversion, bitid)
982 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
983 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitid)
984 tm.registerTopoAlgo(alg)
989 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU3Vab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"},
990 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 80,
"olist2" :
"ab"},
991 {
"minDr": 0,
"maxDr": 4,
"otype1" :
"MU5VFab",
"otype2" :
"CjJ",
"ocut2": 90,
"olist2" :
"ab"},
998 toponame =
"%iDR%02d-%s-%s%s%s" % (d.minDr, d.maxDr, d.otype1, d.otype2,
str(d.ocut2), d.olist2)
999 log.debug(
"Define %s", toponame)
1000 inputList = [d.otype1, d.otype2 + d.olist2]
1001 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1002 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1003 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1004 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1005 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1006 alg.addgeneric(
'NumResultBits', 1)
1007 alg.addvariable(
'MinET1', 0*_et_conversion, 0)
1008 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1009 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1010 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1011 tm.registerTopoAlgo(alg)
1020 {
"minInvm": 2,
"maxInvm": 8,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1021 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1022 {
"minInvm": 8,
"maxInvm": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1023 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1024 {
"minInvm": 2,
"maxInvm": 9,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3Vab",},
1025 {
"minInvm": 8,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1026 {
"minInvm": 2,
"maxInvm": 9,
"mult": 2,
"otype1" :
"MU5VFab",
"otype2" :
"", },
1027 {
"minInvm": 7,
"maxInvm": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1028 {
"minInvm": 7,
"maxInvm": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1029 {
"minInvm": 7,
"maxInvm": 14,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2" :
"MU3VFab",},
1030 {
"minInvm": 7,
"maxInvm": 14,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2" :
"", },
1032 for x
in listofalgos:
1036 setattr (d, k, x[k])
1037 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1038 obj2 =
"-%s" % (d.otype2)
1039 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1040 log.debug(
"Define %s", toponame)
1041 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1042 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1043 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1045 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1046 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1048 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1049 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1050 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1051 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1052 alg.addgeneric(
'NumResultBits', 1)
1053 alg.addvariable(
'MinET1', 0*_et_conversion)
1054 alg.addvariable(
'MinET2', 0*_et_conversion)
1055 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1056 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1057 tm.registerTopoAlgo(alg)
1059 toponame =
"8INVM15-2CMU3Vab"
1060 log.debug(
"Define %s", toponame)
1061 inputList = [
'CMU3Vab']
1062 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame )
1063 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1064 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1065 alg.addgeneric(
'NumResultBits', 1)
1066 alg.addvariable(
'MinET1', 0*_et_conversion)
1067 alg.addvariable(
'MinET2', 0*_et_conversion)
1068 alg.addvariable(
'MinMSqr', 8*8*_et_conversion*_et_conversion)
1069 alg.addvariable(
'MaxMSqr', 15*15*_et_conversion*_et_conversion)
1070 tm.registerTopoAlgo(alg)
1073 {
"minInvm": 2,
"maxInvm": 8,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab"},
1079 setattr (d, k, x[k])
1080 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1081 obj2 =
"-%s" % (d.otype2)
1082 toponame =
"%iINVM%i-%s%s" % (d.minInvm, d.maxInvm, obj1,
"" if d.mult>1
else obj2)
1083 log.debug(
"Define %s", toponame)
1084 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1085 algoname = AlgConf.InvariantMassInclusive1
if (d.mult>1)
else AlgConf.InvariantMassInclusive2
1086 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1088 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1089 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1090 alg.addgeneric(
'RequireOneBarrel', d.onebarrel)
1092 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1093 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1094 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1095 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1096 alg.addgeneric(
'NumResultBits', 1)
1097 alg.addvariable(
'MinET1', 0*_et_conversion)
1098 alg.addvariable(
'MinET2', 0*_et_conversion)
1099 alg.addvariable(
'MinMSqr', d.minInvm * d.minInvm *_et_conversion*_et_conversion)
1100 alg.addvariable(
'MaxMSqr', d.maxInvm * d.maxInvm *_et_conversion*_et_conversion)
1101 tm.registerTopoAlgo(alg)
1105 {
"minDr": 0,
"maxDr": 24,
"mult": 2,
"otype1" :
"CMU3Vab",
"otype2" :
"", },
1106 {
"minDr": 1,
"maxDr": 24,
"mult": 1,
"otype1" :
"CMU3Vab",
"otype2" :
"MU3Vab", },
1112 setattr (d, k, x[k])
1113 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
1114 obj2 =
"-%s" % (d.otype2)
1115 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
1116 log.debug(
"Define %s", toponame)
1117 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
1118 algoname = AlgConf.DeltaRSqrIncl1
if (d.mult>1)
else AlgConf.DeltaRSqrIncl2
1119 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1121 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1122 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1124 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
1125 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1126 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
1127 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1128 alg.addgeneric(
'NumResultBits', 1)
1129 alg.addvariable(
'MinET1', 0*_et_conversion)
1130 alg.addvariable(
'MinET2', 0*_et_conversion)
1131 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr *_dr_conversion*_dr_conversion)
1132 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr *_dr_conversion*_dr_conversion)
1133 tm.registerTopoAlgo(alg)
1137 toponame =
'100RATIO-0MATCH-eTAU40si2-eEMall'
1138 alg = AlgConf.RatioMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1139 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1140 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1141 alg.addgeneric(
'MaxTob1', 2)
1142 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1143 alg.addgeneric(
'NumResultBits', 1)
1145 alg.addvariable(
'MinET2', 0*_et_conversion)
1146 alg.addvariable(
'Ratio', 100, 0)
1147 tm.registerTopoAlgo(alg)
1150 toponame =
'NOT-0MATCH-eTAU40si1-eEMall'
1151 alg = AlgConf.NotMatch( name = toponame, inputs = [
'eTAUs',
'eEMall'], outputs = [ toponame ] )
1152 alg.addgeneric(
'InputWidth1', HW.eTauOutputWidthSort)
1153 alg.addgeneric(
'InputWidth2', HW.eEmInputWidth)
1154 alg.addgeneric(
'MaxTob1', 1)
1155 alg.addgeneric(
'MaxTob2', HW.eEmInputWidth)
1156 alg.addgeneric(
'NumResultBits', 1)
1158 alg.addvariable(
'MinET2', 0*_et_conversion)
1159 alg.addvariable(
'EtaMin1', 0*_eta_conversion)
1160 alg.addvariable(
'EtaMax1', 49*_eta_conversion)
1161 alg.addvariable(
'EtaMin2', 0*_eta_conversion)
1162 alg.addvariable(
'EtaMax2', 49*_eta_conversion)
1163 alg.addvariable(
'DRCut', 0)
1164 tm.registerTopoAlgo(alg)
1167 xemap = [{
"etcut": 0,
"Threlist": [ 40, 50, 55, 60, 65, 75 ]}]
1172 setattr (d, k, x[k])
1173 log.debug(
"Define %s", toponame)
1174 inputList = [
'jXENoSort_1BC',
'AjJall_1BC']
1176 for minxe
in d.Threlist:
1177 toponames.append(
"KF-jXE%s-AjJall" % (minxe))
1178 alg = AlgConf.KalmanMETCorrection( name =
"KF-jXE-AjJall", inputs = inputList, outputs = toponames )
1179 alg.addgeneric(
'InputWidth', HW.jJetInputWidth)
1180 alg.addgeneric(
'NumResultBits', len(toponames))
1181 for key, value
in KFMETweightParameters.items():
1185 alg.addvariable(key, value)
1186 alg.addvariable(
'MinET', 0)
1187 for bitid,minxe
in enumerate(d.Threlist):
1188 alg.addvariable(
'KFXE',
str(minxe*_et_conversion), bitid)
1189 tm.registerTopoAlgo(alg)
1195 {
"otype" :
"LATE-MU",
"ocut" : 10,
"inputwidth": HW.NumberOfDelayedMuons},
1201 setattr (d, k, x[k])
1203 toponame =
"%s%ss1" % ( d.otype,
str(d.ocut) )
1205 log.debug(
"Define %s", toponame)
1209 alg = AlgConf.EtCut( name = toponame, inputs = inputList, outputs = toponame )
1210 alg.addgeneric(
'InputWidth', d.inputwidth)
1211 alg.addgeneric(
'MaxTob', 1)
1212 alg.addgeneric(
'NumResultBits', 1)
1213 alg.addvariable(
'MinET',
str(d.ocut*_et_conversion))
1214 tm.registerTopoAlgo(alg)
1219 {
"itemNameMinHT": 111,
"minHT": 166,
"otype" :
"CjJ",
"ocut" : 40,
"olist" :
"ab",
"nleading" : HW.jJetOutputWidthSelect,
"inputwidth": HW.jJetOutputWidthSelect,
"oeta" : 26},
1225 setattr (d, k, x[k])
1226 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))
1227 log.debug(
"Define %s", toponame)
1228 inputList = d.otype + d.olist
1229 alg = AlgConf.SimpleCone( name = toponame, inputs = inputList, outputs = [toponame] )
1230 alg.addgeneric(
'InputWidth', d.inputwidth)
1231 alg.addgeneric(
'NumResultBits', 1)
1232 alg.addvariable(
'MinET', d.ocut*_et_conversion)
1233 alg.addvariable(
'MinSumET', d.minHT*_et_conversion)
1234 alg.addvariable(
'MaxRSqr', 10*10*_dr_conversion*_dr_conversion)
1235 tm.registerTopoAlgo(alg)
1239 {
"minInvm" : 0,
"maxInvm": 9,
"otype" :
"eEM",
"ocut1" : 9,
"olist" :
"ab",
"inputwidth": HW.eEmOutputWidthSelect,
"ocut2" : 0},
1245 setattr (d, k, x[k])
1246 inputList = d.otype + d.olist
1247 toponame =
"%iINVM%i-%s%s%s-%s%s" % (d.minInvm, d.maxInvm,
1248 d.otype,
str(d.ocut1) , d.olist,
1250 alg = AlgConf.InvariantMassInclusive1( name = toponame, inputs = inputList, outputs = toponame)
1251 alg.addgeneric(
'InputWidth', d.inputwidth)
1252 alg.addgeneric(
'MaxTob', HW.eEmOutputWidthSelect)
1253 alg.addgeneric(
'NumResultBits', 1)
1256 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
1257 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
1258 tm.registerTopoAlgo(alg)
1263 {
"minDr": 0,
"maxDr": 3,
"otype1" :
"eEM" ,
"ocut1": 9,
"olist1" :
"ab",
"otype2" :
"CjJ",
"ocut2": 40,
"olist2" :
"ab"}
1269 setattr (d, k, x[k])
1270 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)
1271 log.debug(
"Define %s", toponame)
1272 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
1273 alg = AlgConf.DeltaRSqrIncl2( name = toponame, inputs = inputList, outputs = [ toponame ])
1274 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
1275 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSelect)
1276 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSelect)
1277 alg.addgeneric(
'MaxTob2', HW.jJetOutputWidthSelect)
1278 alg.addgeneric(
'NumResultBits', 1)
1279 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1280 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1281 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1282 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1283 tm.registerTopoAlgo(alg)
1289 {
"minDphi": 27,
"maxDphi": 32,
"otype" :
"eEM",
"ocut1" : 0,
"olist" :
"s",
"nleading1" : 1,
"inputwidth1": HW.eEmOutputWidthSort,
"ocut2" : 0,
"nleading2": 6},
1295 setattr (d, k, x[k])
1296 toponame =
"%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.minDphi, d.maxDphi,
1297 d.otype,
str(d.ocut1)
if d.ocut1 > 0
else "", d.olist,
str(d.nleading1)
if d.olist==
"s" else "",
1298 d.otype,
str(d.ocut2)
if d.ocut2 > 0
else "", d.olist,
str(d.nleading2)
if d.olist==
"s" else "")
1299 log.debug(
"Define %s", toponame)
1300 inputList = d.otype + d.olist
1301 alg = AlgConf.DeltaPhiIncl1( name = toponame, inputs = inputList, outputs = toponame )
1302 alg.addgeneric(
'InputWidth', d.inputwidth1)
1303 alg.addgeneric(
'MaxTob', d.nleading2)
1304 alg.addgeneric(
'NumResultBits', 1)
1307 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion, 0)
1308 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, 0)
1309 tm.registerTopoAlgo(alg)
1313 {
"minDr": 0,
"maxDr": 28,
"otype1" :
"eTAU" ,
"ocut1": 30,
"olist1" :
"abm",
1314 "nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
"otype2" :
"eTAU",
"ocut2": 20,
"olist2" :
"abm",
1315 "nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect},
1321 setattr (d, k, x[k])
1322 obj1 =
"%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1323 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1324 toponame =
"%iDR%i-%s%s" % (d.minDr, d.maxDr, obj1, obj2)
1325 log.debug(
"Define %s", toponame)
1326 inputList = [d.otype1 + d.olist1]
if d.otype1==d.otype2
else [d.otype1 + d.olist1, d.otype2 + d.olist2]
1327 algoname = AlgConf.DeltaRSqrIncl1
if d.otype1==d.otype2
else AlgConf.DeltaRSqrIncl2
1328 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
1329 if d.otype1==d.otype2:
1330 alg.addgeneric(
'InputWidth', d.inputwidth1)
1331 alg.addgeneric(
'MaxTob', d.nleading1)
1333 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1334 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1335 alg.addgeneric(
'MaxTob1', d.nleading1)
1336 alg.addgeneric(
'MaxTob2', d.nleading2)
1337 alg.addgeneric(
'NumResultBits', 1)
1338 if d.otype1==d.otype2:
1341 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
1342 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
1344 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , 0)
1345 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , 0)
1346 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion, 0)
1347 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion, 0)
1348 tm.registerTopoAlgo(alg)
1361 DISAMB_DR_jJ_eTau_eTau_Map = [
1363 "algoname":
"2DISAMB_jJ55ab_DR_eTAU_eTAU",
1370 "nleading1": HW.eTauOutputWidthSelect,
1371 "inputwidth1": HW.eTauOutputWidthSelect,
1374 "nleading2": HW.eTauOutputWidthSelect,
1375 "inputwidth2": HW.eTauOutputWidthSelect,
1379 "nleading3": HW.jJetOutputWidthSelect,
1380 "inputwidth3": HW.jJetOutputWidthSelect,
1384 "algoname":
"2DISAMB_jJ50ab_DR_eTAU_eTAU",
1391 "nleading1": HW.eTauOutputWidthSelect,
1392 "inputwidth1": HW.eTauOutputWidthSelect,
1395 "nleading2": HW.eTauOutputWidthSelect,
1396 "inputwidth2": HW.eTauOutputWidthSelect,
1400 "nleading3": HW.jJetOutputWidthSelect,
1401 "inputwidth3": HW.jJetOutputWidthSelect,
1405 "algoname":
"2DISAMB_jJ40ab_DR_eTAU_eTAU",
1412 "nleading1": HW.eTauOutputWidthSelect,
1413 "inputwidth1": HW.eTauOutputWidthSelect,
1416 "nleading2": HW.eTauOutputWidthSelect,
1417 "inputwidth2": HW.eTauOutputWidthSelect,
1421 "nleading3": HW.jJetOutputWidthSelect,
1422 "inputwidth3": HW.jJetOutputWidthSelect,
1426 "algoname":
"2DISAMB_jJ30ab_DR_eTAU_eTAU",
1433 "nleading1": HW.eTauOutputWidthSelect,
1434 "inputwidth1": HW.eTauOutputWidthSelect,
1437 "nleading2": HW.eTauOutputWidthSelect,
1438 "inputwidth2": HW.eTauOutputWidthSelect,
1442 "nleading3": HW.jJetOutputWidthSelect,
1443 "inputwidth3": HW.jJetOutputWidthSelect,
1447 for x
in DISAMB_DR_jJ_eTau_eTau_Map:
1452 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1454 for bitId
in range(len(d.maxDR)):
1455 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1456 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1457 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1458 toponames.append(
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "",
1459 obj3, d.minDR, d.maxDR[bitId], obj1, obj2))
1461 alg = AlgConf.DisambiguationDRIncl3( name = d.algoname, inputs = inputList, outputs = toponames )
1462 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1463 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1464 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1465 alg.addgeneric(
'MaxTob1', d.nleading1)
1466 alg.addgeneric(
'MaxTob2', d.nleading2)
1467 alg.addgeneric(
'MaxTob3', d.nleading3)
1468 alg.addgeneric(
'NumResultBits', len(toponames))
1470 for bitId
in range(len(toponames)):
1471 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1472 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1473 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, bitId)
1474 alg.addvariable(
'DisambDRSqrMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1475 alg.addvariable(
'DisambDRSqrMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1476 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, bitId)
1478 tm.registerTopoAlgo(alg)
1484 DR_eTau30_eTau20_Map = [
1486 "algoname":
"DR_eTAU30ab_eTAU20ab",
1494 "inputwidth": HW.eTauOutputWidthSelect,
1498 for x
in DR_eTau30_eTau20_Map:
1503 inputList = [d.otype1 + d.olist1]
1505 for bitId
in range(len(d.maxDR)):
1506 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1507 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1508 toponames.append(
"%dDR%d%s%s" % ( d.minDR, d.maxDR[bitId], obj1, obj2))
1510 alg = AlgConf.DeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames )
1512 alg.addgeneric(
'InputWidth', d.inputwidth)
1513 alg.addgeneric(
'MaxTob', HW.eTauOutputWidthSelect)
1514 alg.addgeneric(
'NumResultBits', len(toponames) )
1516 for bitId
in range(len(toponames)):
1517 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitId)
1518 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, bitId)
1519 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1520 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
1523 tm.registerTopoAlgo(alg)
1528 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"abm",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1529 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"abm",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1530 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1531 "drcutmin": 0,
"drcutmax": 28},
1533 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1534 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1535 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1536 "drcutmin": 4 ,
"drcutmax": 28},
1538 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1539 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1540 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1541 "drcutmin": 4 ,
"drcutmax": 32},
1543 "otype1" :
"eTAU",
"ocut1": 30,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1544 "otype2" :
"eTAU",
"ocut2": 20,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1545 "otype3" :
"jJ" ,
"ocut3": 55,
"olist3":
"ab" ,
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1546 "drcutmin": 10 ,
"drcutmax": 32},
1552 setattr (d, k, x[k])
1553 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1554 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1555 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1556 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1557 log.debug(
"Define %s", toponame)
1558 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1559 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1560 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1561 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1562 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1563 alg.addgeneric(
'MaxTob1', d.nleading1)
1564 alg.addgeneric(
'MaxTob2', d.nleading2)
1565 alg.addgeneric(
'MaxTob3', d.nleading3)
1566 alg.addgeneric(
'NumResultBits', 1)
1567 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1568 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1569 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1570 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1571 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1572 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1573 tm.registerTopoAlgo(alg)
1578 {
"minDeta": 0,
"maxDeta": 20,
"otype" :
"jJ",
"ocut1" : 90,
"olist" :
"s",
1579 "nleading1" : 1,
"inputwidth1": HW.jJetOutputWidthSort,
"ocut2" : 0,
"nleading2": 2},
1580 {
"minDeta": 0,
"maxDeta" : 24,
"otype" :
"eTAU" ,
"olist" :
"s",
"inputwidth1": HW.eTauOutputWidthSort,
1581 "ocut1" : 30,
"nleading1": 2,
1582 "ocut2" : 12,
"nleading2": 2},
1588 setattr (d, k, x[k])
1589 toponame =
"%iDETA%i-%s%s%s%s-%s%s%s%s" % (d.minDeta, d.maxDeta,
1590 d.otype, d.ocut1
if d.ocut1 > 0
else "", d.olist, d.nleading1,
1591 d.otype, d.ocut2
if d.ocut2 > 0
else "", d.olist, d.nleading2)
1592 log.debug(
"Define %s", toponame)
1593 inputList = d.otype + d.olist
1594 alg = AlgConf.DeltaEtaIncl1( name = toponame, inputs = inputList, outputs = toponame )
1595 alg.addgeneric(
'InputWidth', d.inputwidth1)
1596 alg.addgeneric(
'MaxTob', d.nleading2)
1597 alg.addgeneric(
'NumResultBits', 1)
1598 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype, d.ocut1)*_et_conversion, 0)
1599 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype, d.ocut2)*_et_conversion, 0)
1600 alg.addvariable(
'MinDeltaEta', d.minDeta*_eta_conversion, 0)
1601 alg.addvariable(
'MaxDeltaEta', d.maxDeta*_eta_conversion, 0)
1602 tm.registerTopoAlgo(alg)
1605 toponame =
"0DPHI10-jXE40delay-jJ40s"
1606 alg = AlgConf.DeltaPhiIncl2( name = toponame, inputs = [
'jXEs',
'jJs'], outputs = [ toponame ])
1607 alg.addgeneric(
'NumResultBits', 1)
1608 alg.addgeneric(
'Delay1', 1)
1609 alg.addgeneric(
'Delay2', 0)
1610 alg.addgeneric(
'InputWidth1', HW.metOutputWidth)
1611 alg.addgeneric(
'InputWidth2', HW.jJetOutputWidthSort)
1612 alg.addgeneric(
'MaxTob1', 1)
1613 alg.addgeneric(
'MaxTob2', 6)
1614 alg.addvariable(
'MinET1', 40*_et_conversion)
1615 alg.addvariable(
'MinET2', 40*_et_conversion)
1616 alg.addvariable(
'MinDeltaPhi', 0*_phi_conversion)
1617 alg.addvariable(
'MaxDeltaPhi', 10*_phi_conversion)
1618 tm.registerTopoAlgo(alg)
1623 "otype1" :
"eTAU",
"ocut1": 20,
"olist1":
"ab",
"nleading1": HW.eTauOutputWidthSelect,
"inputwidth1": HW.eTauOutputWidthSelect,
1624 "otype2" :
"eTAU",
"ocut2": 12,
"olist2":
"ab",
"nleading2": HW.eTauOutputWidthSelect,
"inputwidth2": HW.eTauOutputWidthSelect,
1625 "otype3" :
"jJ",
"ocut3": 40,
"olist3":
"ab",
"nleading3": HW.jJetOutputWidthSelect,
"inputwidth3": HW.jJetOutputWidthSelect,
1626 "drcutmin": 0,
"drcutmax": 10},
1632 setattr (d, k, x[k])
1633 obj1 =
"-%s%s%s" % (d.otype1,
str(d.ocut1), d.olist1)
1634 obj2 =
"-%s%s%s" % (d.otype2,
str(d.ocut2), d.olist2)
1635 obj3 =
"%s%s%s" % (d.otype3,
str(d.ocut3), d.olist3)
1636 toponame =
"%sDISAMB-%s-%dDR%d%s%s" % (
str(d.disamb)
if d.disamb>0
else "", obj3, d.drcutmin, d.drcutmax, obj1, obj2)
1637 log.debug(
"Define %s", toponame)
1638 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2, d.otype3 + d.olist3]
1639 alg = AlgConf.DisambiguationDRIncl3( name = toponame, inputs = inputList, outputs = [ toponame ])
1640 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1641 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1642 alg.addgeneric(
'InputWidth3', d.inputwidth3)
1643 alg.addgeneric(
'MaxTob1', d.nleading1)
1644 alg.addgeneric(
'MaxTob2', d.nleading2)
1645 alg.addgeneric(
'MaxTob3', d.nleading3)
1646 alg.addgeneric(
'NumResultBits', 1)
1647 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, 0)
1648 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion, 0)
1649 alg.addvariable(
'MinET3',
get_threshold_cut(d.otype3, d.ocut3)*_et_conversion, 0)
1650 alg.addvariable(
'DisambDRSqrMin', d.drcutmin*d.drcutmin*_dr_conversion*_dr_conversion, 0)
1651 alg.addvariable(
'DisambDRSqrMax', d.drcutmax*d.drcutmax*_dr_conversion*_dr_conversion, 0)
1652 alg.addvariable(
'DisambDRSqr', d.disamb*d.disamb*_dr_conversion*_dr_conversion, 0)
1653 tm.registerTopoAlgo(alg)
1657 {
"itemNameMinInvm": 400,
"minInvm": 640 ,
"minDphi": 0,
"maxDphiList": [26, 24, 22, 20],
1658 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
1659 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
1661 for x
in NFFDphimap:
1665 setattr (d, k, x[k])
1666 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1668 for maxDphi
in d.maxDphiList:
1669 toponames.append (
"%iINVM-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.itemNameMinInvm, d.minDphi, maxDphi,
1670 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1671 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
1672 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'jINVM_DPHI', inputs = inputList, outputs = toponames)
1673 alg.addgeneric(
'InputWidth1', d.inputwidth)
1674 alg.addgeneric(
'InputWidth2', d.inputwidth)
1675 alg.addgeneric(
'MaxTob1', d.nleading1)
1676 alg.addgeneric(
'MaxTob2', d.nleading2)
1677 alg.addgeneric(
'NumResultBits', len(toponames))
1678 for bitid,maxDphi
in enumerate(d.maxDphiList):
1679 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
1680 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
1681 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm *_et_conversion*_et_conversion , bitid)
1682 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
1683 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion , bitid)
1684 alg.addvariable(
'MaxDeltaPhi', maxDphi*_phi_conversion, bitid)
1685 tm.registerTopoAlgo(alg)
1690 {
"itemNameMinInvm": 400,
"minInvm": 640 ,
"minDphi": 0,
"maxDphiList": [26, 24, 22, 20],
1691 "otype1" :
"jJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
1692 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
1694 for x
in NFFDphimap:
1698 setattr (d, k, x[k])
1699 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1701 for maxDphi
in d.maxDphiList:
1702 toponames.append (
"%iINVM-%iDPHI%i-%s%s%s%s-%s%s%s%s" % (d.itemNameMinInvm, d.minDphi, maxDphi,
1703 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1704 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
1705 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'jINVM_DPHI_NFF', inputs = inputList, outputs = toponames)
1706 alg.addgeneric(
'InputWidth1', d.inputwidth)
1707 alg.addgeneric(
'InputWidth2', d.inputwidth)
1708 alg.addgeneric(
'MaxTob1', d.nleading1)
1709 alg.addgeneric(
'MaxTob2', d.nleading2)
1710 alg.addgeneric(
'NumResultBits', len(toponames))
1711 for bitid,maxDphi
in enumerate(d.maxDphiList):
1712 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
1713 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
1714 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm *_et_conversion*_et_conversion , bitid)
1715 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
1716 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion , bitid)
1717 alg.addvariable(
'MaxDeltaPhi', maxDphi*_phi_conversion, bitid)
1718 tm.registerTopoAlgo(alg)
1723 {
"itemNameMinInvm": 400,
"minInvm": 640,
"otype1" :
"AjJ",
"ocut1": 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth1": HW.jJetOutputWidthSort,
1724 "otype2" :
"AjJ",
"ocut2": 50,
"olist2" :
"s",
"nleading2" : 6,
"inputwidth2": HW.jJetOutputWidthSort,
"applyEtaCut":1,
1725 "minEta1": 0 ,
"maxEta1": 32 ,
"minEta2": 30 ,
"maxEta2": 49 , },
1731 setattr (d, k, x[k])
1732 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)
1733 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)
1734 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist2]
1735 toponame =
"%iINVM-%s%s" % (d.itemNameMinInvm, obj1, obj2)
1736 alg = AlgConf.InvariantMassInclusive2( name = toponame, inputs = inputList, outputs = toponame)
1737 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1738 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1739 alg.addgeneric(
'MaxTob1', d.nleading1)
1740 alg.addgeneric(
'MaxTob2', d.nleading2)
1741 alg.addgeneric(
'NumResultBits', 1)
1742 if (d.applyEtaCut>0):
1743 alg.addgeneric(
'ApplyEtaCut', d.applyEtaCut)
1746 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion )
1747 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold )
1748 if (d.applyEtaCut>0):
1749 alg.addvariable(
'MinEta1', d.minEta1*_eta_conversion )
1750 alg.addvariable(
'MaxEta1', d.maxEta1*_eta_conversion )
1751 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion )
1752 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion )
1753 tm.registerTopoAlgo(alg)
1757 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
1758 "otype1" :
"AjJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
1759 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
1765 setattr (d, k, x[k])
1766 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1768 for minInvm
in d.itemNameMinInvmList:
1769 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
1770 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1771 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
1772 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM', inputs = inputList, outputs = toponames)
1773 alg.addgeneric(
'InputWidth1', d.inputwidth)
1774 alg.addgeneric(
'InputWidth2', d.inputwidth)
1775 alg.addgeneric(
'MaxTob1', d.nleading1)
1776 alg.addgeneric(
'MaxTob2', d.nleading2)
1777 alg.addgeneric(
'NumResultBits', len(toponames))
1778 for bitid,minInvm
in enumerate(d.minInvmList):
1779 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
1780 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
1781 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
1782 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
1783 tm.registerTopoAlgo(alg)
1787 {
"itemNameMinInvmList": [300, 400, 500, 700],
"minInvmList": [480, 640, 800, 1100] ,
1788 "otype1" :
"jJ",
"ocut1" : 60,
"olist1" :
"s",
"nleading1" : 6,
"inputwidth": HW.jJetOutputWidthSort,
1789 "otype2" :
"AjJ",
"ocut2" : 50,
"olist2" :
"s",
"nleading2" : 6 }
1795 setattr (d, k, x[k])
1796 inputList = [d.otype1 + d.olist1, d.otype2 + d.olist1]
1798 for minInvm
in d.itemNameMinInvmList:
1799 toponames.append (
"%iINVM-%s%s%s%s-%s%s%s%s" % (minInvm,
1800 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1801 d.otype2,
str(d.ocut2) , d.olist2,
str(d.nleading2)
if d.olist2==
"s" else ""))
1802 alg = AlgConf.InvariantMassInclusive2( name =
'jINVM_NFF', inputs = inputList, outputs = toponames)
1803 alg.addgeneric(
'InputWidth1', d.inputwidth)
1804 alg.addgeneric(
'InputWidth2', d.inputwidth)
1805 alg.addgeneric(
'MaxTob1', d.nleading1)
1806 alg.addgeneric(
'MaxTob2', d.nleading2)
1807 alg.addgeneric(
'NumResultBits', len(toponames))
1808 for bitid,minInvm
in enumerate(d.minInvmList):
1809 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion , bitid)
1810 alg.addvariable(
'MinET2',
get_threshold_cut(d.otype2, d.ocut2)*_et_conversion , bitid)
1811 alg.addvariable(
'MinMSqr', minInvm*minInvm*_et_conversion*_et_conversion , bitid)
1812 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold , bitid)
1813 tm.registerTopoAlgo(alg)
1820 toponame =
"0INVM10-3MU3Vab"
1821 log.debug(
"Define %s", toponame)
1822 inputList =
'MU3Vab'
1823 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
1824 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1825 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1826 alg.addgeneric(
'NumResultBits', 1)
1827 alg.addvariable(
'MinET1', 0*_et_conversion)
1828 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
1829 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
1830 tm.registerTopoAlgo(alg)
1832 toponame =
"0INVM10-3MU3VFab"
1833 log.debug(
"Define %s", toponame)
1834 inputList =
'MU3VFab'
1835 alg = AlgConf.InvariantMassThreeTOBsIncl1( name = toponame, inputs = inputList, outputs = toponame )
1836 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1837 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1838 alg.addgeneric(
'NumResultBits', 1)
1839 alg.addvariable(
'MinET1', 0*_et_conversion)
1840 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
1841 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
1842 tm.registerTopoAlgo(alg)
1845 toponame =
"0INVM10C-3MU3Vab"
1846 log.debug(
"Define %s", toponame)
1847 inputList =
'MU3Vab'
1848 alg = AlgConf.InvariantMassThreeTOBsIncl1Charge( name = toponame, inputs = inputList, outputs = toponame )
1849 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
1850 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
1851 alg.addgeneric(
'NumResultBits', 1)
1852 alg.addvariable(
'MinET1', 0*_et_conversion)
1853 alg.addvariable(
'MinMSqr', 0*_et_conversion*_et_conversion)
1854 alg.addvariable(
'MaxMSqr', 10*10*_et_conversion*_et_conversion)
1855 tm.registerTopoAlgo(alg)
1871 INVM_DR_eEM_MU_Map = [{
1872 "algoname":
"INVM_DR_eEM_MU",
1881 "olist2": [
"Fab",
"VFab"],
1883 "ocut2Offset" : [3,0]
1887 for x
in INVM_DR_eEM_MU_Map:
1892 inputList = [d.otype1 + d.olist1, d.otype2 +
str(d.ocut2) + d.olist2[1] ]
1894 for bitId
in range(len(d.ocut1)):
1895 obj1 =
"-%s%s%s" % (d.otype1,
str( d.ocut1[bitId] ) , d.olist1)
1896 obj2 =
"-%s%s%s" % (d.otype2,
str( d.ocut2 + d.ocut2Offset[bitId] ) , d.olist2[bitId])
1897 toponames.append(
"%dINVM%d-%dDR%d%s%s" % ( d.minInvm, d.maxInvm, d.minDR, d.maxDR, obj1, obj2))
1899 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl2( name = d.algoname, inputs = inputList, outputs = toponames )
1901 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSelect)
1902 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
1903 alg.addgeneric(
'MaxTob1', HW.eEmOutputWidthSort)
1904 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
1905 alg.addgeneric(
'ApplyEtaCut', 1)
1907 alg.addgeneric(
'NumResultBits', len(toponames) )
1909 for bitId
in range(len(toponames)):
1910 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1[bitId])*_et_conversion, bitId)
1911 alg.addvariable(
'MinET2', (d.ocut2 + d.ocut2Offset[bitId])*_et_conversion, bitId)
1912 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
1913 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
1914 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitId)
1915 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitId)
1916 alg.addvariable(
'MinEta2', 0*_eta_conversion, bitId)
1917 alg.addvariable(
'MaxEta2', 49*_eta_conversion, bitId)
1918 alg.addvariable(
'DeltaRMin', d.minDR*d.minDR*_dr_conversion*_dr_conversion, bitId)
1919 alg.addvariable(
'DeltaRMax', d.maxDR*d.maxDR*_dr_conversion*_dr_conversion, bitId)
1922 tm.registerTopoAlgo(alg)
1942 {
"minInvm": 60 ,
"minDphiList": [4, 25],
"maxDphi": 32,
"minEta2": 25,
"maxEta2": 49,
1943 "inputwidth1": HW.eEmOutputWidthSelect,
"otype1" :
"eEM",
"ocut1" : 18,
"olist1" :
"abm",
1944 "nleading1" : HW.eEmOutputWidthSelect,
"inputwidth2": HW.jEmOutputWidthSort,
"ocut2" : 20,
"nleading2" : 6 }
1946 for x
in ZAFBDphimap:
1950 setattr (d, k, x[k])
1951 inputList = [d.otype1 + d.olist1,
'jEMs25ETA49']
1953 for minDphi
in d.minDphiList:
1954 toponames.append (
"%iINVM-%02dDPHI%i-%s%s%s%s-jEM%ss%s%iETA%i" % (d.minInvm, minDphi, d.maxDphi,
1955 d.otype1,
str(d.ocut1) , d.olist1,
str(d.nleading1)
if d.olist1==
"s" else "",
1956 str(d.ocut2) ,
str(d.nleading2) , d.minEta2, d.maxEta2))
1957 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name =
'ZAFB_DPHI', inputs = inputList, outputs = toponames)
1958 alg.addgeneric(
'InputWidth1', d.inputwidth1)
1959 alg.addgeneric(
'InputWidth2', d.inputwidth2)
1960 alg.addgeneric(
'MaxTob1', d.nleading1)
1961 alg.addgeneric(
'MaxTob2', d.nleading2)
1962 alg.addgeneric(
'NumResultBits', len(toponames))
1963 alg.addgeneric(
'ApplyEtaCut', 1)
1964 for bitid,minDphi
in enumerate(d.minDphiList):
1965 alg.addvariable(
'MinET1',
get_threshold_cut(d.otype1, d.ocut1)*_et_conversion, bitid)
1966 alg.addvariable(
'MinET2',
get_threshold_cut(
'jEM', d.ocut2)*_et_conversion, bitid)
1967 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitid)
1968 alg.addvariable(
'MaxMSqr', _no_m_upper_threshold, bitid)
1969 alg.addvariable(
'MinEta1', 0*_eta_conversion, bitid)
1970 alg.addvariable(
'MaxEta1', 49*_eta_conversion, bitid)
1971 alg.addvariable(
'MinEta2', d.minEta2*_eta_conversion, bitid)
1972 alg.addvariable(
'MaxEta2', d.maxEta2*_eta_conversion, bitid)
1973 alg.addvariable(
'MinDeltaPhi', minDphi*_phi_conversion, bitid)
1974 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion, bitid)
1975 tm.registerTopoAlgo(alg)
1979 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"s",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
1980 {
"minInvm": 0,
"maxInvm": 70,
"minDphi": 27,
"maxDphi": 32,
"otype":
"eEM",
"olist":
"sl",
"ocut1":9,
"nleading1":1,
"ocut2":9,
"nleading2":6,},
1982 for x
in listofalgos:
1986 setattr (d, k, x[k])
1987 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))
1988 log.debug(
"Define %s", toponame)
1989 inputList = [d.otype + d.olist, d.otype + d.olist]
1990 alg = AlgConf.InvariantMassDeltaPhiInclusive2( name = toponame, inputs = inputList, outputs = toponame )
1991 alg.addgeneric(
'InputWidth1', HW.eEmOutputWidthSort)
1992 alg.addgeneric(
'InputWidth2', HW.eEmOutputWidthSort)
1993 alg.addgeneric(
'MaxTob1', d.nleading1)
1994 alg.addgeneric(
'MaxTob2', d.nleading2)
1995 alg.addgeneric(
'NumResultBits', 1)
1998 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
1999 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2000 alg.addgeneric(
'ApplyEtaCut', 1)
2001 alg.addvariable(
'MinEta1', 0*_eta_conversion)
2002 alg.addvariable(
'MaxEta1',49*_eta_conversion)
2003 alg.addvariable(
'MinEta2', 0*_eta_conversion)
2004 alg.addvariable(
'MaxEta2',49*_eta_conversion)
2005 alg.addvariable(
'MinDeltaPhi', d.minDphi*_phi_conversion)
2006 alg.addvariable(
'MaxDeltaPhi', d.maxDphi*_phi_conversion)
2007 tm.registerTopoAlgo(alg)
2013 INVM_DR_2MU3Vab_Map = [
2015 "algoname":
"7INVM22_DR_2MU3Vab",
2020 "otype1" :
"MU3Vab",
2024 for x
in INVM_DR_2MU3Vab_Map:
2029 inputList = d.otype1
2031 for bitId
in range(len(d.minDR)):
2032 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm, d.maxInvm,
2033 d.minDR[bitId] , d.maxDR[bitId],
2037 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2038 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2039 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2040 alg.addgeneric(
'NumResultBits', len(toponames))
2041 for bitId
in range(len(toponames)):
2042 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2043 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2044 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion, bitId)
2045 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion, bitId)
2046 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2047 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2048 tm.registerTopoAlgo(alg)
2056 INVM_DR_2MU3VFab_Map = [
2058 "algoname":
"INVM_DR_2MU3VFab",
2060 "maxInvm" : [9,11,22],
2063 "otype1" :
"MU3VFab",
2067 for x
in INVM_DR_2MU3VFab_Map:
2072 inputList = d.otype1
2074 for bitId
in range(len(d.minDR)):
2075 toponames.append(
"%iINVM%i-%iDR%i-%i%s" % ( d.minInvm[bitId], d.maxInvm[bitId],
2076 d.minDR[bitId] , d.maxDR[bitId],
2080 alg = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1( name = d.algoname, inputs = inputList, outputs = toponames)
2081 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2082 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2083 alg.addgeneric(
'NumResultBits', len(toponames))
2084 for bitId
in range(len(toponames)):
2085 alg.addvariable(
'MinET1', 0*_et_conversion, bitId)
2086 alg.addvariable(
'MinET2', 0*_et_conversion, bitId)
2087 alg.addvariable(
'MinMSqr', d.minInvm[bitId]*d.minInvm[bitId]*_et_conversion*_et_conversion, bitId)
2088 alg.addvariable(
'MaxMSqr', d.maxInvm[bitId]*d.maxInvm[bitId]*_et_conversion*_et_conversion, bitId)
2089 alg.addvariable(
'DeltaRMin', d.minDR[bitId]*d.minDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2090 alg.addvariable(
'DeltaRMax', d.maxDR[bitId]*d.maxDR[bitId]*_dr_conversion*_dr_conversion, bitId)
2091 tm.registerTopoAlgo(alg)
2097 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2098 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2099 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"", },
2102 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2103 {
"minInvm": 0,
"maxInvm": 16,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2104 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2105 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 15,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2107 {
"minInvm": 7,
"maxInvm": 22,
"minDr": 0,
"maxDr": 20,
"mult": 2,
"otype1" :
"MU3VFab",
"otype2":
"",},
2109 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 0,
"maxDr": 22,
"mult": 1,
"otype1" :
"CMU5VFab",
"otype2":
"CMU3Vab",},
2111 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab", },
2112 {
"minInvm": 7,
"maxInvm": 11,
"minDr": 25,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2113 {
"minInvm": 7,
"maxInvm": 14,
"minDr": 0,
"maxDr": 25,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3VFab", },
2117 for x
in listofalgos:
2121 setattr (d, k, x[k])
2122 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2123 obj2 =
"-%s" % (d.otype2)
2124 toponame =
"%iINVM%i-%iDR%i-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2125 log.debug(
"Define %s", toponame)
2126 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2127 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2
2128 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2130 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2131 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2133 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2134 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2135 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2136 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2137 alg.addgeneric(
'NumResultBits', 1)
2138 alg.addvariable(
'MinET1', 0*_et_conversion)
2139 alg.addvariable(
'MinET2', 0*_et_conversion)
2140 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2141 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2142 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2143 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2144 tm.registerTopoAlgo(alg)
2148 {
"minInvm": 2,
"maxInvm": 9,
"minDr": 0,
"maxDr": 15,
"mult": 1,
"otype1" :
"MU5VFab",
"otype2":
"MU3Vab",},
2149 {
"minInvm": 8,
"maxInvm": 15,
"minDr": 20,
"maxDr": 99,
"mult": 2,
"otype1" :
"MU3Vab",
"otype2":
"",},
2151 for x
in listofalgos:
2155 setattr (d, k, x[k])
2156 obj1 =
"%s%s" % ((
str(d.mult)
if d.mult>1
else ""), d.otype1)
2157 obj2 =
"-%s" % (d.otype2)
2158 toponame =
"%iINVM%i-%iDR%i-C-%s%s" % (d.minInvm, d.maxInvm, d.minDr, d.maxDr, obj1,
"" if d.mult>1
else obj2)
2159 log.debug(
"Define %s", toponame)
2160 inputList = [d.otype1]
if (d.mult>1)
else [d.otype1, d.otype2]
2161 algoname = AlgConf.InvariantMassInclusiveDeltaRSqrIncl1Charge
if (d.mult>1)
else AlgConf.InvariantMassInclusiveDeltaRSqrIncl2Charge
2162 alg = algoname( name = toponame, inputs = inputList, outputs = [ toponame ])
2164 alg.addgeneric(
'InputWidth', HW.muonOutputWidthSelect)
2165 alg.addgeneric(
'MaxTob', HW.muonOutputWidthSelect)
2167 alg.addgeneric(
'InputWidth1', HW.muonOutputWidthSelect)
2168 alg.addgeneric(
'InputWidth2', HW.muonOutputWidthSelect)
2169 alg.addgeneric(
'MaxTob1', HW.muonOutputWidthSelect)
2170 alg.addgeneric(
'MaxTob2', HW.muonOutputWidthSelect)
2171 alg.addgeneric(
'NumResultBits', 1)
2172 alg.addvariable(
'MinET1', 0*_et_conversion)
2173 alg.addvariable(
'MinET2', 0*_et_conversion)
2174 alg.addvariable(
'MinMSqr', d.minInvm*d.minInvm*_et_conversion*_et_conversion)
2175 alg.addvariable(
'MaxMSqr', d.maxInvm*d.maxInvm*_et_conversion*_et_conversion)
2176 alg.addvariable(
'DeltaRMin', d.minDr*d.minDr*_dr_conversion*_dr_conversion)
2177 alg.addvariable(
'DeltaRMax', d.maxDr*d.maxDr*_dr_conversion*_dr_conversion)
2178 tm.registerTopoAlgo(alg)
2183 {
"algoname":
'CEP_CjJ',
"minETlist": [90, 100]}
2189 setattr (d, k, x[k])
2190 inputList = [
'CjJs']
2192 for minET
in d.minETlist:
2193 toponames.append (
"CEP-CjJ%is6" % (minET))
2194 alg = AlgConf.ExclusiveJets( name = d.algoname, inputs = inputList, outputs = toponames)
2195 alg.addgeneric(
'InputWidth', HW.jJetOutputWidthSort)
2196 alg.addgeneric(
'MaxTob', HW.jJetOutputWidthSort)
2197 alg.addgeneric(
'NumResultBits', len(toponames))
2198 alg.addvariable(
'PtScale', 1.4*10)
2199 alg.addvariable(
'PtShift', 20*_et_conversion)
2200 for bitid,minET
in enumerate(d.minETlist):
2201 alg.addvariable(
'MinET1',
get_threshold_cut(
'CjJ', minET)*_et_conversion, bitid)
2202 alg.addvariable(
'MinXi', 13600.0*_et_conversion*0.02, bitid)
2203 alg.addvariable(
'MaxXi', 13600.0*_et_conversion*0.05, bitid)
2204 tm.registerTopoAlgo(alg)