Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TGLTH3Composition.h
Go to the documentation of this file.
1// @(#)root/gl:$Id$
2// Author: Timur Pocheptsov 07/08/2009
3
4#ifndef ROOT_TGLTH3Composition
5#define ROOT_TGLTH3Composition
6
7#include <utility>
8#include <memory>
9#include <vector>
10
11#include "TGLHistPainter.h"
12#include "TGLPlotPainter.h"
13#include "TGLQuadric.h"
14#include "TH3.h"
15
16//
17//Composition of TH3 objects. All TH3 must have the same axis range
18//and the same number of bins. If this condition is violated,
19//AddTH3 will throw.
20//IMPORTANT: TGLTH3Composition does not own TH3 objects
21//it contains.
22//This class inherits TH3 - to re-use TH3 editor.
23//I use TH3C to reduce memory usage.
24//Slising is not implemeted yet.
25//
26
27class TGLTH3Composition : public TH3C {
29public:
30 TGLTH3Composition();//I need it only because of explicit private copy ctor.
31
35 };
36
37 void AddTH3(const TH3 *hist, ETH3BinShape shape = kBox);
38
39 //These are functions for TPad and
40 //TPad's standard machinery (picking, painting).
41 Int_t DistancetoPrimitive(Int_t px, Int_t py) override;
42 void ExecuteEvent(Int_t event, Int_t px, Int_t py) override;
43 char *GetObjectInfo(Int_t px, Int_t py) const override;
44 void Paint(Option_t *option) override;
45
46private:
47 void CheckRanges(const TH3 *hist);
48
49 typedef std::pair<const TH3 *, ETH3BinShape> TH3Pair_t;
50
51 std::vector<TH3Pair_t> fHists;
52 std::unique_ptr<TGLHistPainter> fPainter;
53
56
57 ClassDefOverride(TGLTH3Composition, 0)//Composition of TH3 objects.
58};
59
60//
61//TGLTH3CompositionPainter class.
62//
64public:
66 TGLPlotCoordinates *coord);
67
68 //TGLPlotPainter final-overriders.
69 char *GetPlotInfo(Int_t px, Int_t py) override;
70 Bool_t InitGeometry() override;
71 void StartPan(Int_t px, Int_t py) override;
72 void Pan(Int_t px, Int_t py) override;
73 void AddOption(const TString &option) override;
74 void ProcessEvent(Int_t event, Int_t px, Int_t py) override;
75
76private:
77 //TGLPlotPainter final-overriders.
78 void InitGL()const override;
79 void DeInitGL()const override;
80
81 void DrawPlot()const override;
82
83 //Empty overriders.
84 void DrawSectionXOZ()const override {}
85 void DrawSectionYOZ()const override {}
86 void DrawSectionXOY()const override {}
87
88 void SetColor(Int_t color)const;
89
91 std::pair<Double_t, Double_t> fMinMaxVal;
92
94
97
98 ClassDefOverride(TGLTH3CompositionPainter, 0)//Painter to draw several TH3.
99};
100
101
102#endif
int Int_t
Definition RtypesCore.h:45
const char Option_t
Definition RtypesCore.h:66
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
winID h TVirtualViewer3D TVirtualGLPainter char GetPlotInfo
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Camera for TGLPlotPainter and sub-classes.
Helper class for plot-painters holding information about axis ranges, numbers of bins and flags if ce...
Base class for plot-painters that provide GL rendering of various 2D and 3D histograms,...
Wrapper class for GLU quadric shape drawing object.
Definition TGLQuadric.h:28
void ProcessEvent(Int_t event, Int_t px, Int_t py) override
Switch on/off box cut.
void StartPan(Int_t px, Int_t py) override
Move plot or box cut.
void DeInitGL() const override
Return back some gl state variables.
TGLTH3CompositionPainter(const TGLTH3CompositionPainter &)=delete
void Pan(Int_t px, Int_t py) override
User's moving mouse cursor, with middle mouse button pressed (for pad).
TGLTH3Composition * fData
void DrawSectionXOY() const override
void AddOption(const TString &option) override
No options for composition.
TGLTH3CompositionPainter & operator=(const TGLTH3CompositionPainter &)=delete
std::pair< Double_t, Double_t > fMinMaxVal
void DrawSectionXOZ() const override
void InitGL() const override
Initialize some gl state variables.
void SetColor(Int_t color) const
Set material.
void DrawSectionYOZ() const override
void DrawPlot() const override
Draw composition of TH3s.
TGLTH3Composition & operator=(const TGLTH3Composition &)=delete
TGLTH3Composition(const TGLTH3Composition &)=delete
void AddTH3(const TH3 *hist, ETH3BinShape shape=kBox)
Add TH3 into collection.
Int_t DistancetoPrimitive(Int_t px, Int_t py) override
Check if "this" is under cursor.
std::vector< TH3Pair_t > fHists
void Paint(Option_t *option) override
Paint a composition of 3d hists.
TGLTH3Composition()
I have to define it, since explicit copy ctor was declared.
char * GetObjectInfo(Int_t px, Int_t py) const override
I cannot show bin content in a status bar - since there can be several bins in one.
void ExecuteEvent(Int_t event, Int_t px, Int_t py) override
Mouse and keyboard events.
std::pair< const TH3 *, ETH3BinShape > TH3Pair_t
std::unique_ptr< TGLHistPainter > fPainter
void CheckRanges(const TH3 *hist)
3-D histogram with a byte per channel (see TH1 documentation)
Definition TH3.h:157
The 3-D histogram classes derived from the 1-D histogram classes.
Definition TH3.h:31
Basic string class.
Definition TString.h:139