64 const std::vector<G4double>& globalTimeHighEdges,
const std::vector<G4double>& resolutions)
67 fVariablePrecision.clear();
68 for (
auto key = globalTimeHighEdges.cbegin(), val = resolutions.cbegin();
69 key != globalTimeHighEdges.cend() && val != resolutions.cend(); ++key, ++val)
71 fVariablePrecision.emplace(*key, *val);
74 if (fVariablePrecision.empty()) {
75 G4Exception(
"G4MoleculeCounterTimeComparer::SetVariablePrecision()",
76 "G4MoleculeCounterTimeComparer",
FatalException,
"Precision map cannot be empty!");
103 if (std::fabs(a - b) < fPrecision) {
108 const auto it_a = fVariablePrecision.upper_bound(a);
109 const auto it_b = fVariablePrecision.upper_bound(b);
110 auto precision = fVariablePrecision.crbegin()->second;
111 if (it_a != fVariablePrecision.cend() && it_b != fVariablePrecision.cend())
112 precision = std::min(it_a->second, it_b->second);
113 if (std::fabs(a - b) < precision) {
118 G4Exception(
"G4MoleculeCounterTimeComparer::operator()",
"G4MoleculeCounterTimeComparer",