Logo ROOT  
Reference Guide
PiecewiseInterpolation.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: PiecewiseInterpolation.h,v 1.3 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_PIECEWISEINTERPOLATION
17 #define ROO_PIECEWISEINTERPOLATION
18 
19 #include "RooAbsReal.h"
20 #include "RooRealProxy.h"
21 #include "RooListProxy.h"
22 
23 #include "RooObjCacheManager.h"
24 #include <vector>
25 #include <list>
26 
27 class RooRealVar;
28 class RooArgList;
29 
31 public:
32 
34  PiecewiseInterpolation(const char *name, const char *title, const RooAbsReal& nominal, const RooArgList& lowSet, const RooArgList& highSet, const RooArgList& paramSet, Bool_t takeOwnerShip=kFALSE) ;
35  virtual ~PiecewiseInterpolation() ;
36 
37  PiecewiseInterpolation(const PiecewiseInterpolation& other, const char* name = 0);
38  virtual TObject* clone(const char* newname) const { return new PiecewiseInterpolation(*this, newname); }
39 
40  // virtual Double_t defaultErrorLevel() const ;
41 
42  // void printMetaArgs(std::ostream& os) const ;
43 
44  const RooArgList& lowList() const { return _lowSet ; }
45  const RooArgList& highList() const { return _highSet ; }
46  const RooArgList& paramList() const { return _paramSet ; }
47 
48  //virtual Bool_t forceAnalyticalInt(const RooAbsArg&) const { return kTRUE ; }
50 
51  Int_t getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, const RooArgSet* normSet,const char* rangeName=0) const ;
52  Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
53 
54  void setPositiveDefinite(bool flag=true){_positiveDefinite=flag;}
55 
56  void setInterpCode(RooAbsReal& param, int code);
57  void setAllInterpCodes(int code);
58  void printAllInterpCodes();
59 
60  virtual std::list<Double_t>* binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, Double_t /*xhi*/) const ;
61  virtual std::list<Double_t>* plotSamplingHint(RooAbsRealLValue& obs, Double_t xlo, Double_t xhi) const ;
62  virtual Bool_t isBinnedDistribution(const RooArgSet& obs) const ;
63 
64 protected:
65 
66  class CacheElem : public RooAbsCacheElement {
67  public:
68  CacheElem() {} ;
69  virtual ~CacheElem() {} ;
71  RooArgList ret(_funcIntList) ;
72  ret.add(_lowIntList);
73  ret.add(_highIntList);
74  return ret ;
75  }
79  // will want std::vector<RooRealVar*> for low and high also
80  } ;
81  mutable RooObjCacheManager _normIntMgr ; // The integration cache manager
82 
83  RooRealProxy _nominal; // The nominal value
84  RooArgList _ownedList ; // List of owned components
85  RooListProxy _lowSet ; // Low-side variation
86  RooListProxy _highSet ; // High-side varaition
87  RooListProxy _paramSet ; // interpolation parameters
88  RooListProxy _normSet ; // interpolation parameters
89  Bool_t _positiveDefinite; // protect against negative and 0 bins.
90 
91  std::vector<int> _interpCode;
92 
93  Double_t evaluate() const;
94 
95  ClassDef(PiecewiseInterpolation,3) // Sum of RooAbsReal objects
96 };
97 
98 #endif
PiecewiseInterpolation::CacheElem::CacheElem
CacheElem()
Definition: PiecewiseInterpolation.h:68
RooAbsReal.h
PiecewiseInterpolation::CacheElem::_highIntList
RooArgList _highIntList
Definition: PiecewiseInterpolation.h:78
PiecewiseInterpolation::analyticalIntegralWN
Double_t analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=0) const
Implement analytical integrations by doing appropriate weighting from component integrals functions t...
Definition: PiecewiseInterpolation.cxx:414
PiecewiseInterpolation::paramList
const RooArgList & paramList() const
Definition: PiecewiseInterpolation.h:46
PiecewiseInterpolation::_normIntMgr
RooObjCacheManager _normIntMgr
Definition: PiecewiseInterpolation.h:81
PiecewiseInterpolation::setInterpCode
void setInterpCode(RooAbsReal &param, int code)
Definition: PiecewiseInterpolation.cxx:597
PiecewiseInterpolation::CacheElem::_funcIntList
RooArgList _funcIntList
Definition: PiecewiseInterpolation.h:76
RooArgList
Definition: RooArgList.h:21
PiecewiseInterpolation::_normSet
RooListProxy _normSet
Definition: PiecewiseInterpolation.h:88
PiecewiseInterpolation::clone
virtual TObject * clone(const char *newname) const
Definition: PiecewiseInterpolation.h:38
PiecewiseInterpolation::CacheElem::~CacheElem
virtual ~CacheElem()
Definition: PiecewiseInterpolation.h:69
PiecewiseInterpolation::CacheElem::_lowIntList
RooArgList _lowIntList
Definition: PiecewiseInterpolation.h:77
PiecewiseInterpolation::isBinnedDistribution
virtual Bool_t isBinnedDistribution(const RooArgSet &obs) const
WVE note: assumes nominal and alternates have identical structure, must add explicit check.
Definition: PiecewiseInterpolation.cxx:640
RooAbsReal
Definition: RooAbsReal.h:61
PiecewiseInterpolation::setPositiveDefinite
void setPositiveDefinite(bool flag=true)
Definition: PiecewiseInterpolation.h:54
RooAbsCacheElement
Definition: RooAbsCacheElement.h:26
PiecewiseInterpolation::_ownedList
RooArgList _ownedList
Definition: PiecewiseInterpolation.h:84
PiecewiseInterpolation::setBinIntegrator
Bool_t setBinIntegrator(RooArgSet &allVars)
Definition: PiecewiseInterpolation.cxx:302
PiecewiseInterpolation::_lowSet
RooListProxy _lowSet
Definition: PiecewiseInterpolation.h:85
bool
PiecewiseInterpolation::_positiveDefinite
Bool_t _positiveDefinite
Definition: PiecewiseInterpolation.h:89
PiecewiseInterpolation::CacheElem
Definition: PiecewiseInterpolation.h:66
PiecewiseInterpolation::plotSamplingHint
virtual std::list< Double_t > * plotSamplingHint(RooAbsRealLValue &obs, Double_t xlo, Double_t xhi) const
Definition: PiecewiseInterpolation.cxx:649
PiecewiseInterpolation::_nominal
RooRealProxy _nominal
Definition: PiecewiseInterpolation.h:83
PiecewiseInterpolation::CacheElem::containedArgs
virtual RooArgList containedArgs(Action)
Definition: PiecewiseInterpolation.h:70
PiecewiseInterpolation::lowList
const RooArgList & lowList() const
Definition: PiecewiseInterpolation.h:44
PiecewiseInterpolation::PiecewiseInterpolation
PiecewiseInterpolation()
Definition: PiecewiseInterpolation.cxx:39
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
PiecewiseInterpolation::highList
const RooArgList & highList() const
Definition: PiecewiseInterpolation.h:45
RooRealProxy.h
PiecewiseInterpolation::evaluate
Double_t evaluate() const
Calculate and return current value of self.
Definition: PiecewiseInterpolation.cxx:157
RooAbsCollection::add
virtual Bool_t add(const RooAbsArg &var, Bool_t silent=kFALSE)
Add the specified argument to list.
Definition: RooAbsCollection.cxx:437
RooListProxy
Definition: RooListProxy.h:24
RooObjCacheManager.h
PiecewiseInterpolation::getAnalyticalIntegralWN
Int_t getAnalyticalIntegralWN(RooArgSet &allVars, RooArgSet &analVars, const RooArgSet *normSet, const char *rangeName=0) const
Advertise that all integrals can be handled internally.
Definition: PiecewiseInterpolation.cxx:320
RooListProxy.h
RooTemplateProxy< RooAbsReal >
PiecewiseInterpolation::_paramSet
RooListProxy _paramSet
Definition: PiecewiseInterpolation.h:87
Double_t
double Double_t
Definition: RtypesCore.h:59
RooObjCacheManager
Definition: RooObjCacheManager.h:32
RooAbsCacheElement::Action
Action
Definition: RooAbsCacheElement.h:39
TObject
Definition: TObject.h:37
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
name
char name[80]
Definition: TGX11.cxx:110
PiecewiseInterpolation::~PiecewiseInterpolation
virtual ~PiecewiseInterpolation()
Destructor.
Definition: PiecewiseInterpolation.cxx:146
PiecewiseInterpolation::setAllInterpCodes
void setAllInterpCodes(int code)
Definition: PiecewiseInterpolation.cxx:612
PiecewiseInterpolation::binBoundaries
virtual std::list< Double_t > * binBoundaries(RooAbsRealLValue &, Double_t, Double_t) const
WVE note: assumes nominal and alternates have identical structure, must add explicit check.
Definition: PiecewiseInterpolation.cxx:631
PiecewiseInterpolation::_highSet
RooListProxy _highSet
Definition: PiecewiseInterpolation.h:86
RooRealVar
Definition: RooRealVar.h:36
RooAbsRealLValue
Definition: RooAbsRealLValue.h:31
PiecewiseInterpolation::_interpCode
std::vector< int > _interpCode
Definition: PiecewiseInterpolation.h:91
PiecewiseInterpolation
Definition: PiecewiseInterpolation.h:30
RooArgSet
Definition: RooArgSet.h:28
int
PiecewiseInterpolation::printAllInterpCodes
void printAllInterpCodes()
Definition: PiecewiseInterpolation.cxx:621