ATLAS Offline Software
MdtCalibOutputDbSvc.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <cmath>
8 #include <fstream>
9 #include <iostream>
10 #include <typeinfo>
11 #include <utility>
12 
21 
22 using namespace MuonCalib;
23 
24 MdtCalibOutputDbSvc::MdtCalibOutputDbSvc(const std::string &name, ISvcLocator *svc_locator) :
25  AthService(name, svc_locator),
26  m_results(nullptr),
27  m_postprocess_calibration(false),
28  m_iov_start(-1),
29  m_iov_end(-1),
30  m_reg_sel_svc("RegionSelectionSvc", name),
31  m_input_service("MdtCalibInputSvc", name) {
32  declareProperty("PostprocessCalibration", m_postprocess_calibration);
34  declareProperty("FlatDefaultResolution", m_flat_default_resolution);
36  declareProperty("ForceDefaultResolution", m_force_default_resolution);
37 
38  declareProperty("MdtCalibInputSvc", m_input_service);
39  declareProperty("RegionSelectionSvc", m_reg_sel_svc);
40 
41  // for the sake of coverity
42  m_resolution = nullptr;
43 }
44 
45 //*****************************************************************************
46 
47 //:::::::::::::::::::::::::::
48 //:: METHOD queryInterface ::
49 //:::::::::::::::::::::::::::
50 StatusCode MdtCalibOutputDbSvc::queryInterface(const InterfaceID &riid, void **ppvUnknown) {
51  if (interfaceID().versionMatch(riid)) {
52  *ppvUnknown = (MdtCalibOutputDbSvc *)this;
53  } else {
54  return AthService::queryInterface(riid, ppvUnknown);
55  }
56 
57  return StatusCode::SUCCESS;
58 }
59 
60 //*****************************************************************************
61 
62 //:::::::::::::::::::::::
63 //:: METHOD initialize ::
64 //:::::::::::::::::::::::
66  // to get service via static function
67  // m_MdtCalibOutputDbSvc_pointer = this;
68  ATH_MSG_INFO("initialize MdtCalibOutputDbSvc");
69 
70  // get id helper and detector manager if postprocessing of calibration is selected
72  // retrieve detector store
74  ATH_CHECK(serviceLocator()->service("DetectorStore", detStore));
75  // retrieve mdt id helper
76  ATH_CHECK(m_idHelperSvc.retrieve());
77  // retrieve detector manager from the conditions store
79  }
80 
81  // get region selection service
82  ATH_CHECK(m_reg_sel_svc.retrieve());
83  m_region_ids = m_reg_sel_svc->GetStationsInRegions();
84  ATH_MSG_INFO("Regions selected: " << m_region_ids.size());
85  // retrieve tool
86  ATH_CHECK(m_calib_output_tool.retrieve());
87  ATH_CHECK(m_input_service.retrieve());
88 
89  return StatusCode::SUCCESS;
90 }
91 
92 //*****************************************************************************
93 
94 //:::::::::::::::::::::
95 //:: METHOD finalize ::
96 //:::::::::::::::::::::
99  ATH_MSG_INFO("Results saved!");
100  return StatusCode::SUCCESS;
101 }
102 
103 //*****************************************************************************
104 
105 //::::::::::::::::::::::::::::::
106 //:: METHOD AddRunNumber ::
107 //::::::::::::::::::::::::::::::
110  if (run_number > m_iov_end || m_iov_end < 0) { m_iov_end = run_number; }
111 }
112 
113 //*****************************************************************************
114 
115 //::::::::::::::::::::::::::::::
116 //:: METHOD memorize(., ., .) ::
117 //::::::::::::::::::::::::::::::
118 bool MdtCalibOutputDbSvc::memorize(std::shared_ptr<const MuonCalib::IMdtCalibrationOutput> result) {
119  // no overwriting is allowed //
120  m_results = std::move(result);
121  m_resolution.reset();
122  return true;
123 }
124 
125 //*****************************************************************************
126 
127 //:::::::::::::::::::::::::::::::::
128 //:: METHOD memorize(., ., ., .) ::
129 //:::::::::::::::::::::::::::::::::
130 bool MdtCalibOutputDbSvc::memorize(std::shared_ptr<const MuonCalib::IMdtCalibrationOutput> result,
131  std::shared_ptr<const MuonCalib::IRtResolution> resol) {
132  m_results = std::move(result);
133  m_resolution = std::move(resol);
134  return true;
135 }
136 
137 //*****************************************************************************
138 
139 //:::::::::::::::::::::::::::::::::::
140 //:: METHOD saveCalibrationResults ::
141 //:::::::::::::::::::::::::::::::::::
143  if (!m_results) return StatusCode::SUCCESS;
144 
146  const MuonGM::MuonDetectorManager *MuonDetMgr = DetectorManagerHandle.cptr();
147  if (!MuonDetMgr) {
148  ATH_MSG_ERROR("Null pointer to the read MuonDetectorManager conditions object");
149  return StatusCode::FAILURE;
150  }
151 
152  StatusCode sc;
153 
155  // VARIABLES //
157 
159  // LOOP OVER THE STORED RESULTS AND WRITE THEM OUT ACCORDING TO THEIR TYPE //
161 
162  //-----------------------------------------------------------------------------
163  for (const auto & region_id : m_region_ids) {
164  //-----------------------------------------------------------------------------
166  // get region geometry if required
168  if (!the_id.InitializeGeometry(m_idHelperSvc->mdtIdHelper(), MuonDetMgr)) {
169  ATH_MSG_ERROR("Faild to get geometry for " << the_id.regionId());
170  }
171  }
172  // t0 calibration //
173  std::shared_ptr<const T0CalibrationOutput> t0_output = std::dynamic_pointer_cast<const T0CalibrationOutput>(m_results);
174  if (t0_output != nullptr) {
175  ATH_MSG_INFO("Writing out t0s.");
176  const MdtTubeFitContainer *new_t0s = t0_output->t0s();
177  if (!t0_output->GetMap().empty()) {
178  std::map<NtupleStationId, MdtTubeFitContainer *>::const_iterator mit(t0_output->GetMap().find(region_id));
179  if (mit != t0_output->GetMap().end()) { new_t0s = mit->second; }
180  }
181  if (!new_t0s) continue;
182  if (m_postprocess_calibration) new_t0s = postprocess_t0s(new_t0s, the_id);
183 
184  sc = m_calib_output_tool->WriteT0(new_t0s, the_id, m_iov_start, m_iov_end);
185  if (sc.isFailure()) return sc;
186  }
187 
188  // r-t calibration //
189  bool real_resolution(true), real_rt(true);
190  std::shared_ptr<const RtCalibrationOutput> rt_output = std::dynamic_pointer_cast<const RtCalibrationOutput>(m_results);
191  if (rt_output) {
192  if (rt_output->rt()) {
193  if (!rt_output->rt()->HasTmaxDiff()) {
194  const IRtRelation *old_rel = m_input_service->GetRtRelation();
195  if (old_rel && old_rel->HasTmaxDiff()) {
196  std::const_pointer_cast<IRtRelation>(rt_output->rt())->SetTmaxDiff(old_rel->GetTmaxDiff());
197  }
198  }
199  }
200 
201  ATH_MSG_INFO("Writing out r-t relationships.");
202  if (!m_resolution) {
203  real_resolution = false;
204  create_default_resolution(rt_output->rt());
205  } else {
206  real_rt = false;
207  }
208  sc = m_calib_output_tool->WriteRt(rt_output.get(), m_resolution, the_id, m_iov_start, m_iov_end, real_rt, real_resolution);
209  if (sc.isFailure()) return sc;
210  }
211 
212  //-----------------------------------------------------------------------------
213  }
214  //-----------------------------------------------------------------------------
215  ATH_MSG_INFO("Finished writing");
216  return StatusCode::SUCCESS;
217 } // end MdtCalibOutputDbSvc::saveCalibrationResults
218 
219 //*****************************************************************************
220 
221 //::::::::::::::::::
222 //:: METHOD reset ::
223 //::::::::::::::::::
225  m_results.reset();
226 }
227 
229  const MuonCalib::NtupleStationId &id) {
230  int n_layers(-1), n_tubes(-1);
231  if (id.NMultilayers() < 0) return t0;
232  // get the maximum number of layers and tubes per layer for this station
233  for (int i = 0; i < id.NMultilayers(); i++) {
234  if (n_layers < id.NLayers(i)) n_layers = id.NLayers(i);
235  if (n_tubes < id.NTubes(i)) n_tubes = id.NTubes(i);
236  }
237  MdtTubeFitContainer *new_t0 = new MdtTubeFitContainer(id.regionId(), id.NMultilayers(), n_layers, n_tubes);
238  new_t0->setImplementation(t0->implementation());
239  new_t0->setGroupBy(t0->GroupBy());
240 
241  // loop over tubes
242  double n_goods(0.0);
243  double mean_t0(0.0);
244  bool has_bad_fits(false);
245  for (unsigned int ml = 0; ml < t0->numMultilayers(); ml++) {
246  if (static_cast<int>(ml) == id.NMultilayers()) break;
247  for (unsigned int ly = 0; ly < t0->numLayers(); ly++) {
248  if (static_cast<int>(ly) == n_layers) break;
249  for (unsigned int tb = 0; tb < t0->numTubes(); tb++) {
250  if (static_cast<int>(tb) == n_tubes) break;
251  new_t0->setFit(ml, ly, tb, *(t0->getFit(ml, ly, tb)));
252  new_t0->setCalib(ml, ly, tb, *(t0->getCalib(ml, ly, tb)));
253  // if tube was ok use for mean t0
254  if (t0->getCalib(ml, ly, tb)->statusCode == 0) {
255  n_goods++;
256  mean_t0 += t0->getCalib(ml, ly, tb)->t0;
257  } else {
258  has_bad_fits = true;
259  }
260  }
261  }
262  }
263 
264  // check for bad fits and insert mean t0;
265  if (has_bad_fits) {
266  mean_t0 /= n_goods;
267  for (unsigned int ml = 0; ml < new_t0->numMultilayers(); ml++) {
268  for (unsigned int ly = 0; ly < new_t0->numLayers(); ly++) {
269  for (unsigned int tb = 0; tb < new_t0->numTubes(); tb++) {
270  if (t0->getCalib(ml, ly, tb)->statusCode != 0) {
272  calib.t0 = mean_t0;
273  new_t0->setCalib(ml, ly, tb, calib);
274  }
275  }
276  }
277  }
278  }
279  return new_t0;
280 } // end MdtCalibOutputDbSvc::postprocess_t0s
281 
282 inline void MdtCalibOutputDbSvc::create_default_resolution(const std::shared_ptr<const MuonCalib::IRtRelation>& rt) {
283  // check if resolution is saved in input service
284  const IRtResolution *old_res = m_input_service->GetResolution();
285  const IRtRelation *old_rel = m_input_service->GetRtRelation();
286  if (old_res != nullptr && old_rel != nullptr && !m_force_default_resolution) {
287  // scale the old resolution to the new rt relation
288  ATH_MSG_INFO("Taken old resolution");
289  std::vector<SamplePoint> res_points(100);
290  for (unsigned int i = 0; i < 100; i++) {
291  double di = static_cast<double>(i);
292  double t_new = rt->tLower() + (di / 100.0) * (rt->tUpper() - rt->tLower());
293  double t_old = old_rel->tLower() + (di / 100.0) * (old_rel->tUpper() - old_rel->tLower());
294  res_points[i].set_x1(t_new);
295  res_points[i].set_x2(old_res->resolution(t_old));
296  if (res_points[i].x2() > 100 && i > 0) res_points[i].set_x2(res_points[i - 1].x2());
297  res_points[i].set_error(1);
298  }
299  RtResolutionFromPoints respoints;
300  m_resolution = std::make_shared<RtResolutionLookUp>(MuonCalib::RtResolutionFromPoints::getRtResolutionLookUp(res_points));
301  return;
302  }
303  ATH_MSG_INFO("Creating default resolution");
304  // parameters for default resolution curve
305  double alpha[9] = {0.31476, -0.217661, 0.118337, -0.0374466, 0.00692553, -0.000764969, 4.97305E-05, -1.75457E-06, 2.59E-08};
307 
308  if (m_flat_default_resolution < 0.0) {
309  double bin_width = (rt->tUpper() - rt->tLower()) / 100.0;
310  par_vec.resize(102);
311  par_vec[0] = rt->tLower();
312  par_vec[1] = bin_width;
313  for (unsigned int i = 0; i < 100; i++) {
314  double t = rt->tLower() + i * bin_width;
315  double r = rt->radius(t);
316  double resol(0.0);
317  for (int l = 0; l < 9; l++) { resol = resol + alpha[l] * std::pow(r, l); }
318  par_vec[i + 2] = resol;
319  }
320  } else {
321  par_vec.resize(4);
322  par_vec[0] = rt->tLower();
323  par_vec[1] = (rt->tUpper() - rt->tLower()) / 2.0;
324  par_vec[2] = m_flat_default_resolution;
325  par_vec[3] = m_flat_default_resolution;
326  }
327  m_resolution = std::make_shared<MuonCalib::RtResolutionLookUp>(par_vec);
328 } // end MdtCalibOutputDbSvc::create_default_resolution
MdtCalibOutputDbSvc::m_postprocess_calibration
bool m_postprocess_calibration
Definition: MdtCalibOutputDbSvc.h:102
beamspotman.r
def r
Definition: beamspotman.py:676
RtCalibrationOutput.h
MuonCalib::IRtResolution::resolution
virtual double resolution(double t, double bgRate=0.0) const =0
returns resolution for a give time and background rate
MdtCalibOutputDbSvc
Definition: MdtCalibOutputDbSvc.h:46
MuonCalib::MdtTubeFitContainer::setImplementation
void setImplementation(const std::string &impl)
set the name of the implementation used to fill this class
Definition: MdtTubeFitContainer.cxx:14
plotting.plot_kinematics.run_number
run_number
Definition: plot_kinematics.py:29
MuonCalib::IRtRelation::tUpper
virtual double tUpper(void) const =0
get_generator_info.result
result
Definition: get_generator_info.py:21
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
MuonCalib::NtupleStationId::InitializeGeometry
bool InitializeGeometry(const MdtIdHelper &mdtIdHelper, const MuonGM::MuonDetectorManager *detMgr)
initialize geometry information
Definition: NtupleStationId.cxx:37
MdtCalibOutputDbSvc::m_calib_output_tool
ToolHandle< MuonCalib::ICalibrationIOTool > m_calib_output_tool
Definition: MdtCalibOutputDbSvc.h:108
MuonCalib::NtupleStationId::regionId
std::string regionId() const
return the region id string
Definition: NtupleStationId.cxx:69
MdtCalibOutputDbSvc::m_input_service
ServiceHandle< MdtCalibInputSvc > m_input_service
Definition: MdtCalibOutputDbSvc.h:121
MdtCalibOutputDbSvc::m_reg_sel_svc
ServiceHandle< RegionSelectionSvc > m_reg_sel_svc
Definition: MdtCalibOutputDbSvc.h:119
MuonCalib::MdtTubeFitContainer::setGroupBy
void setGroupBy(const std::string &group_by)
Definition: MdtTubeFitContainer.cxx:37
CheckAppliedSFs.bin_width
bin_width
Definition: CheckAppliedSFs.py:242
MuonCalib::NtupleStationId
Definition: NtupleStationId.h:36
MdtCalibOutputDbSvc::queryInterface
virtual StatusCode queryInterface(const InterfaceID &riid, void **ppvUnknown)
method required by the base class which is need to obtain a pointer to the service in the standard wa...
Definition: MdtCalibOutputDbSvc.cxx:50
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
conifer::pow
constexpr int pow(int x)
Definition: conifer.h:20
MdtCalibOutputDbSvc::memorize
bool memorize(std::shared_ptr< const MuonCalib::IMdtCalibrationOutput > result)
memorize the result of a particular calibration (given in result) for the calibration region "regionK...
Definition: MdtCalibOutputDbSvc.cxx:118
ALFA_EventTPCnv_Dict::t0
std::vector< ALFA_RawData_p1 > t0
Definition: ALFA_EventTPCnvDict.h:42
MuonCalib::IRtRelation::HasTmaxDiff
bool HasTmaxDiff() const
Definition: IRtRelation.h:29
MuonCalib::IRtRelation::GetTmaxDiff
float GetTmaxDiff() const
return the difference in total dirft time between the two multilayers (ML1 - ML2)
Definition: IRtRelation.h:27
MuonCalib::MdtTubeCalibContainer::numMultilayers
unsigned int numMultilayers() const
Definition: MdtTubeCalibContainer.h:49
MdtCalibOutputDbSvc::AddRunNumber
void AddRunNumber(int run_number)
add a run number to the iov interval.
Definition: MdtCalibOutputDbSvc.cxx:108
MdtTubeFitContainer.h
MdtCalibOutputDbSvc::interfaceID
static const InterfaceID & interfaceID()
Methods required as defined in the base class "Service".
Definition: MdtCalibOutputDbSvc.h:58
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
MuonCalib::MdtTubeCalibContainer::getCalib
const SingleTubeCalib * getCalib(const Identifier &tubeId) const
return calibration constants of a single tube
Definition: MdtTubeCalibContainer.h:37
MuonCalib::MdtTubeCalibContainer::setCalib
bool setCalib(SingleTubeCalib &&val, const Identifier &tubeId, MsgStream &msg)
set the calibration constants of a single tube
Definition: MdtTubeCalibContainer.cxx:19
CalibCoolCompareRT.n_tubes
list n_tubes
Definition: CalibCoolCompareRT.py:93
CalibDbCompareRT.region_id
region_id
Definition: CalibDbCompareRT.py:68
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
MuonCalib::MdtTubeCalibContainer::numLayers
unsigned int numLayers() const
Definition: MdtTubeCalibContainer.h:50
IMdtCalibrationOutput.h
Execution.tb
tb
Definition: Execution.py:15
MuonCalib::CalibFunc::ParVec
std::vector< double > ParVec
Definition: CalibFunc.h:36
T0CalibrationOutput.h
MdtCalibOutputDbSvc::initialize
virtual StatusCode initialize()
initialize method as required by the base class
Definition: MdtCalibOutputDbSvc.cxx:65
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
MdtCalibOutputDbSvc.h
MdtCalibOutputDbSvc::m_iov_start
int m_iov_start
Definition: MdtCalibOutputDbSvc.h:110
MdtCalibOutputDbSvc::m_results
std::shared_ptr< const MuonCalib::IMdtCalibrationOutput > m_results
Definition: MdtCalibOutputDbSvc.h:94
lumiFormat.i
int i
Definition: lumiFormat.py:92
MdtCalibOutputDbSvc::MdtCalibOutputDbSvc
MdtCalibOutputDbSvc(const std::string &name, ISvcLocator *svc_locator)
Constructor.
Definition: MdtCalibOutputDbSvc.cxx:24
Atlas.StoreGateSvc
StoreGateSvc
Definition: Atlas.UnixStandardJob.py:25
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthService
Definition: AthService.h:32
MuonCalib::IRtRelation::tLower
virtual double tLower(void) const =0
MuonCalib
CscCalcPed - algorithm that finds the Cathode Strip Chamber pedestals from an RDO.
Definition: CscCalcPed.cxx:22
RtResolutionLookUp.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MuonCalib::T0CalibrationOutput::GetMap
std::map< NtupleStationId, MdtTubeFitContainer * > & GetMap()
Definition: T0CalibrationOutput.h:28
MuonCalib::MdtTubeCalibContainer::numTubes
unsigned int numTubes() const
Definition: MdtTubeCalibContainer.h:51
IRtResolution.h
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
MuonCalib::RtResolutionFromPoints::getRtResolutionLookUp
static RtResolutionLookUp getRtResolutionLookUp(const std::vector< SamplePoint > &sample_points)
Definition: RtResolutionFromPoints.cxx:80
MdtCalibOutputDbSvc::m_flat_default_resolution
double m_flat_default_resolution
Definition: MdtCalibOutputDbSvc.h:104
MuonCalib::IRtRelation::radius
virtual double radius(double t) const =0
returns drift radius for a given time
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MuonCalib::T0CalibrationOutput::t0s
const MdtTubeFitContainer * t0s() const
Definition: T0CalibrationOutput.h:27
RtResolutionFromPoints.h
MdtCalibOutputDbSvc::m_region_ids
std::vector< MuonCalib::NtupleStationId > m_region_ids
Definition: MdtCalibOutputDbSvc.h:122
MuonCalib::RtCalibrationOutput::rt
std::shared_ptr< const IRtRelation > rt() const
access to private attributes
Definition: RtCalibrationOutput.h:27
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
MdtCalibOutputDbSvc::saveCalibrationResults
StatusCode saveCalibrationResults(void)
write out all memorized results to text files (location specified in the job options) which can be up...
Definition: MdtCalibOutputDbSvc.cxx:142
PlotSFuncertainty.calib
calib
Definition: PlotSFuncertainty.py:110
MuonCalib::IRtResolution
generic interface for a resolution function
Definition: IRtResolution.h:14
MuonCalib::RtResolutionFromPoints
Definition: RtResolutionFromPoints.h:30
MuonGM::MuonDetectorManager
The MuonDetectorManager stores the transient representation of the Muon Spectrometer geometry and pro...
Definition: MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h:49
MdtCalibOutputDbSvc::create_default_resolution
void create_default_resolution(const std::shared_ptr< const MuonCalib::IRtRelation > &rt)
Definition: MdtCalibOutputDbSvc.cxx:282
IRtRelation.h
MuonCalib::MdtTubeFitContainer
Holds single-tube full calibration information of one chamber.
Definition: MdtTubeFitContainer.h:16
MdtCalibOutputDbSvc::finalize
virtual StatusCode finalize()
finalize method as required by the base class; the finalize method calls the method "save_calibration...
Definition: MdtCalibOutputDbSvc.cxx:97
MuonCalib::MdtTubeFitContainer::setFit
bool setFit(SingleTubeFit &&val, const Identifier &tubeId, MsgStream &log)
set the calibration constants of a single tube
Definition: MdtTubeFitContainer.cxx:26
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
MdtCalibOutputDbSvc::reset
void reset()
reset, clear memory of results
Definition: MdtCalibOutputDbSvc.cxx:224
MuonCalib::MdtTubeCalibContainer::SingleTubeCalib
Definition: MdtTubeCalibContainer.h:18
MdtCalibOutputDbSvc::m_resolution
std::shared_ptr< const MuonCalib::IRtResolution > m_resolution
Definition: MdtCalibOutputDbSvc.h:97
MdtCalibOutputDbSvc::m_iov_end
int m_iov_end
Definition: MdtCalibOutputDbSvc.h:110
MdtCalibOutputDbSvc::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: MdtCalibOutputDbSvc.h:112
MuonCalib::IRtRelation
generic interface for a rt-relation
Definition: IRtRelation.h:14
MdtCalibOutputDbSvc::m_DetectorManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_DetectorManagerKey
Definition: MdtCalibOutputDbSvc.h:115
MdtCalibOutputDbSvc::postprocess_t0s
static const MuonCalib::MdtTubeFitContainer * postprocess_t0s(const MuonCalib::MdtTubeFitContainer *new_t0, const MuonCalib::NtupleStationId &id)
Definition: MdtCalibOutputDbSvc.cxx:228
MdtCalibOutputDbSvc::m_force_default_resolution
bool m_force_default_resolution
Definition: MdtCalibOutputDbSvc.h:106