DESY Hbb Analysis Framework
CMS_lumi.cc
Go to the documentation of this file.
2 //#include "TASImage.h"
3 
4 void
5 CMS_lumi( TPad* pad, TString mytxt , int iPeriod, int iPosX )
6 {
7  writeExtraText = true;
8  extraText = mytxt;
9  bool outOfFrame = false;
10  if( iPosX/10==0 )
11  {
12  outOfFrame = true;
13  }
14  int alignY_=3;
15  int alignX_=2;
16  if( iPosX/10==0 ) alignX_=1;
17  if( iPosX==0 ) alignX_=1;
18  if( iPosX==0 ) alignY_=1;
19  if( iPosX/10==1 ) alignX_=1;
20  if( iPosX/10==2 ) alignX_=2;
21  if( iPosX/10==3 ) alignX_=3;
22  if( iPosX == 0 ) relPosX = 0.12;
23  int align_ = 10*alignX_ + alignY_;
24 
25  float H = pad->GetWh();
26  float W = pad->GetWw();
27  float l = pad->GetLeftMargin();
28  float t = pad->GetTopMargin();
29  float r = pad->GetRightMargin();
30  float b = pad->GetBottomMargin();
31  // float e = 0.025;
32 
33  pad->cd();
34 
35  TString lumiText;
36  if( iPeriod==1 )
37  {
38  lumiText += lumi_7TeV;
39  lumiText += " (7 TeV)";
40  }
41  else if ( iPeriod==2 )
42  {
43  lumiText += lumi_8TeV;
44  lumiText += " (8 TeV)";
45  }
46  else if( iPeriod==3 )
47  {
48  lumiText = lumi_8TeV;
49  lumiText += " (8 TeV)";
50  lumiText += " + ";
51  lumiText += lumi_7TeV;
52  lumiText += " (7 TeV)";
53  }
54  else if ( iPeriod==4 )
55  {
56  lumiText += lumi_13TeV;
57  lumiText += " (13 TeV)";
58  }
59  else if ( iPeriod==7 )
60  {
61  if( outOfFrame ) lumiText += "#scale[0.85]{";
62  lumiText += lumi_13TeV;
63  lumiText += " (13 TeV)";
64  lumiText += " + ";
65  lumiText += lumi_8TeV;
66  lumiText += " (8 TeV)";
67  lumiText += " + ";
68  lumiText += lumi_7TeV;
69  lumiText += " (7 TeV)";
70  if( outOfFrame) lumiText += "}";
71  }
72  else if ( iPeriod==12 )
73  {
74  lumiText += "8 TeV";
75  }
76 
77  std::cout<< lumiText << std::endl;
78 
79  TLatex latex;
80  latex.SetNDC();
81  latex.SetTextAngle(0);
82  latex.SetTextColor(kBlack);
83 
84  float extraTextSize = extraOverCmsTextSize*cmsTextSize;
85 
86  latex.SetTextFont(42);
87  latex.SetTextAlign(31);
88  latex.SetTextSize(lumiTextSize*t);
89  latex.DrawLatex(1-r,1-t+lumiTextOffset*t,lumiText);
90 
91  if( outOfFrame )
92  {
93  latex.SetTextFont(cmsTextFont);
94  latex.SetTextAlign(11);
95  latex.SetTextSize(cmsTextSize*t);
96  latex.DrawLatex(l,1-t+lumiTextOffset*t,cmsText);
97  }
98 
99  pad->cd();
100 
101  float posX_=0;
102  if( iPosX%10<=1 )
103  {
104  posX_ = l + relPosX*(1-l-r);
105  }
106  else if( iPosX%10==2 )
107  {
108  posX_ = l + 0.5*(1-l-r);
109  }
110  else if( iPosX%10==3 )
111  {
112  posX_ = 1-r - relPosX*(1-l-r);
113  }
114  float posY_ = 1-t - relPosY*(1-t-b);
115  if( !outOfFrame )
116  {
117  if( drawLogo )
118  {
119  posX_ = l + 0.045*(1-l-r)*W/H;
120  posY_ = 1-t - 0.045*(1-t-b);
121  float xl_0 = posX_;
122  float yl_0 = posY_ - 0.15;
123  float xl_1 = posX_ + 0.15*H/W;
124  float yl_1 = posY_;
125 // TASImage* CMS_logo; = new TASImage("CMS-BW-label.png",TASImage::EImageFileTypes::kPng);
126  TPad* pad_logo = new TPad("logo","logo", xl_0, yl_0, xl_1, yl_1 );
127  pad_logo->Draw();
128  pad_logo->cd();
129 // CMS_logo->Draw("X");
130  pad_logo->Modified();
131  pad->cd();
132  }
133  else
134  {
135  latex.SetTextFont(cmsTextFont);
136  latex.SetTextSize(cmsTextSize*t);
137  latex.SetTextAlign(align_);
138  latex.DrawLatex(posX_, posY_, cmsText);
139  if( writeExtraText )
140  {
141  latex.SetTextFont(extraTextFont);
142  latex.SetTextAlign(align_);
143  latex.SetTextSize(extraTextSize*t);
144  latex.DrawLatex(posX_, posY_- relExtraDY*cmsTextSize*t + 0.01, extraText);
145  }
146  }
147  }
148  else if( writeExtraText )
149  {
150  if( iPosX==0)
151  {
152  posX_ = l + relPosX*(1-l-r);
153  posY_ = 1-t+lumiTextOffset*t;
154  }
155  latex.SetTextFont(extraTextFont);
156  latex.SetTextSize(extraTextSize*t);
157  latex.SetTextAlign(align_);
158 // latex.DrawLatex(posX_, posY_+0.7, extraText);
159  latex.DrawLatex(posX_, posY_, extraText);
160  }
161  return;
162 }
163 
float relPosY
Definition: CMS_lumi.h:32
TString lumi_8TeV
Definition: CMS_lumi.h:39
float cmsTextFont
Definition: CMS_lumi.h:18
float relExtraDY
Definition: CMS_lumi.h:33
void CMS_lumi(TPad *pad, TString mytxt, int iPeriod, int iPosX)
Definition: CMS_lumi.cc:5
bool drawLogo
Definition: CMS_lumi.h:42
float relPosX
Definition: CMS_lumi.h:31
bool writeExtraText
Definition: CMS_lumi.h:20
TString lumi_7TeV
Definition: CMS_lumi.h:40
float cmsTextSize
Definition: CMS_lumi.h:28
TString extraText
Definition: CMS_lumi.h:21
int H
Definition: PlotsCompare.cc:16
float lumiTextSize
Definition: CMS_lumi.h:26
int W
Definition: PlotsCompare.cc:15
TString cmsText
Definition: CMS_lumi.h:17
TString lumi_13TeV
Definition: CMS_lumi.h:38
float extraOverCmsTextSize
Definition: CMS_lumi.h:36
float extraTextFont
Definition: CMS_lumi.h:22
float lumiTextOffset
Definition: CMS_lumi.h:27