Newer
Older
Tb / Tools / lhcbStyle.C
// Header guard.
#ifndef __LHCBSTYLE_C_INCLUDED__
#define __LHCBSTYLE_C_INCLUDED__

#include "Lib.C"

// all users - please change the name of this file to lhcbStyle.C
// Commits to lhcbdocs svn of .C files are not allowed
TStyle *getLHCbStyle();

TStyle *getLHCbStyle()
{

    // define names for colours
    Int_t black  = 1;
    Int_t red    = 2;
    Int_t green  = 3;
    Int_t blue   = 4;
    Int_t yellow = 5; 
    Int_t magenta= 6;
    Int_t cyan   = 7;
    Int_t purple = 9;


    ////////////////////////////////////////////////////////////////////
    // PURPOSE:
    //
    // This macro defines a standard style for (black-and-white) 
    // "publication quality" LHCb ROOT plots. 
    //
    // USAGE:
    //
    // Include the lines
    //   gROOT->ProcessLine(".L lhcbstyle.C");
    //   lhcbStyle();
    // at the beginning of your root macro.
    //
    // Example usage is given in myPlot.C
    //
    // COMMENTS:
    //
    // Font:
    // 
    // The font is chosen to be 132, this is Times New Roman (like the text of
    //  your document) with precision 2.
    //
    // "Landscape histograms":
    //
    // The style here is designed for more or less square plots.
    // For longer histograms, or canvas with many pads, 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);
    //
    // Authors: Thomas Schietinger, Andrew Powell, Chris Parkes, Niels Tuning
    // Maintained by Editorial board member (currently Niels)
    ///////////////////////////////////////////////////////////////////

    // Use times new roman, precision 2 
    Int_t lhcbFont        = 132;  // Old LHCb style: 62;
    // Line thickness
    Double_t lhcbWidth    = 2.00; // Old LHCb style: 3.00;
    // Text size
    Double_t lhcbTSize    = 0.06; 

    // use plain black on white colors
    gROOT->SetStyle("Plain"); 
    TStyle *lhcbStyle= new TStyle("lhcbStyle","LHCb plots style");

    //lhcbStyle->SetErrorX(0); //  don't suppress the error bar along X

    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:
    int colors[8] = {0,5,7,3,6,2,4,1};
    lhcbStyle->SetPalette(8,colors);

    // 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");

    gROOT->SetStyle("lhcbStyle");
    gROOT->ForceStyle();

    // add LHCb label
    TPaveText *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);

    TText *lhcbLabel = new TText();
    lhcbLabel->SetTextFont(lhcbFont);
    lhcbLabel->SetTextColor(1);
    lhcbLabel->SetTextSize(lhcbTSize);
    lhcbLabel->SetTextAlign(12);

    TLatex *lhcbLatex = new TLatex();
    lhcbLatex->SetTextFont(lhcbFont);
    lhcbLatex->SetTextColor(1);
    lhcbLatex->SetTextSize(lhcbTSize);
    lhcbLatex->SetTextAlign(12);

    cout << "-------------------------" << endl;  
    cout << "Set LHCb Style - Feb 2012" << endl;
    cout << "-------------------------" << endl;  

    return lhcbStyle;  
}

#endif