35    for (Int_t ix = 1; ix <= h1->GetXaxis()->GetNbins(); ++ix){
 
   37      const double x = h1->GetXaxis()->GetBinCenter(ix);
 
   39      h1->SetBinContent(ix, gRandom->Poisson(f1(x)));
 
   41      if (h1->GetSumw2N() != 0) {
 
   42        h1->SetBinError(ix, sqrt(h1->GetBinContent(ix)));
 
 
   57    for (Int_t ix = 1; ix <= h2->GetXaxis()->GetNbins(); ++ix){
 
   58      for (Int_t iy = 1; iy <= h2->GetYaxis()->GetNbins(); ++iy){
 
   60        const double x = h2->GetXaxis()->GetBinCenter(ix);
 
   61        const double y = h2->GetYaxis()->GetBinCenter(iy);
 
   63        h2->SetBinContent(ix, iy, gRandom->Poisson(f2(x,y)));
 
   65        if (h2->GetSumw2N() != 0) {
 
   66          h2->SetBinError(ix, iy, sqrt(h2->GetBinContent(ix,iy)));
 
 
   82    for (Int_t ix = 1; ix <= h3->GetXaxis()->GetNbins(); ++ix){
 
   83      for (Int_t iy = 1; iy <= h3->GetYaxis()->GetNbins(); ++iy){
 
   84        for (Int_t iz = 1; iz <= h3->GetZaxis()->GetNbins(); ++iz){
 
   86          const double x = h3->GetXaxis()->GetBinCenter(ix);
 
   87          const double y = h3->GetYaxis()->GetBinCenter(iy);
 
   88          const double z = h3->GetZaxis()->GetBinCenter(iz);
 
   90          h3->SetBinContent(ix, iy, iz, gRandom->Poisson(
f3(x,y,z)));
 
   92          if (h3->GetSumw2N() != 0) {
 
   93            h3->SetBinError(ix, iy, iy, sqrt(h3->GetBinContent(ix,iy,iz)));
 
 
  109  inline void FillRandom(TH1* h1, 
const T& f1, 
const size_t ns)
 
  118      inline bool operator<(
const double W)
 const { 
return this->W < W; }
 
  125    for (Int_t ix = 1; ix <= h1->GetXaxis()->GetNbins(); ++ix){
 
  127      const Double_t x = h1->GetXaxis()->GetBinCenter(ix);
 
  131      buffer.push_back({x, W});
 
  134    for (
size_t i = 0; i != ns; ++i) {
 
  136      typename vector<tuple_t>::const_iterator p = lower_bound(buffer.begin(), buffer.end(), W * gRandom->Rndm());
 
 
  151  inline void FillRandom(TH2* h2, 
const T& f2, 
const size_t ns)
 
  161      inline bool operator<(
const double W)
 const { 
return this->W < W; }
 
  168    for (Int_t ix = 1; ix <= h2->GetXaxis()->GetNbins(); ++ix){
 
  169      for (Int_t iy = 1; iy <= h2->GetYaxis()->GetNbins(); ++iy){
 
  171        const Double_t x = h2->GetXaxis()->GetBinCenter(ix);
 
  172        const Double_t y = h2->GetYaxis()->GetBinCenter(iy);
 
  176        buffer.push_back({x, y, W});
 
  180    for (
size_t i = 0; i != ns; ++i) {
 
  182      typename vector<tuple_t>::const_iterator p = lower_bound(buffer.begin(), buffer.end(), W * gRandom->Rndm());
 
  184      h2->Fill(p->x, p->y);
 
 
  208      inline bool operator<(
const double W)
 const { 
return this->W < W; }
 
  215    for (Int_t ix = 1; ix <= h3->GetXaxis()->GetNbins(); ++ix){
 
  216      for (Int_t iy = 1; iy <= h3->GetYaxis()->GetNbins(); ++iy){
 
  217        for (Int_t iz = 1; iz <= h3->GetYaxis()->GetNbins(); ++iz){
 
  219          const Double_t x = h3->GetXaxis()->GetBinCenter(ix);
 
  220          const Double_t y = h3->GetYaxis()->GetBinCenter(iy);
 
  221          const Double_t z = h3->GetZaxis()->GetBinCenter(iz);
 
  225          buffer.push_back({x, y, z, W});
 
  230    for (
size_t i = 0; i != ns; ++i) {
 
  232      typename vector<tuple_t>::const_iterator p = lower_bound(buffer.begin(), buffer.end(), W * gRandom->Rndm());
 
  234      h3->Fill(p->x, p->y, p->z);