def toolIP2DTrackSelector(name, useBTagFlagsDefaults=True, **options): """Sets up a IP2DTrackSelector tool and returns it. The following options have BTaggingFlags defaults: OutputLevel default: BTaggingFlags.OutputLevel useBLayerHitPrediction default: True usepTDepTrackSel default: False nHitBLayer default: 0 input: name: The name of the tool (should be unique). useBTagFlagsDefaults : Whether to use BTaggingFlags defaults for options that are not specified. **options: Python dictionary with options for the tool. output: The actual tool, which can then by added to ToolSvc via ToolSvc += output.""" if useBTagFlagsDefaults: from BTagging.BTaggingConfiguration_CommonTools import toolBTagTrackToVertexTool as toolBTagTrackToVertexTool trackToVertexTool = toolBTagTrackToVertexTool('BTagTrackToVertexTool') defaults = { 'OutputLevel': BTaggingFlags.OutputLevel, 'useBLayerHitPrediction': True, 'nHitBLayer': 0, 'usepTDepTrackSel': False, 'trackToVertexTool': trackToVertexTool, } for option in defaults: options.setdefault(option, defaults[option]) options['name'] = name from JetTagTools.JetTagToolsConf import Analysis__TrackSelector return Analysis__TrackSelector(**options)
def toolIP1DTrackSelector(name, useBTagFlagsDefaults = True, **options): """Sets up a IP1DTrackSelector tool and returns it. The following options have BTaggingFlags defaults: OutputLevel default: BTaggingFlags.OutputLevel input: name: The name of the tool (should be unique). useBTagFlagsDefaults : Whether to use BTaggingFlags defaults for options that are not specified. **options: Python dictionary with options for the tool. output: The actual tool, which can then by added to ToolSvc via ToolSvc += output.""" if useBTagFlagsDefaults: defaults = { 'OutputLevel' : BTaggingFlags.OutputLevel } for option in defaults: options.setdefault(option, defaults[option]) options['name'] = name from JetTagTools.JetTagToolsConf import Analysis__TrackSelector return Analysis__TrackSelector(**options)
# each tagger needs own instance, can't be shared! from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool IP3DSpcPosNewLikelihood = Analysis__NewLikelihoodTool( name="IP3DSpcPosNewLikelihoodTool", OutputLevel=BTaggingFlags.OutputLevel, taggerName="IP3D", calibrationTool=BTagCalibrationBrokerTool) ToolSvc += IP3DSpcPosNewLikelihood if BTaggingFlags.OutputLevel < 3: print IP3DSpcPosNewLikelihood # each tagger needs own instance, can't be shared! ( -> not sure here ... ask Laurent, JB) from JetTagTools.JetTagToolsConf import Analysis__TrackSelector IP3DSpcPosTrackSelector = Analysis__TrackSelector( useBLayerHitPrediction=True, name="IP3DSpcPosTrackSelector", trackToVertexTool=BTagTrackToVertexTool, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += IP3DSpcPosTrackSelector if BTaggingFlags.OutputLevel < 3: print IP3DSpcPosTrackSelector from JetTagTools.JetTagToolsConf import Analysis__SVForIPTool SVForIPTool_IP3DSpcPos = Analysis__SVForIPTool( name="SVForIPTool_IP3DSpcPos", OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += SVForIPTool_IP3DSpcPos if BTaggingFlags.OutputLevel < 3: print SVForIPTool_IP3DSpcPos from JetTagTools.JetTagToolsConf import Analysis__BasicTrackGradeFactory
def add_ipfordg(ToolSvc, calibration_tool, BTaggingFlags, track_to_vertex_tool, track_to_vertex_ip_estimator, do_neg=False): # each tagger needs own instance, can't be shared! from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool likelihood_tool = Analysis__NewLikelihoodTool( name = "IPFordGNegProbTool" if do_neg else "IPFordGProbTool", OutputLevel = BTaggingFlags.OutputLevel, taggerName = "IP3D", calibrationTool = calibration_tool, ) ToolSvc += likelihood_tool if BTaggingFlags.OutputLevel < 3: print likelihood_tool # each tagger needs own instance, can't be shared! ( -> not sure here ... ask Laurent, JB) from JetTagTools.JetTagToolsConf import Analysis__TrackSelector track_selector = Analysis__TrackSelector( useBLayerHitPrediction = True, name = "IPFordGNegTrackSel" if do_neg else "IPFordGTrackSel", trackToVertexTool = track_to_vertex_tool, OutputLevel = BTaggingFlags.OutputLevel ) ToolSvc += track_selector if BTaggingFlags.OutputLevel < 3: print track_selector from JetTagTools.JetTagToolsConf import Analysis__SVForIPTool sv_for_ip_tool = Analysis__SVForIPTool( name = "SVForIPTool_IPFordGNeg" if do_neg else "SVForIPTool_IPFordG", OutputLevel = BTaggingFlags.OutputLevel) ToolSvc += sv_for_ip_tool if BTaggingFlags.OutputLevel < 3: print sv_for_ip_tool from JetTagTools.JetTagToolsConf import ( Analysis__DetailedTrackGradeFactory) detailed_track_grade_factory = Analysis__DetailedTrackGradeFactory( name = "IPFordGNegDetailedTGF" if do_neg else "IPFordGNegDetailedTGF", OutputLevel = BTaggingFlags.OutputLevel, hitBLayerGrade=True, TrackSummaryTool = None, useDetailSharedHitInfo = True, useSharedHitInfo = True) ToolSvc += detailed_track_grade_factory if BTaggingFlags.OutputLevel < 3: print basic_track_grade_factory print detailed_track_grade_factory if do_neg: flip_args = dict( usePosIP = True, useNegIP = False, flipIPSign = True, ) vx_tool_name = "InDetVKalVxInJetToolFordGNeg" else: flip_args = dict() vx_tool_name = "InDetVKalVxInJetToolFordG" from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import ( InDet__InDetVKalVxInJetTool) vx_in_jet_tool = InDet__InDetVKalVxInJetTool( name = vx_tool_name, TrackSummaryTool = None, #Do not need it in b-tagging OutputLevel = BTaggingFlags.OutputLevel) ToolSvc += vx_in_jet_tool from JetTagTools.JetTagToolsConf import Analysis__IPTag ip3d_tool = Analysis__IPTag( # IPTag strips the Tag of the end of the name and uses the rest as # the TagInfo object name name = "IPFordGNegTag" if do_neg else "IPFordGTag", Runmodus = BTaggingFlags.Runmodus, referenceType = BTaggingFlags.ReferenceType, impactParameterView = "3D", OutputLevel = BTaggingFlags.OutputLevel, LikelihoodTool = likelihood_tool, trackSelectorTool = track_selector, trackToVertexTool = track_to_vertex_tool, trackGradePartitions = [ "Good", "BlaShared", "PixShared", "SctShared", "0HitBLayer" ], RejectBadTracks = False, writeInfoPlus = False, originalTPCollectionName = BTaggingFlags.TrackParticleCollectionName, jetCollectionList = BTaggingFlags.Jets, jetWithInfoPlus = BTaggingFlags.JetsWithInfoPlus, SecVxFinderNameForV0Removal = vx_tool_name, SecVxFinderNameForIPSign = vx_tool_name, SVForIPTool = sv_for_ip_tool, trackGradeFactory = detailed_track_grade_factory, TrackToVertexIPEstimator = track_to_vertex_ip_estimator, UseCHypo=True, #switch to true (better!) when creating new PDFs unbiasIPEstimation = False, **flip_args ) # Ford's cuts track_selector.nHitBLayer=0 track_selector.nHitPix=1 # track_selector.d0Max=2.0 # track_selector.z0Max=2.5 # InDetVKalVxNegInJetTool.CutPixelHits=1 vx_in_jet_tool.CutPixelHits=1 if BTaggingFlags.OutputLevel < 3: print vx_in_jet_tool ToolSvc += ip3d_tool if BTaggingFlags.OutputLevel < 3: print ip3d_tool return ip3d_tool
def add_ipfordg(ToolSvc, calibration_tool, BTaggingFlags, track_to_vertex_tool, track_to_vertex_ip_estimator, do_neg=False): # each tagger needs own instance, can't be shared! from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool likelihood_tool = Analysis__NewLikelihoodTool( name="IPFordGNegProbTool" if do_neg else "IPFordGProbTool", OutputLevel=BTaggingFlags.OutputLevel, taggerName="IP3D", calibrationTool=calibration_tool, ) ToolSvc += likelihood_tool if BTaggingFlags.OutputLevel < 3: print likelihood_tool # each tagger needs own instance, can't be shared! ( -> not sure here ... ask Laurent, JB) from JetTagTools.JetTagToolsConf import Analysis__TrackSelector track_selector = Analysis__TrackSelector( useBLayerHitPrediction=True, name="IPFordGNegTrackSel" if do_neg else "IPFordGTrackSel", trackToVertexTool=track_to_vertex_tool, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += track_selector if BTaggingFlags.OutputLevel < 3: print track_selector from JetTagTools.JetTagToolsConf import Analysis__SVForIPTool sv_for_ip_tool = Analysis__SVForIPTool( name="SVForIPTool_IPFordGNeg" if do_neg else "SVForIPTool_IPFordG", OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += sv_for_ip_tool if BTaggingFlags.OutputLevel < 3: print sv_for_ip_tool from JetTagTools.JetTagToolsConf import ( Analysis__DetailedTrackGradeFactory) detailed_track_grade_factory = Analysis__DetailedTrackGradeFactory( name="IPFordGNegDetailedTGF" if do_neg else "IPFordGNegDetailedTGF", OutputLevel=BTaggingFlags.OutputLevel, hitBLayerGrade=True, TrackSummaryTool=None, useDetailSharedHitInfo=True, useSharedHitInfo=True) ToolSvc += detailed_track_grade_factory if BTaggingFlags.OutputLevel < 3: print basic_track_grade_factory print detailed_track_grade_factory if do_neg: flip_args = dict( usePosIP=True, useNegIP=False, flipIPSign=True, ) vx_tool_name = "InDetVKalVxInJetToolFordGNeg" else: flip_args = dict() vx_tool_name = "InDetVKalVxInJetToolFordG" from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import ( InDet__InDetVKalVxInJetTool) vx_in_jet_tool = InDet__InDetVKalVxInJetTool( name=vx_tool_name, TrackSummaryTool=None, #Do not need it in b-tagging OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += vx_in_jet_tool from JetTagTools.JetTagToolsConf import Analysis__IPTag ip3d_tool = Analysis__IPTag( # IPTag strips the Tag of the end of the name and uses the rest as # the TagInfo object name name="IPFordGNegTag" if do_neg else "IPFordGTag", Runmodus=BTaggingFlags.Runmodus, referenceType=BTaggingFlags.ReferenceType, impactParameterView="3D", OutputLevel=BTaggingFlags.OutputLevel, LikelihoodTool=likelihood_tool, trackSelectorTool=track_selector, trackToVertexTool=track_to_vertex_tool, trackGradePartitions=[ "Good", "BlaShared", "PixShared", "SctShared", "0HitBLayer" ], RejectBadTracks=False, writeInfoPlus=False, originalTPCollectionName=BTaggingFlags.TrackParticleCollectionName, jetCollectionList=BTaggingFlags.Jets, jetWithInfoPlus=BTaggingFlags.JetsWithInfoPlus, SecVxFinderNameForV0Removal=vx_tool_name, SecVxFinderNameForIPSign=vx_tool_name, SVForIPTool=sv_for_ip_tool, trackGradeFactory=detailed_track_grade_factory, TrackToVertexIPEstimator=track_to_vertex_ip_estimator, UseCHypo=True, #switch to true (better!) when creating new PDFs unbiasIPEstimation=False, **flip_args) # Ford's cuts track_selector.nHitBLayer = 0 track_selector.nHitPix = 1 # track_selector.d0Max=2.0 # track_selector.z0Max=2.5 # InDetVKalVxNegInJetTool.CutPixelHits=1 vx_in_jet_tool.CutPixelHits = 1 if BTaggingFlags.OutputLevel < 3: print vx_in_jet_tool ToolSvc += ip3d_tool if BTaggingFlags.OutputLevel < 3: print ip3d_tool return ip3d_tool
from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool IP1DNewLikelihood = Analysis__NewLikelihoodTool( name = "IP1DNewLikelihoodTool", OutputLevel = BTaggingFlags.OutputLevel, taggerName = "IP1D", calibrationTool = BTagCalibrationBrokerTool ) ToolSvc += IP1DNewLikelihood if BTaggingFlags.OutputLevel < 3: print IP1DNewLikelihood # each tagger needs own instance, can't be shared! ( -> not sure here ... ask Laurent, JB) from JetTagTools.JetTagToolsConf import Analysis__TrackSelector IP1DTrackSelector = Analysis__TrackSelector( name = "IP1DTrackSelector", OutputLevel = BTaggingFlags.OutputLevel, trackToVertexTool = BTagTrackToVertexTool ) ToolSvc += IP1DTrackSelector if BTaggingFlags.OutputLevel < 3: print IP1DTrackSelector from JetTagTools.JetTagToolsConf import Analysis__SVForIPTool SVForIPTool_IP1D = Analysis__SVForIPTool(name = "SVForIPTool_IP1D", OutputLevel = BTaggingFlags.OutputLevel) ToolSvc += SVForIPTool_IP1D if BTaggingFlags.OutputLevel < 3: print SVForIPTool_IP1D
# Likelihood tool SoftElelectronTagNewLikelihood = Analysis__NewLikelihoodTool( name="SoftElectronTagNewLikelihoodTool", OutputLevel=BTaggingFlags.OutputLevel, taggerName="SoftEl", calibrationTool=BTagCalibrationBrokerTool) ToolSvc += SoftElelectronTagNewLikelihood if BTaggingFlags.OutputLevel < 3: print SoftElelectronTagNewLikelihood # Track selector tool from JetTagTools.JetTagToolsConf import Analysis__TrackSelector SoftElectronTagTrackSelector = Analysis__TrackSelector( name="SoftElectronTagTrackSelector", trackToVertexTool=BTagTrackToVertexTool, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += SoftElectronTagTrackSelector if BTaggingFlags.OutputLevel < 3: print SoftElectronTagTrackSelector # from JetTagTools.JetTagToolsConf import Analysis__SoftElectronTag SoftElectronTagTool = Analysis__SoftElectronTag( name="SoftElectronTag", Runmodus=BTaggingFlags.Runmodus, OutputLevel=BTaggingFlags.OutputLevel, originalElCollectionName="ElectronAODCollection", writeInfoPlus=True, LikelihoodTool=SoftElelectronTagNewLikelihood,
monManJetTag = AthenaMonManager( name="JetTagMonManager", FileKey=DQMonFlags.monManFileKey(), Environment=DQMonFlags.monManEnvironment(), ManualDataTypeSetup=DQMonFlags.monManManualDataTypeSetup(), DataType=DQMonFlags.monManDataType()) topSequence += monManJetTag from JetTagTools.JetTagToolsConf import Analysis__TrackSelector trackSelectorTool = Analysis__TrackSelector(name="Analysis::TrackSelector") ToolSvc += trackSelectorTool #trackSelectorTool.OutputLevel = VERBOSE trackSelectorTool.nHitBLayer = 0 from JetTagMonitoring.JetTagMonitoringConf import JetTagMonitoring jetTagMonTool = JetTagMonitoring(name="jetTagMonTool", ) ToolSvc += jetTagMonTool monManJetTag.AthenaMonTools += [jetTagMonTool] # remove events with non-collision BCIDs from your monitoring tools # see https://indico.cern.ch/getFile.py/access?contribId=1&resId=1&materialId=slides&confId=135968 jetTagMonTool.FilterTools += [monFilledBunchFilterTool] # remove events with intolerable LAr defects from AthenaMonitoring.BadLBFilterTool import GetLArBadLBFilterTool monbadlb = GetLArBadLBFilterTool() jetTagMonTool.FilterTools += [monbadlb] jetTagMonTool.OutputLevel = INFO #Properties defined in the jobOptions
# Track selector tool from JetTagTools.JetTagToolsConf import Analysis__TrackSelector GbbNNTagTrackSelector = Analysis__TrackSelector( name="GbbNNTagTrackSelector", trackToVertexTool=BTagTrackToVertexTool, pTMin=1000., d0Max=2.0, z0Max=2.0, nHitPix=1, nHitSct=4, nHitSi=7, fitChi2OnNdfMax=3.0, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += GbbNNTagTrackSelector if BTaggingFlags.OutputLevel < 3: print GbbNNTagTrackSelector # from JetTagTools.JetTagToolsConf import Analysis__HadFlavorTag NewGbbNNTag = Analysis__HadFlavorTag( name="NewGbbNNTag", OutputLevel=BTaggingFlags.OutputLevel, tagMode="GbbNN", Runmodus=BTaggingFlags.Runmodus, trackSelectorTool=GbbNNTagTrackSelector, ) ToolSvc += NewGbbNNTag if BTaggingFlags.OutputLevel < 3: print NewGbbNNTag
# each tagger needs own instance, can't be shared! from JetTagTools.JetTagToolsConf import Analysis__TrackSelector TrackCountingFlipTrackSelector = Analysis__TrackSelector( name="TrackCountingFlipTrackSelector", trackToVertexTool=BTagTrackToVertexTool, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += TrackCountingFlipTrackSelector if BTaggingFlags.OutputLevel < 3: print TrackCountingFlipTrackSelector from JetTagTools.JetTagToolsConf import Analysis__SVForIPTool SVForIPTool_TrackCountingFlip = Analysis__SVForIPTool( name="SVForIPTool_TrackCountingFlip", OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += SVForIPTool_TrackCountingFlip if BTaggingFlags.OutputLevel < 3: print SVForIPTool_TrackCountingFlip from JetTagTools.JetTagToolsConf import Analysis__BasicTrackGradeFactory TrackCountingFlipBasicTrackGradeFactory = Analysis__BasicTrackGradeFactory( name="TrackCountingFlipBasicTrackGradeFactory", OutputLevel=BTaggingFlags.OutputLevel, TrackSummaryTool=None, useSharedHitInfo=True) ToolSvc += TrackCountingFlipBasicTrackGradeFactory if BTaggingFlags.OutputLevel < 3: print TrackCountingFlipBasicTrackGradeFactory from JetTagTools.JetTagToolsConf import Analysis__TrackCounting
monManJetTag = AthenaMonManager(name="JetTagMonManager", FileKey = DQMonFlags.monManFileKey(), Environment = DQMonFlags.monManEnvironment(), ManualDataTypeSetup = DQMonFlags.monManManualDataTypeSetup(), DataType = DQMonFlags.monManDataType()) from BTagging.BTaggingConfiguration_CommonTools import toolBTagTrackToVertexTool as toolBTagTrackToVertexTool trackToVertexTool = toolBTagTrackToVertexTool('BTagTrackToVertexTool') options = {} options.setdefault('trackToVertexTool', trackToVertexTool) options.setdefault('name', "Analysis::TrackSelector") options.setdefault('nHitBLayer', 0) from JetTagTools.JetTagToolsConf import Analysis__TrackSelector trackSelectorTool = Analysis__TrackSelector (**options) ToolSvc += trackSelectorTool #trackSelectorTool.OutputLevel = VERBOSE from JetTagMonitoring.JetTagMonitoringConf import JetTagMonitoring jetTagMonTool = JetTagMonitoring ( name = "jetTagMonTool", ) # remove events with non-collision BCIDs from your monitoring tools # see https://indico.cern.ch/getFile.py/access?contribId=1&resId=1&materialId=slides&confId=135968 from AthenaMonitoring.FilledBunchFilterTool import GetFilledBunchFilterTool jetTagMonTool.FilterTools += [ GetFilledBunchFilterTool() ] # remove events with intolerable LAr defects from AthenaMonitoring.BadLBFilterTool import GetLArBadLBFilterTool jetTagMonTool.FilterTools += [ GetLArBadLBFilterTool() ]