Logo ROOT  
Reference Guide
TEveUtil.h
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 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_TEveUtil
13#define ROOT_TEveUtil
14
15#include "TObject.h"
16#include "TString.h"
17#include "TError.h"
18
19#include "GuiTypes.h"
20
21#include <map>
22#include <set>
23#include <exception>
24
25class TVirtualPad;
26class TGeoManager;
27
28class TEveElement;
29
30/******************************************************************************/
31// TEveUtil
32/******************************************************************************/
33
35{
36private:
38
39public:
40 virtual ~TEveUtil() {}
41
42 // Environment, Macro functions
43
44 static void SetupEnvironment();
45 static void SetupGUI();
46
47 static Bool_t CheckMacro(const char* mac);
48 static void AssertMacro(const char* mac);
49 static void Macro(const char* mac);
50 static void LoadMacro(const char* mac);
51
52 // Color management
53
54 static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha=kTRUE);
55 static void ColorFromIdx(Color_t ci, UChar_t col[4], Char_t transparency);
57 UChar_t col[4], Bool_t alpha=kTRUE);
58 static Color_t* FindColorVar(TObject* obj, const char* varname);
59
60 static void SetColorBrightness(Float_t value, Bool_t full_redraw=kFALSE);
61
62
63 // Math utilities
64
66 Float_t minQ, Float_t maxQ);
68 Float_t minQ, Float_t maxQ);
69
71 Float_t meanQ, Float_t deltaQ);
73 Float_t meanQ, Float_t deltaQ);
74
75 static Float_t GetFraction(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ);
76
77
78 ClassDef(TEveUtil, 0); // Standard utility functions for Reve.
79};
80
82 Float_t meanQ, Float_t deltaQ)
83{
84 return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
85}
86
88 Float_t meanQ, Float_t deltaQ)
89{
90 return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
91}
92
93
94/******************************************************************************/
95// Exceptions, string functions
96/******************************************************************************/
97
98bool operator==(const TString& t, const std::string& s);
99bool operator==(const std::string& s, const TString& t);
100
101class TEveException : public std::exception, public TString
102{
103public:
106 TEveException(const char* s) : TString(s) {}
107 TEveException(const std::string& s);
108
109 virtual ~TEveException() noexcept {}
110
111 virtual const char* what() const noexcept { return Data(); }
112
113 ClassDef(TEveException, 1); // Exception-type thrown by Eve classes.
114};
115
116TEveException operator+(const TEveException &s1, const std::string &s2);
118TEveException operator+(const TEveException &s1, const char *s2);
119
120
121/******************************************************************************/
122// Exception-safe global variable holders
123/******************************************************************************/
124
126{
127private:
130
131 TEvePadHolder(const TEvePadHolder&); // Not implemented
132 TEvePadHolder& operator=(const TEvePadHolder&); // Not implemented
133
134public:
135 TEvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad=0, Int_t subpad=0);
136 virtual ~TEvePadHolder();
137
138 ClassDef(TEvePadHolder, 0); // Exception-safe wrapper for temporary setting of gPad variable.
139};
140
142{
143private:
146
147 TEveGeoManagerHolder(const TEveGeoManagerHolder&); // Not implemented
149
150public:
151 TEveGeoManagerHolder(TGeoManager* new_gmgr=0, Int_t n_seg=0);
152 virtual ~TEveGeoManagerHolder();
153
154 ClassDef(TEveGeoManagerHolder, 0); // Exception-safe wrapper for temporary setting of gGeoManager variable.
155};
156
157
158/******************************************************************************/
159// TEveRefCnt base-class (interface)
160/******************************************************************************/
161
163{
164protected:
166
167public:
169 virtual ~TEveRefCnt() {}
170
172 TEveRefCnt& operator=(const TEveRefCnt&) { return *this; }
173
174 void IncRefCount() { ++fRefCount; }
175 void DecRefCount() { if(--fRefCount <= 0) OnZeroRefCount(); }
176
177 virtual void OnZeroRefCount() { delete this; }
178
179 ClassDef(TEveRefCnt, 0); // Base-class for reference-counted objects.
180};
181
182/******************************************************************************/
183// TEveRefBackPtr reference-count with back pointers
184/******************************************************************************/
185
187{
188protected:
189 typedef std::map<TEveElement*, Int_t> RefMap_t;
190 typedef RefMap_t::iterator RefMap_i;
191
193
194public:
196 virtual ~TEveRefBackPtr();
197
200
203 virtual void IncRefCount(TEveElement* re);
204 virtual void DecRefCount(TEveElement* re);
205
206 virtual void StampBackPtrElements(UChar_t stamps);
207
208 ClassDef(TEveRefBackPtr, 0); // Base-class for reference-counted objects with reverse references to TEveElement objects.
209};
210
211#endif
#define s1(x)
Definition: RSha256.hxx:91
unsigned char UChar_t
Definition: RtypesCore.h:36
char Char_t
Definition: RtypesCore.h:31
const Bool_t kFALSE
Definition: RtypesCore.h:90
bool Bool_t
Definition: RtypesCore.h:61
short Color_t
Definition: RtypesCore.h:81
float Float_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:89
#define ClassDef(name, id)
Definition: Rtypes.h:322
bool operator==(const TString &t, const std::string &s)
Definition: TEveUtil.cxx:413
TEveException operator+(const TEveException &s1, const std::string &s2)
Definition: TEveUtil.cxx:428
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:34
Exception class thrown by TEve classes and macros.
Definition: TEveUtil.h:102
TEveException(const char *s)
Definition: TEveUtil.h:106
virtual const char * what() const noexcept
Definition: TEveUtil.h:111
TEveException(const TString &s)
Definition: TEveUtil.h:105
virtual ~TEveException() noexcept
Definition: TEveUtil.h:109
Exception safe wrapper for setting gGeoManager.
Definition: TEveUtil.h:142
TGeoManager * fManager
Definition: TEveUtil.h:144
TEveGeoManagerHolder(const TEveGeoManagerHolder &)
TEveGeoManagerHolder & operator=(const TEveGeoManagerHolder &)
virtual ~TEveGeoManagerHolder()
Destructor.
Definition: TEveUtil.cxx:508
Exception safe wrapper for setting gPad.
Definition: TEveUtil.h:126
TVirtualPad * fOldPad
Definition: TEveUtil.h:128
Bool_t fModifyUpdateP
Definition: TEveUtil.h:129
virtual ~TEvePadHolder()
Destructor.
Definition: TEveUtil.cxx:462
TEvePadHolder & operator=(const TEvePadHolder &)
TEvePadHolder(const TEvePadHolder &)
Base-class for reference-counted objects with reverse references to TEveElement objects.
Definition: TEveUtil.h:187
virtual void StampBackPtrElements(UChar_t stamps)
Add given stamps to elements in the list of reverse references.
Definition: TEveUtil.cxx:608
TEveRefBackPtr & operator=(const TEveRefBackPtr &)
Assignment operator.
Definition: TEveUtil.cxx:573
RefMap_t::iterator RefMap_i
Definition: TEveUtil.h:190
virtual ~TEveRefBackPtr()
Destructor. Noop, should complain if back-ref list is not empty.
Definition: TEveUtil.cxx:553
void IncRefCount()
Definition: TEveUtil.h:174
void DecRefCount()
Definition: TEveUtil.h:175
RefMap_t fBackRefs
Definition: TEveUtil.h:192
std::map< TEveElement *, Int_t > RefMap_t
Definition: TEveUtil.h:189
TEveRefBackPtr()
Default constructor.
Definition: TEveUtil.cxx:544
Base-class for reference-counted objects.
Definition: TEveUtil.h:163
TEveRefCnt & operator=(const TEveRefCnt &)
Definition: TEveUtil.h:172
virtual ~TEveRefCnt()
Definition: TEveUtil.h:169
TEveRefCnt(const TEveRefCnt &)
Definition: TEveUtil.h:171
virtual void OnZeroRefCount()
Definition: TEveUtil.h:177
Int_t fRefCount
Definition: TEveUtil.h:165
void IncRefCount()
Definition: TEveUtil.h:174
void DecRefCount()
Definition: TEveUtil.h:175
TEveRefCnt()
Definition: TEveUtil.h:168
Standard utility functions for Eve.
Definition: TEveUtil.h:35
static TObjArray * fgDefaultColors
Definition: TEveUtil.h:37
static Float_t GetFraction(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ)
Get fraction of interval [minQ, maxQ] in [minM, maxM].
Definition: TEveUtil.cxx:386
static void SetColorBrightness(Float_t value, Bool_t full_redraw=kFALSE)
Tweak all ROOT colors to become brighter (if value > 0) or darker (value < 0).
Definition: TEveUtil.cxx:280
static Bool_t IsU1IntervalOverlappingByMinMax(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ)
Return true if interval Q is overlapping within interval M for U1 variables.
Definition: TEveUtil.cxx:367
static void Macro(const char *mac)
Execute macro 'mac'. Do not reload the macro.
Definition: TEveUtil.cxx:168
static void AssertMacro(const char *mac)
Load and execute macro 'mac' if it has not been loaded yet.
Definition: TEveUtil.cxx:158
static void SetupGUI()
Setup icon pictures and mime-types.
Definition: TEveUtil.cxx:97
static Color_t * FindColorVar(TObject *obj, const char *varname)
Find address of Color_t data-member with name varname in object obj.
Definition: TEveUtil.cxx:261
static Bool_t IsU1IntervalContainedByMinMax(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ)
Return true if interval Q is contained within interval M for U1 variables.
Definition: TEveUtil.cxx:346
virtual ~TEveUtil()
Definition: TEveUtil.h:40
static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha=kTRUE)
Fill col with RGBA values corresponding to index ci.
Definition: TEveUtil.cxx:192
static void SetupEnvironment()
Setup Include and Macro paths.
Definition: TEveUtil.cxx:54
static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: TEveUtil.h:87
static void LoadMacro(const char *mac)
Makes sure that macro 'mac' is loaded, but do not reload it.
Definition: TEveUtil.cxx:180
static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: TEveUtil.h:81
static Bool_t CheckMacro(const char *mac)
Checks if macro 'mac' is loaded.
Definition: TEveUtil.cxx:140
The manager class for any TGeo geometry.
Definition: TGeoManager.h:43
An array of TObjects.
Definition: TObjArray.h:37
Mother of all ROOT objects.
Definition: TObject.h:37
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition: TVirtualPad.h:51
return c1
Definition: legend1.C:41
TF1 * f1
Definition: legend1.C:11
return c2
Definition: legend2.C:14
static constexpr double s