Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 <string>
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:
105 TEveException(const TString& s) : TString(s) {}
106 TEveException(const char* s) : TString(s) {}
107 TEveException(const std::string& s);
108
109 ~TEveException() noexcept override {}
110
111 const char* what() const noexcept override { return Data(); }
112
113 ClassDefOverride(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=nullptr, 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=nullptr, 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 ~TEveRefBackPtr() override;
197
200
203 virtual void IncRefCount(TEveElement* re);
204 virtual void DecRefCount(TEveElement* re);
205
206 virtual void StampBackPtrElements(UChar_t stamps);
207
208 ClassDefOverride(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
bool Bool_t
Definition RtypesCore.h:63
short Color_t
Definition RtypesCore.h:92
unsigned char UChar_t
Definition RtypesCore.h:38
char Char_t
Definition RtypesCore.h:37
const Bool_t kFALSE
Definition RtypesCore.h:101
float Float_t
Definition RtypesCore.h:57
const Bool_t kTRUE
Definition RtypesCore.h:100
#define ClassDef(name, id)
Definition Rtypes.h:337
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
bool operator==(const TString &t, const std::string &s)
Definition TEveUtil.cxx:409
TEveException operator+(const TEveException &s1, const std::string &s2)
Definition TEveUtil.cxx:424
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition TEveElement.h:36
Exception class thrown by TEve classes and macros.
Definition TEveUtil.h:102
TEveException(const char *s)
Definition TEveUtil.h:106
const char * what() const noexcept override
Definition TEveUtil.h:111
TEveException(const TString &s)
Definition TEveUtil.h:105
~TEveException() noexcept override
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:504
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:458
TEvePadHolder & operator=(const TEvePadHolder &)
TEvePadHolder(const TEvePadHolder &)
Base-class for reference-counted objects with reverse references to TEveElement objects.
Definition TEveUtil.h:187
~TEveRefBackPtr() override
Destructor. Noop, should complain if back-ref list is not empty.
Definition TEveUtil.cxx:549
virtual void StampBackPtrElements(UChar_t stamps)
Add given stamps to elements in the list of reverse references.
Definition TEveUtil.cxx:604
TEveRefBackPtr & operator=(const TEveRefBackPtr &)
Assignment operator.
Definition TEveUtil.cxx:569
RefMap_t::iterator RefMap_i
Definition TEveUtil.h:190
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:540
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
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:382
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:276
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:363
static void Macro(const char *mac)
Execute macro 'mac'. Do not reload the macro.
Definition TEveUtil.cxx:164
static void AssertMacro(const char *mac)
Load and execute macro 'mac' if it has not been loaded yet.
Definition TEveUtil.cxx:154
static void SetupGUI()
Setup icon pictures and mime-types.
Definition TEveUtil.cxx:93
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:257
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:342
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:188
static void SetupEnvironment()
Setup Include and Macro paths.
Definition TEveUtil.cxx:50
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:176
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:136
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
An array of TObjects.
Definition TObjArray.h:31
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:380
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