00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "RooFit.h"
00027
00028 #include "TClass.h"
00029 #include "RooIntegrator2D.h"
00030 #include "RooArgSet.h"
00031 #include "RooIntegratorBinding.h"
00032 #include "RooRealVar.h"
00033 #include "RooNumber.h"
00034 #include "RooNumIntFactory.h"
00035
00036 #include <assert.h>
00037
00038 ClassImp(RooIntegrator2D)
00039 ;
00040
00041
00042
00043 void RooIntegrator2D::registerIntegrator(RooNumIntFactory& fact)
00044 {
00045
00046
00047 RooIntegrator2D* proto = new RooIntegrator2D() ;
00048 fact.storeProtoIntegrator(proto,RooArgSet(),RooIntegrator1D::Class()->GetName()) ;
00049 RooNumIntConfig::defaultConfig().method2D().setLabel(proto->IsA()->GetName()) ;
00050 }
00051
00052
00053
00054 RooIntegrator2D::RooIntegrator2D() :
00055 _xIntegrator(0), _xint(0)
00056 {
00057
00058
00059 }
00060
00061
00062
00063 RooIntegrator2D::RooIntegrator2D(const RooAbsFunc& function, RooIntegrator1D::SummationRule rule,
00064 Int_t maxSteps, Double_t eps) :
00065 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,rule,maxSteps,eps)))),rule,maxSteps,eps)
00066 {
00067
00068
00069
00070 }
00071
00072
00073
00074 RooIntegrator2D::RooIntegrator2D(const RooAbsFunc& function, Double_t xmin, Double_t xmax,
00075 Double_t ymin, Double_t ymax,
00076 SummationRule rule, Int_t maxSteps, Double_t eps) :
00077 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,ymin,ymax,rule,maxSteps,eps)))),xmin,xmax,rule,maxSteps,eps)
00078 {
00079
00080
00081
00082 }
00083
00084
00085
00086 RooIntegrator2D::RooIntegrator2D(const RooAbsFunc& function, const RooNumIntConfig& config) :
00087 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,config)))),config)
00088 {
00089
00090
00091
00092 }
00093
00094
00095
00096
00097 RooIntegrator2D::RooIntegrator2D(const RooAbsFunc& function, Double_t xmin, Double_t xmax,
00098 Double_t ymin, Double_t ymax,
00099 const RooNumIntConfig& config) :
00100 RooIntegrator1D(*(_xint=new RooIntegratorBinding(*(_xIntegrator=new RooIntegrator1D(function,ymin,ymax,config)))),xmin,xmax,config)
00101 {
00102
00103
00104 }
00105
00106
00107
00108 RooAbsIntegrator* RooIntegrator2D::clone(const RooAbsFunc& function, const RooNumIntConfig& config) const
00109 {
00110
00111 return new RooIntegrator2D(function,config) ;
00112 }
00113
00114
00115
00116
00117 RooIntegrator2D::~RooIntegrator2D()
00118 {
00119
00120
00121 delete _xint ;
00122 delete _xIntegrator ;
00123 }
00124
00125
00126
00127 Bool_t RooIntegrator2D::checkLimits() const
00128 {
00129
00130
00131 Bool_t ret = RooIntegrator1D::checkLimits() ;
00132 ret &= _xIntegrator->checkLimits() ;
00133 return ret ;
00134 }