23 #define Inform ostream
26 #include <gsl/gsl_rng.h>
27 #include <gsl/gsl_histogram.h>
28 #include <gsl/gsl_cdf.h>
29 #include <gsl/gsl_randist.h>
60 void fill(std::vector<double> &p) {
102 bool getPart(
size_t n,
int bin, std::vector<double> &p);
213 return h_m !=
nullptr;
223 size_t a = gsl_histogram_get(
h_m.get(), bin);
232 ret += gsl_histogram_get(
h_m.get(), i);
262 std::unique_ptr<gsl_histogram>
h_m;
276 bool operator()(
const std::vector<double>& first_part,
const std::vector<double>& second_part) {
288 bool operator()(
const std::vector<double>& first_part,
const std::vector<double>& second_part) {
295 #endif // OPAL_Bins_HH
AscendingLocationSort(int direction=0)
void setActualemittedBin(int bin)
void updateExtramePos(int bin, double dz)
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
std::unique_ptr< bool[]> binsEmitted_m
bool operator()(const std::vector< double > &first_part, const std::vector< double > &second_part)
virtual bool weHaveBins()
T::PETE_Expr_t::PETE_Return_t max(const PETE_Expr< T > &expr, NDIndex< D > &loc)
std::unique_ptr< double[]> xbinmin_m
void setGamma(double gamma)
int getDelBinCont(int bin)
How many deleted particles are on one bin.
std::vector< bool > isEmitted_m
void getExtrema(double &min, double &max)
DescendingLocationSort(int direction=0)
std::unique_ptr< size_t[]> nDelBin_m
void setEmitted(int n, int)
size_t getTotalNum()
How many particles are in all the bins.
void setPartNum(int bin, long long num)
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[])
void fill(std::vector< double > &p)
Add a particle to the temporary container.
size_t getLocalSBinCount(int bin)
How many particles are in one sampling bin.
void resetPartInBin(size_t newPartNum[])
Inform & print(Inform &os)
void updatePartPos(int n, int, double z)
bool doEmission()
Is true if we still have particles to emit.
virtual size_t getLocalBinCount(int bin)
How many particles are on one energy bin.
bool operator()(const std::vector< double > &first_part, const std::vector< double > &second_part)
void setHistogram(gsl_histogram *h)
size_t getTotalNumPerBin(int b)
How many particles are in the bin b.
void resetBins()
If the bunch object rebins we need to call resetBins()
void updateStatus(int bunchCount, size_t nPartInBin)
virtual size_t getGlobalBinCount(int bin)
How many particles are on one bin.
bool getBinEmitted(int bin)
bool getPart(size_t n, int bin, std::vector< double > &p)
size_t getNp()
get the number of particles in the temporary particle structure used for binning
std::unique_ptr< double[]> xbinmax_m
void updateDeletedPartsInBin(size_t countLost[])
T::PETE_Expr_t::PETE_Return_t min(const PETE_Expr< T > &expr, NDIndex< D > &loc)
void setBinEmitted(int bin)
std::vector< std::vector< double > > tmppart_m
void resetPartInBin_cyc(size_t newPartNum[], int binID)
std::unique_ptr< gsl_histogram > h_m
bool isEmitted(int n, int)
void updatePartInBin(size_t countLost[])