diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopMuonCPTools.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopMuonCPTools.cxx index 093f67252e3fff17645576ae9857ced024be5f0b..b3d700fa64181bd8c27d9ee004d74c4f33c96946 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopMuonCPTools.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopCPTools/Root/TopMuonCPTools.cxx @@ -325,6 +325,15 @@ namespace top { "Failed to set doExtraSmearing for " + name + " tool"); top::check(asg::setProperty(tool, "do2StationsHighPt", do2StationsHighPt), "Failed to set do2StationsHighPt for " + name + " tool"); + CP::MuonCalibrationPeriodTool::CalibMode calibMode = CP::MuonCalibrationPeriodTool::CalibMode::noOption; + if (m_config->muonCalibMode() == "correctData_CB") + calibMode = CP::MuonCalibrationPeriodTool::CalibMode::correctData_CB; + else if (m_config->muonCalibMode() == "correctData_IDMS") + calibMode = CP::MuonCalibrationPeriodTool::CalibMode::correctData_IDMS; + else if (m_config->muonCalibMode() == "notCorrectData_IDMS") + calibMode = CP::MuonCalibrationPeriodTool::CalibMode::notCorrectData_IDMS; + top::check(asg::setProperty(tool, "calibrationMode", calibMode), + "Failed to set calibrationMode for " + name + " tool"); top::check(tool->initialize(), "Failed to set initialize " + name); } diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx index f17f59bf55fb5b250378068412843776855013b2..df14bb409ecc844afd1e1a8cc853f109452ab10f 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/ConfigurationSettings.cxx @@ -152,6 +152,7 @@ namespace top { "None"); registerParameter("MuonIsolationSF", "Force muon isolation SF (e.g. None). EXPERIMENTAL!", " "); registerParameter("MuonIsolationSFLoose", "Force muon isolation SF (e.g. None). EXPERIMENTAL!", " "); + registerParameter("MuonCalibrationMode", "Calibration method for muon momentum.", "correctData_CB", {"correctData_CB", "correctData_IDMS", "notCorrectData_IDMS"}); registerParameter("MuonDoSmearing2stationHighPt", "True/False, to turn on/off spacial corrections for 2-station muons reconstruction with missing inner MS station allowed for abs(eta)<1.3, only with MuonQuality HighPt. - Default: True", "True"); diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx index b3399bed732e17c1e1fbf2df6b50b306e1708b35..4ddb16674073e199c9d2ee05b7d246f8d8c0e57b 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/Root/TopConfig.cxx @@ -254,6 +254,7 @@ namespace top { m_muonIsolationSFLoose("SetMe"), m_muon_d0SigCut(3.0), m_muon_delta_z0(0.5), + m_muonCalibMode("SetMe"), m_muonMuonDoSmearing2stationHighPt(true), m_muonMuonDoExtraSmearingHighPt(false), m_muonBreakDownSystematics(false), @@ -1329,6 +1330,7 @@ namespace top { this->muonIsolationLoose(cut_wp); this->muonIsolationSFLoose(sf_wp == " " ? cut_wp : sf_wp); } + m_muonCalibMode = settings->value("MuonCalibrationMode"); bool muonDoSmearing2stationHighPt = false; settings->retrieve("MuonDoSmearing2stationHighPt", muonDoSmearing2stationHighPt); if (settings->value("MuonQuality") != "HighPt" ) muonDoSmearing2stationHighPt = false; diff --git a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h index 10120175f7841c94a0815345fdf5e911e1c0e3cf..adef29526def9cb20c3a70f2713a0524ace826f6 100644 --- a/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h +++ b/PhysicsAnalysis/TopPhys/xAOD/TopConfiguration/TopConfiguration/TopConfig.h @@ -1152,6 +1152,7 @@ namespace top { inline virtual const std::string& muonIsolationLoose() const {return m_muonIsolationLoose;} std::string const& muonIsolationSF() const {return m_muonIsolationSF;} std::string const& muonIsolationSFLoose() const {return m_muonIsolationSFLoose;} + std::string const& muonCalibMode() const {return m_muonCalibMode;} inline virtual bool muonMuonDoSmearing2stationHighPt() const {return m_muonMuonDoSmearing2stationHighPt;} inline virtual bool muonMuonDoExtraSmearingHighPt() const {return m_muonMuonDoExtraSmearingHighPt;} @@ -2550,6 +2551,7 @@ namespace top { std::string m_muonIsolationSFLoose; int m_muon_d0SigCut; float m_muon_delta_z0; + std::string m_muonCalibMode; // calibration mode for the muon calibration tool bool m_muonMuonDoSmearing2stationHighPt; //to turn on/off special correction for the reco with 2-station muons with missing inner MS station allowed for abs(eta)<1.3, only HighPt WP bool m_muonMuonDoExtraSmearingHighPt; //to turn on/off a special correction for the muon with high momenta. bool m_muonBreakDownSystematics; //to turn on/off a more complex systematic model