Exemple #1
0
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)
Exemple #3
0
# 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
Exemple #4
0
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
Exemple #5
0
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

Exemple #7
0
# 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,
Exemple #8
0
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
Exemple #10
0
# 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
Exemple #11
0
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() ]