ROOT logo
// @(#)root/roostats:$Id: PointSetInterval.cxx 26317 2009-01-13 15:31:05Z cranmer $
// Author: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
/*************************************************************************
 * 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_PointSetInterval
#define RooStats_PointSetInterval

#ifndef ROO_ARG_SET
#include "RooArgSet.h"
#endif
#ifndef ROO_TREE_DATA
#include "RooAbsData.h"
#endif
#ifndef RooStats_ConfInterval
#include "RooStats/ConfInterval.h"
#endif


namespace RooStats {
 class PointSetInterval : public ConfInterval {
  private:
    //    RooArgSet* fParameters; // parameter of interest
    Double_t fConfidenceLevel; // confidence level
    RooAbsData* fParameterPointsInInterval; // either a histogram (RooDataHist) or a tree (RooDataSet)

  public:
    // constructors,destructors
    PointSetInterval();
    PointSetInterval(const char* name);
    PointSetInterval(const char* name, const char* title);
    PointSetInterval(const char* name, RooAbsData&);
    PointSetInterval(const char* name, const char* title, RooAbsData&);
    virtual ~PointSetInterval();
        
    virtual Bool_t IsInInterval(RooArgSet&);
    virtual void SetConfidenceLevel(Double_t cl) {fConfidenceLevel = cl;}
    virtual Double_t ConfidenceLevel() const {return fConfidenceLevel;}
 
    // Method to return lower limit on a given parameter 
    //  Double_t LowerLimit(RooRealVar& param) ; // could provide, but misleading?
    //      Double_t UpperLimit(RooRealVar& param) ; // could provide, but misleading?
    
    // do we want it to return list of parameters
    virtual RooArgSet* GetParameters() const;

    // Accessor for making plots
    RooAbsData* GetParameterPoints() const {return (RooAbsData*)fParameterPointsInInterval->Clone();}

    // check if parameters are correct. (dummy implementation to start)
    Bool_t CheckParameters(RooArgSet&) const ;

    // Method to return lower limit on a given parameter 
    Double_t LowerLimit(RooRealVar& param) ;
    Double_t UpperLimit(RooRealVar& param) ;

    
  protected:
    ClassDef(PointSetInterval,1)  // Concrete implementation of ConfInterval for simple 1-D intervals in the form [a,b]
      
  };
}

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