ATLAS Offline Software
Loading...
Searching...
No Matches
SinglePlotDefinition.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef INDETTRACKPERFMON_SINGLEPLOTDEFINITION_H
6#define INDETTRACKPERFMON_SINGLEPLOTDEFINITION_H
7
16
18#include <string>
19#include <vector>
20#include <utility> // std::pair
21
22
23namespace IDTPM {
24
26
27 public:
28
30 typedef std::pair< float, float > axesLimits_t;
31
34 const std::string& name = "", const std::string& type = "", const std::string& title = "",
35 const std::string& xTitle = "",
36 unsigned int nBinsX = 0, float xLow = 0., float xHigh = 0.,
37 bool doLogLinBinsX = false, const std::vector<float>& xBinsVec = {},
38 const std::vector< std::string >& xBinLabelsVec = {},
39 const std::string& yTitle = "",
40 unsigned int nBinsY = 0, float yLow = 0., float yHigh = 0.,
41 bool doLogLinBinsY = false, const std::vector<float>& yBinsVec = {},
42 const std::vector< std::string >& yBinLabelsVec = {},
43 const std::string& zTitle = "",
44 unsigned int nBinsZ = 0, float zLow = 0., float zHigh = 0.,
45 bool doLogLinBinsZ = false, const std::vector<float>& zBinsVec = {},
46 const std::vector< std::string >& zBinLabelsVec = {},
47 const std::string& folder = "" );
48
51
54
58 const std::string& name() const { return m_name; }
59 const std::string& type() const { return m_type; }
60 const std::string& title() const { return m_title; }
61 const std::string& xTitle() const { return m_xTitle; }
62 const std::string& yTitle() const { return m_yTitle; }
63 const std::string& zTitle() const { return m_zTitle; }
64 unsigned int nBinsX() const { return m_nBinsX; }
65 unsigned int nBinsY() const { return m_nBinsY; }
66 unsigned int nBinsZ() const { return m_nBinsZ; }
67 float xLow() const { return m_xAxis.first; }
68 float xHigh() const { return m_xAxis.second; }
69 float yLow() const { return m_yAxis.first; }
70 float yHigh() const { return m_yAxis.second; }
71 float zLow() const { return m_zAxis.first; }
72 float zHigh() const { return m_zAxis.second; }
73 bool doLogLinBinsX() const { return m_doLogLinBinsX; }
74 bool doLogLinBinsY() const { return m_doLogLinBinsY; }
75 bool doLogLinBinsZ() const { return m_doLogLinBinsZ; }
76 const std::vector<float>& xBinsVec() const { return m_xBinsVec; }
77 const std::vector<float>& yBinsVec() const { return m_yBinsVec; }
78 const std::vector<float>& zBinsVec() const { return m_zBinsVec; }
79 bool doVarBinsX() const { return ( not m_xBinsVec.empty() ); }
80 bool doVarBinsY() const { return ( not m_yBinsVec.empty() ); }
81 bool doVarBinsZ() const { return ( not m_zBinsVec.empty() ); }
82 const std::vector< std::string >& xBinLabelsVec() const { return m_xBinLabelsVec; }
83 const std::vector< std::string >& yBinLabelsVec() const { return m_yBinLabelsVec; }
84 const std::vector< std::string >& zBinLabelsVec() const { return m_zBinLabelsVec; }
85 const std::string& folder() const { return m_folder; }
86 bool isEmpty() const { return m_empty; }
87 const std::string& identifier() const { return m_identifier; }
88 const std::string& plotDigest() const { return m_plotDigest; }
89 const std::string& titleDigest() const { return m_titleDigest; }
90
91 bool isValid() const;
92
97 void name( std::string_view name_s ) { m_name = name_s; digest(); }
98 void type( std::string_view type_s ) { m_type = type_s; digest(); }
99 void title( std::string_view title_s ) { m_title = title_s; digest(); }
100 void xTitle( std::string_view xTitle_s ) { m_xTitle = xTitle_s; digest(); }
101 void yTitle( std::string_view yTitle_s ) { m_yTitle = yTitle_s; digest(); }
102 void zTitle( std::string_view zTitle_s ) { m_zTitle = zTitle_s; digest(); }
103 void nBinsX( float nBinsX_f ) { m_nBinsX = nBinsX_f; digest(); }
104 void nBinsY( float nBinsY_f ) { m_nBinsY = nBinsY_f; digest(); }
105 void nBinsZ( float nBinsZ_f ) { m_nBinsZ = nBinsZ_f; digest(); }
106 void xLimits( float xLow, float xHigh ) { m_xAxis = std::make_pair( xLow, xHigh ); digest(); }
107 void yLimits( float yLow, float yHigh ) { m_yAxis = std::make_pair( yLow, yHigh ); digest(); }
108 void zLimits( float zLow, float zHigh ) { m_zAxis = std::make_pair( zLow, zHigh ); digest(); }
109 void doLogLinBinsX( bool doLogLinBinsX_b ) { m_doLogLinBinsX = doLogLinBinsX_b; }
110 void doLogLinBinsY( bool doLogLinBinsY_b ) { m_doLogLinBinsY = doLogLinBinsY_b; }
111 void doLogLinBinsZ( bool doLogLinBinsZ_b ) { m_doLogLinBinsZ = doLogLinBinsZ_b; }
112 void setxBinsVec( const std::vector<float>& vec ) { if( not vec.empty() ) {
113 m_xBinsVec = vec; m_nBinsX = vec.size() - 1;
114 m_xAxis = std::make_pair( vec.front(), vec.back() ); digest(); } }
115 void setyBinsVec( const std::vector<float>& vec ) { if( not vec.empty() ) {
116 m_yBinsVec = vec; m_nBinsY = vec.size() - 1;
117 m_yAxis = std::make_pair( vec.front(), vec.back() ); digest(); } }
118 void setzBinsVec( const std::vector<float>& vec ) { if( not vec.empty() ) {
119 m_zBinsVec = vec; m_nBinsZ = vec.size() - 1;
120 m_zAxis = std::make_pair( vec.front(), vec.back() ); digest(); } }
121 void setxBinLabelsVec( const std::vector< std::string >& vec ) { if( not vec.empty() ) {
122 m_xTitle = "";
123 m_xBinLabelsVec = vec; m_nBinsX = vec.size();
124 m_xAxis = std::make_pair( 0, m_nBinsX ); digest(); } }
125 void setyBinLabelsVec( const std::vector< std::string >& vec ) { if( not vec.empty() ) {
126 m_yTitle = "";
127 m_yBinLabelsVec = vec; m_nBinsY = vec.size();
128 m_yAxis = std::make_pair( 0, m_nBinsY ); digest(); } }
129 void setzBinLabelsVec( const std::vector< std::string >& vec ) { if( not vec.empty() ) {
130 m_zTitle = "";
131 m_zBinLabelsVec = vec; m_nBinsZ = vec.size();
132 m_zAxis = std::make_pair( 0, m_nBinsZ ); digest(); } }
133 void folder( std::string_view folder_s ) { m_folder = folder_s; digest(); }
134 void setEmpty( bool empty = true ) { m_empty = empty; }
135
137 void redoIdDigest();
138
140 void redoPlotDigest();
141
143 void redoTitleDigest();
144
146 void redoTypeDigest();
147
149 void digest() {
150 redoIdDigest();
154 }
155
156 private:
157
159 std::string m_name;
160 std::string m_type;
162 unsigned int m_nBinsX, m_nBinsY, m_nBinsZ;
165 std::vector<float> m_xBinsVec, m_yBinsVec, m_zBinsVec;
166 std::vector< std::string > m_xBinLabelsVec, m_yBinLabelsVec, m_zBinLabelsVec;
167 std::string m_folder;
168
171
173 std::string m_identifier;
174 std::string m_plotDigest;
175 std::string m_titleDigest;
177
178 }; // class SinglePlotDefinition
179
180} // namespace IDTPM
181
182#endif // > !INDETTRACKPERFMON_SINGLEPLOTDEFINITION_H
std::vector< size_t > vec
static const Attributes_t empty
~SinglePlotDefinition()=default
Default destructor.
SinglePlotDefinition(const std::string &name="", const std::string &type="", const std::string &title="", const std::string &xTitle="", unsigned int nBinsX=0, float xLow=0., float xHigh=0., bool doLogLinBinsX=false, const std::vector< float > &xBinsVec={}, const std::vector< std::string > &xBinLabelsVec={}, const std::string &yTitle="", unsigned int nBinsY=0, float yLow=0., float yHigh=0., bool doLogLinBinsY=false, const std::vector< float > &yBinsVec={}, const std::vector< std::string > &yBinLabelsVec={}, const std::string &zTitle="", unsigned int nBinsZ=0, float zLow=0., float zHigh=0., bool doLogLinBinsZ=false, const std::vector< float > &zBinsVec={}, const std::vector< std::string > &zBinLabelsVec={}, const std::string &folder="")
Parametrised Constructor.
void setzBinLabelsVec(const std::vector< std::string > &vec)
void redoPlotDigest()
recompute m_plotDigest
const std::vector< float > & xBinsVec() const
void name(std::string_view name_s)
const std::string & zTitle() const
const std::vector< std::string > & yBinLabelsVec() const
void title(std::string_view title_s)
void type(std::string_view type_s)
std::vector< std::string > m_yBinLabelsVec
void setxBinLabelsVec(const std::vector< std::string > &vec)
const std::string & xTitle() const
std::pair< float, float > axesLimits_t
typedef for axes limits: (lower bound, upper bound)
void folder(std::string_view folder_s)
void setxBinsVec(const std::vector< float > &vec)
void xLimits(float xLow, float xHigh)
void redoIdDigest()
recompute m_identifier
const std::string & folder() const
const std::string & titleDigest() const
void redoTypeDigest()
recompute m_is*D
void setzBinsVec(const std::vector< float > &vec)
std::vector< std::string > m_zBinLabelsVec
const std::vector< float > & yBinsVec() const
const std::vector< float > & zBinsVec() const
void doLogLinBinsY(bool doLogLinBinsY_b)
void setyBinsVec(const std::vector< float > &vec)
const std::string & identifier() const
void setyBinLabelsVec(const std::vector< std::string > &vec)
void zTitle(std::string_view zTitle_s)
void doLogLinBinsZ(bool doLogLinBinsZ_b)
const std::string & yTitle() const
void xTitle(std::string_view xTitle_s)
void digest()
recompute m_identifier, m_plotDigest, m_titleDigest, m_is*D
const std::string & name() const
void yTitle(std::string_view yTitle_s)
void redoTitleDigest()
recompute m_titleDigest
const std::vector< std::string > & zBinLabelsVec() const
std::string m_name
main members
const std::vector< std::string > & xBinLabelsVec() const
const std::string & plotDigest() const
std::vector< std::string > m_xBinLabelsVec
void zLimits(float zLow, float zHigh)
void doLogLinBinsX(bool doLogLinBinsX_b)
const std::string & title() const
SinglePlotDefinition & operator=(const SinglePlotDefinition &)=default
= operator
void yLimits(float yLow, float yHigh)
const std::string & type() const
std::string m_identifier
derived members, i.e. dependant on main members
Athena include(s).