Logo ROOT   6.12/07
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 <list>
22 #include <map>
23 #include <set>
24 #include <exception>
25 
26 class TVirtualPad;
27 class TGeoManager;
28 
29 class TEveElement;
30 
31 /******************************************************************************/
32 // TEveUtil
33 /******************************************************************************/
34 
35 class TEveUtil
36 {
37 private:
39 
40 public:
41  virtual ~TEveUtil() {}
42 
43  // Environment, Macro functions
44 
45  static void SetupEnvironment();
46  static void SetupGUI();
47 
48  static Bool_t CheckMacro(const char* mac);
49  static void AssertMacro(const char* mac);
50  static void Macro(const char* mac);
51  static void LoadMacro(const char* mac);
52 
53  // Color management
54 
55  static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha=kTRUE);
56  static void ColorFromIdx(Color_t ci, UChar_t col[4], Char_t transparency);
57  static void ColorFromIdx(Float_t f1, Color_t c1, Float_t f2, Color_t c2,
58  UChar_t col[4], Bool_t alpha=kTRUE);
59  static Color_t* FindColorVar(TObject* obj, const char* varname);
60 
61  static void SetColorBrightness(Float_t value, Bool_t full_redraw=kFALSE);
62 
63 
64  // Math utilities
65 
67  Float_t minQ, Float_t maxQ);
69  Float_t minQ, Float_t maxQ);
70 
72  Float_t meanQ, Float_t deltaQ);
74  Float_t meanQ, Float_t deltaQ);
75 
76  static Float_t GetFraction(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ);
77 
78 
79  ClassDef(TEveUtil, 0); // Standard utility functions for Reve.
80 };
81 
83  Float_t meanQ, Float_t deltaQ)
84 {
85  return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
86 }
87 
89  Float_t meanQ, Float_t deltaQ)
90 {
91  return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
92 }
93 
94 
95 /******************************************************************************/
96 // Exceptions, string functions
97 /******************************************************************************/
98 
99 bool operator==(const TString& t, const std::string& s);
100 bool operator==(const std::string& s, const TString& t);
101 
102 class TEveException : public std::exception, public TString
103 {
104 public:
106  TEveException(const TString& s) : TString(s) {}
107  TEveException(const char* s) : TString(s) {}
108  TEveException(const std::string& s);
109 
110  virtual ~TEveException() noexcept {}
111 
112  virtual const char* what() const noexcept { return Data(); }
113 
114  ClassDef(TEveException, 1); // Exception-type thrown by Eve classes.
115 };
116 
117 TEveException operator+(const TEveException &s1, const std::string &s2);
118 TEveException operator+(const TEveException &s1, const TString &s2);
119 TEveException operator+(const TEveException &s1, const char *s2);
120 
121 
122 /******************************************************************************/
123 // Exception-safe global variable holders
124 /******************************************************************************/
125 
127 {
128 private:
131 
132  TEvePadHolder(const TEvePadHolder&); // Not implemented
133  TEvePadHolder& operator=(const TEvePadHolder&); // Not implemented
134 
135 public:
136  TEvePadHolder(Bool_t modify_update_p, TVirtualPad* new_pad=0, Int_t subpad=0);
137  virtual ~TEvePadHolder();
138 
139  ClassDef(TEvePadHolder, 0); // Exception-safe wrapper for temporary setting of gPad variable.
140 };
141 
143 {
144 private:
147 
148  TEveGeoManagerHolder(const TEveGeoManagerHolder&); // Not implemented
149  TEveGeoManagerHolder& operator=(const TEveGeoManagerHolder&); // Not implemented
150 
151 public:
152  TEveGeoManagerHolder(TGeoManager* new_gmgr=0, Int_t n_seg=0);
153  virtual ~TEveGeoManagerHolder();
154 
155  ClassDef(TEveGeoManagerHolder, 0); // Exception-safe wrapper for temporary setting of gGeoManager variable.
156 };
157 
158 
159 /******************************************************************************/
160 // TEveRefCnt base-class (interface)
161 /******************************************************************************/
162 
164 {
165 protected:
167 
168 public:
169  TEveRefCnt() : fRefCount(0) {}
170  virtual ~TEveRefCnt() {}
171 
172  TEveRefCnt(const TEveRefCnt&) : fRefCount(0) {}
173  TEveRefCnt& operator=(const TEveRefCnt&) { return *this; }
174 
175  void IncRefCount() { ++fRefCount; }
176  void DecRefCount() { if(--fRefCount <= 0) OnZeroRefCount(); }
177 
178  virtual void OnZeroRefCount() { delete this; }
179 
180  ClassDef(TEveRefCnt, 0); // Base-class for reference-counted objects.
181 };
182 
183 /******************************************************************************/
184 // TEveRefBackPtr reference-count with back pointers
185 /******************************************************************************/
186 
188 {
189 protected:
190  typedef std::map<TEveElement*, Int_t> RefMap_t;
191  typedef RefMap_t::iterator RefMap_i;
192 
193  RefMap_t fBackRefs;
194 
195 public:
196  TEveRefBackPtr();
197  virtual ~TEveRefBackPtr();
198 
201 
204  virtual void IncRefCount(TEveElement* re);
205  virtual void DecRefCount(TEveElement* re);
206 
207  virtual void StampBackPtrElements(UChar_t stamps);
208 
209  ClassDef(TEveRefBackPtr, 0); // Base-class for reference-counted objects with reverse references to TEveElement objects.
210 };
211 
212 #endif
static TObjArray * fgDefaultColors
Definition: TEveUtil.h:38
An array of TObjects.
Definition: TObjArray.h:37
The manager class for any TGeo geometry.
Definition: TGeoManager.h:38
Standard utility functions for Eve.
Definition: TEveUtil.h:35
TVirtualPad * fOldPad
Definition: TEveUtil.h:129
virtual ~TEveRefCnt()
Definition: TEveUtil.h:170
Int_t fRefCount
Definition: TEveUtil.h:166
float Float_t
Definition: RtypesCore.h:53
return c1
Definition: legend1.C:41
Base-class for reference-counted objects with reverse references to TEveElement objects.
Definition: TEveUtil.h:187
RefMap_t fBackRefs
Definition: TEveUtil.h:193
static void LoadMacro(const char *mac)
Makes sure that macro &#39;mac&#39; is loaded, but do not reload it.
Definition: TEveUtil.cxx:180
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
Basic string class.
Definition: TString.h:125
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual const char * what() const noexcept
Definition: TEveUtil.h:112
static void AssertMacro(const char *mac)
Load and execute macro &#39;mac&#39; if it has not been loaded yet.
Definition: TEveUtil.cxx:158
Exception safe wrapper for setting gPad.
Definition: TEveUtil.h:126
void IncRefCount()
Definition: TEveUtil.h:175
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
TGeoManager * fManager
Definition: TEveUtil.h:145
#define ClassDef(name, id)
Definition: Rtypes.h:320
static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: TEveUtil.h:82
static void SetupEnvironment()
Setup Include and Macro paths.
Definition: TEveUtil.cxx:54
TVirtualPad is an abstract base class for the Pad and Canvas classes.
Definition: TVirtualPad.h:49
TEveRefCnt(const TEveRefCnt &)
Definition: TEveUtil.h:172
virtual ~TEveUtil()
Definition: TEveUtil.h:41
short Color_t
Definition: RtypesCore.h:79
bool operator==(const TString &t, const std::string &s)
Definition: TEveUtil.cxx:413
TEveException(const char *s)
Definition: TEveUtil.h:107
Exception safe wrapper for setting gGeoManager.
Definition: TEveUtil.h:142
virtual ~TEveException() noexcept
Definition: TEveUtil.h:110
Base-class for reference-counted objects.
Definition: TEveUtil.h:163
virtual void OnZeroRefCount()
Definition: TEveUtil.h:178
const Bool_t kFALSE
Definition: RtypesCore.h:88
return c2
Definition: legend2.C:14
static void Macro(const char *mac)
Execute macro &#39;mac&#39;. Do not reload the macro.
Definition: TEveUtil.cxx:168
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
static constexpr double s
TEveRefCnt & operator=(const TEveRefCnt &)
Definition: TEveUtil.h:173
static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: TEveUtil.h:88
Binding & operator=(OUT(*fun)(void))
Mother of all ROOT objects.
Definition: TObject.h:37
char Char_t
Definition: RtypesCore.h:29
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
Bool_t fModifyUpdateP
Definition: TEveUtil.h:130
TF1 * f1
Definition: legend1.C:11
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
Exception class thrown by TEve classes and macros.
Definition: TEveUtil.h:102
unsigned char UChar_t
Definition: RtypesCore.h:34
std::map< TEveElement *, Int_t > RefMap_t
Definition: TEveUtil.h:190
void DecRefCount()
Definition: TEveUtil.h:176
static Bool_t CheckMacro(const char *mac)
Checks if macro &#39;mac&#39; is loaded.
Definition: TEveUtil.cxx:140
TEveRefCnt()
Definition: TEveUtil.h:169
TEveException operator+(const TEveException &s1, const std::string &s2)
Definition: TEveUtil.cxx:428
RefMap_t::iterator RefMap_i
Definition: TEveUtil.h:191
const Bool_t kTRUE
Definition: RtypesCore.h:87
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
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 void SetupGUI()
Setup icon pictures and mime-types.
Definition: TEveUtil.cxx:97
TEveException(const TString &s)
Definition: TEveUtil.h:106