diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py index b652dd5b3104963ecc6996b065562993c4f2b78d..88fac7091b3905d8020bd12b0bf7c204159c5e82 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py @@ -1013,6 +1013,12 @@ class useBroadSCTClusterErrors(InDetFlagsJobProperty): allowedTypes = ['NoneType','bool'] StoredValue = None +class useMuForTRTErrorScaling(InDetFlagsJobProperty): + """ Use mu from lumi conditions data for TRT error scaling""" + statusOn = True + allowedTypes = ['NoneType','bool'] + StoredValue = False + class writeRDOs(InDetFlagsJobProperty): """ Write RDOs into ESD """ statusOn = True @@ -2809,7 +2815,8 @@ _list_InDetJobProperties = [Enabled, doStoreTrackSeeds, doHIP300, checkDeadElementsOnTrack, - doDigitalROTCreation + doDigitalROTCreation, + useMuForTRTErrorScaling ] for j in _list_InDetJobProperties: jobproperties.InDetJobProperties.add_JobProperty(j) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py index da81a73c2e1dcf0a7c67c7c35e37d8eab657c0d4..0e04df4fa9341dbf4c89f5733768c85d50ab4c70 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py @@ -426,17 +426,32 @@ def getInDetBroadTRT_DriftCircleOnTrackTool(name='InDetBroadTRT_DriftCircleOnTra def getInDetTRT_DriftCircleOnTrackNoDriftTimeTool(**kwargs) : return getInDetBroadTRT_DriftCircleOnTrackTool(**kwargs) + +def getLumiCondDataKeyForTRTMuScaling(**kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + isHLT=kwargs.pop('isHLT',False) + kwargs.pop('namePrefix','') + if not InDetFlags.doCosmics() and InDetFlags.useMuForTRTErrorScaling(): + # @TODO remove flag useMuForTRTErrorScaling once TRT mu dependent ERROR scaling not needed any more or + # LuminosityCondAlgDefault always uses the correct database and folder + from LumiBlockComps.LuminosityCondAlgDefault import LuminosityCondAlgDefault,LuminosityCondAlgOnlineDefault + from AthenaCommon.AthenaCommonFlags import athenaCommonFlags + lumiAlg = LuminosityCondAlgDefault() if not athenaCommonFlags.isOnline() and not isHLT else LuminosityCondAlgOnlineDefault() + if lumiAlg is not None : + return lumiAlg.LuminosityOutputKey + return '' + # @TODO rename to InDetTRT_DriftCircleOnTrackTool ? @makePublicTool def getInDetTRT_DriftCircleOnTrackTool(name='TRT_DriftCircleOnTrackTool', **kwargs) : the_name = makeName( name, kwargs) + hlt_args = copyArgs(kwargs,['isHLT','namePrefix']) + kwargs.pop('isHLT',None) createAndAddCondAlg(getRIO_OnTrackErrorScalingCondAlg,'RIO_OnTrackErrorScalingCondAlg') - # @TODO create LuminosityCondAlg from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackTool kwargs = setDefaults(kwargs, TRTErrorScalingKey = '/Indet/TrkErrorScalingTRT', - # LumiDataKey = 'LuminosityCondData' # @TODO undo out-commenting to re-enable mu-correction for TRT error scaling - ) + LumiDataKey = getLumiCondDataKeyForTRTMuScaling(**hlt_args)) return InDet__TRT_DriftCircleOnTrackTool(name = the_name, **kwargs) @@ -749,7 +764,7 @@ def getInDetPixelConditionsSummaryTool() : from AthenaCommon.GlobalFlags import globalflags from InDetRecExample.InDetJobProperties import InDetFlags from PixelConditionsTools.PixelConditionsToolsConf import PixelConditionsSummaryTool - pixelConditionsSummaryToolSetup = PixelConditionsSummaryTool("PixelConditionsSummaryTool", + pixelConditionsSummaryToolSetup = PixelConditionsSummaryTool("PixelConditionsSummaryTool", UseByteStream=(globalflags.DataSource=='data')) if InDetFlags.usePixelDCS(): pixelConditionsSummaryToolSetup.IsActiveStates = [ 'READY', 'ON', 'UNKNOWN', 'TRANSITION', 'UNDEFINED' ] @@ -917,7 +932,7 @@ def getInDetTRT_dEdxTool(name = "InDetTRT_dEdxTool", **kwargs) : if not DetFlags.haveRIO.TRT_on() or InDetFlags.doSLHC() or InDetFlags.doHighPileup() \ or InDetFlags.useExistingTracksAsInput(): # TRT_RDOs (used by the TRT_LocalOccupancy tool) are not present in ESD return None - + from AthenaCommon.GlobalFlags import globalflags kwargs = setDefaults( kwargs, TRT_dEdx_isData = (globalflags.DataSource == 'data')) @@ -944,7 +959,7 @@ def getInDetTRT_ElectronPidTool(name = "InDetTRT_ElectronPidTool", **kwargs) : if 'TRT_ToT_dEdx_Tool' not in kwargs : kwargs = setDefaults( kwargs, TRT_ToT_dEdx_Tool = getInDetTRT_dEdxTool()) - + from AthenaCommon.GlobalFlags import globalflags kwargs = setDefaults( kwargs, isData = (globalflags.DataSource == 'data')) @@ -1115,7 +1130,6 @@ def getInDetTRTDriftCircleCutForPatternReco(name='InDetTRTDriftCircleCutForPatte @makePublicTool def getInDetTRT_RoadMaker(name='InDetTRT_RoadMaker',**kwargs) : the_name = makeName( name, kwargs) - from InDetRecExample.InDetKeys import InDetKeys kwargs=setDefaults(kwargs, RoadWidth = 20., PropagatorTool = getInDetPatternPropagator()) @@ -1325,4 +1339,4 @@ def getInDetCosmicScoringTool_TRT(NewTrackingCuts, name='InDetCosmicExtenScoring 'InDetCosmicScoringTool_TRT', **setDefaults(kwargs, minTRTHits = NewTrackingCuts.minSecondaryTRTonTrk(), - SummaryTool = TrackingCommon.getInDetTrackSummaryToolNoHoleSearch())) + SummaryTool = getInDetTrackSummaryToolNoHoleSearch())) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py index 928e31d3251ebd5e3af773bd89e4a7b912c8115b..2ab663f27a5ee67e16cf21d2284585a80ec744ac 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetPreProcessingTRT.py @@ -152,9 +152,10 @@ class ConfiguredInDetPreProcessingTRT: MaskMiddleHTBitArgon = False, MaskLastHTBitArgon = False, useDriftTimeHTCorrection = True, - useDriftTimeToTCorrection = True, - # LumiDataKey = 'LuminosityCondData' # @TODO undo out-commenting to re-enable mu-correction for TRT error scaling - ) + useDriftTimeToTCorrection = True) + if not usePhase: + from InDetRecExample import TrackingCommon + InDetTRT_DriftCircleTool.LumiDataKey = TrackingCommon.getLumiCondDataKeyForTRTMuScaling() from AthenaCommon.BeamFlags import jobproperties if InDetFlags.InDet25nsec() and jobproperties.Beam.beamType()=="collisions":