5#ifndef MCAST_MUONCALIBINTSCALESMEARTOOL_H
6#define MCAST_MUONCALIBINTSCALESMEARTOOL_H
26namespace ADD_CMODE(CP) {
28 class MuonCalibIntScaleSmearTool :
public virtual IMuonCalibIntScaleSmearTool,
39 virtual double getExpectedResolution(
const int &
DetType,
double pT,
double eta,
double phi,
MCP::DataYear year,
bool isData)
const override;
48 virtual StatusCode applySystematicVariation(
const CP::SystematicSet& systConfig)
override;
52 MuonCalibIntScaleSmearTool(
const std::string& name);
55 virtual ~MuonCalibIntScaleSmearTool() =
default;
64 Gaudi::Property<std::string> m_release{
this,
"release",
"Recs2025_12_11_Run2Run3",
"Release"};
67 Gaudi::Property<std::string> m_sysScheme{
this,
"systematicScheme",
"Corr_Scale",
"Systematic scheme to be configured"};
70 Gaudi::Property<int> m_calibMode{
this,
"calibMode", -1,
"Calib mode"};
72 typedef std::map<MCP::ScaleResCorrection, std::shared_ptr<MCP::CalibContainer>> ScaleSmearCorrConstMap;
75 struct ParameterSetScaleSmear
77 std::map<MCP::ScaleSmearParam, double> m_IDparams;
78 std::map<MCP::ScaleSmearParam, double> m_MEparams;
79 std::map<MCP::ScaleSmearParam, double> m_CBparams;
83 StatusCode calcSystematicVariation(
const CP::SystematicSet& systConfig, ParameterSetScaleSmear& param)
const;
86 const ParameterSetScaleSmear* m_currentParameters{
nullptr};
89 std::map<MCP::DataYear, std::map<MCP::ScaleSmearParam, ScaleSmearCorrConstMap>> m_IDparams;
90 std::map<MCP::DataYear, std::map<MCP::ScaleSmearParam, ScaleSmearCorrConstMap>> m_MEparams;
91 std::map<MCP::DataYear, std::map<MCP::ScaleSmearParam, ScaleSmearCorrConstMap>> m_CBparams;
94 std::map<MCP::DataYear, std::map<MCP::ExpectedResParam, std::shared_ptr<MCP::CalibContainer>>> m_IDExpectedResparams;
95 std::map<MCP::DataYear, std::map<MCP::ExpectedResParam, std::shared_ptr<MCP::CalibContainer>>> m_MEExpectedResparams;
99 std::map<MCP::ScaleSmearParam, double> getConstants(
const MCP::TrackCalibObj& trk,
const std::map<MCP::ScaleSmearParam, ScaleSmearCorrConstMap>&
constants,
const std::map<MCP::ScaleSmearParam, double>& direction)
const;
108 double getCorrectedCBPtWithIDMSComb(
const MCP::MuonObj& mu,
const std::map<MCP::ScaleSmearParam, double>&calibIDConstant ,
const std::map<MCP::ScaleSmearParam, double>& calibMEConstant)
const;