24#include "Utility/Inform.h"
49 for (
int i = 0; i <
bins_m; i++) {
51 xbinmin_m[i] = std::numeric_limits<double>::max();
67 ippl::Comm->reduce(gs, gs, 1, std::plus<size_t>());
74 ippl::Comm->reduce(s, s, 1, std::plus<size_t>());
80 if (countLost[ii] > 0)
81 nBin_m[ii] -= countLost[ii];
87 ippl::Comm->reduce(maxbinIndex, maxbinIndex, 1, std::greater<size_t>());
91 nBin_m[ii] = newPartNum[ii];
121 for (
unsigned int n = 0; n <
tmppart_m.size(); n++)
127 ippl::Comm->reduce(
xmax_m,
xmax_m, 1, std::greater<double>());
128 ippl::Comm->reduce(
xmin_m,
xmin_m, 1, std::less<double>());
136 for (
int n = 0; n <
bins_m; n++)
142 for (
unsigned int n = 0; n <
tmppart_m.size(); n++)
148 for (
unsigned int n = 0; n <
tmppart_m.size(); n++) {
158 os <<
"-----------------------------------------" << endl;
159 os <<
" CREATE BINNED GAUSS DISTRIBUTION DONE " << endl;
161 os <<
"Bins= " <<
bins_m <<
" hBin= " <<
hBin_m <<
" Particle vector length "
166 for (
int i = 0; i <
bins_m; i++) {
168 for (
int j = 0; j <
sBins_m; j++)
169 msum += gsl_histogram_get(
h_m.get(), i *
sBins_m + j);
170 os <<
"Bin # " << i <<
" val " << msum << endl;
176 os <<
"No bin is emitted !" << endl;
constexpr double c
The velocity of light in m/s.
std::vector< std::vector< double > > tmppart_m
std::unique_ptr< double[]> xbinmax_m
std::unique_ptr< double[]> xbinmin_m
PartBins(int bins, int sbins)
std::unique_ptr< size_t[]> nDelBin_m
size_t getTotalNumPerBin(int b)
How many particles are in the bin b.
void resetPartInBin_cyc(size_t newPartNum[], int binID)
std::vector< bool > isEmitted_m
void setBinEmitted(int bin)
void updatePartInBin_cyc(size_t countLost[])
Inform & print(Inform &os)
std::unique_ptr< bool[]> binsEmitted_m
bool getPart(size_t n, int bin, std::vector< double > &p)
size_t getTotalNum()
How many particles are in all the bins.
std::unique_ptr< size_t[]> nBin_m
std::unique_ptr< gsl_histogram > h_m