def __init__(self, name = 'AtlasVKalVxInJetFinder' ): from __main__ import ToolSvc mlog = logging.getLogger( 'AtlasVKalVxInJetFinder::__init__ ' ) mlog.info("entering") #----------------- ATLAS magnetic field from AthenaCommon.AppMgr import ServiceMgr from MagFieldServices.MagFieldServicesConf import MagField__AtlasFieldSvc ServiceMgr += MagField__AtlasFieldSvc("myAtlasFieldSvc"); #----------------- ATLAS extrapolator from TrkExTools.AtlasExtrapolator import AtlasExtrapolator SVAtlasExtrapolator=AtlasExtrapolator() ToolSvc+=SVAtlasExtrapolator #-------------------------- from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool SVAtlasTrackSummaryTool = AtlasTrackSummaryTool() ToolSvc += SVAtlasTrackSummaryTool #------------------------- # TrackParticle creator # from TrkParticleCreator.TrkParticleCreatorConf import Trk__TrackParticleCreatorTool SVParticleCreatorTool = Trk__TrackParticleCreatorTool(name="SVParticleCreatorTool", TrackSummaryTool=SVAtlasTrackSummaryTool, UseTrackSummaryTool=False ) ToolSvc += SVParticleCreatorTool #---------------------- # VKalVrt vertex fitter # from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter SVertexFitterTool = Trk__TrkVKalVrtFitter(name="SVertexFitterTool", Extrapolator=SVAtlasExtrapolator, AtlasMagFieldSvc = "myAtlasFieldSvc" ) ToolSvc += SVertexFitterTool #---------------------- # Secondary vertex finder itself # from TrkVertexFitterUtils.TrkVertexFitterUtilsConf import Trk__FullLinearizedTrackFactory SVLinearizedTrackFactory = Trk__FullLinearizedTrackFactory(name="SVLinearizedTrackFactory",Extrapolator = SVAtlasExtrapolator) ToolSvc += SVLinearizedTrackFactory from TrkVertexFitterUtils.TrkVertexFitterUtilsConf import Trk__TrackToVertexIPEstimator SVTrackToVertexIPEstimator = Trk__TrackToVertexIPEstimator(name="SVTrackToVertexIPEstimator", Extrapolator = SVAtlasExtrapolator, LinearizedTrackFactory=SVLinearizedTrackFactory) ToolSvc += SVTrackToVertexIPEstimator InDet__InDetVKalVxInJetTool.__init__( self, name = name, VertexFitterTool = SVertexFitterTool, TrackParticleCreator = SVParticleCreatorTool, TrackSummaryTool = SVAtlasTrackSummaryTool, TrackToVertexTool = SVTrackToVertexIPEstimator )
def toolInDetVKalVxNegativeTagInJetTool(name, useBTagFlagsDefaults = True, **options): """Sets up a InDetVKalVxNegativeTagInJetTool tool and returns it. The following options have BTaggingFlags defaults: OutputLevel default: BTaggingFlags.OutputLevel getNegativeTag default: True CutA0 default: 2.0 (new tuned cuts for SV0 (Sara)) CutZVrt default: 2.0 CutPixelHits default: 2 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. Note however that this tool also needs to be added to the main B-tagging tool.""" if useBTagFlagsDefaults: defaults = { 'OutputLevel' : BTaggingFlags.OutputLevel, 'ExistIBL' : geoFlags.isIBL(), # 'TrackSummaryTool' : None, 'getNegativeTag' : True, 'CutA0' : 2.0, 'CutZVrt' : 2.0, 'CutPixelHits' : 2 } for option in defaults: options.setdefault(option, defaults[option]) options['name'] = name from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool return InDet__InDetVKalVxInJetTool(**options)
def toolInDetVKalMultiVxInJetTool(name, useBTagFlagsDefaults = True, **options): """Sets up a InDetVKalMultiVxInJetTool tool and returns it. The following options have BTaggingFlags defaults: OutputLevel default: BTaggingFlags.OutputLevel getNegativeTail default: False ConeForTag default: 1.0 MultiVertex 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. Note however that this tool also needs to be added to the main B-tagging tool.""" if useBTagFlagsDefaults: defaults = { 'OutputLevel' : BTaggingFlags.OutputLevel, 'getNegativeTail' : False, 'ExistIBL' : geoFlags.isIBL(), 'ConeForTag' : 1.0, 'MultiVertex' : True } for option in defaults: options.setdefault(option, defaults[option]) options['name'] = name from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool return InDet__InDetVKalVxInJetTool(**options)
def __init__(self, name="TrigVxSecondary_Bjet_EF", type="bjet"): super(InDet__TrigVxSecondary, self).__init__(name) from AthenaCommon.AppMgr import ToolSvc from AthenaCommon.Include import include from AthenaCommon.GlobalFlags import GlobalFlags # Start of offline vertex finder tool configuration from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool InDetVKalVxInJetTool = InDet__InDetVKalVxInJetTool( name="InDetEFVKalVxInJetTool", getNegativeTail=False, # True for SV0 ; False for SV1 CutChi2=999999, #remove this cut as in Fex, default was 3 CutSctHits=0, CutPixelHits=2, CutSiHits=7, #was 4 CutBLayHits=1 #OutputLevel = DEBUG ) #Run on/off monitoring InDetVKalVxInJetTool.FillHist = False ToolSvc += InDetVKalVxInJetTool self.SecVtxFinderList += [InDetVKalVxInJetTool] # End of offline vertex finder tool configuration self.sortSecVxContainer = True # Sorting of vertices in order of increasing chi2/NDoF provided in case it is needed self.T2PrmVtxAtEF = True self.T2PrmVtxAtEFAlgoId = 11 # SiTrack=1, IDScan=2, EFID=11 self.UseBeamSpotFlag = False ## HLT jet direction = 1; HLT track-jet direction = 2; LVL1 jet RoI direction =3; Unset = -1 self.UseJetDirection = 1 from InDetTrigVxSecondary.InDetTrigVxSecondaryMonitoring import InDetTrigVxSecondaryValidationMonitoring, InDetTrigVxSecondaryOnlineMonitoring validation = InDetTrigVxSecondaryValidationMonitoring() online = InDetTrigVxSecondaryOnlineMonitoring() from TrigTimeMonitor.TrigTimeHistToolConfig import TrigTimeHistToolConfig time = TrigTimeHistToolConfig("TimeHistogramForInDetTrigVxSecondary") time.TimerHistLimits = [0, 20] self.AthenaMonTools = [time, validation, online]
def __init__(self, name = 'InDetVKalVxInJetFinder' ): from __main__ import ToolSvc mlog = logging.getLogger( 'InDetVKalVxInJetFinder::__init__ ' ) mlog.info("entering") #---------------------- # VKalVrt vertex fitter # from TrkVKalVrtFitter.TrkVKalVrtFitterConf import Trk__TrkVKalVrtFitter SVertexFitterTool = Trk__TrkVKalVrtFitter(name="SVertexFitterTool", Extrapolator="Trk::Extrapolator/AtlasExtrapolator", AtlasMagFieldSvc = "AtlasFieldSvc" #AtlasMagFieldSvc = "Default", #Extrapolator = "DefaultVKalPropagator" ) ToolSvc += SVertexFitterTool #---------------------- # Secondary vertex finder itself # if hasattr(ToolSvc,'InDetParticleCreatorTool'): InDet__InDetVKalVxInJetTool.__init__( self, name = name, VertexFitterTool = SVertexFitterTool ) else: #-------------------------------- # TrackParticle creator is needed from TrkParticleCreator.TrkParticleCreatorConf import Trk__TrackParticleCreatorTool if hasattr(ToolSvc,'InDetTrackSummaryTool'): SVParticleCreatorTool = Trk__TrackParticleCreatorTool(name="SVParticleCreatorTool", TrackSummaryTool="InDetTrackSummaryTool", UseTrackSummaryTool=False ) else: from TrkTrackSummaryTool.AtlasTrackSummaryTool import AtlasTrackSummaryTool SVTrackSummaryTool = AtlasTrackSummaryTool(name="SVTrackSummaryTool") ToolSvc += SVTrackSummaryTool SVParticleCreatorTool = Trk__TrackParticleCreatorTool(name="SVParticleCreatorTool", TrackSummaryTool=SVTrackSummaryTool, UseTrackSummaryTool=False ) ToolSvc += SVParticleCreatorTool InDet__InDetVKalVxInJetTool.__init__( self, name = name, VertexFitterTool = SVertexFitterTool, TrackParticleCreator = SVParticleCreatorTool )
def toolInDetVKalVxInJetTool_Trig(name, useBTagFlagsDefaults=True, **options): """Sets up a InDetVKalVxInJetTool tool and returns it. The following options have BTaggingFlags defaults: TrackSummaryTool default: None (not needed for b-tagging) 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. Note however that this tool also needs to be added to the main B-tagging tool.""" if useBTagFlagsDefaults: defaults = { 'OutputLevel': BTaggingFlags.OutputLevel, 'ExistIBL': geoFlags.isIBL(), } for option in defaults: options.setdefault(option, defaults[option]) options['name'] = name from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool return InDet__InDetVKalVxInJetTool(**options)
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
#load the VKalVertex in Jet finder tool, configured to keep also vertices with negative Lxy from AthenaCommon.AppMgr import ToolSvc from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool InDetVKalVxNegInJetTool = InDet__InDetVKalVxInJetTool( name="InDetVKalVxNegInJetTool", getNegativeTail=True, CutA0=2.0, # new tuned cuts for SV0 (Sara) CutZVrt=2.0, CutPixelHits=2, OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += InDetVKalVxNegInJetTool if BTaggingFlags.OutputLevel < 3: print InDetVKalVxNegInJetTool
#load the VKalVertex in Jet finder tool, configured to keep also vertices with negative Lxy from AthenaCommon.AppMgr import ToolSvc #There two possible configuration of InDetVKalVxInJetTool from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool InDetVKalMultiVxInJetTool = InDet__InDetVKalVxInJetTool(name = "InDetVKalMultiVxInJetTool", getNegativeTail = False, ConeForTag = 1., MultiVertex = True, OutputLevel = BTaggingFlags.OutputLevel) #from InDetVKalVxInJetTool.InDetVKalVxInJetFinder import AtlasVKalVxInJetFinder #InDetVKalMultiVxInJetTool = AtlasVKalVxInJetFinder(name = "InDetVKalMultiVxInJetTool") #InDetVKalMultiVxInJetTool.getNegativeTail = False #InDetVKalMultiVxInJetTool.ConeForTag = 1. #InDetVKalMultiVxInJetTool.MultiVertex = True #InDetVKalMultiVxInJetTool.OutputLevel = BTaggingFlags.OutputLevel ToolSvc += InDetVKalMultiVxInJetTool if BTaggingFlags.OutputLevel < 3: print InDetVKalMultiVxInJetTool ## factory for BTagSecVertexing from JetTagTools.JetTagToolsConf import Analysis__MSVVariablesFactory MSVVariablesFactory = Analysis__MSVVariablesFactory( name = "MSVVariablesFactory", OutputLevel = BTaggingFlags.OutputLevel) ToolSvc += MSVVariablesFactory if BTaggingFlags.OutputLevel < 3: print MSVVariablesFactory
#load the VKalVertex in Jet finder tool from AthenaCommon.AppMgr import ToolSvc from InDetVKalVxInJetTool.InDetVKalVxInJetToolConf import InDet__InDetVKalVxInJetTool InDetVKalVxInJetTool = InDet__InDetVKalVxInJetTool( name="InDetVKalVxInJetTool", # TrackSummaryTool = None, #Do not need it in b-tagging OutputLevel=BTaggingFlags.OutputLevel) ToolSvc += InDetVKalVxInJetTool if BTaggingFlags.OutputLevel < 3: print InDetVKalVxInJetTool