Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooNumIntConfig.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooNumIntConfig.h,v 1.8 2007/05/11 09:11:30 verkerke Exp $
5  * Authors: *
6  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * *
9  * Copyright (c) 2000-2005, Regents of the University of California *
10  * and Stanford University. All rights reserved. *
11  * *
12  * Redistribution and use in source and binary forms, *
13  * with or without modification, are permitted according to the terms *
14  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15  *****************************************************************************/
16 #ifndef ROO_NUM_INT_CONFIG
17 #define ROO_NUM_INT_CONFIG
18 
19 #include "TObject.h"
20 #include "RooCategory.h"
21 #include "RooLinkedList.h"
22 class RooNumIntFactory ;
23 class RooAbsIntegrator ;
24 
25 class RooNumIntConfig : public TObject, public RooPrintable {
26 public:
27 
28  RooNumIntConfig();
29  RooNumIntConfig(const RooNumIntConfig& other) ;
30  RooNumIntConfig& operator=(const RooNumIntConfig& other) ;
31  virtual ~RooNumIntConfig();
32 
33  // Return selected integration techniques for 1,2,N dimensional integrals
34  RooCategory& method1D() { return _method1D ; }
35  RooCategory& method2D() { return _method2D ; }
36  RooCategory& methodND() { return _methodND ; }
37  const RooCategory& method1D() const { return _method1D ; }
38  const RooCategory& method2D() const { return _method2D ; }
39  const RooCategory& methodND() const { return _methodND ; }
40 
41  // Return selected integration techniques for 1,2,N dimensional open-ended integrals
42  RooCategory& method1DOpen() { return _method1DOpen ; }
43  RooCategory& method2DOpen() { return _method2DOpen ; }
44  RooCategory& methodNDOpen() { return _methodNDOpen ; }
45  const RooCategory& method1DOpen() const { return _method1DOpen ; }
46  const RooCategory& method2DOpen() const { return _method2DOpen ; }
47  const RooCategory& methodNDOpen() const { return _methodNDOpen ; }
48 
49  // Set/get absolute and relative precision convergence criteria
50  Double_t epsAbs() const { return _epsAbs ; }
51  Double_t epsRel() const { return _epsRel ; }
52  void setEpsAbs(Double_t newEpsAbs) ;
53  void setEpsRel(Double_t newEpsRel) ;
54 
55  // Set/get switch that activates printing of number of required
56  // function evaluations for each numeric integration
57  Bool_t printEvalCounter() const { return _printEvalCounter ; }
58  void setPrintEvalCounter(Bool_t newVal) { _printEvalCounter = newVal ; }
59 
60  static RooNumIntConfig& defaultConfig() ;
61 
62  Bool_t addConfigSection(const RooAbsIntegrator* proto, const RooArgSet& defaultConfig) ;
63  const RooArgSet& getConfigSection(const char* name) const ;
64  RooArgSet& getConfigSection(const char* name) ;
65 
66  void printMultiline(std::ostream &os, Int_t content, Bool_t verbose, TString indent= "") const;
67 
68  virtual StyleOption defaultPrintStyle(Option_t* opt) const ;
69  inline virtual void Print(Option_t *options= 0) const {
70  printStream(defaultPrintStream(),defaultPrintContents(options),defaultPrintStyle(options));
71  }
72 
73 protected:
74  Double_t _epsAbs ; // Absolute precision
75  Double_t _epsRel ; // Relative precision
76  Bool_t _printEvalCounter ; // Flag to control printing of function evaluation counter
77 
78  RooCategory _method1D ; // Selects integration method for 1D integrals
79  RooCategory _method2D ; // Selects integration method for 2D integrals
80  RooCategory _methodND ; // Selects integration method for ND integrals
81  RooCategory _method1DOpen ; // Selects integration method for open ended 1D integrals
82  RooCategory _method2DOpen ; // Selects integration method for open ended 2D integrals
83  RooCategory _methodNDOpen ; // Selects integration method for open ended ND integrals
84  RooLinkedList _configSets ; // List of configuration sets for individual integration methods
85 
86  ClassDef(RooNumIntConfig,1) // Numeric Integrator configuration
87 };
88 
89 #endif
90 
91