Skip to content
Snippets Groups Projects
Commit ca6813da authored by Frank Winklmeier's avatar Frank Winklmeier Committed by Walter Lampl
Browse files

TrigMuonHypoMT: Fix histogram directories

- Use a common sub-directory for all histograms produced by the same
  HypoTool class.
- Set the name of the private monitoring tool to "MonTool" as we do not
  need unique names for private tools.
parent a54358de
No related branches found
No related tags found
No related merge requests found
......@@ -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 )
# 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")
# 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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment