Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TProfile2Poly.h
Go to the documentation of this file.
1 // @(#)root/hist:$Id$
2 // Author: Filip Ilic
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, 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_TProfile2Poly
13 #define ROOT_TProfile2Poly
14 
15 #include "TH2Poly.h"
16 #include "TProfile.h"
17 
18 class TProfile2PolyBin : public TH2PolyBin {
19 public:
20  friend class TProfile2Poly;
21 
22  TProfile2PolyBin();
23  TProfile2PolyBin(TObject *poly, Int_t bin_number);
24  virtual ~TProfile2PolyBin() {}
25 
26  void Merge(const TProfile2PolyBin *toMerge);
27 
28  void Update();
29  void ClearStats();
30 
31  Double_t GetEffectiveEntries() const { return (fSumw * fSumw) / fSumw2; }
32  Double_t GetEntries() const { return fSumw; }
33  Double_t GetEntriesW2() const { return fSumw2; }
34  Double_t GetEntriesVW() const { return fSumvw; }
35  Double_t GetEntriesWV2() const { return fSumwv2; }
36  Double_t GetError() const { return fError; }
37 
38 
39 private:
40  Double_t fSumw;
41  Double_t fSumvw;
42  Double_t fSumw2;
43  Double_t fSumwv2;
44  Double_t fAverage;
45  Double_t fError;
46  EErrorType fErrorMode = kERRORMEAN;
47 
48 protected:
49  void Fill(Double_t value, Double_t weight);
50  void UpdateAverage();
51  void UpdateError();
52  void SetErrorOption(EErrorType type) { fErrorMode = type; }
53 
54  ClassDef(TProfile2PolyBin, 1)
55 };
56 
57 class TProfile2Poly : public TH2Poly {
58  friend class TProfile2PolyBin;
59 
60 public:
61  friend class TProfileHelper;
62 
63  TProfile2Poly() {}
64  TProfile2Poly(const char *name, const char *title, Double_t xlow, Double_t xup, Double_t ylow, Double_t yup);
65  TProfile2Poly(const char *name, const char *title, Int_t nX, Double_t xlow, Double_t xup, Int_t nY, Double_t ylow,
66  Double_t yup);
67  virtual ~TProfile2Poly() {}
68 
69  using TH2Poly::Fill;
70  virtual Int_t Fill(Double_t xcoord, Double_t ycoord, Double_t value) override;
71  virtual Int_t Fill(Double_t xcoord, Double_t ycoord, Double_t value, Double_t weight);
72 
73  Long64_t Merge(const std::vector<TProfile2Poly *> &list);
74  Long64_t Merge(TCollection *in) override;
75  virtual void Reset(Option_t *option = "") override;
76 
77  // option to dispay different measures on bins
78  void SetContentToAverage(); // this one is used by default
79  void SetContentToError();
80 
81  void SetErrorOption(EErrorType type);
82 
83  Double_t GetBinEffectiveEntries(Int_t bin) const;
84  Double_t GetBinEntries(Int_t bin) const;
85  Double_t GetBinEntriesW2(Int_t bin) const;
86  Double_t GetBinEntriesVW(Int_t bin) const;
87  Double_t GetBinEntriesWV2(Int_t bin) const;
88 
89  using TH2Poly::GetBinContent;
90  virtual Double_t GetBinContent(Int_t bin) const override;
91 
92  using TH2Poly::GetBinError;
93  virtual Double_t GetBinError(Int_t bin) const override;
94 
95  virtual void GetStats(Double_t *stats) const override;
96 
97 
98  Double_t GetOverflowContent(Int_t idx) { return fOverflowBins[idx].fSumw; }
99  void PrintOverflowRegions();
100 
101 private:
102  TProfile2PolyBin fOverflowBins[kNOverflow];
103  EErrorType fErrorMode = kERRORMEAN;
104  Double_t fTsumwz;
105  Double_t fTsumwz2;
106 
107 protected:
108  virtual TProfile2PolyBin *CreateBin(TObject *poly) override;
109 
110  Int_t GetOverflowRegionFromCoordinates(Double_t x, Double_t y);
111  Int_t OverflowIdxToArrayIdx(Int_t val) { return -val - 1; }
112 
113 
114  ClassDefOverride(TProfile2Poly, 2)
115 };
116 #endif