ROOT  6.06/09
Reference Guide
RooCurve.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooCurve.h,v 1.24 2007/05/11 09:11:30 verkerke Exp $
5  * Authors: *
6  * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7  * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8  * *
9  * Copyright (c) 2000-2005, Regents of the University of California *
10  * and Stanford University. All rights reserved. *
11  * *
12  * Redistribution and use in source and binary forms, *
13  * with or without modification, are permitted according to the terms *
14  * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15  *****************************************************************************/
16 #ifndef ROO_CURVE
17 #define ROO_CURVE
18 
19 #include "TGraph.h"
20 #include "RooPlotable.h"
21 #include <list>
22 #include <vector>
23 #include "TMatrixDfwd.h"
24 
25 class RooAbsReal;
26 class RooRealVar;
27 class RooAbsFunc;
28 class RooArgSet;
29 class RooAbsRealLValue ;
30 class RooHist ;
31 
32 class RooCurve : public TGraph, public RooPlotable {
33 public:
34  RooCurve();
35  enum WingMode { NoWings=0 ,Straight=1, Extended=2 } ;
36  RooCurve(const RooAbsReal &func, RooAbsRealLValue &x, Double_t xlo, Double_t xhi, Int_t xbins,
37  Double_t scaleFactor= 1, const RooArgSet *normVars= 0, Double_t prec= 1e-3, Double_t resolution= 1e-3,
38  Bool_t shiftToZero=kFALSE, WingMode wmode=Extended, Int_t nEvalError=-1, Int_t doEEVal=kFALSE, Double_t eeVal=0,
39  Bool_t showProgress=kFALSE);
40  RooCurve(const char *name, const char *title, const RooAbsFunc &func, Double_t xlo,
41  Double_t xhi, UInt_t minPoints, Double_t prec= 1e-3, Double_t resolution= 1e-3,
42  Bool_t shiftToZero=kFALSE, WingMode wmode=Extended, Int_t nEvalError=-1, Int_t doEEVal=kFALSE, Double_t eeVal=0);
43  virtual ~RooCurve();
44 
45  RooCurve(const char* name, const char* title, const RooCurve& c1, const RooCurve& c2, Double_t scale1=1., Double_t scale2=1.) ;
46 
47  void addPoint(Double_t x, Double_t y);
48 
49  Double_t getFitRangeBinW() const;
50  Double_t getFitRangeNEvt(Double_t xlo, Double_t xhi) const ;
51  Double_t getFitRangeNEvt() const;
52 
53 
54  virtual void printName(std::ostream& os) const ;
55  virtual void printTitle(std::ostream& os) const ;
56  virtual void printClassName(std::ostream& os) const ;
57  virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const;
58 
59  inline virtual void Print(Option_t *options= 0) const {
60  // Printing interface
62  }
63 
64  Double_t chiSquare(const RooHist& hist, int nFitParam) const ;
65  Int_t findPoint(Double_t value, Double_t tolerance=1e-10) const ;
66  Double_t average(Double_t lo, Double_t hi) const ;
67  Double_t interpolate(Double_t x, Double_t tolerance=1e-10) const ;
68 
69  Bool_t isIdentical(const RooCurve& other, Double_t tol=1e-6) const ;
70 
71  RooCurve* makeErrorBand(const std::vector<RooCurve*>& variations, Double_t Z=1) const ;
72  RooCurve* makeErrorBand(const std::vector<RooCurve*>& plusVar, const std::vector<RooCurve*>& minusVar, const TMatrixD& V, Double_t Z=1) const ;
73 
74 protected:
75 
76  void calcBandInterval(const std::vector<RooCurve*>& variations,Int_t i,Double_t Z,Double_t& lo, Double_t& hi, Bool_t approxGauss) const ;
77  void calcBandInterval(const std::vector<RooCurve*>& plusVar, const std::vector<RooCurve*>& minusVar, Int_t i, const TMatrixD& V,
78  Double_t Z,Double_t& lo, Double_t& hi) const ;
79 
80  void initialize();
81  void addPoints(const RooAbsFunc &func, Double_t xlo, Double_t xhi,
82  Int_t minPoints, Double_t prec, Double_t resolution, WingMode wmode,
83  Int_t numee=0, Bool_t doEEVal=kFALSE, Double_t eeVal=0.,std::list<Double_t>* samplingHint=0) ;
85  Double_t y2, Double_t minDy, Double_t minDx,
86  Int_t numee=0, Bool_t doEEVal=kFALSE, Double_t eeVal=0.) ;
87 
88 
89  void shiftCurveToZero(Double_t prevYMax) ;
90 
91  Bool_t _showProgress ; //! Show progress indication when adding points
92 
93  ClassDef(RooCurve,1) // 1-dimensional smooth curve for use in RooPlots
94 };
95 
96 #endif
virtual void Print(Option_t *options=0) const
Print graph values.
Definition: RooCurve.h:59
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer, which is interpreted as an OR of 'enum ContentsOptions' values and in the style given by 'enum StyleOption'.
const char Option_t
Definition: RtypesCore.h:62
Double_t chiSquare(const RooHist &hist, int nFitParam) const
Calculate the chi^2/NDOF of this curve with respect to the histogram 'hist' accounting nFitParam floa...
Definition: RooCurve.cxx:545
TCanvas * c1
Definition: legend1.C:2
void shiftCurveToZero(Double_t prevYMax)
Find lowest point in curve and move all points in curve so that lowest point will go exactly through ...
Definition: RooCurve.cxx:253
Basic string class.
Definition: TString.h:137
RooCurve * makeErrorBand(const std::vector< RooCurve * > &variations, Double_t Z=1) const
Construct filled RooCurve represented error band that captures alpha% of the variations of the curves...
Definition: RooCurve.cxx:731
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
virtual ~RooCurve()
Destructor.
Definition: RooCurve.cxx:230
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Print the details of this curve.
Definition: RooCurve.cxx:527
virtual StyleOption defaultPrintStyle(Option_t *opt) const
virtual Int_t defaultPrintContents(Option_t *opt) const
Default choice of contents to be printed (name and value)
Double_t interpolate(Double_t x, Double_t tolerance=1e-10) const
Return linearly interpolated value of curve at xvalue.
Definition: RooCurve.cxx:684
static const double x2[5]
Double_t x[n]
Definition: legend1.C:17
void initialize()
Perform initialization that is common to all curves.
Definition: RooCurve.cxx:239
ClassDef(TAttLine, 2)
const double tol
Double_t getFitRangeNEvt() const
Return the number of events associated with the plotable object, it is always 1 for curves...
Definition: RooCurve.cxx:470
unsigned int UInt_t
Definition: RtypesCore.h:42
bool verbose
virtual void printClassName(std::ostream &os) const
Print the class name of this curve.
Definition: RooCurve.cxx:517
static void indent(ostringstream &buf, int indent_level)
Int_t findPoint(Double_t value, Double_t tolerance=1e-10) const
Find the nearest point to xvalue.
Definition: RooCurve.cxx:662
void addPoint(Double_t x, Double_t y)
Add a point with the specified coordinates. Update our y-axis limits.
Definition: RooCurve.cxx:457
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
Bool_t isIdentical(const RooCurve &other, Double_t tol=1e-6) const
Return true if curve is identical to other curve allowing for given absolute tolerance on each point ...
Definition: RooCurve.cxx:863
return c2
Definition: legend2.C:14
static const double x1[5]
double Double_t
Definition: RtypesCore.h:55
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
Double_t y[n]
Definition: legend1.C:17
double func(double *x, double *p)
Definition: stressTF1.cxx:213
void addPoints(const RooAbsFunc &func, Double_t xlo, Double_t xhi, Int_t minPoints, Double_t prec, Double_t resolution, WingMode wmode, Int_t numee=0, Bool_t doEEVal=kFALSE, Double_t eeVal=0., std::list< Double_t > *samplingHint=0)
Add points calculated with the specified function, over the range (xlo,xhi).
Definition: RooCurve.cxx:289
Double_t average(Double_t lo, Double_t hi) const
Return average curve value in [xFirst,xLast] by integrating curve between points and dividing by xLas...
Definition: RooCurve.cxx:598
#define name(a, b)
Definition: linkTestLib0.cpp:5
virtual void printTitle(std::ostream &os) const
Print the title of this curve.
Definition: RooCurve.cxx:508
void calcBandInterval(const std::vector< RooCurve * > &variations, Int_t i, Double_t Z, Double_t &lo, Double_t &hi, Bool_t approxGauss) const
Definition: RooCurve.cxx:825
void addRange(const RooAbsFunc &func, Double_t x1, Double_t x2, Double_t y1, Double_t y2, Double_t minDy, Double_t minDx, Int_t numee=0, Bool_t doEEVal=kFALSE, Double_t eeVal=0.)
Fill the range (x1,x2) with points calculated using func(&x).
Definition: RooCurve.cxx:412
A Graph is a graphics object made of two arrays X and Y with npoints each.
Definition: TGraph.h:53
Double_t getFitRangeBinW() const
Get the bin width associated with this plotable object.
Definition: RooCurve.cxx:489
float type_of_call hi(const int &, const int &)
virtual void printName(std::ostream &os) const
Print name of object.
Definition: RooCurve.cxx:497
std::complex< float_v > Z
Definition: main.cpp:120
float value
Definition: math.cpp:443
Bool_t _showProgress
Definition: RooCurve.h:91