diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/CMakeLists.txt b/Trigger/TrigHypothesis/TrigMuonHypoMT/CMakeLists.txt index 6784ca2c1da52a472c7bf4367c2946f2701fb35e..468a93078c410fc0dd3b49eddc4ac17f99a83160 100644 --- a/Trigger/TrigHypothesis/TrigMuonHypoMT/CMakeLists.txt +++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/CMakeLists.txt @@ -8,8 +8,8 @@ atlas_subdir( TrigMuonHypoMT ) # Declare the package's dependencies: atlas_depends_on_subdirs( PUBLIC Event/xAOD/xAODTrigMuon - Trigger/TrigSteer/DecisionHandling - Control/AthViews + Trigger/TrigSteer/DecisionHandling + Control/AthViews PRIVATE Event/xAOD/xAODMuon GaudiKernel ) @@ -19,14 +19,20 @@ find_package( CLHEP ) # Component(s) in the package: atlas_add_component( TrigMuonHypoMT - src/*.cxx + src/*.cxx src/components/*.cxx INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS} LINK_LIBRARIES ${CLHEP_LIBRARIES} xAODTrigMuon TrigInterfacesLib DecisionHandling AthViews xAODMuon GaudiKernel ) -atlas_add_test( TrigMuonHypoMTConfig SCRIPT python -m TrigMuonHypoMT.TrigMuonHypoMTConfig - POST_EXEC_SCRIPT nopost.sh ) - # Install files from the package: atlas_install_python_modules( python/*.py ) +# Unit tests: +atlas_add_test( TrigMuonHypoMTConfig + SCRIPT python -m TrigMuonHypoMT.TrigMuonHypoMTConfig + POST_EXEC_SCRIPT nopost.sh ) + +# Check python syntax: +atlas_add_test( flake8 + SCRIPT flake8 --select=ATL,F,E7,E9,W6 --enable-extension=ATL900,ATL901 ${CMAKE_CURRENT_SOURCE_DIR}/python + POST_EXEC_SCRIPT nopost.sh ) diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py index 10c897e4a2dd53334230c3552b36da30478bad23..abde41835cee6f7e6409cfd6abdacf5161e74242 100755 --- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py +++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMTConfig.py @@ -1,12 +1,29 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -from TrigMuonHypoMT.TrigMuonHypoMTConf import TrigMufastHypoAlg, TrigMufastHypoTool, TrigmuCombHypoAlg, TrigmuCombHypoTool, TrigMuonEFMSonlyHypoAlg, TrigMuonEFMSonlyHypoTool, TrigMuisoHypoAlg, TrigMuisoHypoTool, TrigMuonEFCombinerHypoAlg, TrigMuonEFCombinerHypoTool, TrigMuonEFTrackIsolationHypoAlg, TrigMuonEFTrackIsolationHypoTool -from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import * +# import Hypo Algs/Tools +from TrigMuonHypoMT.TrigMuonHypoMTConf import ( # noqa: F401 (algs not used here) + TrigMufastHypoAlg, TrigMufastHypoTool, + TrigmuCombHypoAlg, TrigmuCombHypoTool, + TrigMuonEFMSonlyHypoAlg, TrigMuonEFMSonlyHypoTool, + TrigMuisoHypoAlg, TrigMuisoHypoTool, + TrigMuonEFCombinerHypoAlg, TrigMuonEFCombinerHypoTool, + TrigMuonEFTrackIsolationHypoAlg, TrigMuonEFTrackIsolationHypoTool +) + +# import monitoring +from TrigMuonHypoMT.TrigMuonHypoMonitoringMT import ( + TrigMufastHypoMonitoring, + TrigmuCombHypoMonitoring, + TrigMuonEFMSonlyHypoMonitoring, + TrigMuisoHypoMonitoring, + TrigMuonEFCombinerHypoMonitoring +) + +# other imports from AthenaCommon.SystemOfUnits import GeV -from AthenaCommon.AppMgr import ToolSvc -from TriggerJobOpts.TriggerFlags import TriggerFlags -import re +from AthenaCommon.Logging import logging +log = logging.getLogger('TrigMuonHypoMTConfig') trigMuonEFSAThresholds = { '0GeV' : [ [0,9.9], [ 0.100 ] ], @@ -189,15 +206,14 @@ trigMuonEFTrkIsoThresholds = { def addMonitoring(tool, monClass, name, thresholdHLT ): try: - if 'Validation' in TriggerFlags.enableMonitoring() or 'Online' in TriggerFlags.enableMonitoring() or 'Cosmic' in TriggerFlags.enableMonitoring(): - tool.MonTool = monClass( name + "Monitoring_" + thresholdHLT ) + tool.MonTool = monClass( "MonTool" ) + tool.MonTool.HistPath = name + "/" + thresholdHLT except AttributeError: - tool.MonTool = "" - print name, ' Monitoring Tool failed' + log.error('%s Monitoring Tool failed', name) def getThresholdsFromDict( chainDict ): - cparts = [i for i in chainDict['chainParts'] if i['signature'] is 'Muon' or i['signature'] is 'Bphysics'] + cparts = [i for i in chainDict['chainParts'] if i['signature']=='Muon' or i['signature']=='Bphysics'] return sum( [ [part['threshold']]*int(part['multiplicity']) for part in cparts ], []) @@ -206,23 +222,22 @@ def TrigMufastHypoToolFromDict( chainDict ): thresholds = getThresholdsFromDict( chainDict ) config = TrigMufastHypoConfig() tool=config.ConfigurationHypoTool( chainDict['chainName'], thresholds ) - # # Setup MonTool for monitored variables in AthenaMonitoring package - TriggerFlags.enableMonitoring = ['Validation'] + # Setup MonTool for monitored variables in AthenaMonitoring package addMonitoring( tool, TrigMufastHypoMonitoring, 'TrigMufastHypoTool', chainDict['chainName'] ) return tool -class TrigMufastHypoConfig(): - - def ConfigurationHypoTool( self, thresholdHLT, thresholds ): - - tool = TrigMufastHypoTool( thresholdHLT ) +class TrigMufastHypoConfig(object): + + log = logging.getLogger('TrigMufastHypoConfig') - datayear = '2017' + def ConfigurationHypoTool( self, thresholdHLT, thresholds ): + + tool = TrigMufastHypoTool( thresholdHLT ) nt = len(thresholds) - print "TrigMufastHypoConfig: Set ", nt, " thresholds" + log.debug('Set %d thresholds', nt) tool.PtBins = [ [ 0, 2.5 ] ] * nt tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt tool.PtThresholdForECWeakBRegionA = [ 3. * GeV ] * nt @@ -230,23 +245,21 @@ class TrigMufastHypoConfig(): for th, thvalue in enumerate(thresholds): thvaluename = thvalue + 'GeV_v15a' - print "Number of threshold = ", th, ", Value of threshold = ", thvaluename + log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) try: tool.AcceptAll = False values = muFastThresholds[thvaluename] tool.PtBins[th] = values[0] tool.PtThresholds[th] = [ x * GeV for x in values[1] ] - print "TrigMufastHypoConfig: Configration of threshold[", th, "] ", tool.PtThresholds[th] - print "TrigMufastHypoConfig: Configration of PtBins[", th, "] ", tool.PtBins[th] + log.debug('Configration of threshold[%d] %s', th, tool.PtThresholds[th]) + log.debug('Configration of PtBins[%d] %s', th, tool.PtBins[th]) if thvaluename in muFastThresholdsForECWeakBRegion: spThres = muFastThresholdsForECWeakBRegion[thvaluename] tool.PtThresholdForECWeakBRegionA[th] = spThres[0] * GeV tool.PtThresholdForECWeakBRegionB[th] = spThres[1] * GeV - print 'TrigMufastHypoConfig: -> Thresholds for A[', th, ']/B[', th, ']=',tool.PtThresholdForECWeakBRegionA[th],'/',tool.PtThresholdForECWeakBRegionB[th] else: - print 'TrigMufastHypoConfig: No special thresholds for EC weak Bfield regions for',thvaluename - print 'TrigMufastHypoConfig: -> Copy EC1 for region A, EC2 for region B' + log.debug('No special thresholds for EC weak Bfield regions for %s. Copy EC1 for region A, EC2 for region B.', thvaluename) spThres = values[0][1] if thvaluename == '2GeV' or thvaluename == '3GeV': tool.PtThresholdForECWeakBRegionA[th] = spThres[0] * GeV @@ -254,10 +267,11 @@ class TrigMufastHypoConfig(): else: tool.PtThresholdForECWeakBRegionA[th] = spThres[1] * GeV tool.PtThresholdForECWeakBRegionB[th] = spThres[2] * GeV - print 'TrigMufastHypoConfig: -> Thresholds for A[', th, ']/B[', th, ']=',tool.PtThresholdForECWeakBRegionA[th],'/',tool.PtThresholdForECWeakBRegionB[th] - + + log.debug('Thresholds for A[%d]/B[%d] = %d/%d', th, th, tool.PtThresholdForECWeakBRegionA[th], tool.PtThresholdForECWeakBRegionB[th]) + except LookupError: - if (thvaluename=='passthrough'): + if (thvalue=='passthrough'): tool.PtBins[th] = [-10000.,10000.] tool.PtThresholds[th] = [ -1. * GeV ] else: @@ -266,7 +280,6 @@ class TrigMufastHypoConfig(): return tool def TrigmuCombHypoToolFromDict( chainDict ): - print chainDict thresholds = getThresholdsFromDict( chainDict ) config = TrigmuCombHypoConfig() @@ -278,27 +291,29 @@ def TrigmuCombHypoToolFromDict( chainDict ): return tool -class TrigmuCombHypoConfig(): +class TrigmuCombHypoConfig(object): + + log = logging.getLogger('TrigmuCombHypoConfig') def ConfigurationHypoTool( self, thresholdHLT, thresholds, tight ): tool = TrigmuCombHypoTool( thresholdHLT ) nt = len(thresholds) - print "TrigMufastHypoConfig: Set ", nt, " thresholds" + log.debug('Set %d thresholds', nt) tool.PtBins = [ [ 0, 2.5 ] ] * nt tool.PtThresholds = [ [ 5.83 * GeV ] ] * nt for th, thvalue in enumerate(thresholds): thvaluename = thvalue + 'GeV_v15a' - print "Number of threshold = ", th, ", Value of threshold = ", thvaluename + log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) try: values = muCombThresholds[thvaluename] tool.PtBins[th] = values[0] tool.PtThresholds[th] = [ x * GeV for x in values[1] ] except LookupError: - if (threshold=='passthrough'): + if (thvalue=='passthrough'): tool.AcceptAll = True tool.PtBins[th] = [-10000.,10000.] tool.PtThresholds[th] = [ -1. * GeV ] @@ -307,7 +322,7 @@ class TrigmuCombHypoConfig(): else: raise Exception('MuComb Hypo Misconfigured: threshold %r not supported' % thvaluename) - if (tight == True): + if (tight is True): tool.ApplyPikCuts = True tool.MaxPtToApplyPik = 25. tool.MaxChi2IDPik = 3.5 @@ -325,7 +340,9 @@ def TrigMuisoHypoToolFromDict( chainDict ): return tool -class TrigMuisoHypoConfig() : +class TrigMuisoHypoConfig(object): + + log = logging.getLogger('TrigMuisoHypoConfig') def ConfigurationHypoTool( self, toolName ): @@ -335,21 +352,19 @@ class TrigMuisoHypoConfig() : tool.AcceptAll = False if 'passthrough' in toolName: tool.AcceptAll = True - print 'MuisoHypoConfig configured in pasthrough mode' + log.debug('MuisoHypoConfig configured in pasthrough mode') if "FTK" in toolName: # allows us to use different working points in FTK mode - tool.IDConeSize = 2; + tool.IDConeSize = 2 tool.MaxIDIso_1 = 0.12 tool.MaxIDIso_2 = 0.12 tool.MaxIDIso_3 = 0.12 else: - tool.IDConeSize = 2; + tool.IDConeSize = 2 tool.MaxIDIso_1 = 0.1 tool.MaxIDIso_2 = 0.1 tool.MaxIDIso_3 = 0.1 - print 'MuisoHypoConfig configuration done' - return tool @@ -361,23 +376,25 @@ def TrigMuonEFMSonlyHypoToolFromDict( chainDict ) : return tool -class TrigMuonEFMSonlyHypoConfig(): - +class TrigMuonEFMSonlyHypoConfig(object): + + log = logging.getLogger('TrigMuonEFMSonlyHypoConfig') def ConfigurationHypoTool( self, thresholdHLT, thresholds ): + log = logging.getLogger(self.__class__.__name__) tool = TrigMuonEFMSonlyHypoTool( thresholdHLT ) nt = len(thresholds) - print "TrigMuonEFMSonlyHypoConfig: Set ", nt, " thresholds" - print "But cann't use multi muon trigger due to not yet implemented it" + log.debug('Set %d thresholds', nt) + log.warning('But cannot use multi muon trigger (not implemented yet)') tool.PtBins = [ [ 0, 2.5 ] ] * nt tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt for th, thvalue in enumerate(thresholds): thvaluename = thvalue + 'GeV' - print "Number of threshold = ", th, ", Value of threshold = ", thvaluename + log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) try: tool.AcceptAll = False @@ -386,11 +403,11 @@ class TrigMuonEFMSonlyHypoConfig(): tool.PtThresholds[th] = [ x * GeV for x in values[1] ] except LookupError: - if (threshold=='passthrough'): + if (thvalue=='passthrough'): tool.PtBins[th] = [-10000.,10000.] tool.PtThresholds[th] = [ -1. * GeV ] else: - raise Exception('MuonEFMSonly Hypo Misconfigured: threshold %r not supported' % threshold) + raise Exception('MuonEFMSonly Hypo Misconfigured: threshold %r not supported' % thvaluename) return tool @@ -402,22 +419,23 @@ def TrigMuonEFCombinerHypoToolFromDict( chainDict ) : addMonitoring( tool, TrigMuonEFCombinerHypoMonitoring, "TrigMuonEFCombinerHypoTool", chainDict['chainName'] ) return tool -class TrigMuonEFCombinerHypoConfig(): +class TrigMuonEFCombinerHypoConfig(object): + log = logging.getLogger('TrigMuonEFCombinerHypoConfig') def ConfigurationHypoTool( self, thresholdHLT, thresholds ): tool = TrigMuonEFCombinerHypoTool( thresholdHLT ) nt = len(thresholds) - print "TrigMuonEFCombinerHypoConfig: Set ", nt, " thresholds" + log.debug('Set %d thresholds', nt) tool.PtBins = [ [ 0, 2.5 ] ] * nt tool.PtThresholds = [ [ 5.49 * GeV ] ] * nt for th, thvalue in enumerate(thresholds): thvaluename = thvalue + 'GeV_v15a' - print "Number of threshold = ", th, ", Value of threshold = ", thvaluename + log.debug('Number of threshold = %d, Value of threshold = %s', th, thvaluename) try: tool.AcceptAll = False @@ -426,24 +444,26 @@ class TrigMuonEFCombinerHypoConfig(): tool.PtThresholds[th] = [ x * GeV for x in values[1] ] except LookupError: - if (threshold=='passthrough'): + if (thvalue=='passthrough'): tool.PtBins[th] = [-10000.,10000.] tool.PtThresholds[th] = [ -1. * GeV ] else: - raise Exception('MuonEFCB Hypo Misconfigured: threshold %r not supported' % threshold) + raise Exception('MuonEFCB Hypo Misconfigured: threshold %r not supported' % thvaluename) return tool def TrigMuonEFTrackIsolationHypoToolFromDict( chainDict ) : - cparts = [i for i in chainDict['chainParts'] if i['signature'] is 'Muon'] + cparts = [i for i in chainDict['chainParts'] if i['signature']=='Muon'] thresholds = cparts[0]['isoInfo'] config = TrigMuonEFTrackIsolationHypoConfig() tool = config.ConfigurationHypoTool( chainDict['chainName'], thresholds ) return tool -class TrigMuonEFTrackIsolationHypoConfig() : +class TrigMuonEFTrackIsolationHypoConfig(object) : + + log = logging.getLogger('TrigMuonEFTrackIsolationHypoConfig') def ConfigurationHypoTool(self, toolName, isoCut): @@ -468,10 +488,10 @@ class TrigMuonEFTrackIsolationHypoConfig() : tool.useVarIso = False except LookupError: if(isoCut=='passthrough') : - print 'Setting passthrough' + log.debug('Setting passthrough') tool.AcceptAll = True else: - print 'isoCut = ', isoCut + log.error('isoCut = ', isoCut) raise Exception('TrigMuonEFTrackIsolation Hypo Misconfigured') return tool @@ -494,7 +514,7 @@ if __name__ == '__main__': chainNameDecoder = DictFromChainName.DictFromChainName() for c in configToTest: - print "testing config ", c + log.info("testing config %s", c) chainDict = chainNameDecoder.getChainDict(c) toolMufast = TrigMufastHypoToolFromDict(chainDict) assert toolMufast @@ -507,4 +527,4 @@ if __name__ == '__main__': toolEFCombiner = TrigMuonEFCombinerHypoToolFromDict(chainDict) assert toolEFCombiner - print "All OK" + log.info("All OK") diff --git a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py index 268d8863071274599cd4bdbfca83e1cc0781784a..f6eb0519561f9787a131d0a959ab81aa0cf2e590 100755 --- a/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py +++ b/Trigger/TrigHypothesis/TrigMuonHypoMT/python/TrigMuonHypoMonitoringMT.py @@ -1,90 +1,93 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -# -# PURPOSE: AthenaMT Migration -# -from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool, defineHistogram +from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool class TrigMufastHypoMonitoring(GenericMonitoringTool): def __init__ (self, name): super(TrigMufastHypoMonitoring, self).__init__(name) - self.HistPath = name - self.Histograms = [ defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #muFast; P_{T} (GeV)", xbins=200, xmin=-100, xmax=100), - defineHistogram('PtFL', type='TH1F', path='EXPERT', title="P_{T} of not selected muons from #muFast; p_{T} (GeV)", xbins=200, xmin=-100, xmax=100), - defineHistogram('Eta , Phi', type='TH2F', path='EXPERT', title="Eta vs Phi reconstruction of #muFast; Eta; Phi",xbins=50, xmin=-3.2, xmax=3.2, ybins=25, ymin=-3.15, ymax=3.15), - defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #muFast; Eta",xbins=100, xmin=-3.2, xmax=3.2), - defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #muFast; Phi",xbins=100, xmin=-3.15, xmax=3.15), - defineHistogram('ZatSt, Phi', type='TH2F', path='EXPERT', title="Z vs Phi reconstructed in MIDDLE station; Z (cm); Phi (rad)",xbins=50, xmin=-1200., xmax=1200., ybins=25, ymin=-3.2, ymax=3.2), - defineHistogram('XatSt , YatSt', type='TH2F', path='EXPERT', title="Y vs X reconstructed in MIDDLE station; X (cm); Y(cm)",xbins=50, xmin=-1200., xmax=1200., ybins=50, ymin=-1200., ymax=1200.), - defineHistogram('ZatBe', type='TH1F', path='EXPERT', title="DCA along Z; Z (cm)",xbins=100, xmin=-2100, xmax=2100), - defineHistogram('XatBe', type='TH1F', path='EXPERT', title="DCA along X; X (cm)",xbins=100, xmin=-1000, xmax=1000) ] + self.defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #muFast; P_{T} (GeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('PtFL', type='TH1F', path='EXPERT', title="P_{T} of not selected muons from #muFast; p_{T} (GeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('Eta , Phi', type='TH2F', path='EXPERT', title="Eta vs Phi reconstruction of #muFast; Eta; Phi", + xbins=50, xmin=-3.2, xmax=3.2, ybins=25, ymin=-3.15, ymax=3.15) + self.defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #muFast; Eta", + xbins=100, xmin=-3.2, xmax=3.2) + self.defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #muFast; Phi", + xbins=100, xmin=-3.15, xmax=3.15) + self.defineHistogram('ZatSt, Phi', type='TH2F', path='EXPERT', title="Z vs Phi reconstructed in MIDDLE station; Z (cm); Phi (rad)", + xbins=50, xmin=-1200., xmax=1200., ybins=25, ymin=-3.2, ymax=3.2) + self.defineHistogram('XatSt , YatSt', type='TH2F', path='EXPERT', title="Y vs X reconstructed in MIDDLE station; X (cm); Y(cm)", + xbins=50, xmin=-1200., xmax=1200., ybins=50, ymin=-1200., ymax=1200.) + self.defineHistogram('ZatBe', type='TH1F', path='EXPERT', title="DCA along Z; Z (cm)", + xbins=100, xmin=-2100, xmax=2100) + self.defineHistogram('XatBe', type='TH1F', path='EXPERT', title="DCA along X; X (cm)", + xbins=100, xmin=-1000, xmax=1000) class TrigmuCombHypoMonitoring(GenericMonitoringTool): def __init__ (self, name): super(TrigmuCombHypoMonitoring, self).__init__(name) - self.HistPath = name - self.Histograms = [ defineHistogram('Pt', type='TH1F', path='EXPERT', title="p_{T} reconstruction from #muComb; p_{T} (GeV)", - xbins=210, xmin=-105, xmax=105) ] - self.Histograms += [ defineHistogram('PtFL', type='TH1F', path='EXPERT', title="p_{T} of not selected muons from #muComb; p_{T} (GeV)", - xbins=210, xmin=-105., xmax=105.) ] - self.Histograms += [ defineHistogram('StrategyFlag', type='TH1F', path='EXPERT', title="Combination Strategy from #muComb; Strategy Code", - xbins=12, xmin=-1.5, xmax=10.5) ] - self.Histograms += [ defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #muComb; Eta", - xbins=108, xmin=-2.7, xmax=2.7) ] - self.Histograms += [ defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #muComb; Phi (rad)", - xbins=96, xmin=-3.1416, xmax=3.1416) ] - self.Histograms += [ defineHistogram('Z0', type='TH1F', path='EXPERT', title="PCA along Z from ID track from #muComb; PCA(Z0) (mm)", - xbins=100, xmin=-200, xmax=200) ] - self.Histograms += [ defineHistogram('A0', type='TH1F', path='EXPERT', title="PCA along x-y from ID track from #muComb; PCA(A0) (mm)", - xbins=100, xmin=-0.6, xmax=0.6) ] + self.defineHistogram('Pt', type='TH1F', path='EXPERT', title="p_{T} reconstruction from #muComb; p_{T} (GeV)", + xbins=210, xmin=-105, xmax=105) + self.defineHistogram('PtFL', type='TH1F', path='EXPERT', title="p_{T} of not selected muons from #muComb; p_{T} (GeV)", + xbins=210, xmin=-105., xmax=105.) + self.defineHistogram('StrategyFlag', type='TH1F', path='EXPERT', title="Combination Strategy from #muComb; Strategy Code", + xbins=12, xmin=-1.5, xmax=10.5) + self.defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #muComb; Eta", + xbins=108, xmin=-2.7, xmax=2.7) + self.defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #muComb; Phi (rad)", + xbins=96, xmin=-3.1416, xmax=3.1416) + self.defineHistogram('Z0', type='TH1F', path='EXPERT', title="PCA along Z from ID track from #muComb; PCA(Z0) (mm)", + xbins=100, xmin=-200, xmax=200) + self.defineHistogram('A0', type='TH1F', path='EXPERT', title="PCA along x-y from ID track from #muComb; PCA(A0) (mm)", + xbins=100, xmin=-0.6, xmax=0.6) class TrigMuisoHypoMonitoring(GenericMonitoringTool): def __init__ (self, name): super(TrigMuisoHypoMonitoring, self).__init__(name) - self.HistPath = name - self.Histograms = [ defineHistogram('CutCounter', type='TH1F', path='EXPERT', title="MuIsoHypo cut counter;cut; nevents", xbins=9, xmin=-1.5, xmax=7.5, opt="kCumulative") ] - self.Histograms += [ defineHistogram('SumPtCone', type='TH1F', path='EXPERT', title="MuIsoHypo SumPt in cone around muon;E [GeV/c]; nevents", xbins=200, xmin=0., xmax=15.) ] + self.defineHistogram('CutCounter', type='TH1F', path='EXPERT', title="MuIsoHypo cut counter;cut; nevents", + xbins=9, xmin=-1.5, xmax=7.5, opt="kCumulative") + self.defineHistogram('SumPtCone', type='TH1F', path='EXPERT', title="MuIsoHypo SumPt in cone around muon;E [GeV/c]; nevents", + xbins=200, xmin=0., xmax=15.) class TrigMuonEFMSonlyHypoMonitoring(GenericMonitoringTool): def __init__ (self, name="TrigMuonEFMSonlyHypoMonitoring"): super(TrigMuonEFMSonlyHypoMonitoring, self).__init__(name) - self.HistPath = name - - self.Histograms = [ defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #TrigMuonEFMSonlyHypo; P_{T} (MeV)", - xbins=200, xmin=-100, xmax=100) ] - self.Histograms += [ defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #TrigMuonEFMSonlyHypo; Eta", - xbins=100, xmin=-3.2, xmax=3.2) ] - self.Histograms += [ defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #TrigMuonEFMSonlyHypo; Phi", - xbins=100, xmin=-3.15, xmax=3.15) ] - self.Histograms += [ defineHistogram('Pt_sel', type='TH1F', path='EXPERT', title="Selected P_{T} reconstruction from #TrigMuonEFMSonlyHypo; P_{T} (MeV)", - xbins=200, xmin=-100, xmax=100) ] - self.Histograms += [ defineHistogram('Eta_sel', type='TH1F', path='EXPERT', title="Selected Eta reconstruction from #TrigMuonEFMSonlyHypo; Eta", - xbins=100, xmin=-3.2, xmax=3.2) ] - self.Histograms += [ defineHistogram('Phi_sel', type='TH1F', path='EXPERT', title="Selected Phi reconstruction from #TrigMuonEFMSonlyHypo; Phi", - xbins=100, xmin=-3.15, xmax=3.15) ] + + self.defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #TrigMuonEFMSonlyHypo; P_{T} (MeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #TrigMuonEFMSonlyHypo; Eta", + xbins=100, xmin=-3.2, xmax=3.2) + self.defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #TrigMuonEFMSonlyHypo; Phi", + xbins=100, xmin=-3.15, xmax=3.15) + self.defineHistogram('Pt_sel', type='TH1F', path='EXPERT', title="Selected P_{T} reconstruction from #TrigMuonEFMSonlyHypo; P_{T} (MeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('Eta_sel', type='TH1F', path='EXPERT', title="Selected Eta reconstruction from #TrigMuonEFMSonlyHypo; Eta", + xbins=100, xmin=-3.2, xmax=3.2) + self.defineHistogram('Phi_sel', type='TH1F', path='EXPERT', title="Selected Phi reconstruction from #TrigMuonEFMSonlyHypo; Phi", + xbins=100, xmin=-3.15, xmax=3.15) class TrigMuonEFCombinerHypoMonitoring(GenericMonitoringTool): def __init__ (self, name="TrigMuonEFCombinerHypoMonitoring"): super(TrigMuonEFCombinerHypoMonitoring, self).__init__(name) - self.HistPath = name - - self.Histograms = [ defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #TrigMuonEFCombinerHypo; P_{T} (MeV)", - xbins=200, xmin=-100, xmax=100) ] - self.Histograms += [ defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #TrigMuonEFCombinerHypo; Eta", - xbins=100, xmin=-3.2, xmax=3.2) ] - self.Histograms += [ defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #TrigMuonEFCombinerHypo; Phi", - xbins=100, xmin=-3.15, xmax=3.15) ] - self.Histograms += [ defineHistogram('Pt_sel', type='TH1F', path='EXPERT', title="Selected P_{T} reconstruction from #TrigMuonEFCombinerHypo; P_{T} (MeV)", - xbins=200, xmin=-100, xmax=100) ] - self.Histograms += [ defineHistogram('Eta_sel', type='TH1F', path='EXPERT', title="Selected Eta reconstruction from #TrigMuonEFCombinerHypo; Eta", - xbins=100, xmin=-3.2, xmax=3.2) ] - self.Histograms += [ defineHistogram('Phi_sel', type='TH1F', path='EXPERT', title="Selected Phi reconstruction from #TrigMuonEFCombinerHypo; Phi", - xbins=100, xmin=-3.15, xmax=3.15) ] + + self.defineHistogram('Pt', type='TH1F', path='EXPERT', title="P_{T} reconstruction from #TrigMuonEFCombinerHypo; P_{T} (MeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('Eta', type='TH1F', path='EXPERT', title="Eta reconstruction from #TrigMuonEFCombinerHypo; Eta", + xbins=100, xmin=-3.2, xmax=3.2) + self.defineHistogram('Phi', type='TH1F', path='EXPERT', title="Phi reconstruction from #TrigMuonEFCombinerHypo; Phi", + xbins=100, xmin=-3.15, xmax=3.15) + self.defineHistogram('Pt_sel', type='TH1F', path='EXPERT', title="Selected P_{T} reconstruction from #TrigMuonEFCombinerHypo; P_{T} (MeV)", + xbins=200, xmin=-100, xmax=100) + self.defineHistogram('Eta_sel', type='TH1F', path='EXPERT', title="Selected Eta reconstruction from #TrigMuonEFCombinerHypo; Eta", + xbins=100, xmin=-3.2, xmax=3.2) + self.defineHistogram('Phi_sel', type='TH1F', path='EXPERT', title="Selected Phi reconstruction from #TrigMuonEFCombinerHypo; Phi", + xbins=100, xmin=-3.15, xmax=3.15)