ROOT  6.06/09
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);
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() throw () {}
111 
112  virtual const char* what() const throw () { 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:39
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
TCanvas * c1
Definition: legend1.C:2
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 'mac' 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
virtual ~TEveGeoManagerHolder()
Destructor.
Definition: TEveUtil.cxx:508
Basic string class.
Definition: TString.h:137
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
TEveRefBackPtr & operator=(const TEveRefBackPtr &)
Assignment operator.
Definition: TEveUtil.cxx:573
static void AssertMacro(const char *mac)
Load and execute macro 'mac' if it has not been loaded yet.
Definition: TEveUtil.cxx:158
const char * Data() const
Definition: TString.h:349
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
TEveGeoManagerHolder(const TEveGeoManagerHolder &)
static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: TEveUtil.h:82
ClassDef(TEvePadHolder, 0)
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:59
TEvePadHolder & operator=(const TEvePadHolder &)
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
ClassDef(TEveRefBackPtr, 0)
ClassDef(TEveRefCnt, 0)
Exception safe wrapper for setting gGeoManager.
Definition: TEveUtil.h:142
Base-class for reference-counted objects.
Definition: TEveUtil.h:163
virtual void OnZeroRefCount()
Definition: TEveUtil.h:178
virtual ~TEvePadHolder()
Destructor.
Definition: TEveUtil.cxx:462
TEveRefBackPtr()
Default constructor.
Definition: TEveUtil.cxx:544
return c2
Definition: legend2.C:14
ClassDef(TEveException, 1)
static void Macro(const char *mac)
Execute macro 'mac'. 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
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
TEveGeoManagerHolder & operator=(const TEveGeoManagerHolder &)
virtual ~TEveRefBackPtr()
Destructor. Noop, should complain if back-ref list is not empty.
Definition: TEveUtil.cxx:553
Mother of all ROOT objects.
Definition: TObject.h:58
ClassDef(TEveUtil, 0)
char Char_t
Definition: RtypesCore.h:29
virtual ~TEveException()
Definition: TEveUtil.h:110
double f2(const double *x)
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
virtual void StampBackPtrElements(UChar_t stamps)
Add given stamps to elements in the list of reverse references.
Definition: TEveUtil.cxx:608
void DecRefCount()
Definition: TEveUtil.h:176
ClassDef(TEveGeoManagerHolder, 0)
static Bool_t CheckMacro(const char *mac)
Checks if macro 'mac' is loaded.
Definition: TEveUtil.cxx:140
const Bool_t kTRUE
Definition: Rtypes.h:91
TEveRefCnt()
Definition: TEveUtil.h:169
TEveException operator+(const TEveException &s1, const std::string &s2)
Definition: TEveUtil.cxx:428
TObject * obj
float value
Definition: math.cpp:443
RefMap_t::iterator RefMap_i
Definition: TEveUtil.h:191
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
virtual const char * what() const
Definition: TEveUtil.h:112
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
TEvePadHolder(const TEvePadHolder &)
static void SetupGUI()
Setup icon pictures and mime-types.
Definition: TEveUtil.cxx:97
TEveException(const TString &s)
Definition: TEveUtil.h:106