ATLAS Offline Software
DrawCanvasObject.cxx
Go to the documentation of this file.
1 
2 
3 #include "DrawCanvasObject.h"
4 
5 
6 namespace MuonValR4::detail {
10 
11  inline constexpr void expand(const double v, Range_t& r) {
12  r[0] = std::min(r[0], v);
13  r[1] = std::max(r[1], v);
14  }
15  inline void assignIfNotEmpty(const std::string& inStr, std::string& outStr) {
16  if (!inStr.empty()){
17  outStr = inStr;
18  }
19  }
20 
21  DrawCanvasObject::DrawCanvasObject(const std::string& canvasName,
22  const std::size_t evtNumber):
23  m_name{canvasName},
24  m_evt{evtNumber}{}
25 
26  double DrawCanvasObject::corner(const AxisRanges r) const {
27  const double deltaX = 0.5*(m_axisRanges[0][1] - m_axisRanges[0][0]) * m_axisScale;
28  const double deltaY = 0.5*(m_axisRanges[1][1] - m_axisRanges[1][0]) * m_axisScale;
29  switch (r) {
30  using enum AxisRanges;
31  case xLow:
32  case xHigh: {
33  const double mid = 0.5*(m_axisRanges[0][1] + m_axisRanges[0][0]);
34  return mid + (r == xLow ? -1. : 1.) * std::max(deltaX, deltaY * (1. -2.*m_quadCan));
35  } case yLow:
36  case yHigh: {
37  const double mid = 0.5*(m_axisRanges[1][1] + m_axisRanges[1][0]);
38  return mid + (r == yLow ? -1. : 1.) * std::max(deltaY, deltaX * (1. -2.*m_quadCan));
39  }
40  }
41  return s_dblMax;
42  }
43  void DrawCanvasObject::setRangeScale(const double s, bool quadCan) {
44  m_axisScale = std::max(1., s);
45  m_quadCan = quadCan;
46  }
48  bool DrawCanvasObject::trashed() const { return m_isTrashed; }
49  const std::string& DrawCanvasObject::name() const { return m_name; }
50  std::size_t DrawCanvasObject::event() const { return m_evt; }
51  const std::string& DrawCanvasObject::xTitle() const { return m_xTitle; }
52  const std::string& DrawCanvasObject::yTitle() const { return m_yTitle; }
53  const std::string& DrawCanvasObject::zTitle() const { return m_zTitle; }
56  void DrawCanvasObject::expandPad(const double x, const double y) {
57  expand(x, m_axisRanges[0]);
58  expand(y, m_axisRanges[1]);
59  }
60  void DrawCanvasObject::add(PrimitivePtr_t&& drawMe, const std::string& drawOpt) {
61  m_primitives.emplace_back(std::move(drawMe), drawOpt);
62  }
63  void DrawCanvasObject::add(std::vector<PrimitivePtr_t> && drawMe) {
64  for (PrimitivePtr_t& obj : drawMe) {
65  add(std::move(obj));
66  }
67  }
68  void DrawCanvasObject::setAxisTitles(const std::string& xTitle,
69  const std::string& yTitle,
70  const std::string& zTitle){
74  }
75 }
beamspotman.r
def r
Definition: beamspotman.py:672
MuonValR4::detail::DrawCanvasObject::s_dblMax
static constexpr double s_dblMax
Definition: DrawCanvasObject.h:56
MuonValR4::detail::DrawCanvasObject::DrawCanvasObject
DrawCanvasObject(const std::string &canvasName, const std::size_t evtNumber)
Definition: DrawCanvasObject.cxx:21
makeComparison.deltaY
int deltaY
Definition: makeComparison.py:44
MuonValR4::detail::DrawCanvasObject::m_evt
std::size_t m_evt
Definition: DrawCanvasObject.h:62
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
DrawCanvasObject.h
MuonValR4::detail::DrawCanvasObject::PrimitiveVec_t
std::vector< std::pair< PrimitivePtr_t, std::string > > PrimitiveVec_t
Definition: DrawCanvasObject.h:17
MuonValR4::detail::DrawCanvasObject::m_axisScale
double m_axisScale
Definition: DrawCanvasObject.h:58
m_name
std::string m_name
Definition: ColumnarPhysliteTest.cxx:64
MuonValR4::detail::Range_t
DrawCanvasObject::Range_t Range_t
Definition: DrawCanvasObject.cxx:9
x
#define x
MuonValR4::detail::PrimitivePtr_t
DrawCanvasObject::PrimitivePtr_t PrimitivePtr_t
Definition: DrawCanvasObject.cxx:7
MuonValR4::detail
Definition: DrawCanvasObject.cxx:6
MuonValR4::detail::DrawCanvasObject::zTitle
const std::string & zTitle() const
Returns the title of the z-axis.
Definition: DrawCanvasObject.cxx:53
MuonValR4::detail::DrawCanvasObject::expandPad
virtual void expandPad(const double x, const double y) override final
Expands the axes of the pad such that the coordinates are guaranteed to appear at least at the Canvas...
Definition: DrawCanvasObject.cxx:56
MuonValR4::detail::DrawCanvasObject::trashed
bool trashed() const
Returns whether the canvas has been trashed.
Definition: DrawCanvasObject.cxx:48
MuonValR4::detail::DrawCanvasObject::m_primitives
PrimitiveVec_t m_primitives
Definition: DrawCanvasObject.h:59
MuonValR4::detail::DrawCanvasObject::setAxisTitles
virtual void setAxisTitles(const std::string &xTitle, const std::string &yTitle, const std::string &zTitle) override final
Define the titles of the Canvas axes.
Definition: DrawCanvasObject.cxx:68
MuonValR4::detail::DrawCanvasObject::m_quadCan
bool m_quadCan
Definition: DrawCanvasObject.h:68
MuonValR4::detail::DrawCanvasObject::corner
virtual double corner(const AxisRanges r) const override final
Retrieves a corner coordinate of the drawn canvas.
Definition: DrawCanvasObject.cxx:26
MuonValR4::detail::expand
constexpr void expand(const double v, Range_t &r)
Definition: DrawCanvasObject.cxx:11
compareGeometries.deltaX
float deltaX
Definition: compareGeometries.py:32
MuonValR4::detail::DrawCanvasObject::xTitle
const std::string & xTitle() const
Returns the title of the x-axis.
Definition: DrawCanvasObject.cxx:51
MuonValR4::detail::DrawCanvasObject::yTitle
const std::string & yTitle() const
Returns the title of the y-axis.
Definition: DrawCanvasObject.cxx:52
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges
AxisRanges
Enum to select the corner coordinates shown by the plot.
Definition: IRootVisualizationService.h:66
integrator_readDb.outStr
outStr
Definition: integrator_readDb.py:47
MuonValR4::detail::DrawCanvasObject::primitives
const PrimitiveVec_t & primitives() const
Definition: DrawCanvasObject.cxx:54
MuonValR4::detail::DrawCanvasObject::event
std::size_t event() const
Event number in which the canvas has been created.
Definition: DrawCanvasObject.cxx:50
MuonValR4::detail::DrawCanvasObject::m_xTitle
std::string m_xTitle
Definition: DrawCanvasObject.h:64
MuonValR4::detail::DrawCanvasObject::PrimitivePtr_t
IRootVisualizationService::PrimitivePtr_t PrimitivePtr_t
Definition: DrawCanvasObject.h:16
MuonValR4::detail::DrawCanvasObject::m_axisRanges
Range2D_t m_axisRanges
Definition: DrawCanvasObject.h:57
python.PyAthena.v
v
Definition: PyAthena.py:154
y
#define y
MuonValR4::detail::DrawCanvasObject::name
const std::string & name() const
Name of the canvas.
Definition: DrawCanvasObject.cxx:49
MuonValR4::detail::DrawCanvasObject::m_yTitle
std::string m_yTitle
Definition: DrawCanvasObject.h:65
MuonValR4::detail::assignIfNotEmpty
void assignIfNotEmpty(const std::string &inStr, std::string &outStr)
Definition: DrawCanvasObject.cxx:15
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
MuonValR4::detail::DrawCanvasObject::trash
virtual void trash() override final
If no object has been drawn mark the plot as junk.
Definition: DrawCanvasObject.cxx:47
MuonValR4::detail::DrawCanvasObject::m_isTrashed
std::atomic< bool > m_isTrashed
Definition: DrawCanvasObject.h:69
MuonValR4::detail::DrawCanvasObject::add
virtual void add(PrimitivePtr_t &&drawMe, const std::string &drawOpt="") override final
Add a TObject to the ICanvasObject for later drawing onto a TCanvas.
Definition: DrawCanvasObject.cxx:60
python.PyAthena.obj
obj
Definition: PyAthena.py:132
MuonValR4::detail::DrawCanvasObject::setRangeScale
virtual void setRangeScale(const double s, bool quadCan) override final
To ensure that the drawn objects are not cut by the axis limits, a flat scale-factor on the drawn axi...
Definition: DrawCanvasObject.cxx:43
MuonValR4::detail::DrawCanvasObject::m_zTitle
std::string m_zTitle
Definition: DrawCanvasObject.h:66
MuonValR4::detail::DrawCanvasObject::m_name
std::string m_name
Definition: DrawCanvasObject.h:61
MuonValR4::detail::PrimitiveVec_t
DrawCanvasObject::PrimitiveVec_t PrimitiveVec_t
Definition: DrawCanvasObject.cxx:8
MuonValR4::detail::DrawCanvasObject::Range_t
std::array< double, 2 > Range_t
Definition: DrawCanvasObject.h:18