4def JfexInputMonitoringConfig(flags):
5 '''Function to configure LVL1 JfexInput algorithm in the monitoring system.'''
6
7
8 from AthenaConfiguration.ComponentFactory import CompFactory
9 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
10 from AthenaConfiguration.Enums import Format
11 result = ComponentAccumulator()
12
13
14 from TrigT1CaloMonitoring.LVL1CaloMonitoringConfig import L1CaloMonitorCfgHelper
15 helper = L1CaloMonitorCfgHelper(flags,CompFactory.JfexInputMonitorAlgorithm,'JfexInputMonAlg')
16
17
18
19 if flags.Input.Format==Format.BS:
20
21
22 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
23 result.merge(jFexEmulatedTowersCfg(flags))
24
25
26
27 JfexInputMonAlg = helper.alg
28
29
30 groupName = 'JfexInputMonitor'
31 JfexInputMonAlg.Grouphist = groupName
32
33
34 from math import pi
35
36 x_phi = []
37 for i in range(67):
38 phi = (-pi- pi/32) + pi/32*i
39 x_phi.append(phi)
40 x_phi = sorted(x_phi)
41
42
43 eta_phi_bins = {
44 'xbins': 100, 'xmin': -5, 'xmax': 5,
45 'ybins': x_phi
46 }
47
48 helper.defineTree('LBNString,Error,EventNumber,TowerId,TowerSource,TowerEta,TowerPhi,TowerCount,RefTowerCount,TowerSat,RefTowerSat,timeSince,timeUntil;errors',
49 "lbnString/string:error/string:eventNumber/l:id/i:source/i:eta/F:phi/F:count/i:ref_count/i:sat/I:ref_sat/I:timeSince/I:timeUntil/I",
50 title="errors tree;LBN;Error",fillGroup="errors")
51 helper.defineHistogram('TowerEta,TowerPhi;h_saturated', title='jFex Saturated DataTowers; #eta; #phi',
52 type='TH2F',fillGroup=groupName,cutmask="TowerSaturated",**eta_phi_bins)
53 helper.defineHistogram('TowerEta,TowerPhi;h_invalidCodes', title='jFex DataTower Invalid Et codes (4095); #eta; #phi',
54 type='TH2F',fillGroup=groupName,cutmask="TowerInvalid",**eta_phi_bins)
55 helper.defineHistogram('TowerEta,TowerPhi;h_emptyCodes', title='jFex DataTower Empty Et codes (0); #eta; #phi',
56 type='TH2F',fillGroup=groupName,cutmask="TowerEmpty",**eta_phi_bins)
57
58 result.merge(helper.result())
59 return result
60