ATLAS Offline Software
LWHist.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
7 // //
8 // Header file for class LWHist //
9 // //
10 // Description: Base class for the light weight histogram //
11 // classes. //
12 // //
13 // Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
14 // Initial version: March 2009 //
15 // //
17 
18 #ifndef LWHIST_H
19 #define LWHIST_H
20 
22 
23 class TH1;
24 class TAxis;
25 
26 class LWHist {
27 public:
28 
29  static void safeDelete(LWHist*);//Use this rather than a simple delete.
30 
31  //Use methods with names similar to the ones found in TH1F (although
32  //not exactly the same signature):
33  void SetName(const char*);
34  void SetTitle(const char*);
35  void SetNameTitle(const char*name,const char*title);
36  const char* GetName() const;
37  const char* GetTitle() const;
38 
39  virtual unsigned GetEntries() const = 0;//returns double in ROOT
40 
41  virtual void SetEntries(unsigned) = 0;
42 
43  virtual void Reset() = 0;//Clears accumulated contents and statistics
44 
45  //We even support some of the most popular decoration-style things,
46  //for easier migration from ROOT classes:
47  class LWHistAxis;
48  LWHistAxis * GetXaxis();
49  LWHistAxis * GetYaxis();
50  LWHistAxis * GetZaxis();
51  short GetMarkerColor() const;
52  short GetMarkerStyle() const;
53  float GetMarkerSize() const;
54  void SetMarkerColor( short c = 1);
55  void SetMarkerStyle( short s = 1 );
56  void SetMarkerSize( float sz = 1);
57  void SetXTitle(const char *);
58  void SetYTitle(const char *);
59  void SetZTitle(const char *);
60  void SetMinimum(const double& minimum = -1111 );
61  void SetMaximum(const double& maximum = -1111 );
62  void SetOption(const char* option=" ");//Simply passes the options on to the ROOT hist. YMMV.
63  virtual double Integral() const = 0;
64 
65  //Methods for the monitoring framework:
66 
67  //For convenience it is possible to assign custom data to an LWHist
68  //[NB: used by the AthenaMonitoring framework]:
69  void setCustomData(void*data) { m_customData = data; }
70  const void * getCustomData() const { return m_customData; }
71  void * getCustomData() { return m_customData; }
72  virtual TH1* getROOTHistBase() = 0;
73  bool usingROOTBackend() const { return m_usingROOTBackend; }
74  bool ownsROOTHisto() const { return m_ownsRootHisto; }
75  void setOwnsROOTHisto(bool b) { m_ownsRootHisto = b; }
76 protected:
77  LWHist(const char* name, const char* title, bool rootbackend);
78  virtual ~LWHist();
79  virtual bool apply(TH1*) const;
80  virtual void clearKeptROOTHist() = 0;
81  virtual const TH1* getROOTHistBaseNoAlloc() const = 0;
82  virtual TH1* getROOTHistBaseNoAlloc() = 0;
83 
84  virtual void clear();//releases all held memory, apart from any held ROOT histograms.
85  virtual double actualGetBinCenterX(int bin) const = 0;
86  virtual double actualGetBinCenterY(int bin) const = 0;
87  virtual unsigned actualFindBinX(const double&) const = 0;
88  virtual unsigned actualFindBinY(const double&) const = 0;
89  virtual unsigned actualGetNBinsX() const = 0;
90  virtual unsigned actualGetNBinsY() const = 0;
91  unsigned short m_nBytesFromPool;//0 when histogram new'ed normally,
92  //otherwise set to number of bytes.
93 private:
94  const bool m_usingROOTBackend;
96  // It is illegal to copy/assign these histograms:
97  LWHist( const LWHist & );
98  LWHist & operator= ( const LWHist & );
99  char* m_name;
100  char* m_title;
101  class LWHistDecorations;
103  void * m_customData;
104  void ensureInitDecorations();
105 
106 };
107 
108 class LWBinLabels;
110 public:
111  void SetLabelSize(float size=0.04);
112  void SetTitle(const char*);
113  float GetLabelSize() const { return m_labelSize; }
114  const char* GetTitle() const { return m_title; }
115  double GetBinCenter(int bin) const;//int rather than unsigned for this one
116  const char * GetBinLabel(unsigned bin) const;//0 if not set
117  void SetBinLabel(unsigned bin, const char* label);
118  unsigned GetNbins() const;
119  unsigned FindBin(const double& x);
120 private:
121  LWHistAxis( const LWHistAxis & );
123  friend class LWHist;
124  friend class LWPools;
125  LWHistAxis(LWHist *);
126  ~LWHistAxis();
127  const TAxis * rootAxis() const;
128  TAxis * rootAxis();
129  bool isXAxis() const;
130  bool isYAxis() const;
132  float m_labelSize;
133  char * m_title;
135 };
136 
137 
138 #endif
LWHist::LWHistAxis::GetNbins
unsigned GetNbins() const
Definition: LWHist.cxx:383
LWHist
Definition: LWHist.h:26
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
LWHist::GetZaxis
LWHistAxis * GetZaxis()
Definition: LWHist.cxx:328
LWHist::SetZTitle
void SetZTitle(const char *)
Definition: LWHist.cxx:449
LWHist::SetEntries
virtual void SetEntries(unsigned)=0
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
fitman.sz
sz
Definition: fitman.py:527
LWHist::m_ownsRootHisto
bool m_ownsRootHisto
Definition: LWHist.h:95
LWHist::actualGetNBinsY
virtual unsigned actualGetNBinsY() const =0
LWHist::ensureInitDecorations
void ensureInitDecorations()
Definition: LWHist.cxx:90
PlotCalibFromCool.label
label
Definition: PlotCalibFromCool.py:78
LWHist::LWHist
LWHist(const LWHist &)
LWBinLabels
Definition: LWBinLabels.h:25
LWHist::GetMarkerSize
float GetMarkerSize() const
Definition: LWHist.cxx:113
LWPools
Definition: LWPools.h:29
LWHist::getCustomData
void * getCustomData()
Definition: LWHist.h:71
bin
Definition: BinsDiffFromStripMedian.h:43
LWHist::SetName
void SetName(const char *)
Definition: LWHist.cxx:222
LWHist::LWHistAxis::GetLabelSize
float GetLabelSize() const
Definition: LWHist.h:113
LWHist::actualFindBinY
virtual unsigned actualFindBinY(const double &) const =0
LWHist::ownsROOTHisto
bool ownsROOTHisto() const
Definition: LWHist.h:74
LWHist::SetOption
void SetOption(const char *option=" ")
Definition: LWHist.cxx:460
x
#define x
LWHist::LWHistAxis::~LWHistAxis
~LWHistAxis()
Definition: LWHist.cxx:379
LWHist::GetMarkerColor
short GetMarkerColor() const
Definition: LWHist.cxx:96
LWHist::SetMarkerStyle
void SetMarkerStyle(short s=1)
Definition: LWHist.cxx:133
LWHist::GetXaxis
LWHistAxis * GetXaxis()
Definition: LWHist.cxx:309
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
LWHist::usingROOTBackend
bool usingROOTBackend() const
Definition: LWHist.h:73
LWHist::GetTitle
const char * GetTitle() const
Definition: LWHist.cxx:372
LWHist::m_customData
void * m_customData
Definition: LWHist.h:103
LWHist::LWHistAxis::m_title
char * m_title
Definition: LWHist.h:133
LWHist::LWHistAxis::isXAxis
bool isXAxis() const
Definition: LWHist.cxx:380
LWHist::LWHistAxis::SetTitle
void SetTitle(const char *)
Definition: LWHist.cxx:359
LWHist::actualFindBinX
virtual unsigned actualFindBinX(const double &) const =0
LWHist::LWHistAxis::SetLabelSize
void SetLabelSize(float size=0.04)
Definition: LWHist.cxx:352
LWHist::LWHistAxis::rootAxis
const TAxis * rootAxis() const
Definition: LWHist.cxx:340
covarianceTool.title
title
Definition: covarianceTool.py:542
LWHist::LWHist
LWHist(const char *name, const char *title, bool rootbackend)
Definition: LWHist.cxx:189
LWHist::GetName
const char * GetName() const
Definition: LWHist.cxx:366
LWHist::m_name
char * m_name
Definition: LWHist.h:99
LWHist::Integral
virtual double Integral() const =0
LWHist::~LWHist
virtual ~LWHist()
Definition: LWHist.cxx:215
LWHist::getCustomData
const void * getCustomData() const
Definition: LWHist.h:70
LWHist::m_usingROOTBackend
const bool m_usingROOTBackend
Definition: LWHist.h:94
LWHist::LWHistAxis
Definition: LWHist.h:109
LWHist::SetMinimum
void SetMinimum(const double &minimum=-1111)
Definition: LWHist.cxx:162
LWHist::SetNameTitle
void SetNameTitle(const char *name, const char *title)
Definition: LWHist.cxx:244
LWHist::LWHistAxis::operator=
LWHistAxis & operator=(const LWHistAxis &)
LWHist::SetXTitle
void SetXTitle(const char *)
Definition: LWHist.cxx:431
LWHist::LWHistAxis::isYAxis
bool isYAxis() const
Definition: LWHist.cxx:381
LWHist::SetMarkerSize
void SetMarkerSize(float sz=1)
Definition: LWHist.cxx:150
LWHist::LWHistAxis::GetTitle
const char * GetTitle() const
Definition: LWHist.h:114
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
LWHist::getROOTHistBaseNoAlloc
virtual TH1 * getROOTHistBaseNoAlloc()=0
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
LWHist::LWHistAxis::SetBinLabel
void SetBinLabel(unsigned bin, const char *label)
Definition: LWHist.cxx:411
LWHist::SetYTitle
void SetYTitle(const char *)
Definition: LWHist.cxx:440
LWHist::clear
virtual void clear()
Definition: LWHist.cxx:474
LWHist::SetMarkerColor
void SetMarkerColor(short c=1)
Definition: LWHist.cxx:121
LWHist::m_title
char * m_title
Definition: LWHist.h:100
LWHist::setOwnsROOTHisto
void setOwnsROOTHisto(bool b)
Definition: LWHist.h:75
LWHist::LWHistAxis::FindBin
unsigned FindBin(const double &x)
Definition: LWHist.cxx:423
LWHist::actualGetNBinsX
virtual unsigned actualGetNBinsX() const =0
LWHist::safeDelete
static void safeDelete(LWHist *)
Definition: LWHist.cxx:30
LWHist::Reset
virtual void Reset()=0
LWHist::LWHistAxis::m_labelSize
float m_labelSize
Definition: LWHist.h:132
LWHist::GetEntries
virtual unsigned GetEntries() const =0
LWHist::LWHistAxis::m_hist
LWHist * m_hist
Definition: LWHist.h:131
LWHist::LWHistAxis::LWHistAxis
LWHistAxis(const LWHistAxis &)
LWHist::apply
virtual bool apply(TH1 *) const
Definition: LWHist.cxx:256
TH1
Definition: rootspy.cxx:268
LWHist::getROOTHistBaseNoAlloc
virtual const TH1 * getROOTHistBaseNoAlloc() const =0
LWHist::clearKeptROOTHist
virtual void clearKeptROOTHist()=0
LWHist::LWHistAxis::GetBinCenter
double GetBinCenter(int bin) const
Definition: LWHist.cxx:391
LWHist::m_decorations
LWHistDecorations * m_decorations
Definition: LWHist.h:101
LWHist::SetTitle
void SetTitle(const char *)
Definition: LWHist.cxx:233
LWHist::LWHistAxis::m_binLabels
LWBinLabels * m_binLabels
Definition: LWHist.h:134
no_sanitize_undefined.h
Helper to disable undefined behavior sanitizer for a function.
LWHist::GetMarkerStyle
short GetMarkerStyle() const
Definition: LWHist.cxx:105
LWHist::LWHistDecorations
Definition: LWHist.cxx:53
LWHist::actualGetBinCenterY
virtual double actualGetBinCenterY(int bin) const =0
LWHist::getROOTHistBase
virtual TH1 * getROOTHistBase()=0
LWHist::LWHistAxis::GetBinLabel
const char * GetBinLabel(unsigned bin) const
Definition: LWHist.cxx:401
LWHist::m_nBytesFromPool
unsigned short m_nBytesFromPool
Definition: LWHist.h:91
python.compressB64.c
def c
Definition: compressB64.py:93
LWHist::GetYaxis
LWHistAxis * GetYaxis()
Definition: LWHist.cxx:319
LWHist::setCustomData
void setCustomData(void *data)
Definition: LWHist.h:69
LWHist::actualGetBinCenterX
virtual double actualGetBinCenterX(int bin) const =0
LWHist::operator=
LWHist & operator=(const LWHist &)
LWHist::SetMaximum
void SetMaximum(const double &maximum=-1111)
Definition: LWHist.cxx:175