MaCh3 2.2.1
Reference Guide
Loading...
Searching...
No Matches
styleManager.cpp
Go to the documentation of this file.
1#include "styleManager.h"
2
3namespace MaCh3Plotting {
4StyleManager::StyleManager(std::string styleConfigName) {
5 _styleConfig = YAML::LoadFile(styleConfigName);
6}
7
8std::string StyleManager::prettifyName(const std::string &origName, const std::string &nameType) const {
9 std::string prettyName = origName;
10
11 YAML::Node prettyNames = _styleConfig["PrettyNames"][nameType];
12
13 if (prettyNames[origName])
14 {
15 prettyName = prettyNames[origName].as<std::string>();
16 }
17
18 return prettyName;
19}
20
21void StyleManager::setPalette(int rootPlotStyle) const {
22 // set the colour palette to one of the root palettes
23 gStyle->SetPalette(rootPlotStyle);
24}
25
26void StyleManager::setPalette(std::string configStyleName) const {
27 // set the colour palette to one of the palettes defined in PlottingConfig.yaml
28
29 // get the definition of the provided style from the config file
30 YAML::Node palettes = _styleConfig["ColorPallettes"];
31 std::vector<std::vector<double>> paletteDef =
32 palettes[configStyleName].as<std::vector<std::vector<double>>>();
33
34 const Int_t NCont = Int_t(paletteDef[0][0]);
35
36 std::vector<double> stopVec = paletteDef[1];
37 std::vector<double> redsVec = paletteDef[2];
38 std::vector<double> greensVec = paletteDef[3];
39 std::vector<double> bluesVec = paletteDef[4];
40
41 // get the number of colour stops and check all vectors are same size
42 const size_t NRGBs = stopVec.size();
43 if (redsVec.size() != NRGBs || greensVec.size() != NRGBs ||
44 bluesVec.size() != NRGBs)
45 {
46 MACH3LOG_ERROR("invalid colour palettet defined in style config file: {}");
47 MACH3LOG_ERROR("RGB arrays dont all have the same size, please fix that");
48 }
49
50 // now actually set the palette
51 TColor::CreateGradientColorTable(int(NRGBs), stopVec.data(), redsVec.data(), greensVec.data(), bluesVec.data(), NCont);
52 gStyle->SetNumberContours(NCont);
53}
54
55void StyleManager::setTH1Style(TH1 *hist, std::string styleName) const {
56 // get the definition of the provided style from the config file
57 YAML::Node TH1Styles = _styleConfig["TH1Styles"];
58 YAML::Node styleDef = TH1Styles[styleName];
59
60 if (styleDef["MarkerColor"])
61 {
62 hist->SetMarkerColor(styleDef["MarkerColor"].as<Color_t>());
63 }
64 if (styleDef["MarkerStyle"])
65 {
66 hist->SetMarkerStyle(styleDef["MarkerStyle"].as<Color_t>());
67 }
68 if (styleDef["FillColor"])
69 {
70 hist->SetFillColor(styleDef["FillColor"].as<Color_t>());
71 }
72 if (styleDef["FillStyle"])
73 {
74 hist->SetFillStyle(styleDef["FillStyle"].as<Color_t>());
75 }
76 if (styleDef["LineColor"])
77 {
78 hist->SetLineColor(styleDef["LineColor"].as<Color_t>());
79 }
80 if (styleDef["LineStyle"])
81 {
82 hist->SetLineStyle(styleDef["LineStyle"].as<Color_t>());
83 }
84}
85
86} // namespace MaCh3Plotting
#define MACH3LOG_ERROR
Definition: MaCh3Logger.h:25
void setTH1Style(TH1 *hist, std::string styleName) const
Set the style of a TH1 to one of the styles defined in the style config.
std::string prettifyName(const std::string &origName, const std::string &nameType) const
Definition: styleManager.cpp:8
void setPalette(int rootPlotStyle) const
Set the root colour palette to one of the default root pallettes as defined in (root docs)[https://ro...
StyleManager(std::string configName)
Constructor.
Definition: styleManager.cpp:4