Logo ROOT   6.21/01
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 <list>
20 #include <map>
21 #include <set>
22 #include <exception>
23 
24 class TGeoManager;
25 
26 namespace ROOT {
27 namespace Experimental {
28 
29 class REveElement;
30 
31 ////////////////////////////////////////////////////////////////////////////////
32 /// REveUtil
33 /// Standard utility functions for Reve.
34 ////////////////////////////////////////////////////////////////////////////////
35 
36 class REveUtil
37 {
38 private:
40 
41 public:
42  virtual ~REveUtil() {}
43 
44  // Macro functions
45 
46  static Bool_t CheckMacro(const char *mac);
47  static void AssertMacro(const char *mac);
48  static void Macro(const char *mac);
49  static void LoadMacro(const char *mac);
50 
51  // Color management
52 
53  static void ColorFromIdx(Color_t ci, UChar_t col[4], Bool_t alpha = kTRUE);
54  static void ColorFromIdx(Color_t ci, UChar_t col[4], Char_t transparency);
55  static void ColorFromIdx(Float_t f1, Color_t c1, Float_t f2, Color_t c2, UChar_t col[4], Bool_t alpha = kTRUE);
56  static Color_t *FindColorVar(TObject *obj, const char *varname);
57 
58  static void SetColorBrightness(Float_t value, Bool_t full_redraw = kFALSE);
59 
60  // Math utilities
61 
62  static Bool_t IsU1IntervalContainedByMinMax(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ);
64 
65  static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ);
66  static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ);
67 
68  static Float_t GetFraction(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ);
69 };
70 
72 {
73  return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
74 }
75 
77 {
78  return IsU1IntervalContainedByMinMax(meanM - deltaM, meanM + deltaM, meanQ - deltaQ, meanQ + deltaQ);
79 }
80 
81 
82 ////////////////////////////////////////////////////////////////////////////////
83 /// REveGeoManagerHolder
84 /// Exception-safe global variable holders
85 ////////////////////////////////////////////////////////////////////////////////
86 
88 {
89 private:
90  TGeoManager *fManager{nullptr}; ///<! hold manager
91  Int_t fNSegments{0}; ///<! previous settings for num segments
92 
93 public:
94  REveGeoManagerHolder(TGeoManager *new_gmgr = nullptr, Int_t n_seg = 0);
96 };
97 
98 ////////////////////////////////////////////////////////////////////////////////
99 /// REveRefCnt
100 /// REveRefCnt base-class (interface)
101 ////////////////////////////////////////////////////////////////////////////////
102 
104 {
105 protected:
107 
108 public:
109  REveRefCnt() = default;
110  virtual ~REveRefCnt() {}
111 
112  REveRefCnt(const REveRefCnt &) : fRefCount(0) {}
113  REveRefCnt &operator=(const REveRefCnt &) { return *this; }
114 
115  void IncRefCount() { ++fRefCount; }
116  void DecRefCount()
117  {
118  if (--fRefCount <= 0)
119  OnZeroRefCount();
120  }
121 
122  virtual void OnZeroRefCount() { delete this; }
123 };
124 
125 ////////////////////////////////////////////////////////////////////////////////
126 /// REveRefBackPtr
127 /// reference-count with back pointers
128 ////////////////////////////////////////////////////////////////////////////////
129 
131 {
132 protected:
133  typedef std::map<REveElement *, Int_t> RefMap_t;
134 
136 
137 public:
138  REveRefBackPtr();
139  virtual ~REveRefBackPtr();
140 
143 
146  virtual void IncRefCount(REveElement *re);
147  virtual void DecRefCount(REveElement *re);
148 
149  virtual void StampBackPtrElements(UChar_t stamps);
150 };
151 
152 } // namespace Experimental
153 } // namespace ROOT
154 
155 #endif
std::map< REveElement *, Int_t > RefMap_t
Definition: REveUtil.hxx:133
An array of TObjects.
Definition: TObjArray.h:37
The manager class for any TGeo geometry.
Definition: TGeoManager.h:42
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:297
Returns the available number of logical cores.
Definition: StringConv.hxx:21
float Float_t
Definition: RtypesCore.h:53
static void Macro(const char *mac)
Execute macro &#39;mac&#39;. Do not reload the macro.
Definition: REveUtil.cxx:98
return c1
Definition: legend1.C:41
virtual ~REveRefBackPtr()
Destructor. Noop, should complain if back-ref list is not empty.
Definition: REveUtil.cxx:402
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:210
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:276
REveRefBackPtr reference-count with back pointers.
Definition: REveUtil.hxx:130
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
static Bool_t CheckMacro(const char *mac)
Checks if macro &#39;mac&#39; is loaded.
Definition: REveUtil.cxx:70
static TObjArray * fgDefaultColors
Definition: REveUtil.hxx:39
REveUtil Standard utility functions for Reve.
Definition: REveUtil.hxx:36
REveRefBackPtr()
Default constructor.
Definition: REveUtil.cxx:393
static Bool_t IsU1IntervalContainedByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: REveUtil.hxx:71
Int_t fNSegments
! previous settings for num segments
Definition: REveUtil.hxx:91
REveGeoManagerHolder Exception-safe global variable holders.
Definition: REveUtil.hxx:87
REveRefCnt & operator=(const REveRefCnt &)
Definition: REveUtil.hxx:113
short Color_t
Definition: RtypesCore.h:79
REveRefCnt(const REveRefCnt &)
Definition: REveUtil.hxx:112
virtual void StampBackPtrElements(UChar_t stamps)
Add given stamps to elements in the list of reverse references.
Definition: REveUtil.cxx:454
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:316
const Bool_t kFALSE
Definition: RtypesCore.h:88
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:191
REveRefCnt REveRefCnt base-class (interface)
Definition: REveUtil.hxx:103
return c2
Definition: legend2.C:14
TGeoManager * fManager
! hold manager
Definition: REveUtil.hxx:90
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:122
REveGeoManagerHolder(TGeoManager *new_gmgr=nullptr, Int_t n_seg=0)
Constructor.
Definition: REveUtil.cxx:346
static void AssertMacro(const char *mac)
Load and execute macro &#39;mac&#39; if it has not been loaded yet.
Definition: REveUtil.cxx:88
static void LoadMacro(const char *mac)
Makes sure that macro &#39;mac&#39; is loaded, but do not reload it.
Definition: REveUtil.cxx:110
Mother of all ROOT objects.
Definition: TObject.h:37
char Char_t
Definition: RtypesCore.h:29
REveRefBackPtr & operator=(const REveRefBackPtr &)
Assignment operator.
Definition: REveUtil.cxx:422
TF1 * f1
Definition: legend1.C:11
unsigned char UChar_t
Definition: RtypesCore.h:34
const Bool_t kTRUE
Definition: RtypesCore.h:87
static Bool_t IsU1IntervalOverlappingByMeanDelta(Float_t meanM, Float_t deltaM, Float_t meanQ, Float_t deltaQ)
Definition: REveUtil.hxx:76