10 '''Function to configures some algorithms in the monitoring system.'''
13 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
17 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
22 from AthenaMonitoring
import AthMonitorCfgHelper
23 helper = AthMonitorCfgHelper(inputFlags,
'StgcAthMonitorCfg')
26 sTgcMonAlg = helper.addAlgorithm(CompFactory.sTgcRawDataMonAlg,
'sTgcMonAlg')
27 sTgcMonAlg.cutPt = 15000.
28 sTgcMonAlg.cutEtaDown = 1.3
29 sTgcMonAlg.cutEtaUp = 2.4
30 sTgcMonAlg.minDeltaR = 0.1
31 sTgcMonAlg.cutTriggerPhiId = 63
32 sTgcMonAlg.cutTriggerBandId = 255
33 sTgcMonAlg.NSW_PadTriggerDataKey = NSW_PadTrigKey
35 globalPath =
'Muon/MuonRawDataMonitoring/STG/'
38 tech = [
'pad',
'strip',
'wire']
47 columnLabels = [columnLabels_AL, columnLabels_AS, columnLabels_CL, columnLabels_CS]
50 OverviewGroup = helper.addGroup(sTgcMonAlg,
'Overview', globalPath +
'Shifter/Overview')
51 OverviewGroup.defineHistogram(
'muonRecoTriggerMatch,etaRecoMuonEff,phiRecoMuonEff;padTrigger_Efficiency_per_etaPhi', type =
'TEfficiency', title =
'; #eta (reco); #phi (reco); Pad trigger efficiency wrt. reco. muon', path =
'', xbins = 100, xmin = -3., xmax = 3., ybins = 100, ymin = -math.pi, ymax = math.pi, opt =
'kAlwaysCreate')
52 OverviewGroup.defineHistogram(
'etaRecoMuon,phiRecoMuon;recoMuon_Map_per_etaPhi', type =
'TH2F', title =
'; #eta (reco); #phi (reco); Entries', path =
'', xbins = 100, xmin = -3., xmax = 3., ybins = 100, ymin = -math.pi, ymax = math.pi, opt =
'kAlwaysCreate')
53 OverviewGroup.defineHistogram(
'etaPadTrigger,phiPadTrigger;padTrigger_Map_per_etaPhi', type =
'TH2F', title =
'; #eta (trig); #phi (trig); Entries', path =
'', xbins = 100, xmin = -3., xmax = 3., ybins = 100, ymin = -math.pi, ymax = math.pi, opt =
'kAlwaysCreate')
54 OverviewGroup.defineHistogram(
'etaPadTrigger;padTrigger_Map_per_eta', type =
'TH1F', title =
'; #eta (trig); Entries', path =
'', xbins = 100, xmin = -3., xmax = 3., opt =
'kAlwaysCreate')
56 OverviewGroup.defineHistogram(f
'{tIdx}Sector,{tIdx}Feb;Feb_vs_sector_{tIdx}', type =
'TH2F', title =
';Sector; FEB; Hits', path =
'', xbins = 33, xmin = -16.5, xmax = 16.5, ybins = 24, ymin = -0.5, ymax = 23.5, ylabels = FebLabels, opt=
'kAlwaysCreate')
58 OccupancyShifterGroup = helper.addGroup(sTgcMonAlg,
'OccupancyShifter', globalPath +
'Shifter/Occupancy')
59 sTgcTimingGroup = helper.addGroup(sTgcMonAlg,
'sTgcTiming', globalPath +
'Expert/Timing/')
60 LBShifterGroup = helper.addGroup(sTgcMonAlg,
'LBShifterGroup', globalPath +
'Shifter/Lumiblock/')
61 sTgcPadTriggerShifterGroup = helper.addGroup(sTgcMonAlg,
'padTriggerShifter', globalPath +
'Shifter/')
62 sTgcPadTriggerShifterGroup.defineHistogram(
'lb,sector;OccupancySector_vs_LB', type =
'TH2F', title =
'; LB; Sector; Number of triggers', path =
'PadTrigger/Triggers', xbins = 100, xmin = -0.5, xmax = 99.5, ybins = 2*sectorMax + 1, ymin = -sectorMax - 0.5, ymax = sectorMax + 0.5, opt =
'kAlwaysCreate,kAddBinsDynamically', weight =
'numberOfTriggers')
63 sTgcPadTriggerShifterGroup.defineHistogram(
'lb,relBCID;RelBCID_vs_LB', type =
'TH2F', title =
'; LB; Trigger relBCID; Pad Trigger hits', path =
'PadTrigger/Triggers', xbins = 100, xmin = -0.5, xmax = 99.5, ybins = 7, ymin = -0.5, ymax = 6.5, opt =
'kAlwaysCreate,kAddBinsDynamically')
64 sTgcPadTriggerShifterGroup.defineHistogram(
'sector,hitPfebs;OccupancypFEB_vs_Sector', type =
'TH2F', title =
'; Sector; Hit pFEB; Pad Trigger hits associated to reco muons', path =
'PadTrigger/Hits', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 25, ymin = -0.5, ymax = 24.5, opt =
'kAlwaysCreate')
65 sTgcPadTriggerShifterGroup.defineHistogram(
'sector,hitRelBCID;relBCID_vs_Sector', type =
'TH2F', title =
'; Sector; Hit relBCID; Pad Trigger hits associated to reco muons', path =
'PadTrigger/Hits', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 7, ymin = -0.5, ymax = 6.5, opt =
'kAlwaysCreate')
68 OccupancyGroup = helper.addGroup(sTgcMonAlg,
'Occupancy', globalPath +
'Expert/Occupancy')
69 sTgcPadTriggerExpertGroup = helper.addGroup(sTgcMonAlg,
'padTriggerExpert', globalPath +
'Expert/')
70 padTriggerOccupancyGroup = helper.addGroup(sTgcMonAlg,
'padTriggerOccupancy', globalPath +
'Expert/PadTrigger/Hits/')
73 for layerIndex
in range(1, layerMax + 1):
75 sTgcPadTriggerShifterGroup.defineHistogram(f
'stripTrackSectorSided_layer_{layerIndex},stripTrackClusterSize_layer_{layerIndex};Strip_cluster_size_ontrk_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Strip Cluster Size (on-track); Hits', path =
'StripClusterSize', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 13, ymin = -0.5, ymax = 12.5, opt =
'kAlwaysCreate')
76 sTgcTimingGroup.defineHistogram(f
'padTrackSectorSided_layer_{layerIndex},padTrackTiming_layer_{layerIndex};All_pad_timing_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits', path =
'Pad/Layer', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 225, ymin = -100., ymax = 125., opt =
'kAlwaysCreate')
77 sTgcTimingGroup.defineHistogram(f
'stripTrackSectorSided_layer_{layerIndex},stripTrackTiming_layer_{layerIndex};All_strip_timing_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits', path =
'Strip/Layer', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 225, ymin = -100., ymax = 125., opt =
'kAlwaysCreate')
78 sTgcTimingGroup.defineHistogram(f
'wireGroupTrackSectorSided_layer_{layerIndex},wireGroupTrackTiming_layer_{layerIndex};All_wire_timing_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Wire Group timing (on-track) [ns]; Hits', path =
'Wire/Layer', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 225, ymin = -100., ymax = 125., opt =
'kAlwaysCreate')
79 OccupancyGroup.defineHistogram(f
'sector_layer_{layerIndex},padNumber_layer_{layerIndex};Pad_ch_occupancy_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Pad Number; Hits', path =
'Pad', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 317, ymin = 0., ymax = 317., opt =
'kAlwaysCreate')
80 OccupancyGroup.defineHistogram(f
'sector_layer_{layerIndex},stripNumber_layer_{layerIndex};Strip_ch_occupancy_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Sector; Strip Number; Hits', path =
'Strip', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 1130, ymin = 0., ymax = 1130., opt =
'kAlwaysCreate')
81 OccupancyGroup.defineHistogram(f
'wireGroupNumber_layer_{layerIndex},stationEta_layer_{layerIndex};Wire_ch_occupancy_per_sector_Layer{layerIndex}', type =
'TH2F', title = f
'L{layerIndex}; Wire Group Number; Quad; Hits', path =
'Wire', xbins = 58*sectorMax + 1, xmin = -0.5, xmax = 58*sectorMax + 0.5, xlabels = wireGroupNumberLabel, ybins = 2*stationEtaMax + 1, ymin = -stationEtaMax - 0.5, ymax = stationEtaMax + 0.5, opt =
'kAlwaysCreate')
85 for sizeIndex
in size:
87 for sideIndex
in side:
88 padTriggerOccupancyGroup.defineHistogram(f
'padPhi_{sideIndex}_{sizeIndex}_layer_{layerIndex},padEta_{sideIndex}_{sizeIndex}_layer_{layerIndex};padEtaPhiOcc_{layerIndex}{sideIndex}{sizeIndex}', type =
'TH2F', title = f
'{layerIndex}{sideIndex}{sizeIndex}; Pad column; Pad row; Hits', path =
'padTriggerOccupancy', xbins = 71, xmin = 0.5, xmax = 71.5, xlabels = columnLabels[columnLabelsCounter], ybins = 56, ymin = 0.5, ymax = 56.5, ylabels = rowLabels, opt =
'kAlwaysCreate')
89 columnLabelsCounter += 1
91 sTgcPadTriggerShifterGroup.defineHistogram(f
'hitLayer,xPosStrip_{sideIndex}_layer_{layerIndex},yPosStrip_{sideIndex}_layer_{layerIndex};strip_efficiency_per_mm_squared_Wheel{sideIndex}_layer{layerIndex}', type =
'TEfficiency', title = f
'{sideIndex}L{layerIndex}; sTgc-GlobalX-Strip (on track) [mm]; sTgc-GlobalY-Strip (on track) [mm]; Efficiency sTGC strip {sideIndex}L{layerIndex}', path =
'StripEfficiency', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt =
'kAlwaysCreate')
93 sTgcPadTriggerShifterGroup.defineHistogram(f
'phiIds_{sideIndex}_{sizeIndex},bandIds_{sideIndex}_{sizeIndex};bandIds_vs_phiIds_Side{sideIndex}_Size{sizeIndex}', type =
'TH2F', title = f
'{sideIndex}{sizeIndex}; Trigger phiID; Trigger bandID; Pad Trigger hits', path =
'PadTrigger/Triggers', xbins = 65, xmin = -32.5, xmax = 32.5, ybins = 101, ymin = -0.5, ymax = 100.5, opt =
'kAlwaysCreate')
96 for sideIndex
in side:
100 for sectorIndex
in range(1, sectorMax + 1):
102 efficiencyGlobalRgroup = helper.addGroup(sTgcMonAlg, f
'rPosStrip_{sideIndex}{sectorIndex}', globalPath +
'Expert/Efficiency/')
103 sTgcPadTriggerExpertGroup.defineHistogram(f
'lb_{sideIndex}_sector_{sectorIndex},bandIds_{sideIndex}_sector_{sectorIndex};OccupancyBandId_vs_LB_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; LB; Trigger bandID; number of triggers', path =
'PadTrigger/Triggers/OccupancyBandIDvsLB', xbins = 100, xmin = -0.5, xmax = 99.5, ybins = 101, ymin = -0.5, ymax = 100.5, opt =
'kAlwaysCreate,kAddBinsDynamically', weight = f
'numberOfTriggers_{sideIndex}_sector_{sectorIndex}')
104 sTgcPadTriggerExpertGroup.defineHistogram(f
'phiIds_{sideIndex}_sector_{sectorIndex},bandIds_{sideIndex}_sector_{sectorIndex};bandIds_vs_phiIds_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; Trigger phiID; Trigger bandID; Pad Trigger hits', path =
'PadTrigger/Triggers/OccupancyBandIDvsPhiId', xbins = 65, xmin = -32.5, xmax = 32.5, ybins = 101, ymin = -0.5, ymax = 100.5, opt =
'kAlwaysCreate')
105 sTgcPadTriggerExpertGroup.defineHistogram(f
'lb_{sideIndex}_sector_{sectorIndex},relBCID_{sideIndex}_sector_{sectorIndex};RelBCID_vs_LB_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; LB; Trigger relBCID; Pad Trigger hits', path =
'PadTrigger/Triggers/RelBCIDvsLB', xbins = 100, xmin = -0.5, xmax = 99.5, ybins = 7, ymin = -0.5, ymax = 6.5, opt =
'kAlwaysCreate,kAddBinsDynamically')
106 sTgcPadTriggerExpertGroup.defineHistogram(f
'relBCID_{sideIndex}_sector_{sectorIndex},phiIds_{sideIndex}_sector_{sectorIndex};Trigger_PhiID_vs_RelBCID_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; Trigger relBCID; Trigger phiID; Pad Trigger hits', path =
'PadTrigger/Triggers/PhiIDvsRelBCID', xbins = 7, xmin = -0.5, xmax = 6.5, ybins = 65, ymin = -32.5, ymax = 32.5, opt =
'kAlwaysCreate')
107 sTgcPadTriggerShifterGroup.defineHistogram(f
'relBCID_{sideIndex}_sector_{sectorIndex},bandID_{sideIndex}_sector_{sectorIndex};Trigger_BandID_vs_RelBCID_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; Trigger relBCID; Trigger bandID; Pad Trigger hits', path =
'PadTrigger/Triggers/BandIDvsRelBCID', xbins = 7, xmin = -0.5, xmax = 6.5, ybins = 101, ymin = -0.5, ymax = 100.5, opt =
'kAlwaysCreate')
108 sTgcPadTriggerShifterGroup.defineHistogram(f
'hitRelBCID_{sideIndex}_sector_{sectorIndex},hitPfebs_{sideIndex}_sector_{sectorIndex};pFEB_vs_relBCID_Side{sideIndex}_Sector{sectorIndex}', type =
'TH2F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'; Hit relBCID; Hit pFEB; Pad Trigger hits associated to reco muons', path =
'PadTrigger/Hits/PFEBvsRelBCID', xbins = 7, xmin = -0.5, xmax = 6.5, ybins = 25, ymin = -0.5, ymax = 24.5, opt =
'kAlwaysCreate')
111 LBShifterGroup.defineHistogram(f
'{tIdx}LBsector{sideIndex}{sectorIndex},{tIdx}FEBsector{sideIndex}{sectorIndex};LB_vs_FEB_perSector_{tIdx}', type =
'TH2F', title =
'FEB vs LB; LB; FEB', path = f
'{sideIndex}'+f
'{sectorIndex}'.zfill(2), xbins = 100, xmin = -0.5, xmax = 99.5, ybins = 24, ymin = -0.5, ymax = 23.5, ylabels = FebLabels, opt =
'kAlwaysCreate,kAddBinsDynamically')
112 outdir = sideIndex+f
'{sectorIndex}'.zfill(2)
113 OccupancyShifterGroup.defineHistogram(f
'{tIdx}layer_{sideIndex}{sectorIndex},{tIdx}quad_{sideIndex}{sectorIndex};{tIdx}_quad_occupancy_per_layer', type =
'TH2F', title = f
'{tIdx} layers vs quad; Layer; Quad; Hits', path = outdir, xbins = layerMax, xmin = 0.5, xmax = layerMax + 0.5, ybins = stationEtaMax, ymin = 0.5, ymax = stationEtaMax + 0.5, opt =
'kAlwaysCreate')
114 sTgcTimingGroup.defineHistogram(f
'{tIdx}Timing{sideIndex}{sectorIndex},{tIdx}FEB{sideIndex}{sectorIndex};{tIdx}_timing_{outdir}', type =
'TH2F', title = f
'{tIdx} FEBs vs Timing; Time [ns]; FEB; Hits', path = f
'{tIdx[0].capitalize()+tIdx[1:]}/Sector', xbins = 9, xmin = -112.5, xmax = 112.5, ybins = 24, ymin = -0.5, ymax = 23.5, ylabels = FebLabels, opt =
'kAlwaysCreate')
117 for stationEtaIndex
in range(1, stationEtaMax + 1):
119 padChargeGroup = helper.addGroup(sTgcMonAlg, f
'padCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', globalPath + f
'Expert/Charge/{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'/Pad')
120 stripChargeGroup = helper.addGroup(sTgcMonAlg, f
'stripCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', globalPath + f
'Expert/Charge/{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'/Strip')
121 wireGroupChargeGroup = helper.addGroup(sTgcMonAlg, f
'wireGroupCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', globalPath + f
'Expert/Charge/{sideIndex}' + f
'{sectorIndex}'.zfill(2) +
'/Wire')
122 residualGroup = helper.addGroup(sTgcMonAlg, f
'sTgcResiduals_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', globalPath + f
'Expert/Residuals/{sideIndex}' + f
'{sectorIndex}'.zfill(2))
124 if sideCounter==1
and sectorCounter==1:
125 sTgcPadTimingExpertGroup = helper.addGroup(sTgcMonAlg, f
'padTiming_quad_{stationEtaIndex}', globalPath +
'Expert/Timing/Pad')
126 sTgcStripTimingExpertGroup = helper.addGroup(sTgcMonAlg, f
'stripTiming_quad_{stationEtaIndex}', globalPath +
'Expert/Timing/Strip')
127 sTgcWireTimingExpertGroup = helper.addGroup(sTgcMonAlg, f
'wireTiming_quad_{stationEtaIndex}', globalPath +
'Expert/Timing/Wire')
129 for layerIndex
in range(1, layerMax + 1):
130 padChargeGroup.defineHistogram(f
'padTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_pad_charge_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH1F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}Q{stationEtaIndex}; Pad Charge (on-track) [fC]; Number of Entries', path = f
'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt =
'kAlwaysCreate')
131 stripChargeGroup.defineHistogram(f
'stripTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_strip_charge_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH1F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}Q{stationEtaIndex}; Strip Cluster Charge (on-track) [fC]; Number of Entries', path = f
'Q{stationEtaIndex}', xbins = 120, xmin = 0., xmax = 1200., opt =
'kAlwaysCreate')
132 wireGroupChargeGroup.defineHistogram(f
'wireGroupTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_wire_charge_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH1F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}Q{stationEtaIndex}; Wire Group Charge (on-track) [fC]; Number of Entries', path = f
'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt =
'kAlwaysCreate')
133 residualGroup.defineHistogram(f
'residual_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};Residuals_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH1F', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}Q{stationEtaIndex}; Residual [mm]; Number of Entries', path = f
'Q{stationEtaIndex}', xbins = 1000, xmin = -2., xmax = 2., opt =
'kAlwaysCreate')
135 if stationEtaCounter==1:
136 efficiencyGlobalRgroup.defineHistogram(f
'hitLayer,rPosStrip_{sideIndex}_sector_{sectorIndex}_layer_{layerIndex};Efficiency_per_Radius_Layer{layerIndex}', type =
'TEfficiency', title = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}; sTgc-GlobalR-Strip (on track) [mm]' + f
'; Efficiency sTGC strip {sideIndex}' + f
'{sectorIndex}'.zfill(2) + f
'L{layerIndex}', path = f
'{sideIndex}' + f
'{sectorIndex}'.zfill(2), xbins = 100, xmin = 0., xmax = 5000., opt =
'kAlwaysCreate')
138 if sideCounter==1
and sectorCounter==1:
139 sTgcPadTimingExpertGroup.defineHistogram(f
'padTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},padTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_pad_timing_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH2F', title = f
'Q{stationEtaIndex}L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits', path = f
'Q{stationEtaIndex}', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 201, ymin = -75.5, ymax = 125.5, opt =
'kAlwaysCreate')
140 sTgcStripTimingExpertGroup.defineHistogram(f
'stripTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},stripTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_strip_timing_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH2F', title = f
'Q{stationEtaIndex}L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits', path = f
'Q{stationEtaIndex}', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 201, ymin = -75.5, ymax = 125.5, opt =
'kAlwaysCreate')
141 sTgcWireTimingExpertGroup.defineHistogram(f
'wireTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},wireTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_wire_timing_in_Q{stationEtaIndex}_Layer{layerIndex}', type =
'TH2F', title = f
'Q{stationEtaIndex}L{layerIndex}; Sector; Wire Group Timing (on-track) [ns]; Hits', path = f
'Q{stationEtaIndex}', xbins = 2*sectorMax + 1, xmin = -sectorMax - 0.5, xmax = sectorMax + 0.5, ybins = 201, ymin = -75.5, ymax = 125.5, opt =
'kAlwaysCreate')
143 acc = helper.result()