35
35
PhaseSpaceVector::PhaseSpaceVector(const Vector<double>& original_instance)
36
36
: Vector<double>() {
37
37
if (original_instance.size() < 6) {
38
throw(Squeal(Squeal::recoverable,
38
throw(Exception(Exception::recoverable,
39
39
"Attempted to construct with a Vector<double> containing "
40
40
"fewer than six elements",
41
41
"PhaseSpaceVector::PhaseSpaceVector(Vector<double>)"));
67
67
PhaseSpaceVector::~PhaseSpaceVector() { }
69
// *************************
70
// Assignment Operators
71
// *************************
69
73
PhaseSpaceVector & PhaseSpaceVector::operator=(const PhaseSpaceVector & rhs) {
70
74
(*this).Vector<double>::operator=(rhs);
79
PhaseSpaceVector & PhaseSpaceVector::operator+=(const PhaseSpaceVector& rhs) {
80
Vector<double>::operator+=(rhs);
85
PhaseSpaceVector & PhaseSpaceVector::operator-=(const PhaseSpaceVector& rhs) {
86
Vector<double>::operator-=(rhs);
91
PhaseSpaceVector & PhaseSpaceVector::operator*=(const PhaseSpaceVector& rhs) {
92
Vector<double>::operator*=(rhs);
97
PhaseSpaceVector & PhaseSpaceVector::operator/=(const PhaseSpaceVector& rhs) {
98
Vector<double>::operator/=(rhs);
103
PhaseSpaceVector & PhaseSpaceVector::operator+=(const double& rhs) {
104
Vector<double>::operator+=(rhs);
109
PhaseSpaceVector & PhaseSpaceVector::operator-=(const double& rhs) {
110
Vector<double>::operator-=(rhs);
115
PhaseSpaceVector & PhaseSpaceVector::operator*=(const double& rhs) {
116
Vector<double>::operator*=(rhs);
121
PhaseSpaceVector & PhaseSpaceVector::operator/=(const double& rhs) {
122
Vector<double>::operator/=(rhs);
127
// *************************
128
// Algebraic Operators
129
// *************************
131
const PhaseSpaceVector PhaseSpaceVector::operator+(const PhaseSpaceVector& rhs)
133
return PhaseSpaceVector(*this) += rhs;
136
const PhaseSpaceVector PhaseSpaceVector::operator-(const PhaseSpaceVector& rhs)
138
return PhaseSpaceVector(*this) -= rhs;
141
const PhaseSpaceVector PhaseSpaceVector::operator*(const PhaseSpaceVector& rhs)
143
return PhaseSpaceVector(*this) *= rhs;
146
const PhaseSpaceVector PhaseSpaceVector::operator/(const PhaseSpaceVector& rhs)
148
return PhaseSpaceVector(*this) /= rhs;
151
const PhaseSpaceVector PhaseSpaceVector::operator+(const double& rhs) const {
152
return PhaseSpaceVector(*this) += rhs;
155
const PhaseSpaceVector PhaseSpaceVector::operator-(const double& rhs) const {
156
return PhaseSpaceVector(*this) -= rhs;
159
const PhaseSpaceVector PhaseSpaceVector::operator*(const double& rhs) const {
160
return PhaseSpaceVector(*this) *= rhs;
163
const PhaseSpaceVector PhaseSpaceVector::operator/(const double& rhs) const {
164
return PhaseSpaceVector(*this) /= rhs;
75
167
std::ostream& operator<<(std::ostream& out, const PhaseSpaceVector& vector) {
76
168
out << "t: " << vector[0] << " E: " << vector[1]
77
169
<< " x: " << vector[2] << " Px: " << vector[3]