diff --git a/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py b/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py index bf0fe4a24634dc7b6891448c30800e1128e26104..7382f9dabc33ab2a65c7d1b9e2d5b1e2bff1d485 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonCalibConfig.py @@ -383,14 +383,45 @@ def _setupMdtCondDB(flags): return result, mdt_folder_name_appendix # end of function setupMdtCondDB() -def MdtCalibDbToolCfg(flags,name="MdtCalibDbTool",**kwargs): - result=ComponentAccumulator() +def MdtCalibrationToolCfg(flags, **kwargs): + from MdtCalibSvc.MdtCalibSvcConf import MdtCalibrationTool + result=MdtCalibrationDbToolCfg(flags, **kwargs) + mdt_calibibration_db_tool = result.getPrimary() + + kwargs.setdefault("CalibrationDbTool", mdt_calibibration_db_tool) + kwargs.setdefault("DoSlewingCorrection", flags.Muon.Calib.correctMdtRtForTimeSlewing) + kwargs.setdefault("DoTemperatureCorrection", flags.Muon.Calib.applyRtScaling) + kwargs.setdefault("DoWireSagCorrection", flags.Muon.Calib.correctMdtRtWireSag) + kwargs.setdefault("DoTofCorrection", flags.Beam.Type == 'collisions' ) # No TOF correction if not collisions + + acc = MagneticFieldSvcCfg(flags) + mag_field_svc = acc.getPrimary() + result.merge(acc) + kwargs.setdefault("MagFieldSvc", mag_field_svc ) + + mdt_calibration_tool = MdtCalibrationTool(**kwargs) + result.setPrivateTools(mdt_calibration_tool) + return result + +def MdtCalibrationDbToolCfg(flags, **kwargs): + from MdtCalibSvc.MdtCalibSvcConf import MdtCalibrationDbTool + # We need the conditions objects to have been created. + result = MdtCalibDbAlgCfg(flags, **kwargs) + + kwargs.setdefault("CreateBFieldFunctions", flags.Muon.Calib.correctMdtRtForBField) + kwargs.setdefault("CreateWireSagFunctions", flags.Muon.Calib.correctMdtRtWireSag) + kwargs.setdefault("CreateSlewingFunctions", flags.Muon.Calib.correctMdtRtForTimeSlewing) + mdt_calibration_db_tool = MdtCalibrationDbTool(**kwargs) + result.setPrivateTools(mdt_calibration_db_tool) + return result + + +def MdtCalibDbCoolStrToolCfg(flags,name="MdtCalibDbTool",**kwargs): # result.merge( IOVDbSvcCfg(flags) ) # setup COOL folders - acc, mdt_folder_name_appendix = _setupMdtCondDB(flags) - result.merge(acc) + result, mdt_folder_name_appendix = _setupMdtCondDB(flags) # set some default proper ties from IOVDbSvc.CondDB import conddb @@ -409,17 +440,19 @@ def MdtCalibDbToolCfg(flags,name="MdtCalibDbTool",**kwargs): kwargs.setdefault("TimeSlewingCorrection", flags.Muon.Calib.correctMdtRtForTimeSlewing) kwargs.setdefault("MeanCorrectionVsR", [ -5.45973, -4.57559, -3.71995, -3.45051, -3.4505, -3.4834, -3.59509, -3.74869, -3.92066, -4.10799, -4.35237, -4.61329, -4.84111, -5.14524 ]) kwargs.setdefault("PropagationSpeedBeta", flags.Muon.Calib.mdtPropagationSpeedBeta) - result.addPublicTool(MuonCalib__MdtCalibDbCoolStrTool(name,**kwargs)) + result.setPrivateTools(MuonCalib__MdtCalibDbCoolStrTool(name,**kwargs)) return result def MdtCalibrationDbSvcCfg(flags, **kwargs): + + result = MdtCalibDbCoolStrToolCfg(flags) + db_tool = result.getPrimary() + result.addPublicTool(db_tool) + kwargs.setdefault( "CreateBFieldFunctions", flags.Muon.Calib.correctMdtRtForBField ) kwargs.setdefault( "CreateWireSagFunctions", flags.Muon.Calib.correctMdtRtWireSag ) kwargs.setdefault( "CreateSlewingFunctions", flags.Muon.Calib.correctMdtRtForTimeSlewing) - kwargs.setdefault( "DBTool", "MuonCalib::MdtCalibDbCoolStrTool/MdtCalibDbTool") - result = MdtCalibDbToolCfg(flags) - - # kwargs.setdefault( "DBTool", mdt_calib_db_tool ) + kwargs.setdefault( "DBTool", db_tool) mdt_calib_db_svc = MdtCalibrationDbSvc(**kwargs) result.addService(mdt_calib_db_svc,primary=True) diff --git a/MuonSpectrometer/MuonConfig/python/MuonCondSvcConfig.py b/MuonSpectrometer/MuonConfig/python/MuonCondSvcConfig.py index 2283848bf9a31bd5b1857a5f32db0769751850b8..20f4a15d7c02066f2fc1c94bd7bec0aef41632a3 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonCondSvcConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonCondSvcConfig.py @@ -20,9 +20,7 @@ from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg, addFolders # return result def MDTCondSummarySvcCfg(flags, **kwargs): - # This is probably wrong. I'm pretty confused by this for the moment. result = ComponentAccumulator() - # result.merge(IOVDbSvcCfg(flags)) if flags.Common.isOnline: kwargs['ConditionsServices'] = [] # COOL folders not available online else: @@ -55,7 +53,7 @@ def MDTCondSummarySvcCfg(flags, **kwargs): result.addService(cond_svc) kwargs['ConditionsServices'] = [cond_svc] # COOL folders not available online cond_summary = MDTCondSummarySvc(**kwargs) - result.addService(cond_summary) + result.addService(cond_summary, primary=True) return result def RPCCondSummarySvcCfg(flags,**kwargs): @@ -87,10 +85,3 @@ def TGCCondSummarySvcCfg(flags,**kwargs): if flags.Common.isOnline: kwargs['ConditionsServices'] = [] # COOL folders not available online return TGCCondSummarySvc(**kwargs) - -# def MuonStationIntersectSvcCfg(flags, **kwargs): -# # has dependencies on -# # 'IdHelper' : PublicToolHandle('Muon::MuonIdHelperTool/MuonIdHelperTool'), # GaudiHandle -# # 'MDTCondSummarySvc' : ServiceHandle('MDTCondSummarySvc'), # GaudiHandle -# result=ComponentAccumulator() - diff --git a/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py b/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py index 053b348ae9f7736bfd45c7124c0ef01f2673172a..3bdf2d38e8c7f3d7b7e61c1492ba960a4317fc02 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonRIO_OnTrackCreatorConfig.py @@ -1,7 +1,7 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from MuonConfig.MuonCalibConfig import MdtCalibrationSvcCfg, MdtCalibrationDbSvcCfg +from MuonConfig.MuonCalibConfig import MdtCalibrationToolCfg, MdtCalibrationDbToolCfg from MuonCnvExample.MuonCnvUtils import mdtCalibWindowNumber # TODO should maybe shift this elsewhere? from MdtDriftCircleOnTrackCreator.MdtDriftCircleOnTrackCreatorConf import Muon__MdtDriftCircleOnTrackCreator from MuonClusterOnTrackCreator.MuonClusterOnTrackCreatorConf import Muon__CscClusterOnTrackCreator, Muon__MuonClusterOnTrackCreator @@ -41,11 +41,21 @@ def MdtDriftCircleOnTrackCreatorCfg(flags,**kwargs): result=ComponentAccumulator() # setup dependencies missing in C++. TODO: fix in C++ - acc = MdtCalibrationSvcCfg(flags) - result.merge(acc) + # acc = MdtCalibrationSvcCfg(flags) + # result.merge(acc) + # + # acc = MdtCalibrationDbSvcCfg(flags) + # result.merge(acc) - acc = MdtCalibrationDbSvcCfg(flags) + acc = MdtCalibrationDbToolCfg(flags) + mdt_calibibration_db_tool = acc.getPrimary() + result.merge(acc) + kwargs.setdefault("CalibrationDbTool", mdt_calibibration_db_tool) + + acc = MdtCalibrationToolCfg(flags) + mdt_calibibration_tool = acc.getPrimary() result.merge(acc) + kwargs.setdefault("CalibrationTool", mdt_calibibration_tool) kwargs.setdefault("DoMagneticFieldCorrection", flags.Muon.Calib.correctMdtRtForBField) kwargs.setdefault("DoWireSag", flags.Muon.useWireSagCorrections) diff --git a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py index 15ef94de6f77970b3bd0e29c7708d4b3bac49869..8793ac87652bd4f28fce843ca247e6b37bf6e718 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonSegmentFindingConfig.py @@ -88,11 +88,11 @@ def MuonTrackScoringToolCfg(flags, **kwargs): # m_trkSummaryTool("Trk::TrackSummaryTool"), # m_printer("Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"), result = ComponentAccumulator() - acc = MuonTrackSummaryHelperToolCfg(flags) - track_summary_helper = acc.getPrimary( ) - acc.addPublicTool(track_summary_helper) + acc = MuonTrackSummaryToolCfg(flags) + track_summary = acc.getPrimary( ) + acc.addPublicTool(track_summary) result.merge(acc) - kwargs.setdefault('SumHelpTool', track_summary_helper) + kwargs.setdefault('SumHelpTool', track_summary) result.setPrivateTools(Muon__MuonTrackScoringTool(**kwargs)) return result @@ -121,7 +121,7 @@ def MuonStationIntersectSvcCfg(flags, **kwargs): result.merge(acc) kwargs.setdefault("MDTCondSummarySvc", mdt_cond_summary_svc) muon_station_intersect_svc = MuonStationIntersectSvc(**kwargs) - result.addService(muon_station_intersect_svc) + result.addService(muon_station_intersect_svc, primary=True) return result # default muon navigator @@ -389,7 +389,7 @@ def MuonSegmentFittingToolCfg(flags, **kwargs): acc.addPublicTool(cleaner) result.merge(acc) kwargs.setdefault("TrackCleaner", cleaner) - result.addPublicTool(Muon__MuonSegmentFittingTool(**kwargs)) + result.setPrivateTools(Muon__MuonSegmentFittingTool(**kwargs)) return result def DCMathSegmentMakerCfg(flags, **kwargs): @@ -463,7 +463,7 @@ def DCMathSegmentMakerCfg(flags, **kwargs): muon_station_intersect_svc = acc.getPrimary() result.merge(acc) kwargs.setdefault("MuonStationIntersectSvc", muon_station_intersect_svc) - + acc=MuonConfig.MuonRIO_OnTrackCreatorConfig.MdtDriftCircleOnTrackCreatorCfg(flags) kwargs.setdefault("MdtCreator", acc.getPrimary()) result.merge(acc) @@ -479,7 +479,7 @@ def DCMathSegmentMakerCfg(flags, **kwargs): acc = MuonSegmentFittingToolCfg(flags, name="NewMuonSegmentFittingTool") segment_fitter=acc.getPrimary() - print segment_fitter + result.addPublicTool(segment_fitter) result.merge(acc) kwargs.setdefault("SegmentFitter", segment_fitter) @@ -526,7 +526,7 @@ def MuonPatternSegmentMakerCfg(flags, **kwargs): # Other dependencies: # EDM printer tool, MuonIdHelperTool - acc = DCMathSegmentMakerCfg(flags,name="NewDCMathSegmentMaker") + acc = DCMathSegmentMakerCfg(flags,name="DCMathSegmentMaker") segment_maker = acc.getPrimary() acc.addPublicTool(segment_maker) kwargs.setdefault('SegmentMaker', segment_maker) @@ -787,7 +787,7 @@ def MuonClusterSegmentFinderCfg(flags, **kwargs): result=ComponentAccumulator() # FIXME - rest of the tools. - acc = DCMathSegmentMakerCfg(flags,name="NewDCMathSegmentMaker") + acc = DCMathSegmentMakerCfg(flags,name="DCMathSegmentMaker") segment_maker = acc.getPrimary() acc.addPublicTool(segment_maker) @@ -834,6 +834,12 @@ def MuonSegmentFindingCfg(flags, **kwargs): acc = MuonClusterSegmentFinderCfg(flags) muon_cluster_segment_finder=acc.getPrimary() result.merge(acc) + + # When reading ESDs, where prior/next BC TGCs are merged, just retrieve that. + # FIXME - this really shouldn't be set here! + tgc_meas_key = 'TGC_Measurements' + if not flags.Muon.useTGCPriorNextBC and not flags.Muon.useTGCPriorNextBC: + tgc_meas_key = 'TGC_MeasurementsAllBCs' moo_segment_finder_alg = MooSegmentFinderAlg( "MuonSegmentMaker", SegmentFinder = segment_finder_tool, @@ -843,6 +849,7 @@ def MuonSegmentFindingCfg(flags, **kwargs): UseMDT = flags.Muon.doMDTs, UseRPC = flags.Muon.doRPCs, UseTGC = flags.Muon.doTGCs, + TgcPrepDataContainer = tgc_meas_key, UseTGCPriorBC = flags.Muon.doTGCs and flags.Muon.useTGCPriorNextBC, UseTGCNextBC = flags.Muon.doTGCs and flags.Muon.useTGCPriorNextBC, doTGCClust = flags.Muon.doTGCClusterSegmentFinding, @@ -860,8 +867,9 @@ if __name__=="__main__": Configurable.configurableRun3Behavior=1 from AthenaCommon.Logging import log - from AthenaCommon.Constants import DEBUG from AthenaConfiguration.AllConfigFlags import ConfigFlags + + ConfigFlags.Concurrency.NumThreads = 1 ConfigFlags.Detector.GeometryMDT = True ConfigFlags.Detector.GeometryTGC = True @@ -870,8 +878,8 @@ if __name__=="__main__": from AthenaConfiguration.TestDefaults import defaultTestFiles ConfigFlags.Input.Files = defaultTestFiles.ESD - log.setLevel(DEBUG) - from AthenaCommon.Logging import log + # from AthenaCommon.Constants import DEBUG + #log.setLevel(DEBUG) log.debug('About to set up Segment Finding.') ConfigFlags.Input.isMC = True