199 lines
6.5 KiB
Python
199 lines
6.5 KiB
Python
|
|
from ROOT import TStyle, TText, TLatex, TPaveText, gROOT
|
|
from Globals import *
|
|
from array import array
|
|
|
|
lhcbStyle = TStyle("lhcbStyle", "LHCb official plots style")
|
|
lhcbLabel = TText()
|
|
lhcbLatex = TLatex()
|
|
lhcb7TeVPrelimL = TPaveText()
|
|
lhcb0_9TeVPrelimL = TPaveText()
|
|
|
|
def LHCbStyle(colzPlot=False, NCont=25):
|
|
|
|
# ##################################
|
|
# # PURPOSE:
|
|
# #
|
|
# # This file defines a reasonable style for (black-and-white)
|
|
# # "publication quality" ROOT plots. The default settings contain
|
|
# # many features that are either not desirable for printing on white
|
|
# # paper or impair the general readability of plots.
|
|
# #
|
|
# # USAGE:
|
|
#
|
|
# Simply add the line
|
|
# from LHCbStyle import LHCbStyle
|
|
# at the beginning of your root program (and make sure LHCbStyle.py is
|
|
# in a location accessible to the compiler). Then add the line
|
|
# lhcbStyle()
|
|
# somewhere at the beginning of your program
|
|
#
|
|
# SOME COMMENTS:
|
|
#
|
|
# Statistics and fit boxes:
|
|
#
|
|
# "Decorative" items around the histogram are kept to a minimum.
|
|
# In particular there is no box with statistics or fit information.
|
|
# You can easily change this either by editing your private copy
|
|
# of this style file or by calls to "gStyle" in your macro.
|
|
# For example,
|
|
# gStyle->SetOptFit(1011);
|
|
# will add some fit information.
|
|
#
|
|
# Font:
|
|
#
|
|
# The font is chosen to be 62, i.e.helvetica-bold-r-normal with
|
|
# precision 2. Font is of course a matter of taste, but most people
|
|
# will probably agree that Helvetica bold gives close to optimal
|
|
# readibility in presentations. It appears to be the ROOT default,
|
|
# and since there are still some features in ROOT that simply won't
|
|
# respond to any font requests, it is the wise choice to avoid
|
|
# ugly font mixtures on the same plot... The precision of the font (2)
|
|
# is chosen in order to have a rotatable and scalable font. Be sure
|
|
# to use true-type fonts! I.e.
|
|
# Unix.*.Root.UseTTFonts: true in your .rootrc file.
|
|
#
|
|
# "Landscape histograms":
|
|
#
|
|
# The style here is designed for more or less quadratic plots.
|
|
# For very long histograms, adjustements are needed. For instance,
|
|
# for a canvas with 1x5 histograms:
|
|
# TCanvas* c1 = new TCanvas("c1", "L0 muons", 600, 800);
|
|
# c1->Divide(1,5);
|
|
# adaptions like the following will be needed:
|
|
# gStyle->SetTickLength(0.05,"x");
|
|
# gStyle->SetTickLength(0.01,"y");
|
|
# gStyle->SetLabelSize(0.15,"x");
|
|
# gStyle->SetLabelSize(0.1,"y");
|
|
# gStyle->SetStatW(0.15);
|
|
# gStyle->SetStatH(0.5);
|
|
#
|
|
##################################
|
|
|
|
lhcbFont = 132 # Old LHCb style: 62
|
|
lhcbWidth = 2 # Old LHCb style: 3.00
|
|
lhcbTSize = 0.06
|
|
|
|
lhcbStyle.SetFillColor(1)
|
|
lhcbStyle.SetFillStyle(1001) # solid
|
|
lhcbStyle.SetFrameFillColor(0)
|
|
lhcbStyle.SetFrameBorderMode(0)
|
|
lhcbStyle.SetPadBorderMode(0)
|
|
lhcbStyle.SetPadColor(0)
|
|
lhcbStyle.SetCanvasBorderMode(0)
|
|
lhcbStyle.SetCanvasColor(0)
|
|
lhcbStyle.SetStatColor(0)
|
|
lhcbStyle.SetLegendBorderSize(0)
|
|
lhcbStyle.SetLegendFont(132)
|
|
|
|
# If you want the usual gradient palette (blue . red)
|
|
lhcbStyle.SetPalette(1)
|
|
# If you want colors that correspond to gray scale in black and white:
|
|
palette = array('i',[0, 5, 7, 3, 6, 2, 4, 1])
|
|
lhcbStyle.SetPalette(8, palette)
|
|
|
|
# set the paper & margin sizes
|
|
lhcbStyle.SetPaperSize(20, 26)
|
|
lhcbStyle.SetPadTopMargin(0.05)
|
|
lhcbStyle.SetPadRightMargin(0.05) # increase for colz plots
|
|
lhcbStyle.SetPadBottomMargin(0.16)
|
|
lhcbStyle.SetPadLeftMargin(0.14)
|
|
|
|
# use large fonts
|
|
lhcbStyle.SetTextFont(lhcbFont)
|
|
lhcbStyle.SetTextSize(lhcbTSize)
|
|
lhcbStyle.SetLabelFont(lhcbFont, "x")
|
|
lhcbStyle.SetLabelFont(lhcbFont, "y")
|
|
lhcbStyle.SetLabelFont(lhcbFont, "z")
|
|
lhcbStyle.SetLabelSize(lhcbTSize, "x")
|
|
lhcbStyle.SetLabelSize(lhcbTSize, "y")
|
|
lhcbStyle.SetLabelSize(lhcbTSize, "z")
|
|
lhcbStyle.SetTitleFont(lhcbFont)
|
|
lhcbStyle.SetTitleFont(lhcbFont, "x")
|
|
lhcbStyle.SetTitleFont(lhcbFont, "y")
|
|
lhcbStyle.SetTitleFont(lhcbFont, "z")
|
|
lhcbStyle.SetTitleSize(1.2*lhcbTSize, "x")
|
|
lhcbStyle.SetTitleSize(1.2*lhcbTSize, "y")
|
|
lhcbStyle.SetTitleSize(1.2*lhcbTSize, "z")
|
|
|
|
# use medium bold lines and thick markers
|
|
|
|
lhcbStyle.SetLineWidth(lhcbWidth)
|
|
lhcbStyle.SetFrameLineWidth(lhcbWidth)
|
|
lhcbStyle.SetHistLineWidth(lhcbWidth)
|
|
lhcbStyle.SetFuncWidth(lhcbWidth)
|
|
lhcbStyle.SetGridWidth(lhcbWidth)
|
|
|
|
lhcbStyle.SetLineStyleString(2, "[12 12]") # postscript dashes
|
|
lhcbStyle.SetMarkerStyle(20)
|
|
lhcbStyle.SetMarkerSize(1.0)
|
|
|
|
|
|
# label offsets
|
|
lhcbStyle.SetLabelOffset(0.010, "X")
|
|
lhcbStyle.SetLabelOffset(0.010, "Y")
|
|
|
|
# by default, do not display histogram decorations:
|
|
lhcbStyle.SetOptStat(0)
|
|
#lhcbStyle.SetOptStat("emr"); # show only nent -e , mean - m , rms -r
|
|
# full opts at http:#root.cern.ch/root/html/TStyle.html#TStyle:SetOptStat
|
|
lhcbStyle.SetStatFormat("6.3g") # specified as c printf options
|
|
lhcbStyle.SetOptTitle(0)
|
|
lhcbStyle.SetOptFit(0)
|
|
#lhcbStyle.SetOptFit(1011); # order is probability, Chi2, errors, parameters
|
|
#titles
|
|
lhcbStyle.SetTitleOffset(0.95, "X")
|
|
lhcbStyle.SetTitleOffset(0.95, "Y")
|
|
lhcbStyle.SetTitleOffset(1.2, "Z")
|
|
lhcbStyle.SetTitleFillColor(0)
|
|
lhcbStyle.SetTitleStyle(0)
|
|
lhcbStyle.SetTitleBorderSize(0)
|
|
lhcbStyle.SetTitleFont(lhcbFont, "title")
|
|
lhcbStyle.SetTitleX(0.0)
|
|
lhcbStyle.SetTitleY(1.0)
|
|
lhcbStyle.SetTitleW(1.0)
|
|
lhcbStyle.SetTitleH(0.05)
|
|
|
|
# look of the statistics box:
|
|
lhcbStyle.SetStatBorderSize(0)
|
|
lhcbStyle.SetStatFont(lhcbFont)
|
|
lhcbStyle.SetStatFontSize(0.05)
|
|
lhcbStyle.SetStatX(0.9)
|
|
lhcbStyle.SetStatY(0.9)
|
|
lhcbStyle.SetStatW(0.25)
|
|
lhcbStyle.SetStatH(0.15)
|
|
|
|
# put tick marks on top and RHS of plots
|
|
lhcbStyle.SetPadTickX(1)
|
|
lhcbStyle.SetPadTickY(1)
|
|
|
|
# histogram divisions: only 5 in x to avoid label overlaps
|
|
lhcbStyle.SetNdivisions(505, "x")
|
|
lhcbStyle.SetNdivisions(510, "y")
|
|
|
|
## add LHCb label
|
|
#lhcbName = new TPaveText(gStyle.GetPadLeftMargin() + 0.05,
|
|
# 0.87 - gStyle.GetPadTopMargin(),
|
|
# gStyle.GetPadLeftMargin() + 0.20,
|
|
# 0.95 - gStyle.GetPadTopMargin(),
|
|
# "BRNDC");
|
|
#lhcbName.AddText("LHCb");
|
|
#lhcbName.SetFillColor(0);
|
|
#lhcbName.SetTextAlign(12);
|
|
#lhcbName.SetBorderSize(0);
|
|
|
|
lhcbLabel.SetTextFont(lhcbFont)
|
|
lhcbLabel.SetTextColor(1)
|
|
lhcbLabel.SetTextSize(lhcbTSize)
|
|
lhcbLabel.SetTextAlign(12)
|
|
|
|
lhcbLatex.SetTextFont(lhcbFont)
|
|
lhcbLatex.SetTextColor(1)
|
|
lhcbLatex.SetTextSize(lhcbTSize)
|
|
lhcbLatex.SetTextAlign(12)
|
|
|
|
gROOT.SetStyle("lhcbStyle")
|
|
gROOT.ForceStyle()
|
|
|
|
return
|