Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RooKeysPdf.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitModels *
4  * File: $Id: RooKeysPdf.h,v 1.10 2007/05/11 09:13:07 verkerke Exp $
5  * Authors: *
6  * GR, Gerhard Raven, UC San Diego, raven@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
9  * *
10  * Copyright (c) 2000-2005, Regents of the University of California *
11  * and Stanford University. All rights reserved. *
12  * *
13  * Redistribution and use in source and binary forms, *
14  * with or without modification, are permitted according to the terms *
15  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
16  *****************************************************************************/
17 #ifndef ROO_KEYS
18 #define ROO_KEYS
19 
20 #include "RooAbsPdf.h"
21 #include "RooRealProxy.h"
22 
23 class RooRealVar;
24 
25 class RooKeysPdf : public RooAbsPdf {
26 public:
27  enum Mirror { NoMirror, MirrorLeft, MirrorRight, MirrorBoth,
28  MirrorAsymLeft, MirrorAsymLeftRight,
29  MirrorAsymRight, MirrorLeftAsymRight,
30  MirrorAsymBoth };
31  RooKeysPdf() ;
32  RooKeysPdf(const char *name, const char *title,
33  RooAbsReal& x, RooDataSet& data, Mirror mirror= NoMirror,
34  Double_t rho=1);
35  RooKeysPdf(const char *name, const char *title,
36  RooAbsReal& x, RooRealVar& xdata, RooDataSet& data, Mirror mirror= NoMirror,
37  Double_t rho=1);
38  RooKeysPdf(const RooKeysPdf& other, const char* name=0);
39  virtual TObject* clone(const char* newname) const {return new RooKeysPdf(*this,newname); }
40  virtual ~RooKeysPdf();
41 
42  virtual Int_t getAnalyticalIntegral(RooArgSet& allVars, RooArgSet& analVars,
43  const char* rangeName = 0) const;
44  virtual Double_t analyticalIntegral(Int_t code, const char* rangeName = 0) const;
45  virtual Int_t getMaxVal(const RooArgSet& vars) const;
46  virtual Double_t maxVal(Int_t code) const;
47 
48  void LoadDataSet( RooDataSet& data);
49 
50 protected:
51 
52  RooRealProxy _x ;
53  Double_t evaluate() const;
54 
55 private:
56  // how far you have to go out in a Gaussian until it is smaller than the
57  // machine precision
58  static const Double_t _nSigma; //!
59 
60  Int_t _nEvents;
61  Double_t *_dataPts; //[_nEvents]
62  Double_t *_dataWgts; //[_nEvents]
63  Double_t *_weights; //[_nEvents]
64  Double_t _sumWgt ;
65 
66  enum { _nPoints = 1000 };
67  Double_t _lookupTable[_nPoints+1];
68 
69  Double_t g(Double_t x,Double_t sigma) const;
70 
71  Bool_t _mirrorLeft, _mirrorRight;
72  Bool_t _asymLeft, _asymRight;
73 
74  // cached info on variable
75  Char_t _varName[128];
76  Double_t _lo, _hi, _binWidth;
77  Double_t _rho;
78 
79  ClassDef(RooKeysPdf,2) // One-dimensional non-parametric kernel estimation p.d.f.
80 };
81 
82 #endif