18#ifndef DISTRIBUTIONMOMENTS_H
19#define DISTRIBUTIONMOMENTS_H
22#include <Kokkos_Core.hpp>
29template <
typename T,
unsigned Dim = 3>
34typedef boost::numeric::ublas::matrix<double>
matrix_t;
43 const std::vector<OpalParticle>::const_iterator&,
44 const std::vector<OpalParticle>::const_iterator&);
47 ippl::ParticleAttrib<double>::view_type& Mview,
102 ippl::ParticleAttrib<double>::view_type& Mview,
112 template <
class InputIt>
114 using iterator_t = std::vector<Vector_t<double, 2>>::const_iterator;
117 const std::vector<int>& globalAccumulatedHistogram,
118 const std::vector<int>& localAccumulatedHistogram,
unsigned int dimension,
119 int numRequiredParticles)
const;
321 for (
unsigned int i = 0; i < 3; ++i) {
322 maxDistance[i] = std::max(std::abs(
maxR_m[i]), std::abs(
minR_m[i]));
boost::numeric::ublas::matrix< double > matrix_t
std::pair< Vector_t< double, 3 >, Vector_t< double, 3 > > VectorPair_t
boost::numeric::ublas::matrix< double > matrix_t
ippl::Vector< T, Dim > Vector_t
PartBunch< T, Dim >::ConstIterator end(PartBunch< T, Dim > const &bunch)
PartBunch< T, Dim >::ConstIterator begin(PartBunch< T, Dim > const &bunch)
typename ippl::detail::ViewType< ippl::Vector< double, Dim >, 1 >::view_type view_type
constexpr double kB
Boltzman's constant in eV/K.
constexpr double c
The velocity of light in m/s.
double meanKineticEnergy_m
void fillMembers(std::vector< double > &)
Vector_t< double, 3 > sixtyEightPercentile_m
std::vector< Vector_t< double, 2 > >::const_iterator iterator_t
double getMeanKineticEnergy() const
Vector_t< double, 3 > get68Percentile() const
Vector_t< double, 3 > getMinPosition() const
Vector_t< double, 3 > getMeanMomentum() const
Vector_t< double, 3 > ninetyFivePercentile_m
Vector_t< double, 3 > getStandardDeviationPosition() const
Vector_t< double, 3 > getNormalizedEmittance() const
double getMeanGamma() const
Vector_t< double, 3 > get99_99Percentile() const
void computePlasmaParameter(double)
double getTotalCharge() const
Vector_t< double, 3 > minR_m
static const double percentileFourSigmasNormalDist_m
double getTemperature() const
matrix_t getMoments6x6() const
double getDebyeLength() const
unsigned int totalNumParticles_m
Vector_t< double, 3 > getHalo() const
Vector_t< double, 3 > ninetyNinePercentile_m
void compute(const std::vector< OpalParticle >::const_iterator &, const std::vector< OpalParticle >::const_iterator &)
double getStdKineticEnergy() const
Vector_t< double, 3 > getNormalizedEmittance99Percentile() const
Vector_t< double, 3 > getStandardDeviationMomentum() const
void computeMoments(ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Rview, ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Pview, ippl::ParticleAttrib< double >::view_type &Mview, size_t Np, size_t Nlocal)
Vector_t< double, 3 > getMeanPosition() const
Vector_t< double, 3 > getStandardDeviationRP() const
Vector_t< double, 3 > ninetyNine_NinetyNinePercentile_m
double getStdTime() const
double getTotalMass() const
double getPlasmaParameter() const
Vector_t< double, 3 > normalizedEps_m
Vector_t< double, 3 > normalizedEps68Percentile_m
void computeMinMaxPosition(ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Rview, size_t Nlcoal)
Vector_t< double, 3 > meanP_m
Vector_t< double, 3 > getNormalizedEmittance99_99Percentile() const
void computeDebyeLength(ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Rview, ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Pview, size_t Np, size_t Nlocal, double density)
matrix_t notCentMoments_m
double computeNormalizedEmittance(const iterator_t &begin, const iterator_t &end) const
Vector_t< double, 3 > halo_m
double getTotalNumParticles() const
Vector_t< double, 3 > stdP_m
Vector_t< double, 3 > normalizedEps99Percentile_m
Vector_t< double, 3 > getMaxPosition() const
Vector_t< double, 3 > stdR_m
static const double percentileThreeSigmasNormalDist_m
Vector_t< double, 3 > getNormalizedEmittance95Percentile() const
Vector_t< double, 3 > getGeometricEmittance() const
Vector_t< double, 3 > meanR_m
void computeMeans(ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Rview, ippl::ParticleAttrib< Vector_t< double, 3 > >::view_type &Pview, ippl::ParticleAttrib< double >::view_type &Mview, size_t Np, size_t Nlocal)
void computePercentiles(const InputIt &, const InputIt &)
static const double percentileTwoSigmasNormalDist_m
Vector_t< double, 3 > get95Percentile() const
Vector_t< double, 6 > getCentroid() const
Vector_t< double, 3 > getNormalizedEmittance68Percentile() const
Vector_t< double, 3 > normalizedEps99_99Percentile_m
void computeMeanKineticEnergy()
bool isParticleExcluded(const OpalParticle &) const
Vector_t< double, 3 > maxR_m
Vector_t< double, 3 > stdRP_m
std::pair< double, iterator_t > determinePercentilesDetail(const iterator_t &begin, const iterator_t &end, const std::vector< int > &globalAccumulatedHistogram, const std::vector< int > &localAccumulatedHistogram, unsigned int dimension, int numRequiredParticles) const
Vector_t< double, 3 > geometricEps_m
static const double percentileOneSigmaNormalDist_m
Vector_t< double, 3 > get99Percentile() const
double getMeanTime() const
Vector_t< double, 6 > getMeans() const
void resetPlasmaParameters()
Vector_t< double, 6 > means_m
Vector_t< double, 6 > centroid_m
Vector_t< double, 3 > getMaxR() const
double stdKineticEnergy_m
double getMeanGammaZ() const
Vector_t< double, 3 > normalizedEps95Percentile_m