ATLAS Offline Software
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 
17 #include <string>
19 #include <vector>
20 #include <utility> // std::pair
21 
22 
23 namespace 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 
50  ~SinglePlotDefinition() = default;
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();
151  redoPlotDigest();
152  redoTitleDigest();
153  redoTypeDigest();
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 
170  bool m_empty;
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
IDTPM::SinglePlotDefinition::setxBinsVec
void setxBinsVec(const std::vector< float > &vec)
Definition: SinglePlotDefinition.h:112
IDTPM::SinglePlotDefinition::m_zTitle
std::string m_zTitle
Definition: SinglePlotDefinition.h:161
IDTPM::SinglePlotDefinition::setzBinsVec
void setzBinsVec(const std::vector< float > &vec)
Definition: SinglePlotDefinition.h:118
IDTPM::SinglePlotDefinition::name
void name(std::string_view name_s)
Definition: SinglePlotDefinition.h:97
IDTPM::SinglePlotDefinition::zBinsVec
const std::vector< float > & zBinsVec() const
Definition: SinglePlotDefinition.h:78
IDTPM::SinglePlotDefinition::m_nBinsX
unsigned int m_nBinsX
Definition: SinglePlotDefinition.h:162
IDTPM::SinglePlotDefinition::m_folder
std::string m_folder
Definition: SinglePlotDefinition.h:167
IDTPM::SinglePlotDefinition::m_type
std::string m_type
Definition: SinglePlotDefinition.h:160
IDTPM::SinglePlotDefinition::m_doLogLinBinsZ
bool m_doLogLinBinsZ
Definition: SinglePlotDefinition.h:164
IDTPM::SinglePlotDefinition::m_xBinsVec
std::vector< float > m_xBinsVec
Definition: SinglePlotDefinition.h:165
IDTPM::SinglePlotDefinition::doVarBinsZ
bool doVarBinsZ() const
Definition: SinglePlotDefinition.h:81
IDTPM::SinglePlotDefinition::type
void type(std::string_view type_s)
Definition: SinglePlotDefinition.h:98
IDTPM::SinglePlotDefinition::setzBinLabelsVec
void setzBinLabelsVec(const std::vector< std::string > &vec)
Definition: SinglePlotDefinition.h:129
IDTPM::SinglePlotDefinition::redoPlotDigest
void redoPlotDigest()
recompute m_plotDigest
Definition: SinglePlotDefinition.cxx:157
IDTPM::SinglePlotDefinition::digest
void digest()
recompute m_identifier, m_plotDigest, m_titleDigest, m_is*D
Definition: SinglePlotDefinition.h:149
IDTPM::SinglePlotDefinition::SinglePlotDefinition
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.
Definition: SinglePlotDefinition.cxx:23
IDTPM::SinglePlotDefinition::redoIdDigest
void redoIdDigest()
recompute m_identifier
Definition: SinglePlotDefinition.cxx:137
IDTPM::SinglePlotDefinition::m_name
std::string m_name
main members
Definition: SinglePlotDefinition.h:159
IDTPM::SinglePlotDefinition::axesLimits_t
std::pair< float, float > axesLimits_t
typedef for axes limits: (lower bound, upper bound)
Definition: SinglePlotDefinition.h:30
IDTPM::SinglePlotDefinition::doLogLinBinsZ
void doLogLinBinsZ(bool doLogLinBinsZ_b)
Definition: SinglePlotDefinition.h:111
IDTPM::SinglePlotDefinition::name
const std::string & name() const
Definition: SinglePlotDefinition.h:58
IDTPM::SinglePlotDefinition::isEmpty
bool isEmpty() const
Definition: SinglePlotDefinition.h:86
IDTPM::SinglePlotDefinition::m_yBinLabelsVec
std::vector< std::string > m_yBinLabelsVec
Definition: SinglePlotDefinition.h:166
IDTPM::SinglePlotDefinition::isValid
bool isValid() const
Definition: SinglePlotDefinition.cxx:82
IDTPM::SinglePlotDefinition::doVarBinsX
bool doVarBinsX() const
Definition: SinglePlotDefinition.h:79
IDTPM::SinglePlotDefinition::m_doLogLinBinsY
bool m_doLogLinBinsY
Definition: SinglePlotDefinition.h:164
IDTPM::SinglePlotDefinition::~SinglePlotDefinition
~SinglePlotDefinition()=default
Default destructor.
IDTPM::SinglePlotDefinition::xBinLabelsVec
const std::vector< std::string > & xBinLabelsVec() const
Definition: SinglePlotDefinition.h:82
IDTPM::SinglePlotDefinition::yLow
float yLow() const
Definition: SinglePlotDefinition.h:69
IDTPM::SinglePlotDefinition
Definition: SinglePlotDefinition.h:25
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
IDTPM::SinglePlotDefinition::m_empty
bool m_empty
status member
Definition: SinglePlotDefinition.h:170
IDTPM::SinglePlotDefinition::m_xTitle
std::string m_xTitle
Definition: SinglePlotDefinition.h:161
IDTPM::SinglePlotDefinition::m_yAxis
axesLimits_t m_yAxis
Definition: SinglePlotDefinition.h:163
IDTPM::SinglePlotDefinition::doLogLinBinsY
bool doLogLinBinsY() const
Definition: SinglePlotDefinition.h:74
IDTPM::SinglePlotDefinition::nBinsX
unsigned int nBinsX() const
Definition: SinglePlotDefinition.h:64
IDTPM::SinglePlotDefinition::identifier
const std::string & identifier() const
Definition: SinglePlotDefinition.h:87
IDTPM::SinglePlotDefinition::yTitle
void yTitle(std::string_view yTitle_s)
Definition: SinglePlotDefinition.h:101
IDTPM::SinglePlotDefinition::yBinsVec
const std::vector< float > & yBinsVec() const
Definition: SinglePlotDefinition.h:77
IDTPM::SinglePlotDefinition::title
void title(std::string_view title_s)
Definition: SinglePlotDefinition.h:99
IDTPM::SinglePlotDefinition::folder
void folder(std::string_view folder_s)
Definition: SinglePlotDefinition.h:133
IDTPM::SinglePlotDefinition::setxBinLabelsVec
void setxBinLabelsVec(const std::vector< std::string > &vec)
Definition: SinglePlotDefinition.h:121
IDTPM::SinglePlotDefinition::doLogLinBinsY
void doLogLinBinsY(bool doLogLinBinsY_b)
Definition: SinglePlotDefinition.h:110
IDTPM::SinglePlotDefinition::xHigh
float xHigh() const
Definition: SinglePlotDefinition.h:68
IDTPM::SinglePlotDefinition::m_plotDigest
std::string m_plotDigest
Definition: SinglePlotDefinition.h:174
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
IDTPM::SinglePlotDefinition::m_title
std::string m_title
Definition: SinglePlotDefinition.h:161
IDTPM::SinglePlotDefinition::title
const std::string & title() const
Definition: SinglePlotDefinition.h:60
IDTPM::SinglePlotDefinition::m_identifier
std::string m_identifier
derived members, i.e. dependant on main members
Definition: SinglePlotDefinition.h:173
IDTPM::SinglePlotDefinition::nBinsZ
unsigned int nBinsZ() const
Definition: SinglePlotDefinition.h:66
IDTPM::SinglePlotDefinition::zBinLabelsVec
const std::vector< std::string > & zBinLabelsVec() const
Definition: SinglePlotDefinition.h:84
IDTPM::SinglePlotDefinition::doVarBinsY
bool doVarBinsY() const
Definition: SinglePlotDefinition.h:80
IDTPM::SinglePlotDefinition::type
const std::string & type() const
Definition: SinglePlotDefinition.h:59
IDTPM::SinglePlotDefinition::m_xBinLabelsVec
std::vector< std::string > m_xBinLabelsVec
Definition: SinglePlotDefinition.h:166
IDTPM::SinglePlotDefinition::m_titleDigest
std::string m_titleDigest
Definition: SinglePlotDefinition.h:175
IDTPM::SinglePlotDefinition::yLimits
void yLimits(float yLow, float yHigh)
Definition: SinglePlotDefinition.h:107
IDTPM::SinglePlotDefinition::xTitle
void xTitle(std::string_view xTitle_s)
Definition: SinglePlotDefinition.h:100
IDTPM::SinglePlotDefinition::zHigh
float zHigh() const
Definition: SinglePlotDefinition.h:72
IDTPM::SinglePlotDefinition::nBinsY
unsigned int nBinsY() const
Definition: SinglePlotDefinition.h:65
IDTPM::SinglePlotDefinition::zLimits
void zLimits(float zLow, float zHigh)
Definition: SinglePlotDefinition.h:108
IDTPM::SinglePlotDefinition::m_zBinLabelsVec
std::vector< std::string > m_zBinLabelsVec
Definition: SinglePlotDefinition.h:166
IDTPM::SinglePlotDefinition::yHigh
float yHigh() const
Definition: SinglePlotDefinition.h:70
IDTPM::SinglePlotDefinition::m_nBinsY
unsigned int m_nBinsY
Definition: SinglePlotDefinition.h:162
IDTPM::SinglePlotDefinition::xBinsVec
const std::vector< float > & xBinsVec() const
Definition: SinglePlotDefinition.h:76
IDTPM::SinglePlotDefinition::xLow
float xLow() const
Definition: SinglePlotDefinition.h:67
IDTPM::SinglePlotDefinition::doLogLinBinsZ
bool doLogLinBinsZ() const
Definition: SinglePlotDefinition.h:75
IDTPM::SinglePlotDefinition::m_xAxis
axesLimits_t m_xAxis
Definition: SinglePlotDefinition.h:163
IDTPM::SinglePlotDefinition::setEmpty
void setEmpty(bool empty=true)
Definition: SinglePlotDefinition.h:134
IDTPM::SinglePlotDefinition::nBinsX
void nBinsX(float nBinsX_f)
Definition: SinglePlotDefinition.h:103
IDTPM::SinglePlotDefinition::setyBinLabelsVec
void setyBinLabelsVec(const std::vector< std::string > &vec)
Definition: SinglePlotDefinition.h:125
IDTPM::SinglePlotDefinition::m_is2D
bool m_is2D
Definition: SinglePlotDefinition.h:176
IDTPM::SinglePlotDefinition::m_zBinsVec
std::vector< float > m_zBinsVec
Definition: SinglePlotDefinition.h:165
IDTPM::SinglePlotDefinition::yBinLabelsVec
const std::vector< std::string > & yBinLabelsVec() const
Definition: SinglePlotDefinition.h:83
IDTPM::SinglePlotDefinition::redoTitleDigest
void redoTitleDigest()
recompute m_titleDigest
Definition: SinglePlotDefinition.cxx:174
IDTPM::SinglePlotDefinition::m_is3D
bool m_is3D
Definition: SinglePlotDefinition.h:176
IDTPM::SinglePlotDefinition::titleDigest
const std::string & titleDigest() const
Definition: SinglePlotDefinition.h:89
IDTPM::SinglePlotDefinition::plotDigest
const std::string & plotDigest() const
Definition: SinglePlotDefinition.h:88
IDTPM::SinglePlotDefinition::zTitle
void zTitle(std::string_view zTitle_s)
Definition: SinglePlotDefinition.h:102
IDTPM::SinglePlotDefinition::m_is1D
bool m_is1D
Definition: SinglePlotDefinition.h:176
IDTPM::SinglePlotDefinition::xLimits
void xLimits(float xLow, float xHigh)
Definition: SinglePlotDefinition.h:106
IDTPM::SinglePlotDefinition::operator=
SinglePlotDefinition & operator=(const SinglePlotDefinition &)=default
= operator
IDTPM::SinglePlotDefinition::setyBinsVec
void setyBinsVec(const std::vector< float > &vec)
Definition: SinglePlotDefinition.h:115
IDTPM::SinglePlotDefinition::xTitle
const std::string & xTitle() const
Definition: SinglePlotDefinition.h:61
IDTPM::SinglePlotDefinition::m_yBinsVec
std::vector< float > m_yBinsVec
Definition: SinglePlotDefinition.h:165
IDTPM::SinglePlotDefinition::m_zAxis
axesLimits_t m_zAxis
Definition: SinglePlotDefinition.h:163
IDTPM::SinglePlotDefinition::m_nBinsZ
unsigned int m_nBinsZ
Definition: SinglePlotDefinition.h:162
IDTPM::SinglePlotDefinition::zLow
float zLow() const
Definition: SinglePlotDefinition.h:71
IDTPM::SinglePlotDefinition::m_yTitle
std::string m_yTitle
Definition: SinglePlotDefinition.h:161
IDTPM::SinglePlotDefinition::nBinsY
void nBinsY(float nBinsY_f)
Definition: SinglePlotDefinition.h:104
IDTPM::SinglePlotDefinition::m_doLogLinBinsX
bool m_doLogLinBinsX
Definition: SinglePlotDefinition.h:164
IDTPM::SinglePlotDefinition::yTitle
const std::string & yTitle() const
Definition: SinglePlotDefinition.h:62
IDTPM::SinglePlotDefinition::folder
const std::string & folder() const
Definition: SinglePlotDefinition.h:85
IDTPM
Athena include(s).
Definition: IPlotsDefinitionSvc.h:25
IDTPM::SinglePlotDefinition::doLogLinBinsX
bool doLogLinBinsX() const
Definition: SinglePlotDefinition.h:73
IDTPM::SinglePlotDefinition::doLogLinBinsX
void doLogLinBinsX(bool doLogLinBinsX_b)
Definition: SinglePlotDefinition.h:109
IDTPM::SinglePlotDefinition::nBinsZ
void nBinsZ(float nBinsZ_f)
Definition: SinglePlotDefinition.h:105
IDTPM::SinglePlotDefinition::redoTypeDigest
void redoTypeDigest()
recompute m_is*D
Definition: SinglePlotDefinition.cxx:187
IDTPM::SinglePlotDefinition::zTitle
const std::string & zTitle() const
Definition: SinglePlotDefinition.h:63