ROOT logo
// @(#)root/roostats:$Id:  cranmer $
// Author: Kyle Cranmer, Akira Shibata
/*************************************************************************
 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOSTATS_FLEXIBLEINTERPVAR
#define ROOSTATS_FLEXIBLEINTERPVAR

#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooListProxy.h"

class RooRealVar;
class RooArgList ;

namespace RooStats{
namespace HistFactory{

  class FlexibleInterpVar : public RooAbsReal {
  public:

    FlexibleInterpVar() ;
    FlexibleInterpVar(const char *name, const char *title,
		      const RooArgList& _paramList, 
		      double nominal, vector<double> low, vector<double> high);

    FlexibleInterpVar(const char *name, const char *title,
		      const RooArgList& _paramList, double nominal, vector<double> low, 
		      vector<double> high,vector<int> code);

    FlexibleInterpVar(const char *name, const char *title);
    FlexibleInterpVar(const FlexibleInterpVar&, const char*);

    void setInterpCode(RooAbsReal& param, int code);
    void setAllInterpCodes(int code);

    void printAllInterpCodes();

    virtual TObject* clone(const char* newname) const { return new FlexibleInterpVar(*this, newname); }
    virtual ~FlexibleInterpVar() ;


  protected:

    RooListProxy _paramList ;
    double _nominal;
    vector<double> _low;
    vector<double> _high;
    vector<int> _interpCode;
    
    TIterator* _paramIter ;  //! do not persist

    Double_t evaluate() const;

    ClassDef(RooStats::HistFactory::FlexibleInterpVar,1) // flexible interpolation
  };
}
}

#endif
 FlexibleInterpVar.h:1
 FlexibleInterpVar.h:2
 FlexibleInterpVar.h:3
 FlexibleInterpVar.h:4
 FlexibleInterpVar.h:5
 FlexibleInterpVar.h:6
 FlexibleInterpVar.h:7
 FlexibleInterpVar.h:8
 FlexibleInterpVar.h:9
 FlexibleInterpVar.h:10
 FlexibleInterpVar.h:11
 FlexibleInterpVar.h:12
 FlexibleInterpVar.h:13
 FlexibleInterpVar.h:14
 FlexibleInterpVar.h:15
 FlexibleInterpVar.h:16
 FlexibleInterpVar.h:17
 FlexibleInterpVar.h:18
 FlexibleInterpVar.h:19
 FlexibleInterpVar.h:20
 FlexibleInterpVar.h:21
 FlexibleInterpVar.h:22
 FlexibleInterpVar.h:23
 FlexibleInterpVar.h:24
 FlexibleInterpVar.h:25
 FlexibleInterpVar.h:26
 FlexibleInterpVar.h:27
 FlexibleInterpVar.h:28
 FlexibleInterpVar.h:29
 FlexibleInterpVar.h:30
 FlexibleInterpVar.h:31
 FlexibleInterpVar.h:32
 FlexibleInterpVar.h:33
 FlexibleInterpVar.h:34
 FlexibleInterpVar.h:35
 FlexibleInterpVar.h:36
 FlexibleInterpVar.h:37
 FlexibleInterpVar.h:38
 FlexibleInterpVar.h:39
 FlexibleInterpVar.h:40
 FlexibleInterpVar.h:41
 FlexibleInterpVar.h:42
 FlexibleInterpVar.h:43
 FlexibleInterpVar.h:44
 FlexibleInterpVar.h:45
 FlexibleInterpVar.h:46
 FlexibleInterpVar.h:47
 FlexibleInterpVar.h:48
 FlexibleInterpVar.h:49
 FlexibleInterpVar.h:50
 FlexibleInterpVar.h:51
 FlexibleInterpVar.h:52
 FlexibleInterpVar.h:53
 FlexibleInterpVar.h:54
 FlexibleInterpVar.h:55
 FlexibleInterpVar.h:56
 FlexibleInterpVar.h:57
 FlexibleInterpVar.h:58
 FlexibleInterpVar.h:59
 FlexibleInterpVar.h:60
 FlexibleInterpVar.h:61
 FlexibleInterpVar.h:62
 FlexibleInterpVar.h:63
 FlexibleInterpVar.h:64
 FlexibleInterpVar.h:65