12 #include "TPaletteAxis.h" 29 #include <boost/tokenizer.hpp> 30 #include <boost/range/adaptor/indexed.hpp> 36 double minx = 0xFFFFFF, maxx = -0xFFFFFF, miny = 0xFFFFFF, maxy = -0xFFFFFFF;
43 TGaxis::SetMaxDigits(2);
46 static constexpr
int margin = 5;
58 for (
const auto& pair :
m_bins) {
72 static constexpr
float tmargin_ = 0.08;
73 static constexpr
float bmargin_ = 0.02;
74 static constexpr
float lmargin_ = 0.02;
75 static constexpr
float rmargin_ = 0.08;
78 static constexpr
int wH_ = 3000;
79 static constexpr
int hH_ = 850;
92 canvas.SetFrameLineColor(0);
94 TPaletteAxis*
palette = (TPaletteAxis*)
m_trackerMap->GetListOfFunctions()->FindObject(
"palette");
97 palette->SetX1NDC(1 - rmargin_);
98 palette->SetX2NDC(1 - rmargin_ + lmargin_);
102 if (
canvas.GetWindowHeight() != hH_ &&
canvas.GetWindowWidth() != wH_ &&
option.find(
"same") == std::string::npos) {
103 canvas.SetWindowSize(wH_, hH_);
112 std::array<std::string, 12> barrelNames = {
113 {
"TIB L2",
"TIB L1",
"TIB L4",
"TIB L3",
"TOB L2",
"TOB L1",
"TOB L4",
" TOB L3",
"TOB L6",
"TOB L5"}};
114 std::array<std::string, 4> endcapNames = {{
"TID",
"TEC",
"TID",
"TEC"}};
115 std::array<std::string, 24> disknumbering = {{
"+1",
"+2",
"+3",
"+1",
"+2",
"+3",
"+4",
"+5",
116 "+6",
"+7",
"+8",
"+9",
"-1",
"-2",
"-3",
"-1",
117 "-2",
"-3",
"-4",
"-5",
"-6",
"-7",
"-8",
"-9"}};
119 static constexpr std::array<float, 12> b_coordx = {
120 {0.1, 0.1, 0.26, 0.26, 0.41, 0.41, 0.56, 0.56, 0.725, 0.725, 0.05, 0.17}};
121 static constexpr std::array<float, 12> b_coordy = {
122 {0.70, 0.45, 0.70, 0.45, 0.70, 0.46, 0.70, 0.46, 0.70, 0.46, 0.85, 0.85}};
124 static constexpr std::array<float, 4> e_coordx = {{0.01, 0.21, 0.01, 0.21}};
125 static constexpr std::array<float, 4> e_coordy = {{0.89, 0.89, 0.17, 0.17}};
127 static constexpr std::array<float, 24> n_coordx = {{0.01, 0.087, 0.165, 0.227, 0.305, 0.383, 0.461, 0.539,
128 0.616, 0.694, 0.772, 0.850, 0.01, 0.087, 0.165, 0.227,
129 0.305, 0.383, 0.461, 0.539, 0.617, 0.695, 0.773, 0.851}};
131 static constexpr std::array<float, 24> n_coordy = {{0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85, 0.85,
132 0.85, 0.85, 0.85, 0.85, 0.13, 0.13, 0.13, 0.13,
133 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13}};
136 for (
const auto&
name : barrelNames | boost::adaptors::indexed(0)) {
139 ltx.SetTextSize(0.035);
140 ltx.SetTextAlign(11);
141 ltx.DrawLatexNDC(b_coordx[
name.index()], b_coordy[
name.index()],
name.value().c_str());
144 for (
const auto&
name : endcapNames | boost::adaptors::indexed(0)) {
147 ltx.SetTextSize(0.05);
148 ltx.SetTextAlign(11);
149 ltx.DrawLatexNDC(e_coordx[
name.index()], e_coordy[
name.index()],
name.value().c_str());
152 for (
const auto&
name : disknumbering | boost::adaptors::indexed(0)) {
155 ltx.SetTextSize(0.035);
156 ltx.SetTextAlign(11);
157 ltx.DrawLatexNDC(n_coordx[
name.index()], n_coordy[
name.index()],
name.value().c_str());
162 ltx.SetTextSize(0.045);
163 ltx.SetTextAlign(11);
164 ltx.DrawLatexNDC(gPad->GetLeftMargin(), 1 - gPad->GetTopMargin() + 0.03,
m_mapTitle.c_str());
167 drawArrows(0.09, 0.23, 0.24, 0.45,
"#phi",
"z");
177 const float x_X1,
const float x_X2,
const float x_Y1,
const float y_Y2,
const char* x_label,
const char* y_label) {
178 auto arrow_X = TArrow();
179 arrow_X.SetLineColor(kBlue);
180 arrow_X.SetLineWidth(2);
181 arrow_X.SetOption(
"|>");
182 arrow_X.SetArrowSize(10);
183 arrow_X.DrawLineNDC(x_X1, x_Y1, x_X2, x_Y1);
185 auto arrow_Y = TArrow();
186 arrow_Y.SetLineColor(kBlue);
187 arrow_Y.SetLineWidth(2);
188 arrow_Y.SetOption(
"|>");
189 arrow_Y.SetArrowSize(10);
190 arrow_Y.DrawLineNDC(x_X2, x_Y1, x_X2, y_Y2);
192 auto text_X = TLatex();
193 text_X.SetTextSize(0.04);
194 text_X.SetTextAlign(11);
195 text_X.SetTextColor(kBlue);
196 text_X.DrawLatexNDC(x_X1, x_Y1 - 0.03, x_label);
198 auto text_Y = TLatex();
199 text_Y.SetTextSize(0.04);
200 text_Y.SetTextAlign(11);
201 text_Y.SetTextColor(kBlue);
202 text_Y.DrawLatexNDC(x_X2 + 0.005, y_Y2 - 0.01, y_label);
207 TVirtualPad* pad,
const float top,
const float bottom,
const float left,
const float right) {
209 pad->SetTopMargin(top);
212 pad->SetBottomMargin(bottom);
215 pad->SetLeftMargin(left);
218 pad->SetRightMargin(right);
230 throw cms::Exception(
"FileError") <<
"SiStripTkMaps: problem opening vertices file!!" << std::endl;
240 typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
241 boost::char_separator<char> sep{
" "};
242 tokenizer tok{
line, sep};
246 for (
const auto&
t : tok | boost::adaptors::indexed(0)) {
249 detid = atoll((
t.value()).c_str());
259 x[ix] = atof((
t.value()).c_str());
268 y[iy] = atof((
t.value()).c_str());
284 m_bins[detid] = std::make_shared<TGraph>(ix,
x,
y);
285 m_bins[detid]->SetName(TString::Format(
"%ld", detid));
286 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)
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="")
std::map< long, std::shared_ptr< TGraph > > m_bins