Version: SMASH-3.1
density.h File Reference
#include <iostream>
#include <tuple>
#include <typeinfo>
#include <utility>
#include <vector>
#include "energymomentumtensor.h"
#include "experimentparameters.h"
#include "forwarddeclarations.h"
#include "fourvector.h"
#include "lattice.h"
#include "particledata.h"
#include "particles.h"
#include "pdgcode.h"
#include "threevector.h"

Go to the source code of this file.

Classes

class  smash::DensityParameters
 A class to pre-calculate and store parameters relevant for density calculation. More...
 
class  smash::DensityOnLattice
 A class for time-efficient (time-memory trade-off) calculation of density on the lattice. More...
 

Namespaces

 smash
 

Typedefs

typedef RectangularLattice< DensityOnLattice > smash::DensityLattice
 Conveniency typedef for lattice of density. More...
 

Enumerations

enum class  smash::DensityType {
  smash::None = 0 , smash::Hadron = 1 , smash::Baryon = 2 , smash::BaryonicIsospin = 3 ,
  smash::Pion = 4 , smash::Isospin3_tot = 5 , smash::Charge = 6 , smash::Strangeness = 7
}
 Allows to choose which kind of density to calculate. More...
 

Functions

std::ostream & smash::operator<< (std::ostream &os, DensityType dt)
 Create the output operator for the densities. More...
 
double smash::density_factor (const ParticleType &type, DensityType dens_type)
 Get the factor that determines how much a particle contributes to the density type that is computed. More...
 
double smash::smearing_factor_norm (const double two_sigma_sqr)
 Norm of the Gaussian smearing function. More...
 
double smash::smearing_factor_rcut_correction (const double rcut_in_sigma)
 Gaussians used for smearing are cut at radius \(r_{cut} = a \sigma \) for calculation speed-up. More...
 
std::pair< double, ThreeVector > smash::unnormalized_smearing_factor (const ThreeVector &r, const FourVector &p, const double m_inv, const DensityParameters &dens_par, const bool compute_gradient=false)
 Implements gaussian smearing for any quantity. More...
 
std::tuple< double, FourVector, ThreeVector, ThreeVector, FourVector, FourVector, FourVector, FourVector > smash::current_eckart (const ThreeVector &r, const ParticleList &plist, const DensityParameters &par, DensityType dens_type, bool compute_gradient, bool smearing)
 Calculates Eckart rest frame density and 4-current of a given density type and optionally the gradient of the density in an arbitary frame (grad j0), the curl of the 3-current, and the time, x, y, and z derivatives of the 4-current. More...
 
std::tuple< double, FourVector, ThreeVector, ThreeVector, FourVector, FourVector, FourVector, FourVector > smash::current_eckart (const ThreeVector &r, const Particles &plist, const DensityParameters &par, DensityType dens_type, bool compute_gradient, bool smearing)
 convenience overload of the above (ParticleList -> Particles) More...
 
template<typename T >
void smash::update_lattice (RectangularLattice< T > *lat, const LatticeUpdate update, const DensityType dens_type, const DensityParameters &par, const std::vector< Particles > &ensembles, const bool compute_gradient)
 Updates the contents on the lattice. More...
 
void smash::update_lattice (RectangularLattice< DensityOnLattice > *lat, RectangularLattice< FourVector > *old_jmu, RectangularLattice< FourVector > *new_jmu, RectangularLattice< std::array< FourVector, 4 >> *four_grad_lattice, const LatticeUpdate update, const DensityType dens_type, const DensityParameters &par, const std::vector< Particles > &ensembles, const double time_step, const bool compute_gradient)
 Updates the contents on the lattice of DensityOnLattice type. More...
 

Variables

static constexpr int smash::LDensity = LogArea::Density::id