ROOT logo
// @(#)root/roostats:$Id: SimpleInterval.cxx 31276 2009-11-18 15:06:42Z moneta $
// 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.             *
 *************************************************************************/

/*****************************************************************************
 * Project: RooStats
 * Package: RooFit/RooStats  
 * @(#)root/roofit/roostats:$Id: SimpleInterval.cxx 31276 2009-11-18 15:06:42Z moneta $
 * Authors:                     
 *   Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
 *
 *****************************************************************************/



//_________________________________________________________
//
// BEGIN_HTML
// SimpleInterval is a concrete implementation of the ConfInterval interface.  
// It implements simple 1-dimensional intervals in a range [a,b].
// In addition, you can ask it for the upper- or lower-bound.
// END_HTML
//
//

#ifndef RooStats_SimpleInterval
#include "RooStats/SimpleInterval.h"
#endif
#include "RooAbsReal.h"
#include "RooRealVar.h"
#include <string>


ClassImp(RooStats::SimpleInterval) ;

using namespace RooStats;


//____________________________________________________________________
SimpleInterval::SimpleInterval(const char* name) :
   ConfInterval(name),  fLowerLimit(0), fUpperLimit(0), fConfidenceLevel(0)
{
   // Default constructor
}

//____________________________________________________________________
SimpleInterval::SimpleInterval(const char* name, const RooRealVar & var, Double_t lower, Double_t upper, Double_t cl) :
   ConfInterval(name), fParameters(var), fLowerLimit(lower), fUpperLimit(upper), fConfidenceLevel(cl)
{
   // Alternate constructor
}



//____________________________________________________________________
SimpleInterval::~SimpleInterval()
{
   // Destructor
}


//____________________________________________________________________
Bool_t SimpleInterval::IsInInterval(const RooArgSet &parameterPoint) const 
{  

   // Method to determine if a parameter point is in the interval
   if( !this->CheckParameters(parameterPoint) )
      return false; 

   if(parameterPoint.getSize() != 1 )
      return false;

   RooAbsReal* point = dynamic_cast<RooAbsReal*> (parameterPoint.first());
   if (point == 0)
      return false;

   if ( point->getVal() > fUpperLimit || point->getVal() < fUpperLimit)
      return false;


   return true;
}

//____________________________________________________________________
RooArgSet* SimpleInterval::GetParameters() const
{  
   // return cloned list of parameters
   return new RooArgSet(fParameters);
}

//____________________________________________________________________
Bool_t SimpleInterval::CheckParameters(const RooArgSet &parameterPoint) const
{  

   if (parameterPoint.getSize() != fParameters.getSize() ) {
      std::cout << "size is wrong, parameters don't match" << std::endl;
      return false;
   }
   if ( ! parameterPoint.equals( fParameters ) ) {
      std::cout << "size is ok, but parameters don't match" << std::endl;
      return false;
   }
   return true;
}
 SimpleInterval.cxx:1
 SimpleInterval.cxx:2
 SimpleInterval.cxx:3
 SimpleInterval.cxx:4
 SimpleInterval.cxx:5
 SimpleInterval.cxx:6
 SimpleInterval.cxx:7
 SimpleInterval.cxx:8
 SimpleInterval.cxx:9
 SimpleInterval.cxx:10
 SimpleInterval.cxx:11
 SimpleInterval.cxx:12
 SimpleInterval.cxx:13
 SimpleInterval.cxx:14
 SimpleInterval.cxx:15
 SimpleInterval.cxx:16
 SimpleInterval.cxx:17
 SimpleInterval.cxx:18
 SimpleInterval.cxx:19
 SimpleInterval.cxx:20
 SimpleInterval.cxx:21
 SimpleInterval.cxx:22
 SimpleInterval.cxx:23
 SimpleInterval.cxx:24
 SimpleInterval.cxx:25
 SimpleInterval.cxx:26
 SimpleInterval.cxx:27
 SimpleInterval.cxx:28
 SimpleInterval.cxx:29
 SimpleInterval.cxx:30
 SimpleInterval.cxx:31
 SimpleInterval.cxx:32
 SimpleInterval.cxx:33
 SimpleInterval.cxx:34
 SimpleInterval.cxx:35
 SimpleInterval.cxx:36
 SimpleInterval.cxx:37
 SimpleInterval.cxx:38
 SimpleInterval.cxx:39
 SimpleInterval.cxx:40
 SimpleInterval.cxx:41
 SimpleInterval.cxx:42
 SimpleInterval.cxx:43
 SimpleInterval.cxx:44
 SimpleInterval.cxx:45
 SimpleInterval.cxx:46
 SimpleInterval.cxx:47
 SimpleInterval.cxx:48
 SimpleInterval.cxx:49
 SimpleInterval.cxx:50
 SimpleInterval.cxx:51
 SimpleInterval.cxx:52
 SimpleInterval.cxx:53
 SimpleInterval.cxx:54
 SimpleInterval.cxx:55
 SimpleInterval.cxx:56
 SimpleInterval.cxx:57
 SimpleInterval.cxx:58
 SimpleInterval.cxx:59
 SimpleInterval.cxx:60
 SimpleInterval.cxx:61
 SimpleInterval.cxx:62
 SimpleInterval.cxx:63
 SimpleInterval.cxx:64
 SimpleInterval.cxx:65
 SimpleInterval.cxx:66
 SimpleInterval.cxx:67
 SimpleInterval.cxx:68
 SimpleInterval.cxx:69
 SimpleInterval.cxx:70
 SimpleInterval.cxx:71
 SimpleInterval.cxx:72
 SimpleInterval.cxx:73
 SimpleInterval.cxx:74
 SimpleInterval.cxx:75
 SimpleInterval.cxx:76
 SimpleInterval.cxx:77
 SimpleInterval.cxx:78
 SimpleInterval.cxx:79
 SimpleInterval.cxx:80
 SimpleInterval.cxx:81
 SimpleInterval.cxx:82
 SimpleInterval.cxx:83
 SimpleInterval.cxx:84
 SimpleInterval.cxx:85
 SimpleInterval.cxx:86
 SimpleInterval.cxx:87
 SimpleInterval.cxx:88
 SimpleInterval.cxx:89
 SimpleInterval.cxx:90
 SimpleInterval.cxx:91
 SimpleInterval.cxx:92
 SimpleInterval.cxx:93
 SimpleInterval.cxx:94
 SimpleInterval.cxx:95
 SimpleInterval.cxx:96
 SimpleInterval.cxx:97
 SimpleInterval.cxx:98
 SimpleInterval.cxx:99
 SimpleInterval.cxx:100
 SimpleInterval.cxx:101
 SimpleInterval.cxx:102
 SimpleInterval.cxx:103
 SimpleInterval.cxx:104
 SimpleInterval.cxx:105
 SimpleInterval.cxx:106
 SimpleInterval.cxx:107
 SimpleInterval.cxx:108
 SimpleInterval.cxx:109
 SimpleInterval.cxx:110