29 return static_cast<double>(type.
charge());
40 const double r_sqr = r.
sqr();
43 return std::make_pair(0.0,
ThreeVector(0.0, 0.0, 0.0));
47 const double u_r_scalar = r * u.
threevec();
48 const double r_rest_sqr = r_sqr + u_r_scalar * u_r_scalar;
52 return std::make_pair(0.0,
ThreeVector(0.0, 0.0, 0.0));
56 ? sf * (r + u.
threevec() * u_r_scalar) *
60 return std::make_pair(sf, sf_grad);
65 std::tuple<double, FourVector, ThreeVector, ThreeVector, ThreeVector>
68 bool compute_gradient,
bool smearing) {
82 std::array<FourVector, 4> djmu_dx;
84 for (
const auto &
p : plist) {
90 const double m = mom.
abs();
94 const double m_inv = 1.0 / m;
96 p.position().threevec() - r, mom, m_inv, par, compute_gradient);
102 if (dens_factor > 0.) {
103 jmu_pos += tmp * sf_and_grad.first;
105 jmu_neg += tmp * sf_and_grad.first;
108 if (dens_factor > 0.) {
114 if (compute_gradient) {
115 for (
int k = 1; k <= 3; k++) {
116 djmu_dx[k] += tmp * sf_and_grad.second[k - 1];
117 djmu_dx[0] -= tmp * sf_and_grad.second[k - 1] * tmp.
threevec()[k - 1] /
135 if (compute_gradient) {
136 j_rot.
set_x1(djmu_dx[2].x3() - djmu_dx[3].x2());
137 j_rot.
set_x2(djmu_dx[3].x1() - djmu_dx[1].x3());
138 j_rot.
set_x3(djmu_dx[1].x2() - djmu_dx[2].x1());
140 for (
int i = 1; i < 4; i++) {
144 return std::make_tuple(rho_eck, jmu_pos + jmu_neg, rho_grad, dj_dt, j_rot);
147 std::tuple<double, FourVector, ThreeVector, ThreeVector, ThreeVector>
150 bool compute_gradient,
bool smearing) {
154 std::tuple<double, FourVector, ThreeVector, ThreeVector, ThreeVector>
157 bool compute_gradient,
bool smearing) {
165 os <<
"hadron density";
168 os <<
"baryon density";
171 os <<
"baryonic isospin density";
174 os <<
"pion density";
177 os <<
"total isospin3 density";
183 os.setstate(std::ios_base::failbit);