| 1 | #ifndef MARS_MHCamera | 
|---|
| 2 | #define MARS_MHCamera | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef MARS_MAGIC | 
|---|
| 5 | #include "MAGIC.h" | 
|---|
| 6 | #endif | 
|---|
| 7 | #ifndef ROOT_TArrayC | 
|---|
| 8 | #include <TArrayC.h> | 
|---|
| 9 | #endif | 
|---|
| 10 | #ifndef ROOT_TArrayI | 
|---|
| 11 | #include <TArrayI.h> | 
|---|
| 12 | #endif | 
|---|
| 13 | #ifndef ROOT_TClonesArray | 
|---|
| 14 | #include <TClonesArray.h> | 
|---|
| 15 | #endif | 
|---|
| 16 | #ifndef ROOT_TH1 | 
|---|
| 17 | #include <TH1.h> | 
|---|
| 18 | #endif | 
|---|
| 19 |  | 
|---|
| 20 | class TPaveStats; | 
|---|
| 21 | class TProfile; | 
|---|
| 22 |  | 
|---|
| 23 | class MGeomCam; | 
|---|
| 24 | class MCamEvent; | 
|---|
| 25 | class MRflEvtData; | 
|---|
| 26 | class MCerPhotEvt; | 
|---|
| 27 | class MImgCleanStd; | 
|---|
| 28 |  | 
|---|
| 29 | class MHCamera : public TH1D | 
|---|
| 30 | { | 
|---|
| 31 | public: | 
|---|
| 32 | enum { | 
|---|
| 33 | kProfile  = BIT(18), // FIXME: When changing change max/min! | 
|---|
| 34 | kFreezed  = BIT(19), | 
|---|
| 35 | kNoLegend = BIT(20), | 
|---|
| 36 | kVariance = BIT(21) | 
|---|
| 37 | }; | 
|---|
| 38 | private: | 
|---|
| 39 | MGeomCam      *fGeomCam;     // pointer to camera geometry (y-axis) | 
|---|
| 40 | TArrayC        fUsed;        // array containing flags | 
|---|
| 41 |  | 
|---|
| 42 | TArrayI        fColors;      //! Color conversion table | 
|---|
| 43 | TList         *fNotify;      //! | 
|---|
| 44 |  | 
|---|
| 45 | //#if ROOT_VERSION_CODE < ROOT_VERSION(4,00,03) | 
|---|
| 46 | Bool_t         fFreezed;     //! Just a dummy!!!! ([Set,Is]Freezed) | 
|---|
| 47 | //#endif | 
|---|
| 48 |  | 
|---|
| 49 | Float_t fAbberation; | 
|---|
| 50 |  | 
|---|
| 51 | void Init(); | 
|---|
| 52 |  | 
|---|
| 53 | Stat_t Profile(Stat_t val) const | 
|---|
| 54 | { | 
|---|
| 55 | if (!TestBit(kProfile)) | 
|---|
| 56 | return val; | 
|---|
| 57 |  | 
|---|
| 58 | const Stat_t n = TH1D::GetEntries(); | 
|---|
| 59 | return n>0 ? val/n : val; | 
|---|
| 60 | } | 
|---|
| 61 |  | 
|---|
| 62 | Int_t GetColor(Float_t val, Float_t min, Float_t max, Bool_t islog); | 
|---|
| 63 |  | 
|---|
| 64 | void  PaintIndices(Int_t type); | 
|---|
| 65 | void  Update(Bool_t islog, Bool_t isbox, Bool_t iscol, Bool_t issame); | 
|---|
| 66 | void  UpdateLegend(Float_t min, Float_t max, Bool_t islog); | 
|---|
| 67 | void  SetRange(); | 
|---|
| 68 |  | 
|---|
| 69 | TPaveStats *GetStatisticBox(); | 
|---|
| 70 |  | 
|---|
| 71 | Int_t GetPixelIndex(Int_t px, Int_t py, Float_t conv=1) const; | 
|---|
| 72 |  | 
|---|
| 73 | void PaintAxisTitle(); | 
|---|
| 74 |  | 
|---|
| 75 | enum { | 
|---|
| 76 | kIsUsed = BIT(1) | 
|---|
| 77 | }; | 
|---|
| 78 |  | 
|---|
| 79 | void   SetUsed(Int_t idx)      { SETBIT(fUsed[idx], kIsUsed); } | 
|---|
| 80 | void   ResetUsed(Int_t idx)    { CLRBIT(fUsed[idx], kIsUsed); } | 
|---|
| 81 |  | 
|---|
| 82 | Bool_t FindVal(const TArrayI &arr, Int_t val) const | 
|---|
| 83 | { | 
|---|
| 84 | const Int_t n = arr.GetSize(); | 
|---|
| 85 | if (n==0) | 
|---|
| 86 | return kTRUE; | 
|---|
| 87 |  | 
|---|
| 88 | const Int_t *p = arr.GetArray(); | 
|---|
| 89 | const Int_t *end = p+n; | 
|---|
| 90 | while (p<end) | 
|---|
| 91 | if (val==*p++) | 
|---|
| 92 | return kTRUE; | 
|---|
| 93 |  | 
|---|
| 94 | return kFALSE; | 
|---|
| 95 | } | 
|---|
| 96 | Bool_t MatchSector(Int_t idx, const TArrayI §or, const TArrayI &aidx) const; | 
|---|
| 97 |  | 
|---|
| 98 | // This is a trick to remove TH1 entries from the context menu | 
|---|
| 99 | TH1 *Rebin(Int_t ngroup=2, const char*newname="") { return this; } | 
|---|
| 100 | void DrawPanel() {} | 
|---|
| 101 |  | 
|---|
| 102 | Int_t Fill(Axis_t x); | 
|---|
| 103 | Int_t Fill(Axis_t x, Stat_t w); | 
|---|
| 104 | Int_t Fill(const char *name, Stat_t w) { return -1; } | 
|---|
| 105 | void  FillN(Int_t ntimes, const Axis_t *x, const Double_t *w, Int_t stride=1) {} | 
|---|
| 106 | void  FillN(Int_t, const Axis_t *, const Axis_t *, const Double_t *, Int_t) {} | 
|---|
| 107 |  | 
|---|
| 108 | public: | 
|---|
| 109 | MHCamera(); | 
|---|
| 110 | MHCamera(const MGeomCam &geom, const char *name="", const char *title=""); | 
|---|
| 111 | ~MHCamera(); | 
|---|
| 112 |  | 
|---|
| 113 | void SetGeometry(const MGeomCam &geom, const char *name="", const char *title=""); | 
|---|
| 114 | const MGeomCam* GetGeometry() const { return fGeomCam; } | 
|---|
| 115 |  | 
|---|
| 116 | Bool_t IsUsed(Int_t idx) const { return TESTBIT(const_cast<TArrayC&>(fUsed)[idx], kIsUsed); } | 
|---|
| 117 |  | 
|---|
| 118 | Int_t Fill(Axis_t x, Axis_t y, Stat_t w); | 
|---|
| 119 |  | 
|---|
| 120 | //void     AddPixContent(Int_t idx) const { AddBinContent(idx+1); } | 
|---|
| 121 | //void     AddPixContent(Int_t idx, Stat_t w) const { AddBinContent(idx+1, w); } | 
|---|
| 122 |  | 
|---|
| 123 | // This is a trick to remove TH1 entries from the context menu | 
|---|
| 124 | /* | 
|---|
| 125 | void Add(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1) { TH1::Add(h1, h2, c1, c2); } | 
|---|
| 126 | void Add(TF1 *h1, Double_t c1=1) { TH1::Add(h1, c1); } | 
|---|
| 127 | void Add(const TH1 *h1, Double_t c1=1) { TH1::Add(h1, c1); } | 
|---|
| 128 | void Divide(TF1 *f1, Double_t c1=1) { TH1::Divide(f1, c1); } | 
|---|
| 129 | void Divide(const TH1 *h1) { TH1::Divide(h1); } | 
|---|
| 130 | void Divide(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") { TH1::Divide(h1, h2, c1, c2, option); } | 
|---|
| 131 | void Multiply(TF1 *h1, Double_t c1=1) { TH1::Multiply(h1, c1); } | 
|---|
| 132 | void Multiply(const TH1 *h1) { TH1::Multiply(h1); } | 
|---|
| 133 | void Multiply(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") { TH1::Multiply(h1, h2, c1, c2, option); } | 
|---|
| 134 | */ | 
|---|
| 135 |  | 
|---|
| 136 | void FitPanel() { TH1::FitPanel(); } | 
|---|
| 137 |  | 
|---|
| 138 | virtual Double_t GetPixContent(Int_t idx) const { return GetBinContent(idx+1); } | 
|---|
| 139 | virtual void     AddCamContent(const MCamEvent &evt, Int_t type=0); | 
|---|
| 140 | virtual void     AddCamContent(const MHCamera &evt, Int_t type=0); | 
|---|
| 141 | virtual void     AddCamContent(const TArrayD &arr, const TArrayC *used=NULL); | 
|---|
| 142 | virtual void     SetCamContent(const MCamEvent &evt, Int_t type=0) { Reset(); AddCamContent(evt, type); } | 
|---|
| 143 | virtual void     SetCamContent(const TArrayD &evt, const TArrayC *used=NULL) { Reset(); AddCamContent(evt, used); } | 
|---|
| 144 | virtual void     SetCamContent(const MHCamera &d, Int_t type=0) { Reset(); AddCamContent(d, type); fEntries=d.fEntries; } | 
|---|
| 145 |  | 
|---|
| 146 | virtual void     SetCamError(const MCamEvent &evt, Int_t type=0); | 
|---|
| 147 | virtual void     SetUsed(const TArrayC &arr); | 
|---|
| 148 |  | 
|---|
| 149 | virtual void     CntCamContent(const MCamEvent &evt, Double_t threshold, Int_t type=0); | 
|---|
| 150 | virtual void     CntCamContent(const TArrayD &evt, Double_t threshold, Bool_t ispos=kTRUE); | 
|---|
| 151 |  | 
|---|
| 152 | Stat_t   GetBinContent(Int_t bin) const { return Profile(TH1D::GetBinContent(bin)); } | 
|---|
| 153 | Stat_t   GetBinContent(Int_t binx, Int_t biny) const { return GetBinContent(binx); } | 
|---|
| 154 | Stat_t   GetBinContent(Int_t binx, Int_t biny, Int_t binz) const { return GetBinContent(binx); } | 
|---|
| 155 | Stat_t   GetBinError(Int_t bin) const; | 
|---|
| 156 | Stat_t   GetBinError(Int_t binx, Int_t biny) const { return GetBinError(binx); } | 
|---|
| 157 | Stat_t   GetBinError(Int_t binx, Int_t biny, Int_t binz) const { return GetBinError(binx); } | 
|---|
| 158 |  | 
|---|
| 159 | Double_t GetMinimum(Bool_t all) const { return GetMinimumSectors(TArrayI(), TArrayI(), all); } | 
|---|
| 160 | Double_t GetMaximum(Bool_t all) const { return GetMaximumSectors(TArrayI(), TArrayI(), all); } | 
|---|
| 161 |  | 
|---|
| 162 | Double_t GetMinimum() const { return GetMinimumSectors(TArrayI(), TArrayI(), kFALSE); } | 
|---|
| 163 | Double_t GetMaximum() const { return GetMaximumSectors(TArrayI(), TArrayI(), kFALSE); } | 
|---|
| 164 |  | 
|---|
| 165 | Double_t GetMinimumSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const | 
|---|
| 166 | { | 
|---|
| 167 | return GetMinimumSectors(TArrayI(1, §or), TArrayI(1, &aidx), all); | 
|---|
| 168 | } | 
|---|
| 169 | Double_t GetMaximumSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const | 
|---|
| 170 | { | 
|---|
| 171 | return GetMaximumSectors(TArrayI(1, §or), TArrayI(1, &aidx), all); | 
|---|
| 172 | } | 
|---|
| 173 | Double_t GetMinimumSectors(const TArrayI §or, const TArrayI &aidx, Bool_t all=kFALSE) const; | 
|---|
| 174 | Double_t GetMaximumSectors(const TArrayI §or, const TArrayI &aidx, Bool_t all=kFALSE) const; | 
|---|
| 175 |  | 
|---|
| 176 | void     SetLevels(const TArrayF &arr); | 
|---|
| 177 |  | 
|---|
| 178 | void     FillRandom(const char *fname, Int_t ntimes=5000) { TH1::FillRandom(fname, ntimes); } | 
|---|
| 179 | void     FillRandom(TH1 *h, Int_t ntimes=5000) { TH1::FillRandom(h, ntimes); } | 
|---|
| 180 | void     FillRandom(); | 
|---|
| 181 |  | 
|---|
| 182 | void     PrintInfo() const { Print(""); } // *MENU* | 
|---|
| 183 | void     Reset(Option_t *); | 
|---|
| 184 | void     Reset() { Reset(""); } // *MENU* | 
|---|
| 185 | TH1     *DrawCopy() const/* { gPad=NULL; return TH1D::DrawCopy(); }*/; // *MENU* | 
|---|
| 186 | TH1     *DrawCopy(Option_t *o) const { return TH1D::DrawCopy(o); } | 
|---|
| 187 |  | 
|---|
| 188 | void     Print(Option_t *) const; | 
|---|
| 189 | void     Paint(Option_t *option=""); | 
|---|
| 190 | void     Draw(Option_t *option=""); | 
|---|
| 191 | TObject *DrawClone(Option_t *option="") const; | 
|---|
| 192 | void     DrawProjection (Int_t fit=0) const; | 
|---|
| 193 | void     DrawRadialProfile()           const; | 
|---|
| 194 |  | 
|---|
| 195 | void     SavePrimitive(ofstream &out, Option_t *); | 
|---|
| 196 | Int_t    DistancetoPrimitive(Int_t px, Int_t py); | 
|---|
| 197 | char    *GetObjectInfo(Int_t px, Int_t py) const; | 
|---|
| 198 | void     ExecuteEvent(Int_t event, Int_t px, Int_t py); | 
|---|
| 199 |  | 
|---|
| 200 | void     SetPalette(Int_t ncolors, Int_t *colors); | 
|---|
| 201 |  | 
|---|
| 202 | void     SetPrettyPalette(); // *MENU* | 
|---|
| 203 | void     SetDeepBlueSeaPalette(); // *MENU* | 
|---|
| 204 | void     SetInvDeepBlueSeaPalette(); // *MENU* | 
|---|
| 205 |  | 
|---|
| 206 | void     SetAutoScale() { fMinimum = fMaximum = -1111; } // *MENU* | 
|---|
| 207 | void     DisplayAsHistogram() { SetDrawOption("histEP"); } // *MENU* | 
|---|
| 208 | void     DisplayAsCamera() { SetDrawOption(""); } // *MENU* | 
|---|
| 209 |  | 
|---|
| 210 | void     SetFreezed(Bool_t f=kTRUE) { f ? SetBit(kFreezed) : ResetBit(kFreezed); } // *TOGGLE* *GETTER=IsFreezed | 
|---|
| 211 | Bool_t   IsFreezed() const { return TestBit(kFreezed); } | 
|---|
| 212 | //void  SetOptStat(Int_t os=-1) { fOptStat = os; } // *MENU* | 
|---|
| 213 |  | 
|---|
| 214 | void     SetAbberation(Float_t f=0.0713) { fAbberation=f; } // *MENU* | 
|---|
| 215 |  | 
|---|
| 216 | void     AddNotify(TObject *event); | 
|---|
| 217 |  | 
|---|
| 218 | Stat_t   GetMean(Bool_t all) const { return GetMeanSectors(TArrayI(), TArrayI(), all); } | 
|---|
| 219 | Stat_t   GetRMS(Bool_t all)  const { return GetRmsSectors(TArrayI(), TArrayI(), all); } | 
|---|
| 220 |  | 
|---|
| 221 | Stat_t   GetMean(Int_t=0) const { return GetMeanSectors(TArrayI(), TArrayI(), kFALSE); } | 
|---|
| 222 | Stat_t   GetRMS(Int_t=0)  const { return GetRmsSectors(TArrayI(), TArrayI(), kFALSE); } | 
|---|
| 223 |  | 
|---|
| 224 | Stat_t   GetMeanSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const | 
|---|
| 225 | { | 
|---|
| 226 | return GetMeanSectors(TArrayI(1, §or), TArrayI(1, &aidx), all); | 
|---|
| 227 | } | 
|---|
| 228 | Stat_t   GetRmsSector(Int_t sector, Int_t aidx, Bool_t all=kFALSE) const | 
|---|
| 229 | { | 
|---|
| 230 | return GetRmsSectors(TArrayI(1, §or), TArrayI(1, &aidx), all); | 
|---|
| 231 | } | 
|---|
| 232 |  | 
|---|
| 233 | Stat_t   GetMeanSectors(const TArrayI §or, const TArrayI &aidx, Bool_t all=kFALSE) const; | 
|---|
| 234 | Stat_t   GetRmsSectors(const TArrayI §or, const TArrayI &aidx, Bool_t all=kFALSE) const; | 
|---|
| 235 |  | 
|---|
| 236 | UInt_t   GetNumPixels() const; | 
|---|
| 237 |  | 
|---|
| 238 | TH1D    *Projection(const char *name="_py") const { return ProjectionS(TArrayI(), TArrayI(), name); } | 
|---|
| 239 | TH1D    *ProjectionS(Int_t sector, Int_t aidx, const char *name="_py") const | 
|---|
| 240 | { | 
|---|
| 241 | return ProjectionS(TArrayI(1, §or), TArrayI(1, &aidx), name); | 
|---|
| 242 | } | 
|---|
| 243 | TH1D    *ProjectionS(const TArrayI §or, const TArrayI &aidx, const char *name="_py") const; | 
|---|
| 244 |  | 
|---|
| 245 | TProfile *RadialProfile(const char *name="_rad") const { return  RadialProfileS(TArrayI(), TArrayI(), name);} | 
|---|
| 246 | TProfile *RadialProfileS(Int_t sector, Int_t aidx, const char *name="_rad", const Int_t nbins=25) const | 
|---|
| 247 | { | 
|---|
| 248 | return RadialProfileS(TArrayI(1, §or), TArrayI(1, &aidx), name, nbins); | 
|---|
| 249 | } | 
|---|
| 250 | TProfile *RadialProfileS(const TArrayI §or, const TArrayI &aidx, const char *name="_rad", const Int_t nbins=25) const; | 
|---|
| 251 |  | 
|---|
| 252 | const MGeomCam &GetGeomCam() const { return *fGeomCam; } | 
|---|
| 253 |  | 
|---|
| 254 | ClassDef(MHCamera, 1) // Displays the magic camera | 
|---|
| 255 | }; | 
|---|
| 256 |  | 
|---|
| 257 | #endif | 
|---|
| 258 |  | 
|---|
| 259 | /* ------------ OK --------------- | 
|---|
| 260 | virtual void     Browse(TBrowser *b); | 
|---|
| 261 | virtual void     FillRandom(const char *fname, Int_t ntimes=5000); | 
|---|
| 262 | virtual void     FillRandom(TH1 *h, Int_t ntimes=5000); | 
|---|
| 263 |  | 
|---|
| 264 | virtual Int_t    GetQuantiles(Int_t nprobSum, Double_t *q, const Double_t *probSum=0); | 
|---|
| 265 | virtual Axis_t   GetRandom(); | 
|---|
| 266 | virtual void     GetStats(Stat_t *stats) const; | 
|---|
| 267 | virtual Stat_t   GetSumOfWeights() const; | 
|---|
| 268 | virtual Int_t    GetSumw2N() const {return fSumw2.fN;} | 
|---|
| 269 | virtual Stat_t   GetRMS(Int_t axis=1) const; | 
|---|
| 270 |  | 
|---|
| 271 | virtual Int_t    GetNbinsX() const {return fXaxis.GetNbins();} | 
|---|
| 272 | virtual Int_t    GetNbinsY() const {return fYaxis.GetNbins();} | 
|---|
| 273 | virtual Int_t    GetNbinsZ() const {return fZaxis.GetNbins();} | 
|---|
| 274 |  | 
|---|
| 275 | // ------------- to check ------------------- | 
|---|
| 276 |  | 
|---|
| 277 | virtual Double_t ComputeIntegral(); | 
|---|
| 278 | virtual Int_t    DistancetoPrimitive(Int_t px, Int_t py); | 
|---|
| 279 | virtual void     Draw(Option_t *option=""); | 
|---|
| 280 | virtual TH1     *DrawCopy(Option_t *option="") const; | 
|---|
| 281 | virtual TH1     *DrawNormalized(Option_t *option="", Double_t norm=1) const; | 
|---|
| 282 | virtual Int_t    BufferEmpty(Bool_t deleteBuffer=kFALSE); | 
|---|
| 283 | virtual void     Eval(TF1 *f1, Option_t *option=""); | 
|---|
| 284 | virtual void     ExecuteEvent(Int_t event, Int_t px, Int_t py); | 
|---|
| 285 | virtual void     FillN(Int_t ntimes, const Axis_t *x, const Double_t *w, Int_t stride=1); | 
|---|
| 286 | virtual void     FillN(Int_t, const Axis_t *, const Axis_t *, const Double_t *, Int_t) {;} | 
|---|
| 287 | virtual Int_t    FindBin(Axis_t x, Axis_t y=0, Axis_t z=0); | 
|---|
| 288 | virtual TObject *FindObject(const char *name) const; | 
|---|
| 289 | virtual TObject *FindObject(const TObject *obj) const; | 
|---|
| 290 | virtual Int_t    Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); // *MENU* | 
|---|
| 291 | virtual Int_t    Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0); | 
|---|
| 292 | virtual void     FitPanel(); // *MENU* | 
|---|
| 293 | TH1             *GetAsymmetry(TH1* h2, Double_t c2=1, Double_t dc2=0); | 
|---|
| 294 | Int_t            GetBufferLength() const {return (Int_t)fBuffer[0];} | 
|---|
| 295 | Int_t            GetBufferSize  () const {return fBufferSize;} | 
|---|
| 296 | const   Double_t *GetBuffer() const {return fBuffer;} | 
|---|
| 297 | static  Int_t    GetDefaultBufferSize(); | 
|---|
| 298 | virtual Double_t *GetIntegral() {return fIntegral;} | 
|---|
| 299 |  | 
|---|
| 300 | TList           *GetListOfFunctions() const { return fFunctions; } | 
|---|
| 301 |  | 
|---|
| 302 | virtual Int_t    GetNdivisions(Option_t *axis="X") const; | 
|---|
| 303 | virtual Color_t  GetAxisColor(Option_t *axis="X") const; | 
|---|
| 304 | virtual Color_t  GetLabelColor(Option_t *axis="X") const; | 
|---|
| 305 | virtual Style_t  GetLabelFont(Option_t *axis="X") const; | 
|---|
| 306 | virtual Float_t  GetLabelOffset(Option_t *axis="X") const; | 
|---|
| 307 | virtual Float_t  GetLabelSize(Option_t *axis="X") const; | 
|---|
| 308 | virtual Float_t  GetTitleOffset(Option_t *axis="X") const; | 
|---|
| 309 | virtual Float_t  GetTitleSize(Option_t *axis="X") const; | 
|---|
| 310 | virtual Float_t  GetTickLength(Option_t *axis="X") const; | 
|---|
| 311 | virtual Float_t  GetBarOffset() const {return Float_t(0.001*Float_t(fBarOffset));} | 
|---|
| 312 | virtual Float_t  GetBarWidth() const  {return Float_t(0.001*Float_t(fBarWidth));} | 
|---|
| 313 | virtual Int_t    GetContour(Double_t *levels=0); | 
|---|
| 314 | virtual Double_t GetContourLevel(Int_t level) const; | 
|---|
| 315 | virtual Double_t GetContourLevelPad(Int_t level) const; | 
|---|
| 316 |  | 
|---|
| 317 | virtual void     GetCenter(Axis_t *center) const {fXaxis.GetCenter(center);} | 
|---|
| 318 | TDirectory      *GetDirectory() const {return fDirectory;} | 
|---|
| 319 | virtual Stat_t   GetEntries() const; | 
|---|
| 320 | virtual TF1     *GetFunction(const char *name) const; | 
|---|
| 321 | virtual Int_t    GetDimension() const { return fDimension; } | 
|---|
| 322 | virtual void     GetLowEdge(Axis_t *edge) const {fXaxis.GetLowEdge(edge);} | 
|---|
| 323 | virtual Double_t GetMaximum() const; | 
|---|
| 324 | virtual Int_t    GetMaximumBin() const; | 
|---|
| 325 | virtual Int_t    GetMaximumBin(Int_t &locmax, Int_t &locmay, Int_t &locmaz) const; | 
|---|
| 326 | virtual Double_t GetMaximumStored() const {return fMaximum;} | 
|---|
| 327 | virtual Double_t GetMinimum() const; | 
|---|
| 328 | virtual Int_t    GetMinimumBin() const; | 
|---|
| 329 | virtual Int_t    GetMinimumBin(Int_t &locmix, Int_t &locmiy, Int_t &locmiz) const; | 
|---|
| 330 | virtual Double_t GetMinimumStored() const {return fMinimum;} | 
|---|
| 331 | virtual Stat_t   GetMean(Int_t axis=1) const; | 
|---|
| 332 | virtual Double_t GetNormFactor() const {return fNormFactor;} | 
|---|
| 333 | virtual char    *GetObjectInfo(Int_t px, Int_t py) const; | 
|---|
| 334 | Option_t        *GetOption() const {return fOption.Data();} | 
|---|
| 335 |  | 
|---|
| 336 | TVirtualHistPainter *GetPainter(); | 
|---|
| 337 |  | 
|---|
| 338 | TAxis   *GetXaxis() const; | 
|---|
| 339 | TAxis   *GetYaxis() const; | 
|---|
| 340 | TAxis   *GetZaxis() const; | 
|---|
| 341 | virtual Stat_t   Integral(Option_t *option="") const; | 
|---|
| 342 | virtual Stat_t   Integral(Int_t binx1, Int_t binx2, Option_t *option="") const; | 
|---|
| 343 | virtual Stat_t   Integral(Int_t, Int_t, Int_t, Int_t, Option_t * ="") const {return 0;} | 
|---|
| 344 | virtual Stat_t   Integral(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Option_t * ="" ) const {return 0;} | 
|---|
| 345 | virtual Double_t KolmogorovTest(TH1 *h2, Option_t *option="") const; | 
|---|
| 346 | virtual void     LabelsDeflate(Option_t *axis="X"); | 
|---|
| 347 | virtual void     LabelsInflate(Option_t *axis="X"); | 
|---|
| 348 | virtual void     LabelsOption(Option_t *option="h", Option_t *axis="X"); | 
|---|
| 349 | virtual Int_t    Merge(TCollection *list); | 
|---|
| 350 | virtual void     Multiply(TF1 *h1, Double_t c1=1); | 
|---|
| 351 | virtual void     Multiply(const TH1 *h1); | 
|---|
| 352 | virtual void     Multiply(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option=""); // *MENU* | 
|---|
| 353 | virtual void     Paint(Option_t *option=""); | 
|---|
| 354 | virtual void     Print(Option_t *option="") const; | 
|---|
| 355 | virtual void     PutStats(Stat_t *stats); | 
|---|
| 356 | virtual TH1     *Rebin(Int_t ngroup=2, const char*newname="");  // *MENU* | 
|---|
| 357 | virtual void     RebinAxis(Axis_t x, Option_t *axis="X"); | 
|---|
| 358 | virtual void     Rebuild(Option_t *option=""); | 
|---|
| 359 | virtual void     RecursiveRemove(TObject *obj); | 
|---|
| 360 | virtual void     Reset(Option_t *option=""); | 
|---|
| 361 | virtual void     SavePrimitive(ofstream &out, Option_t *option); | 
|---|
| 362 | virtual void     Scale(Double_t c1=1); | 
|---|
| 363 | virtual void     SetAxisColor(Color_t color=1, Option_t *axis="X"); | 
|---|
| 364 | virtual void     SetAxisRange(Axis_t xmin, Axis_t xmax, Option_t *axis="X"); | 
|---|
| 365 | virtual void     SetBarOffset(Float_t offset=0.25) {fBarOffset = Short_t(1000*offset);} | 
|---|
| 366 | virtual void     SetBarWidth(Float_t width=0.5) {fBarWidth = Short_t(1000*width);} | 
|---|
| 367 | virtual void     SetBinContent(Int_t bin, Stat_t content); | 
|---|
| 368 | virtual void     SetBinContent(Int_t binx, Int_t biny, Stat_t content); | 
|---|
| 369 | virtual void     SetBinContent(Int_t binx, Int_t biny, Int_t binz, Stat_t content); | 
|---|
| 370 | virtual void     SetBinError(Int_t bin, Stat_t error); | 
|---|
| 371 | virtual void     SetBinError(Int_t binx, Int_t biny, Stat_t error); | 
|---|
| 372 | virtual void     SetBinError(Int_t binx, Int_t biny, Int_t binz, Stat_t error); | 
|---|
| 373 | virtual void     SetBins(Int_t nx, Axis_t xmin, Axis_t xmax); | 
|---|
| 374 | virtual void     SetBins(Int_t nx, Axis_t xmin, Axis_t xmax, Int_t ny, Axis_t ymin, Axis_t ymax); | 
|---|
| 375 | virtual void     SetBins(Int_t nx, Axis_t xmin, Axis_t xmax, Int_t ny, Axis_t ymin, Axis_t ymax, | 
|---|
| 376 | Int_t nz, Axis_t zmin, Axis_t zmax); | 
|---|
| 377 | virtual void     SetBinsLength(Int_t = -1) { } //refefined in derived classes | 
|---|
| 378 | virtual void     SetBuffer(Int_t buffersize, Option_t *option=""); | 
|---|
| 379 | virtual void     SetCellContent(Int_t binx, Int_t biny, Stat_t content); | 
|---|
| 380 | virtual void     SetCellError(Int_t binx, Int_t biny, Stat_t content); | 
|---|
| 381 | virtual void     SetContent(const Stat_t *content); | 
|---|
| 382 | virtual void     SetContour(Int_t nlevels, const Double_t *levels=0); | 
|---|
| 383 | virtual void     SetContourLevel(Int_t level, Double_t value); | 
|---|
| 384 | static  void     SetDefaultBufferSize(Int_t buffersize=1000); | 
|---|
| 385 | virtual void     SetDirectory(TDirectory *dir); | 
|---|
| 386 | virtual void     SetEntries(Stat_t n) {fEntries = n;}; | 
|---|
| 387 | virtual void     SetError(const Stat_t *error); | 
|---|
| 388 | virtual void     SetLabelColor(Color_t color=1, Option_t *axis="X"); | 
|---|
| 389 | virtual void     SetLabelFont(Style_t font=62, Option_t *axis="X"); | 
|---|
| 390 | virtual void     SetLabelOffset(Float_t offset=0.005, Option_t *axis="X"); | 
|---|
| 391 | virtual void     SetLabelSize(Float_t size=0.02, Option_t *axis="X"); | 
|---|
| 392 |  | 
|---|
| 393 | virtual void     SetMaximum(Double_t maximum=-1111); // *MENU* | 
|---|
| 394 | virtual void     SetMinimum(Double_t minimum=-1111); // *MENU* | 
|---|
| 395 | virtual void     SetName(const char *name); // *MENU* | 
|---|
| 396 | virtual void     SetNameTitle(const char *name, const char *title); | 
|---|
| 397 | virtual void     SetNdivisions(Int_t n=510, Option_t *axis="X"); | 
|---|
| 398 | virtual void     SetNormFactor(Double_t factor=1) {fNormFactor = factor;} | 
|---|
| 399 | virtual void     SetStats(Bool_t stats=kTRUE); | 
|---|
| 400 | virtual void     SetOption(Option_t *option=" ") {fOption = option;} | 
|---|
| 401 | virtual void     SetTickLength(Float_t length=0.02, Option_t *axis="X"); | 
|---|
| 402 | virtual void     SetTitleOffset(Float_t offset=1, Option_t *axis="X"); | 
|---|
| 403 | virtual void     SetTitleSize(Float_t size=0.02, Option_t *axis="X"); | 
|---|
| 404 | virtual void     SetTitle(const char *title); | 
|---|
| 405 | virtual void     SetXTitle(const char *title) {fXaxis.SetTitle(title);} | 
|---|
| 406 | virtual void     SetYTitle(const char *title) {fYaxis.SetTitle(title);} | 
|---|
| 407 | virtual void     SetZTitle(const char *title) {fZaxis.SetTitle(title);} | 
|---|
| 408 | virtual void     Smooth(Int_t ntimes=1); // *MENU* | 
|---|
| 409 | static  void     SmoothArray(Int_t NN, Double_t *XX, Int_t ntimes=1); | 
|---|
| 410 | static Double_t  SmoothMedian(Int_t n, Double_t *a); | 
|---|
| 411 | virtual void     Sumw2(); | 
|---|
| 412 | void             UseCurrentStyle(); | 
|---|
| 413 |  | 
|---|
| 414 | ClassDef(TH1,4)  //1-Dim histogram base class | 
|---|
| 415 | }; | 
|---|
| 416 |  | 
|---|
| 417 | */ | 
|---|