#ifndef DESIGN_HPP #define DESIGN_HPP //=========================================================================== // // Functions for creating pretty figures // // 2016: Renata Kopecna //=========================================================================== //--- c++ libs ---// #include #include #include //--- ROOT libs ---// #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Paths.hpp" using namespace std; /////////////////////////////////////////////////////////////////////////////////// /// /// /// ##### Basic rules for plotting various histograms /// /// ### design_markers /// # Designs histogram's markers, sets titles and color /// /// ### design_lines /// # Designs histogram's lines, sets titles and color /// /// ### design_filled_plot /// # Designs filled histograms, including titles, color and fill style /// # two options: with or without lines /// /// ### design_canvas, design canvas TH2F, design_canvas_ridge_fancy /// # initializes canvases basic, TH2F and fancy canvases /// /// ### design_2D_legend, design_2D_legend_integrated /// # designes box with legend with given pT and multiplicity /// /// ### design_TH2F /// # Sets axis names and palette for 2D histograms /// /// ### design_TH2F_ratio /// # Sets axis names and palette for 2D histograms for ratios /// /// ### design_function /// # Sets width and color of a TF1 /// /// ### design_cut_line /// # Designes the line used for cuts in distribution plots /// /// ### design_ratio_line /// # Designes the line for True/MC ratios /// /// //////////////////////////////////////////////////////////////////////////////////// /// const string recoMassKplus = (UseDTF ? "m(K^{+}#pi^{0}#mu^{+}#mu^{-})" : "m(K^{+}#gamma#gamma#mu^{+}#mu^{-})"); void design_markers(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_markers(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_markers(TEfficiency *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_lines(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_lines(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_lines(TH1 *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_filled_plot(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t fill_color, int fill_style); void design_filled_plot(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t fill_color, int fill_style); void design_filled_plot(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t fill_color, int fill_style, Color_t line_color); void design_filled_plot(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t fill_color, int fill_style , Color_t line_color); void design_canvas(TCanvas *canvas); void design_canvas(TCanvas *canvas, string title); void design_canvas_Bmass(TCanvas *canvas); void design_canvas_Bmass(TCanvas *canvas, string title); TCanvas *c_TH2F(string c_name); void design_canvas_TH2F(TCanvas *canvas); void design_canvas_fancy(TCanvas *canvas); TCanvas *c_canvas(string name); void design_TH2F(TH2F *histogram, string xaxis_name, string yaxis_name, string zaxis_name); void design_TH2F(TH2D *histogram, string xaxis_name, string yaxis_name, string zaxis_name); void design_TH2F(TH2F *histogram, string xaxis_name, string yaxis_name, string zaxis_name, int palette); void design_TH2F(TH2D *histogram, string xaxis_name, string yaxis_name, string zaxis_name, int palette); void design_TH2F_ratio(TH2F *histogram, string xaxis_name, string yaxis_name, string zaxis_name, int palette); void design_TH2F_ratio(TH2D *histogram, string xaxis_name, string yaxis_name, string zaxis_name, int palette); TH1D *generalHistogram(string hist_name, string title, int nBins, double low_edge, double high_edge, string xaxis_name, string yaxis_name, Color_t color); void design_function(TF1 *graph, Color_t color); void design_function(TF1 *graph, Color_t color, int style); void design_TH1F(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_TH1D(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t color); void design_TH1F(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t color, int marker_style); void design_TH1D(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t color, int marker_style); void design_TH1F(TH1F *histogram, string xaxis_name, string yaxis_name, Color_t color, int marker_style, double x_low, double x_up, double y_low, double y_up); void design_TH1D(TH1D *histogram, string xaxis_name, string yaxis_name, Color_t color, int marker_style, double x_low, double x_up, double y_low, double y_up); TLine *design_cut_line(float x1, float y1, float x2, float y2, Color_t color); TLine *design_veto_line(float x1, float y1, float x2, float y2, Color_t color); TLine *design_ratio_line(float x1, float x2, Color_t color); void designTGraph(TGraphErrors *graph, string title, string xAxisName, string yAxisName, Color_t color, Int_t markerStyle); //////////////////////////////////// /// /// /// TMVA plots /// /// //////////////////////////////////// bool DesignCorrelationPlots(TH2F *h_corr); TCanvas *c_forCOLZ(string name); TCanvas *c_Correlation(string type); bool designVariablesSignalVsBackground(TH1F *h_variableS, TH1F *h_variableB); bool designResponseSignalVsBackground(TH1F *h_responseS, TH1F *h_responseB, string method); bool designOvertraining(TH1F *h_responseS, TH1F *h_responseB); TCanvas *c_VariablesSignalVsBackground(string variable); TCanvas *c_Efficiency(string c_name); bool designEfficiency(TH1F *h_efficiencySignal,TH1F *h_efficiencyBackground,TH1F *h_purity,TH1F *h_significance, string method); TPaveText *significanceText(double xmin, int nSig, int nBkg, double maxSignificance, double maxSignificanceMLPcut); TCanvas *c_ROCplot(string c_name); void designROC(TH1F* h_ROC, int index); //////////////////////////////////// /// /// /// Efficiencies /// /// //////////////////////////////////// TPaveText *text_effFromPi0(double yieldSig, double yieldBkg, double ymax); TCanvas *c_L0MuonEff(string c_name); void designL0MuonEffHistos(TH1D *L0MuonEffData,TH1D *L0MuonEffMC, TH1D *L0MuonEffRatio); TCanvas * designL0MuonEfficiencies(string year, string magnet,TH1D *L0MuonEffData,TH1D *L0MuonEffMC, TH1D *L0MuonEffRatio, string extraString); void designBasicEfficiency(TGraphErrors *graph, string title, string xAxisName, string effName, double lowRange, double highRange); void designBasicEfficiency(TGraphErrors *graph, string title, string xAxisName, string effName, double lowRange, double highRange, Color_t color); void designMultiGraphEfficiency(TMultiGraph *graph, string title, string xAxisName, string effName, double lowRange, double highRange); //////////////////////////////////// /// /// /// Other plots /// /// //////////////////////////////////// TH1D *BmassHistogram(string hist_name, string title, string xaxis_name,Color_t color); void TM_canvas(string name, TH1D *all, TH1D *TMed, TH1D *notTMed, string year, bool ReferenceChannel, bool PHSP, bool B0, bool K1, bool Inc); void designMultiGraph(TMultiGraph *multGraph, string name, string xaxis_name, string yaxis_name, double lowx, double highx, double lowy, double highy); void designMultiGraph(TMultiGraph *multGraph, string name, string xaxis_name, string yaxis_name); void addYearTag(Float_t x, Float_t y, string year, int Run, Int_t color, Float_t Scaling); void addAnyTag(Float_t x, Float_t y, string text, Int_t color, Float_t Scaling); //////////////////////////////////// /// /// /// Truth-matching stuff /// /// //////////////////////////////////// TCanvas *c_for_TH2D(string name); TH1D *hist_cosThetaK(string hist_name, string title, Color_t color, bool cos); TH1D *hist_cosAngle(string angle, string hist_name, string title, Color_t color, bool cos, bool norm); //////////////////////////////////// /// /// /// Mass fit stuff /// /// //////////////////////////////////// void designMassFitFrame(RooPlot* frame, float pullHeight); void designPullFrame(RooPlot *pullFrame, RooPlot *frame_m, float pullHeight); TLine *threeSigmaLine (bool plus); //////////////////////////////////// /// /// /// reweighting control plots /// /// //////////////////////////////////// void drawKolmogorovTest(TH1D *hist_nTracks, TH1D * hist_nTracks_MC, string canvasPath, string TMtype); void drawWeightRatio(TH1D *hist_w, string canvasPath, bool is2D, string TMtype); void drawWeightCorrelation(TH2D *hCorrelationCheck, double CorrelationCoefficent, string canvasPath); //////////////////////////////////// /// /// /// BDT scan /// /// //////////////////////////////////// void designYieldGraph(TGraphErrors *graph, int Run, string year, string tag, string basicPath, TFile *TGraphOutput, bool fineScan); //////////////////////////////////// /// /// /// Yiled plots /// /// //////////////////////////////////// void design_YieldInQ2(int Run, TGraphErrors *graphSig, TGraphErrors *graphBkg, TGraphErrors *graphSignificance, TGraphErrors *CMS, bool fixRange); void design_SignificanceInQ2(int Run, TGraphErrors *graphSignificance, TGraphErrors *CMS, bool fixRange); #endif // DESIGN_HPP