Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGraphBentErrors.h
Go to the documentation of this file.
1 // @(#)root/hist:$Id$
2 // Author: Dave Morrison 30/06/2003
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 ROOT_TGraphBentErrors
13 #define ROOT_TGraphBentErrors
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TGraphBentErrors //
18 // //
19 // a Graph with bent, asymmetric error bars //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 #include "TGraph.h"
24 
25 class TGraphBentErrors : public TGraph {
26 
27 protected:
28  Double_t *fEXlow; ///<[fNpoints] array of X low errors
29  Double_t *fEXhigh; ///<[fNpoints] array of X high errors
30  Double_t *fEYlow; ///<[fNpoints] array of Y low errors
31  Double_t *fEYhigh; ///<[fNpoints] array of Y high errors
32 
33  Double_t *fEXlowd; ///<[fNpoints] array of X low displacements
34  Double_t *fEXhighd; ///<[fNpoints] array of X high displacements
35  Double_t *fEYlowd; ///<[fNpoints] array of Y low displacements
36  Double_t *fEYhighd; ///<[fNpoints] array of Y high displacements
37 
38  virtual void SwapPoints(Int_t pos1, Int_t pos2);
39 
40  virtual Double_t** Allocate(Int_t size);
41  virtual void CopyAndRelease(Double_t **newarrays,
42  Int_t ibegin, Int_t iend, Int_t obegin);
43  virtual Bool_t CopyPoints(Double_t **arrays, Int_t ibegin, Int_t iend,
44  Int_t obegin);
45  Bool_t CtorAllocate();
46  virtual void FillZero(Int_t begin, Int_t end,
47  Bool_t from_ctor = kTRUE);
48  virtual Bool_t DoMerge(const TGraph * g);
49 
50 
51 public:
52  TGraphBentErrors();
53  TGraphBentErrors(Int_t n);
54  TGraphBentErrors(Int_t n,
55  const Float_t *x, const Float_t *y,
56  const Float_t *exl=0, const Float_t *exh=0,
57  const Float_t *eyl=0, const Float_t *eyh=0,
58  const Float_t *exld=0, const Float_t *exhd=0,
59  const Float_t *eyld=0, const Float_t *eyhd=0);
60  TGraphBentErrors(Int_t n,
61  const Double_t *x, const Double_t *y,
62  const Double_t *exl=0, const Double_t *exh=0,
63  const Double_t *eyl=0, const Double_t *eyh=0,
64  const Double_t *exld=0, const Double_t *exhd=0,
65  const Double_t *eyld=0, const Double_t *eyhd=0);
66  TGraphBentErrors(const TGraphBentErrors &gr);
67  virtual ~TGraphBentErrors();
68  virtual void Apply(TF1 *f);
69  virtual void ComputeRange(Double_t &xmin, Double_t &ymin,
70  Double_t &xmax, Double_t &ymax) const;
71  Double_t GetErrorX(Int_t bin) const;
72  Double_t GetErrorY(Int_t bin) const;
73  Double_t GetErrorXlow(Int_t bin) const;
74  Double_t GetErrorXhigh(Int_t bin) const;
75  Double_t GetErrorYlow(Int_t bin) const;
76  Double_t GetErrorYhigh(Int_t bin) const;
77  Double_t *GetEXlow() const {return fEXlow;}
78  Double_t *GetEXhigh() const {return fEXhigh;}
79  Double_t *GetEYlow() const {return fEYlow;}
80  Double_t *GetEYhigh() const {return fEYhigh;}
81  Double_t *GetEXlowd() const {return fEXlowd;}
82  Double_t *GetEXhighd() const {return fEXhighd;}
83  Double_t *GetEYlowd() const {return fEYlowd;}
84  Double_t *GetEYhighd() const {return fEYhighd;}
85  virtual void Print(Option_t *chopt="") const;
86  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
87  virtual void SetPointError(Double_t exl, Double_t exh,
88  Double_t eyl, Double_t eyh,
89  Double_t exld=0, Double_t exhd=0,
90  Double_t eyld=0, Double_t eyhd=0); // *MENU*
91  virtual void SetPointError(Int_t i,
92  Double_t exl, Double_t exh,
93  Double_t eyl, Double_t eyh,
94  Double_t exld=0, Double_t exhd=0,
95  Double_t eyld=0, Double_t eyhd=0);
96 
97  ClassDef(TGraphBentErrors,1) //A graph with bent, asymmetric error bars
98 };
99 
100 inline Double_t **TGraphBentErrors::Allocate(Int_t size) {
101  return AllocateArrays(10, size);
102 }
103 
104 #endif