00001 #ifndef __BCH2D__H
00002 #define __BCH2D__H
00003
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <vector>
00025
00026
00027 class TH1D;
00028 class TH2D;
00029 class TGraph;
00030
00031
00032
00033 class BCH2D
00034 {
00035
00036 public:
00037
00039
00040
00043 BCH2D();
00044
00047 ~BCH2D();
00048
00049
00051
00052
00055 TH2D * GetHistogram()
00056 { return fHistogram; };
00057
00060
00061
00064 void GetMode(double& mode);
00065
00066
00068
00069
00072 void SetHistogram(TH2D * hist)
00073 { fHistogram = hist; };
00074
00078 void SetGlobalMode(double mode[2])
00079 { fMode[0] = mode[0]; fMode[1] = mode[1]; fModeFlag =1; };
00080
00081
00083
00084
00092 void Print(const char * filename, int options=0, int ww=0, int wh=0);
00093
00098 void Draw(int options=0, bool drawmode=true);
00099
00100
00101
00102
00103 void CalculateIntegratedHistogram();
00104
00105
00106
00107
00108
00109 double GetLevel(double p);
00110
00116 std::vector <int> GetNIntervalsY(TH2D * h, int &nfoundmax);
00117
00120 TGraph * GetLowestBandGraph(TH2D * h, std::vector<int> nint);
00121 TGraph * GetLowestBandGraph(TH2D * h);
00122
00123
00124 std::vector <double> GetLevelBoundary(TH2D * h, double level);
00125 TGraph * GetBandGraph(TH2D * h , double level1, double level2);
00126
00127
00128 TGraph ** GetBandGraphs(TH2D * h, int &n);
00129
00130
00131
00132 private:
00133
00136 TH2D * fHistogram;
00137
00140 TH1D * fIntegratedHistogram;
00141
00144 double fMode[2];
00145
00148 int fModeFlag;
00149
00150 };
00151
00152
00153
00154 #endif