// @(#)root/mathmore:$Id$
// Author: Magdalena Slawinska 08/2007

 /**********************************************************************
  *                                                                    *
  * Copyright (c) 2004 ROOT Foundation,  CERN/PH-SFT                   *
  *                                                                    *
  * This library is free software; you can redistribute it and/or      *
  * modify it under the terms of the GNU General Public License        *
  * as published by the Free Software Foundation; either version 2     *
  * of the License, or (at your option) any later version.             *
  *                                                                    *
  * This library is distributed in the hope that it will be useful,    *
  * but WITHOUT ANY WARRANTY; without even the implied warranty of     *
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   *
  * General Public License for more details.                           *
  *                                                                    *
  * You should have received a copy of the GNU General Public License  *
  * along with this library (see file COPYING); if not, write          *
  * to the Free Software Foundation, Inc., 59 Temple Place, Suite      *
  * 330, Boston, MA 02111-1307 USA, or contact the author.             *
  *                                                                    *
  **********************************************************************/


#ifndef ROOT_Math_MCParameters
#define ROOT_Math_MCParameters

#include <cstring>   // for size_t

namespace ROOT {
namespace Math {


class IOptions;

/**
   structures collecting parameters
   for VEGAS multidimensional integration
   FOr implementation of default parameters see file
   mathmore/src/GSLMCIntegrationWorkspace.h

   @ingroup MCIntegration
*/
struct VegasParameters{
   double alpha;
   size_t iterations;
   int stage;
   int mode;
   int verbose;

   // constructor of default parameters
   VegasParameters() { SetDefaultValues(); }

   // construct from GenAlgoOptions
   // parameter not specified are ignored
   VegasParameters(const ROOT::Math::IOptions & opt);

   void SetDefaultValues();

   VegasParameters & operator=(const ROOT::Math::IOptions & opt);

   /// convert to options (return object is managed by the user)
   ROOT::Math::IOptions * operator() () const;
};




/**
   structures collecting parameters
   for MISER multidimensional integration

   @ingroup MCIntegration
*/
struct MiserParameters{
   double estimate_frac;
   size_t min_calls;
   size_t min_calls_per_bisection;
   double alpha;
   double dither;

   // constructor of default parameters
   // needs dimension since min_calls = 16 * dim
   MiserParameters(size_t dim=10) { SetDefaultValues(dim); }

   void SetDefaultValues(size_t dim=10);

   // construct from GenAlgoOptions
   // parameter not specified are ignored
   MiserParameters(const ROOT::Math::IOptions & opt, size_t dim = 10);

   MiserParameters & operator=(const ROOT::Math::IOptions & opt);

   /// convert to options (return object is managed by the user)
   ROOT::Math::IOptions * operator() () const;

};

struct PlainParameters{
};

} // namespace Math
} // namespace ROOT

#endif
 MCParameters.h:1
 MCParameters.h:2
 MCParameters.h:3
 MCParameters.h:4
 MCParameters.h:5
 MCParameters.h:6
 MCParameters.h:7
 MCParameters.h:8
 MCParameters.h:9
 MCParameters.h:10
 MCParameters.h:11
 MCParameters.h:12
 MCParameters.h:13
 MCParameters.h:14
 MCParameters.h:15
 MCParameters.h:16
 MCParameters.h:17
 MCParameters.h:18
 MCParameters.h:19
 MCParameters.h:20
 MCParameters.h:21
 MCParameters.h:22
 MCParameters.h:23
 MCParameters.h:24
 MCParameters.h:25
 MCParameters.h:26
 MCParameters.h:27
 MCParameters.h:28
 MCParameters.h:29
 MCParameters.h:30
 MCParameters.h:31
 MCParameters.h:32
 MCParameters.h:33
 MCParameters.h:34
 MCParameters.h:35
 MCParameters.h:36
 MCParameters.h:37
 MCParameters.h:38
 MCParameters.h:39
 MCParameters.h:40
 MCParameters.h:41
 MCParameters.h:42
 MCParameters.h:43
 MCParameters.h:44
 MCParameters.h:45
 MCParameters.h:46
 MCParameters.h:47
 MCParameters.h:48
 MCParameters.h:49
 MCParameters.h:50
 MCParameters.h:51
 MCParameters.h:52
 MCParameters.h:53
 MCParameters.h:54
 MCParameters.h:55
 MCParameters.h:56
 MCParameters.h:57
 MCParameters.h:58
 MCParameters.h:59
 MCParameters.h:60
 MCParameters.h:61
 MCParameters.h:62
 MCParameters.h:63
 MCParameters.h:64
 MCParameters.h:65
 MCParameters.h:66
 MCParameters.h:67
 MCParameters.h:68
 MCParameters.h:69
 MCParameters.h:70
 MCParameters.h:71
 MCParameters.h:72
 MCParameters.h:73
 MCParameters.h:74
 MCParameters.h:75
 MCParameters.h:76
 MCParameters.h:77
 MCParameters.h:78
 MCParameters.h:79
 MCParameters.h:80
 MCParameters.h:81
 MCParameters.h:82
 MCParameters.h:83
 MCParameters.h:84
 MCParameters.h:85
 MCParameters.h:86
 MCParameters.h:87
 MCParameters.h:88
 MCParameters.h:89
 MCParameters.h:90
 MCParameters.h:91
 MCParameters.h:92
 MCParameters.h:93
 MCParameters.h:94
 MCParameters.h:95
 MCParameters.h:96
 MCParameters.h:97
 MCParameters.h:98
 MCParameters.h:99
 MCParameters.h:100
 MCParameters.h:101
 MCParameters.h:102
 MCParameters.h:103
 MCParameters.h:104
 MCParameters.h:105
 MCParameters.h:106