ATLAS Offline Software
Loading...
Searching...
No Matches
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

◆ SingleTubeCalibPtr

Constructor & Destructor Documentation

◆ CalibParamSorter()

MuonCalib::CalibParamSorter::CalibParamSorter ( double tol)

Definition at line 8 of file CalibParamSorter.cxx.

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 }
static Double_t a
int compare(const std::vector< double > &a, const std::vector< double > &b) const

◆ 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.

34{1.e-6};

The documentation for this struct was generated from the following files: