Logo ROOT  
Reference Guide
REveUtil.hxx
Go to the documentation of this file.
1// @(#)root/eve7:$Id$
2// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2019, 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 ROOT7_REveUtil
13#define ROOT7_REveUtil
14
15#include "REveTypes.hxx"
16
17#include "TError.h"
18
19#include <map>
20#include <set>
21#include <exception>
22
23class TGeoManager;
24
25namespace ROOT {
26namespace Experimental {
27
28class REveElement;
29
30////////////////////////////////////////////////////////////////////////////////
31/// REveUtil
32/// Standard utility functions for Reve.
33////////////////////////////////////////////////////////////////////////////////
34
36{
37private:
39
40public:
41 virtual ~REveUtil() {}
42
43 // Macro functions
44
45 static Bool_t CheckMacro(const char *mac);
46 static void AssertMacro(const char *mac);
47 static void Macro(const char *mac);
48 static void LoadMacro(const char *mac);
49
50 // Color management
51
52 static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha = kTRUE);
53 static void ColorFromIdx(Color_t ci, UChar_t col[4], Char_t transparency);
54 static void ColorFromIdx(Float_t f1, Color_t c1, Float_t f2, Color_t c2, UChar_t col[4], Bool_t alpha = kTRUE);
55 static Color_t *FindColorVar(TObject *obj, const char *varname);
56
57 static void SetColorBrightness(Float_t value, Bool_t full_redraw = kFALSE);
58
59 // Math utilities
60
63
64 static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ);
65 static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ);
66
67 static Float_t GetFraction(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ);
68};
69
71{
72 return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
73}
74
76{
77 return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
78}
79
80
81////////////////////////////////////////////////////////////////////////////////
82/// REveGeoManagerHolder
83/// Exception-safe global variable holders
84////////////////////////////////////////////////////////////////////////////////
85
87{
88private:
89 TGeoManager *fManager{nullptr}; ///<! hold manager
90 Int_t fNSegments{0}; ///<! previous settings for num segments
91
92public:
93 REveGeoManagerHolder(TGeoManager *new_gmgr = nullptr, Int_t n_seg = 0);
95};
96
97////////////////////////////////////////////////////////////////////////////////
98/// REveRefCnt
99/// REveRefCnt base-class (interface)
100////////////////////////////////////////////////////////////////////////////////
101
103{
104 REveRefCnt(const REveRefCnt &) = delete;
105 REveRefCnt &operator=(const REveRefCnt &) = delete;
106
107protected:
109
110public:
111 REveRefCnt() = default;
112 virtual ~REveRefCnt() {}
113
114 void IncRefCount() { ++fRefCount; }
116 {
117 if (--fRefCount <= 0)
119 }
120
121 virtual void OnZeroRefCount() = 0;
122};
123
124////////////////////////////////////////////////////////////////////////////////
125/// REveRefBackPtr
126/// reference-count with back pointers
127////////////////////////////////////////////////////////////////////////////////
128
130{
133
134protected:
135 typedef std::map<REveElement *, Int_t> RefMap_t;
136
138
139public:
140 REveRefBackPtr() = default;
141 virtual ~REveRefBackPtr();
142
145 virtual void IncRefCount(REveElement *re);
146 virtual void DecRefCount(REveElement *re);
147
148 virtual void StampBackPtrElements(UChar_t stamps);
149};
150
151} // namespace Experimental
152} // namespace ROOT
153
154#endif
int Int_t
Definition: RtypesCore.h:45
unsigned char UChar_t
Definition: RtypesCore.h:38
char Char_t
Definition: RtypesCore.h:33
const Bool_t kFALSE
Definition: RtypesCore.h:101
bool Bool_t
Definition: RtypesCore.h:63
short Color_t
Definition: RtypesCore.h:92
float Float_t
Definition: RtypesCore.h:57
const Bool_t kTRUE
Definition: RtypesCore.h:100
Base class for REveUtil visualization elements, providing hierarchy management, rendering control and...
REveGeoManagerHolder Exception-safe global variable holders.
Definition: REveUtil.hxx:87
Int_t fNSegments
! previous settings for num segments
Definition: REveUtil.hxx:90
TGeoManager * fManager
! hold manager
Definition: REveUtil.hxx:89
REveGeoManagerHolder(TGeoManager *new_gmgr=nullptr, Int_t n_seg=0)
Constructor.
Definition: REveUtil.cxx:342
REveRefBackPtr reference-count with back pointers.
Definition: REveUtil.hxx:130
REveRefBackPtr(const REveRefBackPtr &)=delete
virtual ~REveRefBackPtr()
Destructor. Noop, should complain if back-ref list is not empty.
Definition: REveUtil.cxx:389
std::map< REveElement *, Int_t > RefMap_t
Definition: REveUtil.hxx:135
REveRefBackPtr & operator=(const REveRefBackPtr &)=delete
virtual void StampBackPtrElements(UChar_t stamps)
Add given stamps to elements in the list of reverse references.
Definition: REveUtil.cxx:421
REveRefCnt REveRefCnt base-class (interface)
Definition: REveUtil.hxx:103
REveRefCnt(const REveRefCnt &)=delete
REveRefCnt & operator=(const REveRefCnt &)=delete
virtual void OnZeroRefCount()=0
REveUtil Standard utility functions for Reve.
Definition: REveUtil.hxx:36
static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: REveUtil.hxx:70
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: REveUtil.cxx:293
static void LoadMacro(const char *mac)
Makes sure that macro 'mac' is loaded, but do not reload it.
Definition: REveUtil.cxx:106
static void Macro(const char *mac)
Execute macro 'mac'. Do not reload the macro.
Definition: REveUtil.cxx:94
static Bool_t CheckMacro(const char *mac)
Checks if macro 'mac' is loaded.
Definition: REveUtil.cxx:66
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: REveUtil.cxx:312
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: REveUtil.cxx:206
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: REveUtil.cxx:272
static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: REveUtil.hxx:75
static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha=kTRUE)
Fill col with RGBA values corresponding to index ci.
Definition: REveUtil.cxx:118
static Color_t * FindColorVar(TObject *obj, const char *varname)
Find address of Color_t data-member with name varname in object obj.
Definition: REveUtil.cxx:187
static void AssertMacro(const char *mac)
Load and execute macro 'mac' if it has not been loaded yet.
Definition: REveUtil.cxx:84
static TObjArray * fgDefaultColors
Definition: REveUtil.hxx:38
The manager class for any TGeo geometry.
Definition: TGeoManager.h:45
An array of TObjects.
Definition: TObjArray.h:37
Mother of all ROOT objects.
Definition: TObject.h:37
return c1
Definition: legend1.C:41
TF1 * f1
Definition: legend1.C:11
return c2
Definition: legend2.C:14
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...