30 for(
int i = 0; i <
bins_m; i++) {
31 nDelBin_m[i] =
nBin_m[i] = 0;
33 xbinmax_m[i] = -xbinmin_m[i];
34 binsEmitted_m[i] =
false;
64 size_t NpartInBin = partInBin;
66 nBin_m[bunchCount - 1] = NpartInBin;
71 Inform msg(
"updateDeletedPartsInBin ");
74 reduce(&(countLost[0]), &(countLost[0]) + lastEmittedBin, &(countLost[0]),
OpAddAssign());
75 for(
int ii = 0; ii < lastEmittedBin; ii++) {
76 if(countLost[ii] > 0) {
78 msg <<
"In Bin: " << ii <<
", " <<
nDelBin_m[ii] <<
" particle(s) lost" <<
endl;
86 Inform msg0(
"updatePartInBin ");
89 msg0 <<
"In Bin: " << ii <<
", " <<
nBin_m[ii] <<
" particles " <<
endl;
92 reduce(&(countLost[0]), &(countLost[0]) + nemittedBins_m, &(countLost[0]),
OpAddAssign());
94 if(countLost[ii] > 0) {
95 nBin_m[ii] -= countLost[ii];
96 msg0 <<
"In Bin: " << ii <<
", " << countLost[ii] <<
" particle(s) lost" <<
endl;
104 if(countLost[ii] > 0)
105 nBin_m[ii] -= countLost[ii];
113 nBin_m[ii] = newPartNum[ii];
114 INFOMSG(
"After reset Bin: " << ii <<
", particle(s): " << newPartNum[ii] <<
endl);
124 nBin_m[ii] = newPartNum[ii];
218 os <<
"-----------------------------------------" <<
endl;
219 os <<
" CREATE BINNED GAUSS DISTRIBUTION DONE " <<
endl;
225 for(
int i = 0; i <
bins_m; i++) {
227 for(
int j = 0; j <
sBins_m; j++)
228 msum += gsl_histogram_get(
h_m.get(), i * sBins_m + j);
229 os <<
"Bin # " << i <<
" val " << msum <<
endl;
235 os <<
"No bin is emitted !" <<
endl;
void setActualemittedBin(int bin)
std::unique_ptr< bool[]> binsEmitted_m
constexpr double e
The value of .
PETE_TUTree< FnFabs, typename T::PETE_Expr_t > fabs(const PETE_Expr< T > &l)
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
std::unique_ptr< double[]> xbinmin_m
std::vector< bool > isEmitted_m
std::unique_ptr< size_t[]> nDelBin_m
size_t getTotalNum()
How many particles are in all the bins.
bool reduce(Communicate &, InputIterator, InputIterator, OutputIterator, const ReduceOp &, bool *IncludeVal=0)
std::unique_ptr< size_t[]> nBin_m
PartBins(int bins, int sbins)
void updatePartInBin_cyc(size_t countLost[])
Defines a structure to hold energy bins and their associated data.
constexpr double c
The velocity of light in m/s.
void resetPartInBin(size_t newPartNum[])
Inform & print(Inform &os)
Tps< T > sqrt(const Tps< T > &x)
Square root.
size_t getTotalNumPerBin(int b)
How many particles are in the bin b.
void updateStatus(int bunchCount, size_t nPartInBin)
bool getPart(size_t n, int bin, std::vector< double > &p)
std::unique_ptr< double[]> xbinmax_m
void updateDeletedPartsInBin(size_t countLost[])
void setBinEmitted(int bin)
std::vector< std::vector< double > > tmppart_m
void resetPartInBin_cyc(size_t newPartNum[], int binID)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
std::unique_ptr< gsl_histogram > h_m
Inform & endl(Inform &inf)
void updatePartInBin(size_t countLost[])