17#include <fmt/format.h>
25 poly->SetContour(255);
26 poly->SetTitle(
nullptr);
27 poly->GetYaxis()->SetTickSize(0.002f);
28 poly->GetYaxis()->SetTitleOffset(0.7f);
29 poly->GetZaxis()->SetTitleOffset(1.3f);
31 poly->GetZaxis()->SetTitle(zAxisTitle.data());
33 poly->SetMinimum(
minZ);
34 poly->SetMaximum(
maxZ);
37 TCanvas* can =
new TCanvas(
"can",
"can", 2000, 1400);
38 can->SetRightMargin(0.14f);
39 can->SetLeftMargin(0.06f);
40 can->SetTopMargin(0.04f);
45 const float yPos = -
static_cast<float>(coordinate.yVals[0] + coordinate.yVals[2]) / 2;
46 const float xPos =
static_cast<float>(coordinate.xVals[0] + coordinate.xVals[2]) / 2;
47 poly->Fill(xPos, yPos, SAC.getSAC(sector,
stack));
51 latex.DrawLatexNDC(.07, .9, fmt::format(
"Sector {}", sector).data());
63 poly->SetMinimum(
minZ);
64 poly->SetMaximum(
maxZ);
67 TCanvas* can =
new TCanvas(
"can",
"can", 650, 600);
68 can->SetTopMargin(0.04f);
69 can->SetRightMargin(0.14f);
70 can->SetLeftMargin(0.1f);
73 std::string sideName = (
side ==
Side::A) ?
"A-Side" :
"C-Side";
75 latex.DrawLatexNDC(.13, .9, sideName.data());
88 poly->SetContour(255);
89 poly->SetTitle(
nullptr);
90 poly->GetXaxis()->SetTitleOffset(1.2f);
91 poly->GetYaxis()->SetTitleOffset(1.3f);
92 poly->GetZaxis()->SetTitleOffset(1.3f);
93 poly->GetZaxis()->SetTitle(zAxisTitle.data());
94 poly->GetZaxis()->SetMaxDigits(3);
99 for (
unsigned int sector = sectorStart; sector < sectorEnd; ++sector) {
101 const float angDeg = 10.f + sector * 20;
103 coordinate.rotate(angDeg);
104 auto const count =
static_cast<float>(coordinate.yVals.size());
105 const float yPos = std::reduce(coordinate.yVals.begin(), coordinate.yVals.end()) /
count;
106 const float xPos = std::reduce(coordinate.xVals.begin(), coordinate.xVals.end()) /
count;
107 poly->Fill(xPos, yPos, SAC.getSAC(sector,
stack));
115 std::string stype =
"SAC";
119 return fmt::format(
"#it{{{}}} (ADC)", stype);
123 return fmt::format(
"#it{{{}_{{0}}}} (ADC)", stype);
127 return fmt::format(
"#Delta#it{{{}}}", stype);
130 return fmt::format(
"#Delta#it{{{}}}_{{1}}", stype);
134 return fmt::format(
"#it{{{}}} (Outliers: Yellow)", stype);
helper class for drawing SACs per sector/side
static std::string getZAxisTitle(const SACType type)
static void drawSector(const SACDraw &SAC, const unsigned int sector, const std::string zAxisTitle, const std::string filename, const float minZ=0, const float maxZ=-1)
static void drawSide(const SACDraw &SAC, const o2::tpc::Side side, const std::string zAxisTitle, const std::string filename, const float minZ=0, const float maxZ=-1)
GLsizei const GLubyte GLsizei GLenum const void * coords
GLint GLint GLsizei GLint GLenum GLenum type
GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat maxZ
constexpr unsigned char SECTORSPERSIDE
@ IDC
integrated and grouped IDCs
@ IDCOne
IDC1: I_1(t) = <I(r,\phi,t) / I_0(r,\phi)>_{r,\phi}.
@ IDCZero
IDC0: I_0(r,\phi) = <I(r,\phi,t)>_t.
@ IDCDelta
IDCDelta: \Delta I(r,\phi,t) = I(r,\phi,t) / ( I_0(r,\phi) * I_1(t) )
constexpr unsigned char SIDES
constexpr unsigned short GEMSTACKSPERSECTOR
static std::vector< PadCoordinates > getStackCoordinatesSector()
create a vector of stack corner coordinate for one full sector
static TH2Poly * makeSectorHist(const std::string_view name="hSector", const std::string_view title="Sector;local #it{x} (cm);local #it{y} (cm)", const float xMin=83.65f, const float xMax=247.7f, const float yMin=-43.7f, const float yMax=43.7f, const Type type=Type::Pad)
static TH2Poly * makeSideHist(Side side, const Type type=Type::Pad)