Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TParallelCoordVar.h
Go to the documentation of this file.
1 // @(#)root/treeviewer:$Id$
2 // Author: Bastien Dalla Piazza 02/08/2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, 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_TParallelCoordVar
13 #define ROOT_TParallelCoordVar
14 
15 #include "TNamed.h"
16 #include "TAttLine.h"
17 #include "TAttFill.h"
18 
19 class TParallelCoord;
20 class TParallelCoordSelect;
21 class TParallelCoordRange;
22 class TH1F;
23 
24 class TParallelCoordVar : public TNamed, public TAttLine, public TAttFill {
25 public:
26  enum EStatusBits {
27  kLogScale = BIT(14),
28  kShowBox = BIT(15),
29  kShowBarHisto = BIT(16)
30  };
31 private:
32  Int_t fNbins; // Number of bins in fHistogram.
33  Int_t fHistoLW; // Line width used to draw the histogram line.
34  Int_t fId; // Id identifying the variable for the editor.
35  Long64_t fNentries; // Number of stored entries values.
36  Double_t fX1; // x1 coordinate of the axis.
37  Double_t fX2; // x2 coordinate of the axis.
38  Double_t fY1; // y1 coordinate of the axis.
39  Double_t fY2; // y2 coordinate of the axis.
40  Double_t fMinInit; // Memory of the minimum when first initialized.
41  Double_t fMaxInit; // Memory of the maximum when first initialized.
42  Double_t fMean; // Average.
43  Double_t fMinCurrent; // Current used minimum.
44  Double_t fMaxCurrent; // Current used maximum.
45  Double_t fMed; // Median value (Q2).
46  Double_t fQua1; // First quantile (Q1).
47  Double_t fQua3; // Third quantile (Q3).
48  Double_t fHistoHeight; // Histogram Height.
49  Double_t *fVal; //![fNentries] Entries values for the variable.
50  TList *fRanges; // List of the TParallelRange owned by TParallelCoordVar.
51  TParallelCoord *fParallel; // Pointer to the TParallelCoord which owns the TParallelCoordVar.
52  TH1F *fHistogram; //! Histogram holding the variable distribution.
53 
54 public:
55  TParallelCoordVar();
56  TParallelCoordVar(Double_t *val, const char* title,Int_t id, TParallelCoord* gram);
57  virtual ~TParallelCoordVar();
58 
59  void AddRange(TParallelCoordRange* range);
60  void AddRange() {AddRange(NULL);} // *MENU*
61  void DeleteVariable(); // *MENU*
62  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
63  virtual void Draw(Option_t *option="");
64  Bool_t Eval(Long64_t evtidx, TParallelCoordSelect *select); // Check an entry is within its ranges owned by a given TParallelSelect.
65  virtual void ExecuteEvent(Int_t entry, Int_t px, Int_t py);
66  Bool_t GetBarHisto() {return TestBit(kShowBarHisto);}
67  Bool_t GetBoxPlot() {return TestBit(kShowBox);}
68  TH1F *GetHistogram();
69  Int_t GetId() {return fId;}
70  Bool_t GetLogScale() const {return TestBit (kLogScale);}
71  Int_t GetHistBinning() const {return fNbins;}
72  Double_t GetCurrentMin() const {return fMinCurrent;}
73  Double_t GetCurrentMax() const {return fMaxCurrent;}
74  Double_t GetCurrentAverage() const {return fMean;}
75  void GetEntryXY(Long64_t n, Double_t & x, Double_t & y);
76  Int_t GetEntryWeight(Long64_t evtidx);
77  Double_t GetHistHeight() {return fHistoHeight;}
78  Int_t GetHistLineWidth() {return fHistoLW;}
79  void GetMinMaxMean();
80  void GetQuantiles();
81  Double_t GetX() {return fX1;}
82  Double_t GetY() {return fY1;}
83  Int_t GetNbins() {return fNbins;}
84  Long64_t GetNentries() const {return fNentries;}
85  virtual char *GetObjectInfo(Int_t px, Int_t py) const;
86  TParallelCoord* GetParallel() {return fParallel;}
87  TList *GetRanges() {return fRanges;}
88  Double_t *GetValues() {return fVal;}
89  Double_t GetValuefromXY(Double_t x,Double_t y);
90  Bool_t GetVert() {return fX1 == fX2;} // Tells if the axis is vertical or not.
91  void GetXYfromValue(Double_t value, Double_t & x, Double_t & y);
92  void Init();
93  virtual void Paint(Option_t* option="");
94  void PaintBoxPlot();
95  void PaintHistogram();
96  void PaintLabels();
97  virtual void Print(Option_t* option="") const; // *MENU*
98  void SavePrimitive(std::ostream & out, Option_t *options);
99  void SetBoxPlot(Bool_t box); // *TOGGLE* *GETTER=GetBoxPlot
100  void SetBarHisto(Bool_t h) {SetBit(kShowBarHisto,h);} // *TOGGLE* *GETTER=GetBarHisto
101  void SetHistogramLineWidth(Int_t lw=2) {fHistoLW = lw;} // *MENU*
102  void SetHistogramHeight(Double_t h=0); // *MENU*
103  void SetHistogramBinning(Int_t n=100); // *MENU*
104  void SetCurrentLimits(Double_t min, Double_t max); // *MENU*
105  void SetCurrentMin(Double_t min);
106  void SetCurrentMax(Double_t max);
107  void SetInitMin(Double_t min) {fMinInit = min;}
108  void SetInitMax(Double_t max) {fMaxInit = max;}
109  void SetLiveRangesUpdate(Bool_t on);
110  void SetLogScale(Bool_t log); // *TOGGLE* *GETTER=GetLogScale
111  void SetTitle(const char* /*title*/) {} // To hide TNamed::SetTitle.
112  void SetValues(Long64_t length, Double_t* val);
113  void SetX(Double_t x, Bool_t gl); // Set a new x position in case of a vertical display.
114  void SetY(Double_t y, Bool_t gl); // Set a new y position in case of a horizontal display.
115  void Unzoom() {SetCurrentLimits(fMinInit,fMaxInit);} // *MENU* Reset fMin and fMax to their original value.
116 
117  ClassDef(TParallelCoordVar,1); // A Variable of a parallel coordinates plot.
118 };
119 
120 #endif