Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
MuonCalib::CalibParamSorter Struct Reference

Helper struct to group Mdt calibration constants which are equivalent within the target precision. More...

#include <CalibParamSorter.h>

Collaboration diagram for MuonCalib::CalibParamSorter:

Public Types

using SingleTubeCalib = MdtTubeCalibContainer::SingleTubeCalib
 
using SingleTubeCalibPtr = MdtTubeCalibContainer::SingleTubeCalibPtr
 

Public Member Functions

 CalibParamSorter (double _tol)
 
bool operator() (const CalibFunc *a, const CalibFunc *b) const
 
bool operator() (const MdtRtRelation *a, const MdtRtRelation *b) const
 
bool operator() (const MdtFullCalibData::RtRelationPtr &a, const MdtFullCalibData::RtRelationPtr &b) const
 
bool operator() (const SingleTubeCalib *a, const SingleTubeCalib *b) const
 
bool operator() (const SingleTubeCalibPtr &a, const SingleTubeCalibPtr &b) const
 

Private Member Functions

int compare (const std::vector< double > &a, const std::vector< double > &b) const
 
int compare (const CalibFunc &a, const CalibFunc &b) const
 
int compare (const SingleTubeCalib &a, const SingleTubeCalib &b) const
 
int compare (const MdtRtRelation &a, const MdtRtRelation &b) const
 

Private Attributes

double m_tolerance {1.e-6}
 

Detailed Description

Helper struct to group Mdt calibration constants which are equivalent within the target precision.

The grouping is exploiting the std::set<> or the std::map<> mechanism, where two objects are considered to be equivalent if !CalibParamSorter()(a,b) && CalibParamSorter()(b,a) are satisfied.

Definition at line 12 of file CalibParamSorter.h.

Member Typedef Documentation

◆ SingleTubeCalib

Definition at line 13 of file CalibParamSorter.h.

◆ SingleTubeCalibPtr

Definition at line 14 of file CalibParamSorter.h.

Constructor & Destructor Documentation

◆ CalibParamSorter()

MuonCalib::CalibParamSorter::CalibParamSorter ( double  _tol)

Definition at line 8 of file CalibParamSorter.cxx.

8  :
9  m_tolerance{_tol}{}

Member Function Documentation

◆ compare() [1/4]

int MuonCalib::CalibParamSorter::compare ( const CalibFunc a,
const CalibFunc b 
) const
private

Definition at line 21 of file CalibParamSorter.cxx.

21  {
22  if (a.name() != b.name()) return a.name() < b.name() ? -1 : 1;
23  return compare(a.parameters() , b.parameters());
24  }

◆ compare() [2/4]

int MuonCalib::CalibParamSorter::compare ( const MdtRtRelation a,
const MdtRtRelation b 
) const
private

Definition at line 25 of file CalibParamSorter.cxx.

25  {
26  const int rtCmp = compare(*a.rt() , *b.rt());
27  if (rtCmp) return rtCmp;
28  return compare(*a.rtRes(), *b.rtRes());
29  }

◆ compare() [3/4]

int MuonCalib::CalibParamSorter::compare ( const SingleTubeCalib a,
const SingleTubeCalib b 
) const
private

Definition at line 30 of file CalibParamSorter.cxx.

30  {
31  if ( std::abs(a.t0 - b.t0) > m_tolerance) {
32  return a.t0 < b.t0 ? -1 : 1;
33  }
34  if (std::abs(a.adcCal - b.adcCal) > m_tolerance) {
35  return a.adcCal < b.adcCal ? - 1 : 1;
36  }
37  if (a.statusCode != b.statusCode) {
38  return a.statusCode < b.statusCode ? -1 : 1;
39  }
40  return 0;
41  }

◆ compare() [4/4]

int MuonCalib::CalibParamSorter::compare ( const std::vector< double > &  a,
const std::vector< double > &  b 
) const
private

Definition at line 11 of file CalibParamSorter.cxx.

11  {
12  if (a.size() != b.size()) return a.size() < b.size() ? -1 : 1;
13  for (unsigned int i =0 ; i < a.size() ; ++i) {
14  const double d = a[i] - b[i];
15  if (std::abs(d) > m_tolerance) {
16  return d < 0. ? -1 : 1;
17  }
18  }
19  return 0;
20  }

◆ operator()() [1/5]

bool MuonCalib::CalibParamSorter::operator() ( const CalibFunc a,
const CalibFunc b 
) const

Definition at line 46 of file CalibParamSorter.cxx.

46  {
47  return compare(*a, *b) < 0;
48  }

◆ operator()() [2/5]

bool MuonCalib::CalibParamSorter::operator() ( const MdtFullCalibData::RtRelationPtr a,
const MdtFullCalibData::RtRelationPtr b 
) const

Definition at line 49 of file CalibParamSorter.cxx.

50  {
51  return compare(*a, *b) < 0;
52  }

◆ operator()() [3/5]

bool MuonCalib::CalibParamSorter::operator() ( const MdtRtRelation a,
const MdtRtRelation b 
) const

Definition at line 56 of file CalibParamSorter.cxx.

56  {
57  return compare(*a, *b) < 0;
58  }

◆ operator()() [4/5]

bool MuonCalib::CalibParamSorter::operator() ( const SingleTubeCalib a,
const SingleTubeCalib b 
) const

Definition at line 43 of file CalibParamSorter.cxx.

43  {
44  return compare(*a, *b) < 0;
45  }

◆ operator()() [5/5]

bool MuonCalib::CalibParamSorter::operator() ( const SingleTubeCalibPtr a,
const SingleTubeCalibPtr b 
) const

Definition at line 53 of file CalibParamSorter.cxx.

53  {
54  return compare(*a, *b) < 0;
55  }

Member Data Documentation

◆ m_tolerance

double MuonCalib::CalibParamSorter::m_tolerance {1.e-6}
private

Definition at line 34 of file CalibParamSorter.h.


The documentation for this struct was generated from the following files:
hist_file_dump.d
d
Definition: hist_file_dump.py:143
MuonCalib::CalibParamSorter::m_tolerance
double m_tolerance
Definition: CalibParamSorter.h:34
MuonCalib::CalibParamSorter::compare
int compare(const std::vector< double > &a, const std::vector< double > &b) const
Definition: CalibParamSorter.cxx:11
lumiFormat.i
int i
Definition: lumiFormat.py:85
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
a
TList * a
Definition: liststreamerinfos.cxx:10