Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooProfileLL.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * *
4  * Copyright (c) 2000-2005, Regents of the University of California *
5  * and Stanford University. All rights reserved. *
6  * *
7  * Redistribution and use in source and binary forms, *
8  * with or without modification, are permitted according to the terms *
9  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
10  *****************************************************************************/
11 
12 #ifndef ROOPROFILELL
13 #define ROOPROFILELL
14 
15 #include "RooAbsReal.h"
16 #include "RooRealProxy.h"
17 #include "RooSetProxy.h"
18 #include <map>
19 #include <string>
20 
21 class RooMinimizer ;
22 class RooMinuit ;
23 
24 #define MINIMIZER RooMinimizer
25 
26 class RooProfileLL : public RooAbsReal {
27 public:
28 
29  RooProfileLL() ;
30  RooProfileLL(const char *name, const char *title, RooAbsReal& nll, const RooArgSet& observables);
31  RooProfileLL(const RooProfileLL& other, const char* name=0) ;
32  virtual TObject* clone(const char* newname) const { return new RooProfileLL(*this,newname); }
33  virtual ~RooProfileLL() ;
34 
35  void setAlwaysStartFromMin(Bool_t flag) { _startFromMin = flag ; }
36  Bool_t alwaysStartFromMin() const { return _startFromMin ; }
37 
38  MINIMIZER* minimizer() { return _minimizer ; }
39  RooAbsReal& nll() { return const_cast<RooAbsReal&>(_nll.arg()) ; }
40  const RooArgSet& bestFitParams() const ;
41  const RooArgSet& bestFitObs() const ;
42 
43  virtual RooAbsReal* createProfile(const RooArgSet& paramsOfInterest) ;
44 
45  virtual Bool_t redirectServersHook(const RooAbsCollection& /*newServerList*/, Bool_t /*mustReplaceAll*/, Bool_t /*nameChange*/, Bool_t /*isRecursive*/) ;
46 
47  void clearAbsMin() { _absMinValid = kFALSE ; }
48 
49  Int_t numEval() const { return _neval ; }
50 
51 
52 protected:
53 
54  void validateAbsMin() const ;
55  void initializeMinimizer() const ;
56 
57  RooRealProxy _nll ; // Input -log(L) function
58  RooSetProxy _obs ; // Parameters of profile likelihood
59  RooSetProxy _par ; // Marginialized parameters of likelihood
60  Bool_t _startFromMin ; // Always start minimization for global minimum?
61 
62  TIterator* _piter ; //! Iterator over profile likelihood parameters to be minimized
63  TIterator* _oiter ; //! Iterator of profile likelihood output parameter(s)
64 
65  mutable MINIMIZER* _minimizer ; //! Internal minuit instance
66 
67  mutable Bool_t _absMinValid ; // flag if absmin is up-to-date
68  mutable Double_t _absMin ; // absolute minimum of -log(L)
69  mutable RooArgSet _paramAbsMin ; // Parameter values at absolute minimum
70  mutable RooArgSet _obsAbsMin ; // Observable values at absolute minimum
71  mutable std::map<std::string,bool> _paramFixed ; // Parameter constant status at last time of use
72  mutable Int_t _neval ; // Number evaluations used in last minimization
73  Double_t evaluate() const ;
74 
75 
76 private:
77 
78  ClassDef(RooProfileLL,0) // Real-valued function representing profile likelihood of external (likelihood) function
79 };
80 
81 #endif