// @(#)root/hist:$Id$
// Author: Christophe.Delaere@cern.ch   21/08/2002

#ifndef ROOT_TConfidenceLevel
#define ROOT_TConfidenceLevel

#ifndef ROOT_TObject
#include "TObject.h"
#endif

//____________________________________________________________________
//
// TConfidenceLevel
//
// This class serves as output for the TLimit::ComputeLimit method.
// It is created just after the time-consuming part and can be stored
// in a TFile for further processing. It contains
// light methods to return CLs, CLb and other interesting quantities.
//____________________________________________________________________


class TConfidenceLevel : public TObject {
 public:
   TConfidenceLevel();
   TConfidenceLevel(Int_t mc, bool onesided = kTRUE);
   virtual ~TConfidenceLevel();
   inline void SetTSD(Double_t in) { fTSD = in; }
   void SetTSB(Double_t * in);
   void SetTSS(Double_t * in);
   inline void SetLRS(Double_t * in) { fLRS = in; }
   inline void SetLRB(Double_t * in) { fLRB = in; }
   inline void SetBtot(Double_t in) { fBtot = in; }
   inline void SetStot(Double_t in) { fStot = in; }
   inline void SetDtot(Int_t in) { fDtot = in; }
   inline Double_t GetStatistic() const { return -2 * (fTSD - fStot); }
   void Draw(const Option_t *option="");
   Double_t GetExpectedStatistic_b(Int_t sigma = 0) const;
   Double_t GetExpectedStatistic_sb(Int_t sigma = 0) const;
   Double_t CLb(bool use_sMC = kFALSE) const;
   Double_t CLsb(bool use_sMC = kFALSE) const;
   Double_t CLs(bool use_sMC = kFALSE) const;
   Double_t GetExpectedCLb_sb(Int_t sigma = 0) const;
   Double_t GetExpectedCLb_b(Int_t sigma = 0) const;
   Double_t GetExpectedCLsb_b(Int_t sigma = 0) const;
   inline Double_t GetExpectedCLs_b(Int_t sigma = 0) const { return (GetExpectedCLsb_b(sigma) / GetExpectedCLb_b(sigma)); }
   Double_t GetAverageCLs() const;
   Double_t GetAverageCLsb() const;
   Double_t Get3sProbability() const;
   Double_t Get5sProbability() const;
   inline Int_t GetDtot() const { return fDtot; }
   inline Double_t GetStot() const { return fStot; }
   inline Double_t GetBtot() const { return fBtot; }
 private:
   // data members used for the limits calculation
   Int_t      fNNMC;
   Int_t      fDtot;
   Double_t   fStot;
   Double_t   fBtot;
   Double_t   fTSD;
   Double_t   fNMC;
   Double_t   fMCL3S;
   Double_t   fMCL5S;
   Double_t  *fTSB;              //[fNNMC]
   Double_t  *fTSS;              //[fNNMC]
   Double_t  *fLRS;              //[fNNMC]
   Double_t  *fLRB;              //[fNNMC]
   Int_t     *fISS;              //[fNNMC]
   Int_t     *fISB;              //[fNNMC]
   // cumulative probabilities for defining the bands on plots
   static const Double_t fgMCLM2S;
   static const Double_t fgMCLM1S;
   static const Double_t fgMCLMED;
   static const Double_t fgMCLP1S;
   static const Double_t fgMCLP2S;
   static const Double_t fgMCL3S1S;
   static const Double_t fgMCL5S1S;
   static const Double_t fgMCL3S2S;
   static const Double_t fgMCL5S2S;
   ClassDef(TConfidenceLevel, 1) // output for TLimit functions
};

#endif

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