52   virtual ~FoamFunction() {}
 
   53   double Density(
int nDim, 
double * 
x) {
 
   54      return Camel2(nDim,
x);
 
   64Int_t run_foam(
int nev){
 
   65  cout<<
"--- kanwa started ---"<<endl;
 
   67  TH2D  *hst_xy = 
new TH2D(
"foam_hst_xy" ,  
"FOAM x-y plot", 50,0,1.0, 50,0,1.0);
 
   77  FoamX->
SetRho(
new FoamFunction() );  
 
   91  for(
long loop=0; loop<nev; loop++){
 
  101      hst_xy->
Draw(
"lego2");
 
  107  double time = 
w.CpuTime()*1.E9/nev;
 
  108  cout << 
"Time using FOAM \t\t " << 
"   \t=\t " << time << 
"\tns/call" << endl;
 
  111  hst_xy->
Draw(
"lego2");  
 
  115  cout << 
" MCresult= " << MCresult << 
" +- " << MCerror <<endl;
 
  116  cout<<
"--- kanwa ended ---"<<endl;
 
  123double UCamel2(
double * 
x, 
double *) {
 
  127int run_unuran(
int nev, std::string method = 
"hitro") {
 
  130   std::cout << 
"run unuran " << std::endl;
 
  134   TH2D  *
h1 = 
new TH2D(
"unr_hst_xy" ,  
"UNURAN x-y plot", 50,0,1.0, 50,0,1.0);
 
  137   TF2 * 
f = 
new TF2(
"f",UCamel2,0,1,0,1,0);
 
  152   bool ret =   unr.Init(dist,method);
 
  154      std::cerr << 
"Error initializing unuran with method " << unr.MethodName() << endl;
 
  159   for (
int i = 0; i < nev; ++i) {
 
  167   double time = 
w.CpuTime()*1.E9/nev;
 
  168   cout << 
"Time using Unuran  " << unr.MethodName() << 
"   \t=\t " << time << 
"\tns/call" << endl;
 
  173Int_t unuranFoamTest(){
 
  176  TCanvas *cKanwa = 
new TCanvas(
"cKanwa",
"Canvas for plotting",600,1000);
 
  182  run_unuran(
n,
"hitro");
 
  191  std::cout <<
"\nChi2 Test Results (UNURAN-FOAM):\t";
 
#define ClassDef(name, id)
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
 
R__EXTERN TSystem * gSystem
 
TVirtualPad * cd(Int_t subpadnumber=0) override
Set current canvas & pad.
 
void Update() override
Update canvas pad buffers.
 
A 2-Dim function with parameters.
 
Abstract class representing n-dimensional real positive integrand function.
 
virtual Double_t Density(Int_t ndim, Double_t *)=0
 
TFoam is the main class of the multi-dimensional general purpose Monte Carlo event generator (integra...
 
virtual void GetMCvect(Double_t *)
User may get generated MC point/vector with help of this method.
 
virtual void MakeEvent()
User method.
 
virtual void Initialize()
Basic initialization of FOAM invoked by the user.
 
virtual void GetIntegMC(Double_t &, Double_t &)
User method.
 
virtual void SetnCells(Long_t nCells)
 
virtual void SetRho(TFoamIntegrand *Rho)
User may use this method to set the distribution object.
 
virtual void SetPseRan(TRandom *PseRan)
 
virtual void SetkDim(Int_t kDim)
 
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
 
void Draw(Option_t *option="") override
Draw this histogram with options.
 
virtual Double_t Chi2Test(const TH1 *h2, Option_t *option="UU", Double_t *res=nullptr) const
test for comparing weighted and unweighted histograms
 
2-D histogram with a double per channel (see TH1 documentation)}
 
Service class for 2-D histogram classes.
 
Int_t Fill(Double_t) override
Invalid Fill method.
 
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
Automatic pad generation by division.
 
Random number generator class based on M.
 
This is the base class for the ROOT Random number generators.
 
virtual void SetSeed(ULong_t seed=0)
Set the random generator seed.
 
void Start(Bool_t reset=kTRUE)
Start the stopwatch.
 
virtual int Load(const char *module, const char *entry="", Bool_t system=kFALSE)
Load a shared library.
 
TUnuranMultiContDist class describing multi dimensional continuous distributions.
 
RVec< PromoteType< T > > exp(const RVec< T > &v)
 
double Dist(void *xp, void *yp)
 
double dist(Rotation3D const &r1, Rotation3D const &r2)
 
VecExpr< UnaryOp< Sqr< T >, VecExpr< A, T, D >, T >, T, D > sqr(const VecExpr< A, T, D > &rhs)