ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonPhaseII
MuonValidation
MuonVisualizationHelpersR4
src
DrawCanvasObject.cxx
Go to the documentation of this file.
1
2
3
#include "
DrawCanvasObject.h
"
4
#include <algorithm>
5
#include <utility>
6
7
namespace
MuonValR4::detail
{
8
using
PrimitivePtr_t
=
DrawCanvasObject::PrimitivePtr_t
;
9
using
PrimitiveVec_t
=
DrawCanvasObject::PrimitiveVec_t
;
10
using
Range_t
=
DrawCanvasObject::Range_t
;
11
12
inline
constexpr
void
expand
(
const
double
v,
Range_t
&
r
) {
13
r
[0] = std::min(
r
[0], v);
14
r
[1] = std::max(
r
[1], v);
15
}
16
inline
void
assignIfNotEmpty
(
const
std::string& inStr, std::string& outStr) {
17
if
(!inStr.empty()){
18
outStr = inStr;
19
}
20
}
21
22
DrawCanvasObject::DrawCanvasObject
(
const
std::string& canvasName,
23
const
std::size_t evtNumber):
24
m_name
{canvasName},
25
m_evt
{evtNumber}{}
26
27
double
DrawCanvasObject::corner
(
const
AxisRanges
r
)
const
{
28
const
double
deltaX = 0.5*(
m_axisRanges
[0][1] -
m_axisRanges
[0][0]) *
m_axisScale
;
29
const
double
deltaY = 0.5*(
m_axisRanges
[1][1] -
m_axisRanges
[1][0]) *
m_axisScale
;
30
switch
(
r
) {
31
using
enum
AxisRanges
;
32
case
xLow
:
33
case
xHigh
: {
34
const
double
mid = 0.5*(
m_axisRanges
[0][1] +
m_axisRanges
[0][0]);
35
return
mid + (
r
==
xLow
? -1. : 1.) * std::max(deltaX, deltaY * (1. -2.*
m_quadCan
));
36
}
case
yLow
:
37
case
yHigh
: {
38
const
double
mid = 0.5*(
m_axisRanges
[1][1] +
m_axisRanges
[1][0]);
39
return
mid + (
r
==
yLow
? -1. : 1.) * std::max(deltaY, deltaX * (1. -2.*
m_quadCan
));
40
}
41
}
42
return
s_dblMax
;
43
}
44
void
DrawCanvasObject::setRangeScale
(
const
double
s,
bool
quadCan) {
45
m_axisScale
= std::max(1., s);
46
m_quadCan
= quadCan;
47
}
48
void
DrawCanvasObject::trash
() {
m_isTrashed
=
true
; }
49
bool
DrawCanvasObject::trashed
()
const
{
return
m_isTrashed
; }
50
const
std::string&
DrawCanvasObject::name
()
const
{
return
m_name
; }
51
std::size_t
DrawCanvasObject::event
()
const
{
return
m_evt
; }
52
const
std::string&
DrawCanvasObject::xTitle
()
const
{
return
m_xTitle
; }
53
const
std::string&
DrawCanvasObject::yTitle
()
const
{
return
m_yTitle
; }
54
const
std::string&
DrawCanvasObject::zTitle
()
const
{
return
m_zTitle
; }
55
const
PrimitiveVec_t
&
DrawCanvasObject::primitives
()
const
{
return
m_primitives
; }
56
PrimitiveVec_t
&
DrawCanvasObject::primitives
() {
return
m_primitives
; }
57
void
DrawCanvasObject::expandPad
(
const
double
x
,
const
double
y
) {
58
expand
(
x
,
m_axisRanges
[0]);
59
expand
(
y
,
m_axisRanges
[1]);
60
}
61
void
DrawCanvasObject::add
(
PrimitivePtr_t
&& drawMe, std::string_view drawOpt) {
62
m_primitives
.emplace_back(std::move(drawMe), drawOpt);
63
}
64
void
DrawCanvasObject::add
(std::vector<PrimitivePtr_t> && drawMe) {
65
for
(
PrimitivePtr_t
& obj : drawMe) {
66
add
(std::move(obj));
67
}
68
}
69
void
DrawCanvasObject::setAxisTitles
(
const
std::string&
xTitle
,
70
const
std::string&
yTitle
,
71
const
std::string&
zTitle
){
72
assignIfNotEmpty
(
xTitle
,
m_xTitle
);
73
assignIfNotEmpty
(
yTitle
,
m_yTitle
);
74
assignIfNotEmpty
(
zTitle
,
m_zTitle
);
75
}
76
}
DrawCanvasObject.h
y
#define y
x
#define x
MuonValR4::detail::DrawCanvasObject::m_isTrashed
std::atomic< bool > m_isTrashed
Definition
DrawCanvasObject.h:71
MuonValR4::detail::DrawCanvasObject::Range_t
std::array< double, 2 > Range_t
Definition
DrawCanvasObject.h:20
MuonValR4::detail::DrawCanvasObject::corner
virtual double corner(const AxisRanges r) const override final
Retrieves a corner coordinate of the drawn canvas.
Definition
DrawCanvasObject.cxx:27
MuonValR4::detail::DrawCanvasObject::event
std::size_t event() const
Event number in which the canvas has been created.
Definition
DrawCanvasObject.cxx:51
MuonValR4::detail::DrawCanvasObject::add
virtual void add(PrimitivePtr_t &&drawMe, std::string_view drawOpt="") override final
Add a TObject to the ICanvasObject for later drawing onto a TCanvas.
Definition
DrawCanvasObject.cxx:61
MuonValR4::detail::DrawCanvasObject::PrimitivePtr_t
IRootVisualizationService::PrimitivePtr_t PrimitivePtr_t
Definition
DrawCanvasObject.h:18
MuonValR4::detail::DrawCanvasObject::m_axisRanges
Range2D_t m_axisRanges
Definition
DrawCanvasObject.h:59
MuonValR4::detail::DrawCanvasObject::zTitle
const std::string & zTitle() const
Returns the title of the z-axis.
Definition
DrawCanvasObject.cxx:54
MuonValR4::detail::DrawCanvasObject::DrawCanvasObject
DrawCanvasObject(const std::string &canvasName, const std::size_t evtNumber)
Definition
DrawCanvasObject.cxx:22
MuonValR4::detail::DrawCanvasObject::name
const std::string & name() const
Name of the canvas.
Definition
DrawCanvasObject.cxx:50
MuonValR4::detail::DrawCanvasObject::m_zTitle
std::string m_zTitle
Definition
DrawCanvasObject.h:68
MuonValR4::detail::DrawCanvasObject::m_axisScale
double m_axisScale
Definition
DrawCanvasObject.h:60
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:44
MuonValR4::detail::DrawCanvasObject::trashed
bool trashed() const
Returns whether the canvas has been trashed.
Definition
DrawCanvasObject.cxx:49
MuonValR4::detail::DrawCanvasObject::yTitle
const std::string & yTitle() const
Returns the title of the y-axis.
Definition
DrawCanvasObject.cxx:53
MuonValR4::detail::DrawCanvasObject::m_evt
std::size_t m_evt
Definition
DrawCanvasObject.h:64
MuonValR4::detail::DrawCanvasObject::PrimitiveVec_t
std::vector< std::pair< PrimitivePtr_t, std::string > > PrimitiveVec_t
Definition
DrawCanvasObject.h:19
MuonValR4::detail::DrawCanvasObject::primitives
const PrimitiveVec_t & primitives() const
Definition
DrawCanvasObject.cxx:55
MuonValR4::detail::DrawCanvasObject::xTitle
const std::string & xTitle() const
Returns the title of the x-axis.
Definition
DrawCanvasObject.cxx:52
MuonValR4::detail::DrawCanvasObject::m_primitives
PrimitiveVec_t m_primitives
Definition
DrawCanvasObject.h:61
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:69
MuonValR4::detail::DrawCanvasObject::m_yTitle
std::string m_yTitle
Definition
DrawCanvasObject.h:67
MuonValR4::detail::DrawCanvasObject::m_name
std::string m_name
Definition
DrawCanvasObject.h:63
MuonValR4::detail::DrawCanvasObject::s_dblMax
static constexpr double s_dblMax
Definition
DrawCanvasObject.h:58
MuonValR4::detail::DrawCanvasObject::trash
virtual void trash() override final
If no object has been drawn mark the plot as junk.
Definition
DrawCanvasObject.cxx:48
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:57
MuonValR4::detail::DrawCanvasObject::m_quadCan
bool m_quadCan
Definition
DrawCanvasObject.h:70
MuonValR4::detail::DrawCanvasObject::m_xTitle
std::string m_xTitle
Definition
DrawCanvasObject.h:66
r
int r
Definition
globals.cxx:22
MuonValR4::detail
Definition
DrawCanvasObject.cxx:7
MuonValR4::detail::assignIfNotEmpty
void assignIfNotEmpty(const std::string &inStr, std::string &outStr)
Definition
DrawCanvasObject.cxx:16
MuonValR4::detail::Range_t
DrawCanvasObject::Range_t Range_t
Definition
DrawCanvasObject.cxx:10
MuonValR4::detail::PrimitiveVec_t
DrawCanvasObject::PrimitiveVec_t PrimitiveVec_t
Definition
DrawCanvasObject.cxx:9
MuonValR4::detail::PrimitivePtr_t
DrawCanvasObject::PrimitivePtr_t PrimitivePtr_t
Definition
DrawCanvasObject.cxx:8
MuonValR4::detail::expand
constexpr void expand(const double v, Range_t &r)
Definition
DrawCanvasObject.cxx:12
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges
AxisRanges
Enum to select the corner coordinates shown by the plot.
Definition
IRootVisualizationService.h:81
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges::yLow
@ yLow
Definition
IRootVisualizationService.h:82
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges::xHigh
@ xHigh
Definition
IRootVisualizationService.h:82
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges::xLow
@ xLow
Definition
IRootVisualizationService.h:82
MuonValR4::IRootVisualizationService::ICanvasObject::AxisRanges::yHigh
@ yHigh
Definition
IRootVisualizationService.h:82
Generated on
for ATLAS Offline Software by
1.17.0