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