21 #ifndef yap_QuantumNumbers_h
22 #define yap_QuantumNumbers_h
48 : QuantumNumbers(twoJ, P, 0, twoI, 0, Q) {}
52 : QuantumNumbers(twoJ, P, 0, 0, 0, Q) {}
56 : QuantumNumbers(twoJ, 0, 0, 0, 0, Q) {}
72 constexpr
unsigned twoJ()
const
76 constexpr
double J()
const
77 {
return TwoJ_ * 0.5; }
80 constexpr
int P()
const
84 constexpr
int C()
const
88 constexpr
unsigned twoI()
const
92 constexpr
double I()
const
93 {
return TwoI_ * 0.5; }
96 constexpr
int G()
const
100 constexpr
int Q()
const
145 {
return !(lhs == rhs); }
149 {
return spin_to_string(Q.
twoJ()) + (Q.
P() > 0 ?
"+" :
"-") + (Q.
C() == 0 ?
"" : (Q.
C() > 0 ?
"+" :
"-")); }
157 { os <<
"JP" << ((Q.
C() == 0) ?
"" :
"C") <<
" = " <<
to_string(Q);
return os; }
unsigned TwoJ_
Spin * 2.
Definition: QuantumNumbers.h:121
constexpr unsigned twoJ() const
Definition: QuantumNumbers.h:72
bool operator==(const CachedValue::Status &S, const CalculationStatus &s)
equality operator for checking the CalculationStatus
Definition: CachedValue.h:153
constexpr int P() const
Definition: QuantumNumbers.h:80
int G_
G-parity.
Definition: QuantumNumbers.h:133
bool operator!=(const CachedValue::Status &S, const CalculationStatus &s)
inequality operator for checking the CalculationStatus
Definition: CachedValue.h:157
constexpr int C() const
Definition: QuantumNumbers.h:84
std::string to_string(const QuantumNumbers &Q)
convert to string
Definition: QuantumNumbers.h:148
constexpr int Q() const
Definition: QuantumNumbers.h:100
constexpr unsigned twoI() const
Definition: QuantumNumbers.h:88
constexpr double I() const
Definition: QuantumNumbers.h:92
constexpr QuantumNumbers(unsigned twoJ, int P, int Q)
JPQ constructor.
Definition: QuantumNumbers.h:51
std::ostream & operator<<(std::ostream &os, const DecayChannel &dc)
<< operator
Definition: DecayChannel.h:127
QuantumNumbers()
Definition: QuantumNumbers.h:60
constexpr QuantumNumbers(unsigned twoJ, int P, int C, unsigned twoI, int G, int Q)
Constructor.
Definition: QuantumNumbers.h:43
std::string spin_to_string(int twoJ)
convert 2*J to string (e.g. 1/2, 1, 3/2, etc.)
Definition: Spin.h:36
void setJ(double J)
Set Spin.
Definition: QuantumNumbers.h:109
unsigned TwoI_
Isospin * 2.
Definition: QuantumNumbers.h:130
constexpr QuantumNumbers(unsigned twoI, unsigned twoJ, int P, int Q)
IJPQ constructor.
Definition: QuantumNumbers.h:47
std::string debug_string(const QuantumNumbers &Q)
convert to string
Definition: QuantumNumbers.h:152
virtual bool consistent() const
check consistency
Definition: QuantumNumbers.cxx:8
constexpr double J() const
Definition: QuantumNumbers.h:76
std::string to_string(const CachedValue::Status &S)
streaming operator for CachedValue::Status
Definition: CachedValue.cxx:27
constexpr QuantumNumbers(unsigned twoJ, int Q)
JQ constructor.
Definition: QuantumNumbers.h:55
void setTwoJ(unsigned J)
Set 2 * Spin.
Definition: QuantumNumbers.h:113
Quantum numbers of a Particle.
Definition: QuantumNumbers.h:35
int P_
Parity.
Definition: QuantumNumbers.h:124
int C_
C-parity.
Definition: QuantumNumbers.h:127
int Q_
Electric charge.
Definition: QuantumNumbers.h:136
constexpr int G() const
Definition: QuantumNumbers.h:96