Logo ROOT   6.12/07
Reference Guide
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 "TAttLine.h"
16 #include "TNamed.h"
17 #include "TAttFill.h"
18 
19 class TParallelCoord;
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),
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:
56  TParallelCoordVar(Double_t *val, const char* title,Int_t id, TParallelCoord* gram);
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);
68  TH1F *GetHistogram();
69  Int_t GetId() {return fId;}
70  Bool_t GetLogScale() const {return TestBit (kLogScale);}
71  Int_t GetHistBinning() const {return fNbins;}
74  Double_t GetCurrentAverage() const {return fMean;}
75  void GetEntryXY(Long64_t n, Double_t & x, Double_t & y);
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;
87  TList *GetRanges() {return fRanges;}
88  Double_t *GetValues() {return fVal;}
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
A TParallelCoordSelect is a specialised TList to hold TParallelCoordRanges used by TParallelCoord...
Int_t GetHistBinning() const
virtual void ExecuteEvent(Int_t entry, Int_t px, Int_t py)
Execute the corresponding entry.
Double_t * GetValues()
long long Long64_t
Definition: RtypesCore.h:69
void SetCurrentMax(Double_t max)
Set the current maximum of the axis.
const char Option_t
Definition: RtypesCore.h:62
void SetInitMin(Double_t min)
void PaintBoxPlot()
Paint the boxes in the case of a candle chart.
Double_t GetValuefromXY(Double_t x, Double_t y)
Get the value corresponding to the position.
#define BIT(n)
Definition: Rtypes.h:78
TH1 * h
Definition: legend2.C:5
void SetLogScale(Bool_t log)
Set the axis in log scale.
void SetCurrentMin(Double_t min)
Set the current minimum of the axis.
static constexpr double gram
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
virtual Int_t DistancetoPrimitive(Int_t px, Int_t py)
Computes the distance from the axis.
1-D histogram with a float per channel (see TH1 documentation)}
Definition: TH1.h:567
A TParallelCoordRange is a range used for parallel coordinates plots.
void SetValues(Long64_t length, Double_t *val)
Set the variable values.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TH1F * GetHistogram()
Create or recreate the histogram.
void GetXYfromValue(Double_t value, Double_t &x, Double_t &y)
Get a position corresponding to the value on the axis.
void SetBoxPlot(Bool_t box)
Set the axis to display a candle.
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition: fillpatterns.C:1
~TParallelCoordVar()
Destructor.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
void GetEntryXY(Long64_t n, Double_t &x, Double_t &y)
Get the position of the variable on the graph for the n'th entry.
TParallelCoord axes.
TParallelCoordVar()
Histogram holding the variable distribution.
void SetX(Double_t x, Bool_t gl)
Set the X position of the axis in the case of a vertical axis.
Double_t GetCurrentMin() const
Fill Area Attributes class.
Definition: TAttFill.h:19
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:320
void SetY(Double_t y, Bool_t gl)
Set the Y position of the axis in the case of a horizontal axis.
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
void SetCurrentLimits(Double_t min, Double_t max)
Set the limits within which one the entries must be painted.
void DeleteVariable()
Delete variables.
void SetLiveRangesUpdate(Bool_t on)
If true, the pad is updated while the motion of a dragged range.
Double_t GetCurrentMax() const
void GetMinMaxMean()
Get mean, min and max of those variable.
virtual char * GetObjectInfo(Int_t px, Int_t py) const
Returns info about this axis.
void PaintHistogram()
Paint the histogram on the axis.
Double_t GetHistHeight()
Int_t GetEntryWeight(Long64_t evtidx)
Get the entry weight: The weight of an entry for a given variable is the bin content of the histogram...
void PaintLabels()
Paint the axis labels and titles.
A doubly linked list.
Definition: TList.h:44
virtual void Paint(Option_t *option="")
Paint the axis.
Bool_t GetLogScale() const
TParallelCoord * fParallel
void SetHistogramBinning(Int_t n=100)
Set the histogram binning.
Long64_t GetNentries() const
void SetInitMax(Double_t max)
void Init()
Initialise the TParallelVar variables.
void SetBarHisto(Bool_t h)
void GetQuantiles()
Get the box plot values (quantiles).
void SetHistogramHeight(Double_t h=0)
Set the height of the bar histogram.
virtual void Draw(Option_t *option="")
Draw the axis.
double Double_t
Definition: RtypesCore.h:55
EStatusBits
Definition: TObject.h:57
void SavePrimitive(std::ostream &out, Option_t *options)
Save the TParallelCoordVar as a macro.
virtual void Print(Option_t *option="") const
Print the axis main data.
Double_t y[n]
Definition: legend1.C:17
TParallelCoord * GetParallel()
void SetTitle(const char *)
Set the title of the TNamed.
Parallel Coordinates class.
void SetHistogramLineWidth(Int_t lw=2)
TList * fRanges
[fNentries] Entries values for the variable.
const Int_t n
Definition: legend1.C:16
Line Attributes class.
Definition: TAttLine.h:18
Double_t GetCurrentAverage() const
Bool_t Eval(Long64_t evtidx, TParallelCoordSelect *select)
Check if the entry is within the range(s) of "select".
double log(double)