14 double umin = gPad->GetUxmin(), umax = gPad->GetUxmax();
15 double L = gPad->GetLeftMargin(), R = gPad->GetRightMargin();
16 double frac = (x - umin) / (umax - umin);
17 return L + frac * (1.0 - L - R);
21 double vmin = gPad->GetUymin(), vmax = gPad->GetUymax();
22 double B = gPad->GetBottomMargin(), T = gPad->GetTopMargin();
23 double frac = (y - vmin) / (vmax - vmin);
24 return B + frac * (1.0 - B - T);
27void DrawLogoAndCredit(
double x1,
double y1,
double width,
double text_size,
const char* creditTxt,
const char *opt)
29 TImage* logo = TImage::Open(Form(
"%s/icons/logo.png", TKN_SYS));
32 auto current_pad = gPad;
33 if(!current_pad)
return;
35 current_pad->Update();
37 double x1_ndc, y1_ndc, x2_ndc, y2_ndc;
40 if(!TString(opt).Contains(
"NDC")) {
43 double x2_ndc_from_user =
XUserToNDC(x1 + width);
44 width_ndc = x2_ndc_from_user - x1_ndc;
52 double pw = abs(gPad->XtoAbsPixel(gPad->GetX2()) - gPad->XtoAbsPixel(gPad->GetX1()));
53 double ph = abs(gPad->YtoAbsPixel(gPad->GetY2()) - gPad->YtoAbsPixel(gPad->GetY1()));
55 double px_to_ndc = 1.0 / pw;
56 double py_to_ndc = 1.0 / ph;
59 double imgW = logo->GetWidth() * px_to_ndc;
60 double imgH = logo->GetHeight() * py_to_ndc;
62 if (imgW <= 0 || imgH <= 0)
return;
64 double aspect = double(imgH) / double(imgW);
66 x2_ndc = x1_ndc + width_ndc;
67 y2_ndc = y1_ndc + width_ndc * aspect;
69 TPad* padLogo =
new TPad(
"padLogo",
"padLogo",x1_ndc,y1_ndc,x2_ndc,y2_ndc);
70 padLogo->SetMargin(0,0,0,0);
71 padLogo->SetFillColor(0);
72 padLogo->SetFillStyle(0);
82 credit.SetTextFont(42);
83 credit.SetTextSize(text_size);
84 credit.SetTextColor(kGray+2);
85 credit.SetTextAlign(11);
86 credit.DrawLatex(x1_ndc, y2_ndc + 0.01, creditTxt);