Beispiel #1
0
def toolSoftMuonTagNewLikelihoodTool(name,
                                     useBTagFlagsDefaults=True,
                                     **options):
    """Sets up a SoftMuonTagNewLikelihoodTool tool and returns it.

    The following options have BTaggingFlags defaults:

    OutputLevel                         default: BTaggingFlags.OutputLevel
    taggerName                          default: "SoftMu"
    smoothNTimes                        default: 0 (1 if BTaggingFlags.Runmodus == 'reference')
    normalizedProb                      default: True
    interpolate                         default: True

    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,
            'taggerName': 'SoftMu',
            'smoothNTimes': 0,
            'normalizedProb': True,
            'interpolate': True
        }
        if (BTaggingFlags.Runmodus == 'reference'):
            defaults['smoothNTimes'] = 1
        for option in defaults:
            options.setdefault(option, defaults[option])
    options['name'] = name
    from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool
    return Analysis__NewLikelihoodTool(**options)
Beispiel #2
0
def toolIP2DSpcFlipNewLikelihoodTool(name, useBTagFlagsDefaults = True, **options):
    """Sets up a IP2DSpcFlipNewLikelihoodTool tool and returns it.

    The following options have BTaggingFlags defaults:

    OutputLevel                         default: BTaggingFlags.OutputLevel
    taggerName                          default: "IP2D"

    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,
                     'taggerName'                          : 'IP2D' }
        for option in defaults:
            options.setdefault(option, defaults[option])
    options['name'] = name
    from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool
    return Analysis__NewLikelihoodTool(**options)
Beispiel #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
Beispiel #4
0
# each tagger needs own instance, can't be shared!
from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool
SoftMuonTagChi2NewLikelihood = Analysis__NewLikelihoodTool(
    name="SoftMuonTagChi2NewLikelihoodTool",
    OutputLevel=BTaggingFlags.OutputLevel,
    taggerName="SoftMuChi2",
    calibrationTool=BTagCalibrationBrokerTool,
    smoothNTimes=0,
    normalizedProb=True,
    interpolate=True)
ToolSvc += SoftMuonTagChi2NewLikelihood
if BTaggingFlags.OutputLevel < 3:
    print SoftMuonTagChi2NewLikelihood

from JetTagTools.JetTagToolsConf import Analysis__SoftMuonTag

SoftMuonTagChi2Tool = Analysis__SoftMuonTag(
    name="SoftMuonTagChi2",
    Runmodus=BTaggingFlags.Runmodus,
    OutputLevel=BTaggingFlags.OutputLevel,
    LikelihoodTool=SoftMuonTagChi2NewLikelihood,
    TrackToVertexTool=BTagTrackToVertexTool,
    MuonAssociationName="Muons",
    jetCollectionList=BTaggingFlags.Jets,
    originalMuCollectionName=BTaggingFlags.MuonCollectionName)
SoftMuonTagChi2Tool.TaggingAlgType = "CHI2"  # this is what switches the chi2 tagger ON
SoftMuonTagChi2Tool.RecAlgorithm = 0  # use only combined muons
SoftMuonTagChi2Tool.writeInfoPlus = 1  # turn InfoPlus off because the L1D tagger takes care of it (albeit cuts on the chi2...) --> # Turn-on (for rel 17.2)
SoftMuonTagChi2Tool.CutMatchChi2 = 10000  # no match-chi2 cut

ToolSvc += SoftMuonTagChi2Tool
Beispiel #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
# each tagger needs own instance, can't be shared!
from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool
SoftMuonTagNewLikelihood = Analysis__NewLikelihoodTool( 
  name = "SoftMuonTagNewLikelihoodTool",
  OutputLevel = BTaggingFlags.OutputLevel,
  taggerName = "SoftMu",
  calibrationTool = BTagCalibrationBrokerTool,
  smoothNTimes = 0,
  normalizedProb = True,
  interpolate = True
  )
ToolSvc += SoftMuonTagNewLikelihood
if BTaggingFlags.OutputLevel < 3:
  print SoftMuonTagNewLikelihood

from JetTagTools.JetTagToolsConf import Analysis__SoftMuonTag

SoftMuonTagTool = Analysis__SoftMuonTag(
  name = "SoftMuonTag",
  Runmodus = BTaggingFlags.Runmodus,
  OutputLevel = BTaggingFlags.OutputLevel,
  LikelihoodTool    = SoftMuonTagNewLikelihood,
  TrackToVertexTool = BTagTrackToVertexTool,
  jetCollectionList = BTaggingFlags.Jets,
  originalMuCollectionName = BTaggingFlags.MuonCollectionName
  )
if BTaggingFlags.Runmodus == 'reference':
  SoftMuonTagTool.BTagJetEtamin = 2.5
  SoftMuonTagNewLikelihood.smoothNTimes = 1
  
Beispiel #7
0
# each tagger needs own instance, can't be shared!
from JetTagTools.JetTagToolsConf import Analysis__NewLikelihoodTool

# 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,