ROOT logo
// @(#)root/roostats:$Id: HypoTestResult.h 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.             *
 *************************************************************************/

#ifndef ROOSTATS_HypoTestResult
#define ROOSTATS_HypoTestResult

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

#ifndef ROOSTATS_RooStatsUtils
#include "RooStats/RooStatsUtils.h"
#endif

namespace RooStats {

   class HypoTestResult : public TNamed {

   public:
      
      // default constructor
      explicit HypoTestResult(const char* name = 0);

      // constructor from name, null and alternate p values 
      HypoTestResult(const char* name, Double_t nullp, Double_t altp);

      // destructor 
      virtual ~HypoTestResult();

      // Return p-value for null hypothesis
      virtual Double_t NullPValue() const {return fNullPValue;}

      // Return p-value for alternate hypothesis
      virtual Double_t AlternatePValue() const {return fAlternatePValue;}

      // Convert  NullPValue into a "confidence level"
      virtual Double_t CLb() const {return 1.-NullPValue();}

      // Convert  AlternatePValue into a "confidence level"
      virtual Double_t CLsplusb() const {return AlternatePValue();}

      // CLs is simply CLs+b/CLb (not a method, but a quantity)
      virtual Double_t CLs() const {
       double thisCLb = CLb();
        if (thisCLb==0) {
          std::cout << "Error: Cannot compute CLs because CLb = 0. Returning CLs = -1\n";
          return -1;
        }
        double thisCLsb = CLsplusb();
        return thisCLsb/thisCLb;
      }

      // familiar name for the Null p-value in terms of 1-sided Gaussian significance
      virtual Double_t Significance() const {return RooStats::PValueToSignificance( NullPValue() ); }

   protected:

      mutable Double_t fNullPValue; // p-value for the null hypothesis (small number means disfavored)
      mutable Double_t fAlternatePValue; // p-value for the alternate hypothesis (small number means disfavored)

      ClassDef(HypoTestResult,1)  // Base class to represent results of a hypothesis test

   };
}


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