34 {
35
38
39 ASG_TOOL_CLASS3(MuonCalibTool, CP::IMuonCalibrationAndSmearingTool, CP::ISystematicsTool,
40 CP::IReentrantSystematicsTool)
41
42 public:
43 enum CalibMode {
44
45 noOption = -1,
46 correctData_CB = 0,
47 correctData_IDMS = 1,
48 notCorrectData_IDMS = 2,
49 notCorrectData_CB = 3,
50 correctData_IDonly = 4,
51 correctData_MSonly = 5,
52 userDefined = 99,
53 };
54
55
56
59
61
63
65
67
69
71
74
76
77 public:
78
79 MuonCalibTool(const std::string& name);
80
81
82 virtual ~MuonCalibTool() = default;
83
85
86
87 protected:
88
89 SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this, "EventInfoContName", "EventInfo", "event info key"};
90
91 Gaudi::Property<bool> m_isRun3{this, "IsRun3Geo", false, "Needed for MuonSelectionTool"};
92
93
94 Gaudi::Property<std::string> m_release{this, "release", "Recs2025_12_11_Run2Run3", "Release"};
95
96 Gaudi::Property<std::string> m_sysScheme{this, "systematicScheme", "Corr_Scale", "Systematic scheme to be configured"};
97
98 Gaudi::Property<bool> m_validationMode{this, "expert_validationMode", false, "Expert only option. Puts the tool in the validation mode setup"};
99 Gaudi::Property<bool> m_expertMode_isData{this, "expertMode_isData", false, "Expert only option. Overwrites the isData Flag"};
100 Gaudi::Property<int> m_expertMode_RunNumber{this, "expertMode_RunNumber", 0, "Expert only option. Overwrites RunNumber"};
101 Gaudi::Property<unsigned long long> m_expertMode_EvtNumber{this, "expertMode_EvtNumber", 0, "Expert only option. Overwrites EventNumber"};
102 Gaudi::Property<bool> m_useRndRun{this, "useRandomRunNumber", false, "To use the random run number for deciding which calibration to apply"};
103
104 Gaudi::Property<int> m_calibMode{this, "calibMode", -1, "Calib mode"};
105
106
107
108 Gaudi::Property<bool> m_excludeNSWFromPrecisionLayers{this, "ExcludeNSWFromPrecisionLayers", false, "Cut on the number of precision layers ignores the NSW"};
109
110
111 Gaudi::Property<bool> m_doEtaSagittaSys{this, "doEtaSagittaSys", false, "Do Eta dependant systematic system"};
112 Gaudi::Property<bool> m_applyCorrectionOnData{this, "applyCorrectionOnData", true, "If to apply sagitta corrections on data, or take the full effect as systematic"};
113
114
115
116 Gaudi::Property<bool> m_2stations_highpt_smearing{this, "do2StationsHighPt", false, "Extra smearing to be applied if high pT WP is used"};
117
118 Gaudi::Property<bool> m_extra_highpt_smearing{this, "doExtraSmearing", false, "Flag provided to test if analysis are sensitive to high pT calibration. NOT TO BE USED FOR RESULTS. Please see twiki"};
119 Gaudi::Property<float> m_HighPtSystThreshold{this, "HighPtSystThr", 300.0, "Thershold for high pT smearing in GeV"};
120
121 asg::AnaToolHandle<CP::IMuonSelectionTool> m_MuonSelectionTool{""};
122
123 asg::AnaToolHandle<IMuonCalibIntTool> m_MuonIntSagittaTool{""};
124 asg::AnaToolHandle<IMuonCalibIntScaleSmearTool> m_MuonIntScaleSmearTool{""};
125
126 asg::AnaToolHandle<IMuonCalibIntTool> m_MuonIntHighTSmearTool{""};
127
128
129
130
135
136
138
139 private:
140
141 bool m_MuonIntHighTSmearToolInitialized{false};
142
143 public:
144
145 Gaudi::Property<bool> m_skipResolutionCategory{this, "skipResolutionCategory", false, "whether to skip the resolution category variable"};
146
147 std::unique_ptr<MCP::MuonCalibToolAccessors> m_acc {std::make_unique<MCP::MuonCalibToolAccessors>(*this)};
148
151
152 };
153
154}
::StatusCode StatusCode
StatusCode definition for legacy code.
ObjectId< MuonDef > MuonId
ObjectRange< EventContextDef > EventContextRange
ObjectRange< MuonDef > MuonRange
ObjectId< EventInfoDef > EventInfoId
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version: