12 #include "TPaletteAxis.h" 30 #include <boost/tokenizer.hpp> 31 #include <boost/range/adaptor/indexed.hpp> 37 double minx = 0xFFFFFF, maxx = -0xFFFFFF, miny = 0xFFFFFF, maxy = -0xFFFFFFF;
44 TGaxis::SetMaxDigits(2);
59 for (
const auto& pair :
m_bins) {
93 canvas.SetFrameLineColor(0);
95 TPaletteAxis*
palette = (TPaletteAxis*)
m_trackerMap->GetListOfFunctions()->FindObject(
"palette");
98 palette->SetX1NDC(1 - rmargin_);
99 palette->SetX2NDC(1 - rmargin_ + lmargin_);
103 if (
canvas.GetWindowHeight() != hH_ &&
canvas.GetWindowWidth() != wH_ &&
option.find(
"same") == std::string::npos) {
104 canvas.SetWindowSize(wH_, hH_);
113 std::array<std::string, 12> barrelNames = {
114 {
"TIB L2",
"TIB L1",
"TIB L4",
"TIB L3",
"TOB L2",
"TOB L1",
"TOB L4",
" TOB L3",
"TOB L6",
"TOB L5"}};
115 std::array<std::string, 4> endcapNames = {{
"TID",
"TEC",
"TID",
"TEC"}};
116 std::array<std::string, 24> disknumbering = {{
"+1",
"+2",
"+3",
"+1",
"+2",
"+3",
"+4",
"+5",
117 "+6",
"+7",
"+8",
"+9",
"-1",
"-2",
"-3",
"-1",
118 "-2",
"-3",
"-4",
"-5",
"-6",
"-7",
"-8",
"-9"}};
120 static constexpr std::array<float, 12> b_coordx = {
121 {0.1, 0.1, 0.26, 0.26, 0.41, 0.41, 0.56, 0.56, 0.725, 0.725, 0.05, 0.17}};
122 static constexpr std::array<float, 12> b_coordy = {
123 {0.70, 0.45, 0.70, 0.45, 0.70, 0.46, 0.70, 0.46, 0.70, 0.46, 0.85, 0.85}};
125 static constexpr std::array<float, 4> e_coordx = {{0.01, 0.21, 0.01, 0.21}};
126 static constexpr std::array<float, 4> e_coordy = {{0.89, 0.89, 0.17, 0.17}};
128 static constexpr std::array<float, 24> n_coordx = {{0.01, 0.087, 0.165, 0.227, 0.305, 0.383, 0.461, 0.539,
129 0.616, 0.694, 0.772, 0.850, 0.01, 0.087, 0.165, 0.227,
130 0.305, 0.383, 0.461, 0.539, 0.617, 0.695, 0.773, 0.851}};
132 static constexpr std::array<float, 24> n_coordy = {{0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85,
133 0.85, 0.85, 0.85, 0.85, 0.13, 0.13, 0.13, 0.13,
134 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13}};
137 for (
const auto&
name : barrelNames | boost::adaptors::indexed(0)) {
140 ltx.SetTextSize(0.035);
141 ltx.SetTextAlign(11);
142 ltx.DrawLatexNDC(b_coordx[
name.index()], b_coordy[
name.index()],
name.value().c_str());
145 for (
const auto&
name : endcapNames | boost::adaptors::indexed(0)) {
148 ltx.SetTextSize(0.05);
149 ltx.SetTextAlign(11);
150 ltx.DrawLatexNDC(e_coordx[
name.index()], e_coordy[
name.index()],
name.value().c_str());
153 for (
const auto&
name : disknumbering | boost::adaptors::indexed(0)) {
156 ltx.SetTextSize(0.035);
157 ltx.SetTextAlign(11);
158 ltx.DrawLatexNDC(n_coordx[
name.index()], n_coordy[
name.index()],
name.value().c_str());
163 ltx.SetTextSize(0.045);
164 ltx.SetTextAlign(11);
165 ltx.DrawLatexNDC(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.03,
m_mapTitle.c_str());
168 drawArrows(0.09, 0.23, 0.24, 0.45,
"#phi",
"z");
178 const float x_X1,
const float x_X2,
const float x_Y1,
const float y_Y2,
const char* x_label,
const char* y_label) {
179 auto arrow_X = TArrow();
180 arrow_X.SetLineColor(kBlue);
181 arrow_X.SetLineWidth(2);
182 arrow_X.SetOption(
"|>");
183 arrow_X.SetArrowSize(10);
184 arrow_X.DrawLineNDC(x_X1, x_Y1, x_X2, x_Y1);
186 auto arrow_Y = TArrow();
187 arrow_Y.SetLineColor(kBlue);
188 arrow_Y.SetLineWidth(2);
189 arrow_Y.SetOption(
"|>");
190 arrow_Y.SetArrowSize(10);
191 arrow_Y.DrawLineNDC(x_X2, x_Y1, x_X2, y_Y2);
193 auto text_X = TLatex();
194 text_X.SetTextSize(0.04);
195 text_X.SetTextAlign(11);
196 text_X.SetTextColor(kBlue);
197 text_X.DrawLatexNDC(x_X1, x_Y1 - 0.03, x_label);
199 auto text_Y = TLatex();
200 text_Y.SetTextSize(0.04);
201 text_Y.SetTextAlign(11);
202 text_Y.SetTextColor(kBlue);
203 text_Y.DrawLatexNDC(x_X2 + 0.005, y_Y2 - 0.01, y_label);
208 TVirtualPad* pad,
const float top,
const float bottom,
const float left,
const float right) {
210 pad->SetTopMargin(top);
213 pad->SetBottomMargin(bottom);
216 pad->SetLeftMargin(left);
219 pad->SetRightMargin(right);
231 throw cms::Exception(
"FileError") <<
"SiStripTkMaps: problem opening vertices file!!" << std::endl;
241 typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
242 boost::char_separator<char> sep{
" "};
243 tokenizer tok{
line, sep};
247 for (
const auto&
t : tok | boost::adaptors::indexed(0)) {
250 detid = atoll((
t.value()).c_str());
260 x[
ix] = atof((
t.value()).c_str());
269 y[
iy] = atof((
t.value()).c_str());
285 m_bins[detid] = std::make_shared<TGraph>(
ix,
x,
y);
286 m_bins[detid]->SetName(TString::Format(
"%ld", detid));
287 m_bins[detid]->SetTitle(TString::Format(
"Module ID=%ld", detid));
void readVertices(double &minx, double &maxx, double &miny, double &maxy)
void bookMap(const std::string mapTitle, const std::string zAxisTitle)
void dressMap(TCanvas &canv)
void drawArrows(const float x_X1, const float x_X2, const float x_Y1, const float y_Y2, const char *x_label, const char *y_label)
void adjustCanvasMargins(TVirtualPad *pad, const float top, const float bottom, const float left, const float right)
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t ix(uint32_t id)
std::vector< unsigned int > m_detIdVector
void fill(long rawid, double val)
std::vector< double > m_values
bool isPixel(HitType hitType)
void drawMap(TCanvas &canvas, std::string option="")
ALPAKA_FN_ACC ALPAKA_FN_INLINE uint32_t iy(uint32_t id)
std::map< long, std::shared_ptr< TGraph > > m_bins