| 1 | // @(#)root/physics:$Name: not supported by cvs2svn $:$Id: MRolke.h,v 1.1 2006-10-17 12:52:15 meyer Exp $ | 
|---|
| 2 | // Author: Jan Conrad    9/2/2004 | 
|---|
| 3 |  | 
|---|
| 4 | /************************************************************************* | 
|---|
| 5 | * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               * | 
|---|
| 6 | * All rights reserved.                                                  * | 
|---|
| 7 | *                                                                       * | 
|---|
| 8 | * For the licensing terms see $ROOTSYS/LICENSE.                         * | 
|---|
| 9 | * For the list of contributors see $ROOTSYS/README/CREDITS.             * | 
|---|
| 10 | *************************************************************************/ | 
|---|
| 11 |  | 
|---|
| 12 | #ifndef MARS_MRolke | 
|---|
| 13 | #define MARS_MRolke | 
|---|
| 14 |  | 
|---|
| 15 | #ifndef ROOT_TObject | 
|---|
| 16 | #include "TObject.h" | 
|---|
| 17 | #endif | 
|---|
| 18 |  | 
|---|
| 19 | class MRolke : public TObject { | 
|---|
| 20 |  | 
|---|
| 21 | protected: | 
|---|
| 22 | Double_t fCL;         // confidence level as a fraction [e.g. 90% = 0.9] | 
|---|
| 23 | Double_t fUpperLimit; // the calculated upper limit | 
|---|
| 24 | Double_t fLowerLimit; // the calculated lower limit | 
|---|
| 25 | Int_t fSwitch;        // 0: for unbounded likelihood | 
|---|
| 26 | // 1: for bounded likelihood | 
|---|
| 27 |  | 
|---|
| 28 | // The Calculator | 
|---|
| 29 |  | 
|---|
| 30 | Double_t Interval(Int_t x, Int_t y, Int_t z, Double_t bm, Double_t em, Double_t e, Int_t mid, Double_t sde, Double_t sdb, Double_t tau, Double_t b,Int_t m); | 
|---|
| 31 |  | 
|---|
| 32 | // LIKELIHOOD ROUTINE | 
|---|
| 33 |  | 
|---|
| 34 | Double_t Likelihood(Double_t mu, Int_t x, Int_t y, Int_t z, Double_t bm, Double_t em, Double_t e, Int_t mid, Double_t sde, Double_t sdb, Double_t tau, Double_t b, Int_t m, Int_t what); | 
|---|
| 35 |  | 
|---|
| 36 | //MODEL 1 | 
|---|
| 37 | Double_t EvalLikeMod1(Double_t mu, Int_t x, Int_t y, Int_t z, Double_t e, Double_t tau, Double_t b, Int_t m, Int_t what); | 
|---|
| 38 | Double_t LikeMod1(Double_t mu,Double_t b, Double_t e, Int_t x, Int_t y, Int_t z, Double_t tau, Int_t m); | 
|---|
| 39 | void     ProfLikeMod1(Double_t mu,Double_t &b, Double_t &e,Int_t x,Int_t y, Int_t z,Double_t tau,Int_t m); | 
|---|
| 40 | Double_t LikeGradMod1(Double_t e, Double_t mu, Int_t x,Int_t y,Int_t z,Double_t tau,Int_t m); | 
|---|
| 41 |  | 
|---|
| 42 | //MODEL 2 | 
|---|
| 43 | Double_t EvalLikeMod2(Double_t mu, Int_t x, Int_t y, Double_t em, Double_t e,Double_t sde, Double_t tau, Double_t b, Int_t what); | 
|---|
| 44 |  | 
|---|
| 45 | Double_t LikeMod2(Double_t mu, Double_t b, Double_t e,Int_t x,Int_t y,Double_t em,Double_t tau, Double_t v); | 
|---|
| 46 |  | 
|---|
| 47 | //MODEL 3 | 
|---|
| 48 | Double_t EvalLikeMod3(Double_t mu, Int_t x, Double_t bm, Double_t em, Double_t e, Double_t sde, Double_t sdb, Double_t b, Int_t what); | 
|---|
| 49 | Double_t LikeMod3(Double_t mu,Double_t b,Double_t e,Int_t x,Double_t bm,Double_t em,Double_t u,Double_t v); | 
|---|
| 50 |  | 
|---|
| 51 | //MODEL 4 | 
|---|
| 52 | Double_t EvalLikeMod4(Double_t mu, Int_t x, Int_t y, Double_t tau, Double_t b, Int_t what); | 
|---|
| 53 | Double_t LikeMod4(Double_t mu,Double_t b,Int_t x,Int_t y,Double_t tau); | 
|---|
| 54 |  | 
|---|
| 55 | //MODEL 5 | 
|---|
| 56 | Double_t EvalLikeMod5(Double_t mu, Int_t x, Double_t bm, Double_t sdb, Double_t b, Int_t what); | 
|---|
| 57 | Double_t LikeMod5(Double_t mu,Double_t b,Int_t x,Double_t bm,Double_t u); | 
|---|
| 58 |  | 
|---|
| 59 | //MODEL 6 | 
|---|
| 60 | Double_t EvalLikeMod6(Double_t mu, Int_t x, Int_t z, Double_t e, Double_t b, Int_t m, Int_t what); | 
|---|
| 61 | Double_t LikeMod6(Double_t mu,Double_t b,Double_t e,Int_t x,Int_t z,Int_t m); | 
|---|
| 62 |  | 
|---|
| 63 | //MODEL 7 | 
|---|
| 64 | Double_t EvalLikeMod7(Double_t mu, Int_t x, Double_t em, Double_t e, Double_t sde, Double_t b, Int_t what); | 
|---|
| 65 | Double_t LikeMod7(Double_t mu,Double_t b,Double_t e,Int_t x,Double_t em,Double_t v); | 
|---|
| 66 |  | 
|---|
| 67 | //MISC | 
|---|
| 68 | static Double_t EvalPolynomial(Double_t x, const Int_t coef[], Int_t N); | 
|---|
| 69 | static Double_t EvalMonomial  (Double_t x, const Int_t coef[], Int_t N); | 
|---|
| 70 |  | 
|---|
| 71 | Double_t LogFactorial(Int_t n); | 
|---|
| 72 |  | 
|---|
| 73 |  | 
|---|
| 74 | public: | 
|---|
| 75 |  | 
|---|
| 76 | MRolke(Double_t CL=0.9, Option_t *option = ""); | 
|---|
| 77 |  | 
|---|
| 78 | virtual ~MRolke(); | 
|---|
| 79 |  | 
|---|
| 80 | Double_t CalculateInterval(Int_t x, Int_t y, Int_t z, Double_t bm, Double_t em, Double_t e, Int_t mid, Double_t sde, Double_t sdb, Double_t tau, Double_t b,Int_t m); | 
|---|
| 81 | Double_t GetUpperLimit(void) const { return fUpperLimit;} | 
|---|
| 82 | Double_t GetLowerLimit(void) const { return fLowerLimit;} | 
|---|
| 83 | Int_t    GetSwitch(void) const     { return fSwitch;} | 
|---|
| 84 | void     SetSwitch(Int_t sw) { fSwitch = sw; } | 
|---|
| 85 | Double_t GetCL(void) const         { return fCL;} | 
|---|
| 86 | void     SetCL(Double_t CL)  { fCL = CL; } | 
|---|
| 87 |  | 
|---|
| 88 | ClassDef(MRolke,1) //calculate confidence limits using the Rolke method | 
|---|
| 89 | }; | 
|---|
| 90 | #endif | 
|---|
| 91 |  | 
|---|