Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TSpider.h
Go to the documentation of this file.
1 // @(#)root/treeviewer:$Id$
2 // Author: Bastien Dalla Piazza 20/07/07
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_TSpider
13 #define ROOT_TSpider
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TSpider //
18 // //
19 // TSpider is a manager used to paint a spider view //
20 // of the events of a TNtuple. //
21 // //
22 //////////////////////////////////////////////////////////////////////////
23 
24 #include "TObject.h"
25 #include "TAttFill.h"
26 #include "TAttLine.h"
27 
28 class TTree;
29 class TGraphPolargram;
30 class TPolyLine;
31 class TTreeFormula;
32 class TTreeFormulaManager;
33 class TList;
34 class TSelectorDraw;
35 class TString;
36 class TLatex;
37 class TCanvas;
38 class TArc;
39 
40 class TSpider : public TObject, public TAttFill, public TAttLine {
41 private:
42  UInt_t fNx; // Number of horizontal spider plots.
43  UInt_t fNy; // Number of vertical spider plots.
44  UInt_t fNcols; // Number of variables.
45  Int_t fArraySize; // Actual size of the arrays.
46  Long64_t fEntry; // Present entry number in fTree.
47  Long64_t fNentries; // Number of entries.
48  Long64_t fFirstEntry; // First entry.
49  Long64_t* fCurrentEntries; //![fNx*fNy] current selected entries;
50  Double_t* fAve; //[fNcols] Average value of each variable.
51  Double_t* fMax; //[fNcols] Maximum value of the variables.
52  Double_t* fMin; //[fNcols] Minimum value of the variables.
53  TList* fSuperposed; // Superposed spider plots.
54  TTree* fTree; // Pointer to the TTree to represent.
55  TPolyLine* fAveragePoly; // Polygon representing the average variables value.
56  TArc** fAverageSlices; //! Average slices.
57  TCanvas* fCanvas; //! Pointer to the mother pad.
58  TList* fFormulas; // List of all formulas to represent.
59  TList* fInput; // Used for fSelector.
60  TTreeFormulaManager* fManager; // Coordinator for the formulas.
61  TGraphPolargram* fPolargram; // Polar graph.
62  TList* fPolyList; // Polygons representing the variables.
63  TTreeFormula* fSelect; // Selection condition
64  TSelectorDraw* fSelector; //! Selector.
65  Bool_t fAngularLabels; // True if the labels are oriented according to their axis.
66  Bool_t fDisplayAverage; // Display or not the average.
67  Bool_t fForceDim; // Force dimension.
68  Bool_t fSegmentDisplay; // True if displaying a segment plot.
69  Bool_t fShowRange; // Show range of variables or not.
70 
71  Int_t FindTextAlign(Double_t theta);
72  Double_t FindTextAngle(Double_t theta);
73  void InitVariables(Long64_t firstentry, Long64_t nentries);
74  void DrawPoly(Option_t* options);
75  void DrawPolyAverage(Option_t* options);
76  void DrawSlices(Option_t* options);
77  void DrawSlicesAverage(Option_t* options);
78  void SyncFormulas();
79  void InitArrays(Int_t newsize);
80  void SetCurrentEntries();
81  void UpdateView();
82 
83 public:
84  TSpider();
85  TSpider(TTree* tree, const char *varexp, const char *selection, Option_t *option="",
86  Long64_t nentries=0, Long64_t firstentry=0);
87  ~TSpider();
88  void AddSuperposed(TSpider* sp);
89  void AddVariable(const char* varexp); // *MENU*
90  void DeleteVariable(const char* varexp); // *MENU*
91  virtual void Draw(Option_t *options="");
92  virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
93  virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
94  Style_t GetAverageLineStyle() const;
95  Color_t GetAverageLineColor() const;
96  Width_t GetAverageLineWidth() const;
97  Color_t GetAverageFillColor() const;
98  Style_t GetAverageFillStyle() const;
99  Bool_t GetDisplayAverage() const {return fDisplayAverage;}
100  Long64_t GetCurrentEntry() const {return fEntry;}
101  Long64_t GetEntriesToProcess(Long64_t firstentry, Long64_t nentries) const;
102  Int_t GetNx() const {return fNx;}
103  Int_t GetNy() const {return fNy;}
104  Bool_t GetSegmentDisplay() const {return fSegmentDisplay;}
105  void GotoEntry(Long64_t e); // *MENU*
106  void GotoNext(); // *MENU*
107  void GotoPrevious(); // *MENU*
108  void GotoFollowing(); // *MENU*
109  void GotoPreceding(); // *MENU*
110  virtual void Paint(Option_t *options);
111  void SetAverageLineStyle(Style_t sty);
112  void SetAverageLineColor(Color_t col);
113  void SetAverageLineWidth(Width_t wid);
114  void SetAverageFillColor(Color_t col);
115  void SetAverageFillStyle(Style_t sty);
116  virtual void SetLineStyle(Style_t sty);
117  virtual void SetLineColor(Color_t col);
118  virtual void SetLineWidth(Width_t wid);
119  virtual void SetFillColor(Color_t col);
120  virtual void SetFillStyle(Style_t sty);
121  void SetDisplayAverage(Bool_t disp); // *TOGGLE*
122  void SetVariablesExpression(const char* varexp);
123  void SetNdivRadial(Int_t div); // *MENU*
124  void SetNx(UInt_t nx); // *MENU*
125  void SetNy(UInt_t ny); // *MENU*
126  void SetSelectionExpression(const char* selexp);
127  void SetSegmentDisplay(Bool_t seg); // *TOGGLE*
128  void SetShowRange(Bool_t showrange) {fShowRange = showrange;}
129  void SuperposeTo(TSpider* sp) {sp->AddSuperposed(this);}
130 
131  ClassDef(TSpider,0) //Helper class to draw spider
132 };
133 
134 #endif