86 """Input Algs read in FEX outputs and output TOBs of various types."""
103 write_handle =
'_'.join([ad.klass, out0, str(ad.sn)])
104 writeHandleKeys[ad.sn] =write_handle
108 if out0 ==
'jJetTobs':
109 name =
'jJetInputAlgTool_'+ out0
110 tool = CompFactory.GlobalSim.jJetInputAlgTool(name)
112 elif out0 ==
'eEmTobs':
113 name =
'eEmInputAlgTool_'+ out0
114 tool = CompFactory.GlobalSim.eEmInputAlgTool(name)
116 name =
'cTauInputAlgTool_' + out0
117 tool = CompFactory.GlobalSim.cTauInputAlgTool(name)
119 name =
'jXEInputAlgTool_' + out0
120 tool = CompFactory.GlobalSim.jXEInputAlgTool(name)
123 monTool.defineHistogram(
'jXETOBPt', path=
'EXPERT', type=
'TH1I',
124 title=
'jXE TOB Pt;p_{T} [GeV];',
125 xbins=200, xmin=0, xmax=2000)
127 monTool.defineHistogram(
'jXETOBPhi', path=
'EXPERT', type=
'TH1I',
128 title=
'jXE TOB Phi;#phi;',
129 xbins=64, xmin=-3.2, xmax=3.2)
131 tool.monTool = monTool
133 logger.error(
'Unsupported input alg type ' + str(out0))
135 'toolFromAlgData: Unsupported input alg type ' + str(out0))
137 tool.TOBArrayWriteKey = writeHandleKeys[ad.sn]
141 """Count Algorithms write out a Count object determined
142 from TOBS produced by a single Input Algorithm."""
146 countToolSelector = {
147 'cTauMultiplicity': CompFactory.GlobalSim.cTauMultiplicityAlgTool,
148 (
'EnergyThreshold',
'jXE'): CompFactory.GlobalSim.EnergyThresholdAlgTool_jXE,
154 if ad.klass ==
'EnergyThreshold':
155 key = (ad.klass, ad.inputs[0])
160 tool = countToolSelector[key](ad.name)
161 tool.alg_instance_name = ad.name
163 tool.TOBArrayReadKey = writeHandleKeys[ad.input_sns[0]]
164 tool.CountWriteKey = ad.name +
'_Count_' + str(ad.sn)
165 writeHandleKeys[ad.sn] = tool.CountWriteKey
167 if ad.klass
in (
'EnergyThreshold',):
170 tool.hundredMeVThreshold = int(ad.threshold)*10 + 5
172 if ad.klass ==
'cTauMultiplicity':
173 tool.do_dump = do_dump
177 title =
"cTauMultiplicity_accept #eta Et_" + threshold_name
179 monTool.defineHistogram(
"accept_eta,accept_et",
183 xbins=200, xmin=-200, xmax=200,
184 ybins=100, ymin=0, ymax=100)
186 title_stub =
"cTauMultiplicityc " + threshold_name +
" "
187 title = title_stub +
"counts"
188 monTool.defineHistogram(
"counts",
192 xbins=15, xmin=0, xmax=15)
194 title = title_stub +
"TOB Et"
195 monTool.defineHistogram(
"Et",
199 xbins=200, xmin=0, xmax=400)
202 title = title_stub +
"#phi #eta"
203 monTool.defineHistogram(
"phi,eta",
207 xbins=200, xmin=0, xmax=400,
208 ybins=128, ymin=0, ymax=128)
211 title = title_stub +
"Et #eta"
212 monTool.defineHistogram(
"Et,eta",
216 xbins=200, xmin=0, xmax=200,
217 ybins=200, ymin=0, ymax=400)
219 title = title_stub +
"loose partial isolation"
220 monTool.defineHistogram(
"iso_loose",
224 xbins=200, xmin=0, xmax=10)
226 title = title_stub +
"medium partial isolation"
227 monTool.defineHistogram(
"iso_medium",
231 xbins=200, xmin=0, xmax=10)
234 title = title_stub +
"tight partial isolation"
235 monTool.defineHistogram(
"iso_tight",
239 xbins=200, xmin=0, xmax=10)
241 tool.monTool = monTool
246 """Sort Algorithms write out a GenericTOBArray produced by sorting,
247 and possibly selecting, TOBs produced by an Input Algorithm"""
253 'eEmSelect': CompFactory.GlobalSim.eEmSelectAlgTool,
254 'jJetSelect': CompFactory.GlobalSim.jJetSelectAlgTool,
259 tool = sortToolSelector[ad.klass](ad.name)
261 tool.alg_instance_name = ad.name
262 tool.TOBArrayReadKey = writeHandleKeys[ad.input_sns[0]]
263 writeHandleKeys[ad.sn] = ad.klass+
'_' + out0 +
'_' + str(ad.sn)
264 tool.TOBArrayWriteKey = writeHandleKeys[ad.sn]
265 if klass(ad) ==
'eEmSelect':
266 tool.InputWidth = int(
fixedValue(ad,
'InputWidth'))
272 if klass(ad) ==
'jJetSelect':
273 tool.InputWidth = int(
fixedValue(ad,
'InputWidth'))
283 """Decision Algorithms all write out a L1Topo Decision object
284 determined by processing the outputs of 1 or more Sort Algorithms.
285 They also write out a vector of GenericTOBs."""
291 decisionToolSelector = {
292 'DeltaRSqrIncl2': CompFactory.GlobalSim.DeltaRSqrIncl2AlgTool,
293 'SimpleCone': CompFactory.GlobalSim.SimpleConeAlgTool,
296 tool = decisionToolSelector[ad.klass](ad.name)
297 tool.alg_instance_name = ad.name
299 assert len(ad.outputs) == 1
300 writeHandleKeys[ad.sn] = ad.klass +
'_'+ ad.outputs[0] +
'_' + str(ad.sn)
301 tool.TOBArrayVectorWriteKey = writeHandleKeys[ad.sn]
302 tool.DecisionWriteKey = ad.name +
'_Decision_' + str(ad.sn)
304 if klass(ad) ==
'DeltaRSqrIncl2':
305 tool.TOBArrayReadKey0 = writeHandleKeys[ad.input_sns[0]]
306 tool.TOBArrayReadKey1 = writeHandleKeys[ad.input_sns[1]]
308 tool.MaxTOB1 = int(
fixedValue(ad,
'InputWidth1'))
309 tool.MaxTOB2 = int(
fixedValue(ad,
'InputWidth2'))
310 tool.NumResultBits =
fixedValue(ad,
'NumResultBits')
319 assert tool.NumResultBits == 1
321 tool.NumResultBits = int(
fixedValue(ad,
'NumResultBits'))
324 for i
in range(tool.NumResultBits):
326 label = ad.name +
"_pass_by_bit_" + str(i)
327 monTool.defineHistogram(label,
328 path=
"EXPERT", type=
"TH1F",
329 title=
"DeltaR pass, bit " + str(i),
330 xbins=10, xmin=0, xmax=100.)
332 label = ad.name +
"_fail_by_bit_" + str(i)
333 monTool.defineHistogram(label,
334 path=
"EXPERT", type=
"TH1F",
335 title=
"DeltaR fail, bit " + str(i),
336 xbins=10, xmin=0, xmax=100.)
337 tool.monTool = monTool
338 tool.do_dump = do_dump
342 if klass(ad) ==
'SimpleCone':
344 tool.TOBArrayReadKey = writeHandleKeys[ad.input_sns[0]]
346 tool.InputWidth = int(
fixedValue(ad,
'InputWidth'))
360 for i
in range(numResultBits):
361 monTool.defineHistogram(ad.name+
"_pass_by_bit_" + str(i),
362 path=
"EXPERT", type=
"TH1F",
363 title=
"ET pass, bit " + str(i),
364 xbins=10, xmin=0, xmax=100.)
366 monTool.defineHistogram(ad.name+
"_fail_by_bit_" + str(i),
367 path=
"EXPERT", type=
"TH1F",
368 title=
"ET fail, bit " + str(i),
369 xbins=10, xmin=0, xmax=100.)
370 tool.monTool = monTool