Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4MoleculeCounterTimeComparer Class Reference

#include <G4MoleculeCounterTimeComparer.hh>

Public Types

enum  TimeComparerType { FixedPrecision , VariablePrecision }

Public Member Functions

 G4MoleculeCounterTimeComparer ()
virtual ~G4MoleculeCounterTimeComparer ()=default
 G4MoleculeCounterTimeComparer (const G4MoleculeCounterTimeComparer &)
G4MoleculeCounterTimeCompareroperator= (const G4MoleculeCounterTimeComparer &)
void SetFixedPrecision (G4double)
void SetVariablePrecision (const std::vector< G4double > &, const std::vector< G4double > &)
void SetVariablePrecision (const std::map< G4double, G4double > &)
G4double GetPrecisionAtTime (G4double) const
bool operator() (const G4double &, const G4double &) const

Static Public Member Functions

static G4MoleculeCounterTimeComparer CreateWithFixedPrecision (G4double)
static G4MoleculeCounterTimeComparer CreateWithVariablePrecision (const std::map< G4double, G4double > &)

Detailed Description

Definition at line 35 of file G4MoleculeCounterTimeComparer.hh.

Member Enumeration Documentation

◆ TimeComparerType

Constructor & Destructor Documentation

◆ G4MoleculeCounterTimeComparer() [1/2]

G4MoleculeCounterTimeComparer::G4MoleculeCounterTimeComparer ( )

◆ ~G4MoleculeCounterTimeComparer()

virtual G4MoleculeCounterTimeComparer::~G4MoleculeCounterTimeComparer ( )
virtualdefault

◆ G4MoleculeCounterTimeComparer() [2/2]

G4MoleculeCounterTimeComparer::G4MoleculeCounterTimeComparer ( const G4MoleculeCounterTimeComparer & other)

Definition at line 36 of file G4MoleculeCounterTimeComparer.cc.

38{
39 *this = other;
40}

Member Function Documentation

◆ CreateWithFixedPrecision()

G4MoleculeCounterTimeComparer G4MoleculeCounterTimeComparer::CreateWithFixedPrecision ( G4double precision)
static

Definition at line 127 of file G4MoleculeCounterTimeComparer.cc.

128{
130 obj.SetFixedPrecision(precision);
131 return obj;
132}

◆ CreateWithVariablePrecision()

G4MoleculeCounterTimeComparer G4MoleculeCounterTimeComparer::CreateWithVariablePrecision ( const std::map< G4double, G4double > & map)
static

Definition at line 135 of file G4MoleculeCounterTimeComparer.cc.

136{
138 obj.SetVariablePrecision(map);
139 return obj;
140}

◆ GetPrecisionAtTime()

G4double G4MoleculeCounterTimeComparer::GetPrecisionAtTime ( G4double time) const

Definition at line 92 of file G4MoleculeCounterTimeComparer.cc.

93{
95 return fPrecision;
96 else
97 return fVariablePrecision.upper_bound(time)->second;
98}

◆ operator()()

G4bool G4MoleculeCounterTimeComparer::operator() ( const G4double & a,
const G4double & b ) const

Definition at line 100 of file G4MoleculeCounterTimeComparer.cc.

101{
103 if (std::fabs(a - b) < fPrecision) {
104 return false;
105 }
106 }
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) {
114 return false;
115 }
116 }
117 else {
118 G4Exception("G4MoleculeCounterTimeComparer::operator()", "G4MoleculeCounterTimeComparer",
119 FatalException, "Unknown comparison type");
120 }
121 return a < b;
122}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)

◆ operator=()

G4MoleculeCounterTimeComparer & G4MoleculeCounterTimeComparer::operator= ( const G4MoleculeCounterTimeComparer & other)

Definition at line 43 of file G4MoleculeCounterTimeComparer.cc.

44{
45 switch (other.fType) {
47 SetVariablePrecision(other.fVariablePrecision);
48 break;
50 default:
51 SetFixedPrecision(other.fPrecision);
52 break;
53 }
54 return *this;
55}
void SetVariablePrecision(const std::vector< G4double > &, const std::vector< G4double > &)

◆ SetFixedPrecision()

void G4MoleculeCounterTimeComparer::SetFixedPrecision ( G4double precision)

Definition at line 57 of file G4MoleculeCounterTimeComparer.cc.

58{
60 fPrecision = precision;
61}

Referenced by operator=().

◆ SetVariablePrecision() [1/2]

void G4MoleculeCounterTimeComparer::SetVariablePrecision ( const std::map< G4double, G4double > & resolutionMap)

Definition at line 80 of file G4MoleculeCounterTimeComparer.cc.

82{
84 fVariablePrecision = resolutionMap;
85
86 if (fVariablePrecision.empty()) {
87 G4Exception("G4MoleculeCounterTimeComparer::SetVariablePrecision()",
88 "G4MoleculeCounterTimeComparer", FatalException, "Precision map cannot be empty!");
89 }
90}

◆ SetVariablePrecision() [2/2]

void G4MoleculeCounterTimeComparer::SetVariablePrecision ( const std::vector< G4double > & globalTimeHighEdges,
const std::vector< G4double > & resolutions )

Definition at line 63 of file G4MoleculeCounterTimeComparer.cc.

65{
67 fVariablePrecision.clear();
68 for (auto key = globalTimeHighEdges.cbegin(), val = resolutions.cbegin();
69 key != globalTimeHighEdges.cend() && val != resolutions.cend(); ++key, ++val)
70 {
71 fVariablePrecision.emplace(*key, *val);
72 }
73
74 if (fVariablePrecision.empty()) {
75 G4Exception("G4MoleculeCounterTimeComparer::SetVariablePrecision()",
76 "G4MoleculeCounterTimeComparer", FatalException, "Precision map cannot be empty!");
77 }
78}

Referenced by operator=().


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