import os import math import sys from ROOT import TGraphAsymmErrors, TFile, TH1D, TCanvas, gROOT, TChain, gStyle gROOT.SetBatch() gROOT.SetStyle('Plain') gStyle.SetLabelSize(0.04, "X") gStyle.SetLabelSize(0.04, "Y") gStyle.SetTitleSize(0.04, "X") gStyle.SetTitleSize(0.04, "Y") gStyle.SetLabelOffset(0.005, "X") gStyle.SetLabelOffset(0.005, "Y") gStyle.SetTitleOffset(1.0, "X") gStyle.SetTitleOffset(1.0, "Y") gStyle.SetNdivisions(505, "X") gStyle.SetNdivisions(505, "Y") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetMarkerSize(1.5) canvas = TCanvas("c1", "c1", 800, 800) fWeights = TFile( os.environ["CMSSW_BASE"] + '/src/DisappTrks/StandardAnalysis/data/isrWeight_disappTrks_run2.root', 'read') h_1 = fWeights.Get('SingleMu_2017') h_2 = fWeights.Get('madgraphOverPythia8_94X')
def cebefo_style(): #TStyle *gStyle = new TStyle("gStyle","gStyle"); #our settings, maybe in the future we could create a more personal style gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetHistLineWidth(3) gStyle.SetMarkerStyle(1) gStyle.SetTextSize(0.065) gStyle.SetOptFit(1111) # axis gStyle.SetTitleSize(.05, "X") #.055 gStyle.SetTitleOffset(1.1, "X") #1.2,0.9 #gStyle.SetLabelOffset(0.003,"X"); gStyle.SetLabelSize(.05, "X") #gStyle.SetLabelFont(42,"X"); gStyle.SetTitleSize(.05, "Y") #.055 gStyle.SetTitleOffset(1.1, "Y") #gStyle.SetLabelOffset(0.008,"Y"); gStyle.SetLabelSize(.05, "Y") #gStyle.SetLabelFont(42,"Y"); gStyle.SetPadLeftMargin(.16) gStyle.SetPadBottomMargin(.12) gStyle.SetTitleSize(.05, "Z") gStyle.SetTitleOffset(1.8, "Z") #gStyle.SetLabelOffset(0.008,"Z"); gStyle.SetLabelSize(0.06, "Z") #gStyle.SetLabelFont(42,"Z"); # gStyle.SetLegendTextSize(0.04); #gStyle.SetStatFontSize(0.2); #histograms properties gStyle.SetOptStat(112210) #gStyle.SetStripDecimals(False) #gStyle.SetLineStyleString(11,"20 10") # canvas #gStyle.SetCanvasColor(0); #gStyle.SetCanvasBorderSize(10); #gStyle.SetCanvasBorderMode(0); #gStyle.SetCanvasDefW(600); #gStyle.SetCanvasDefH(600); # pads # gStyle.SetPadColor(0); # gStyle.SetPadBorderSize(10); # gStyle.SetPadBorderMode(0); gStyle.SetPadLeftMargin(.12) gStyle.SetPadRightMargin(.02) gStyle.SetPadBottomMargin(.12) gStyle.SetPadTopMargin(.07) gStyle.SetPadGridX(1) gStyle.SetPadGridY(1)
# pylint: disable=too-many-branches # pylint: disable=too-many-locals def plot_hfptspectrum_comb(case, arraytype): gROOT.SetStyle("Plain") gStyle.SetOptStat(0) gStyle.SetOptStat(0000) gStyle.SetPalette(0) gStyle.SetCanvasColor(0) gStyle.SetFrameFillColor(0) gStyle.SetOptTitle(0) gStyle.SetTitleOffset(1.15, "y") gStyle.SetTitleFont(42, "xy") gStyle.SetLabelFont(42, "xy") gStyle.SetTitleSize(0.042, "xy") gStyle.SetLabelSize(0.035, "xy") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) with open("data/database_ml_parameters_%s.yml" % case, 'r') as param_config: data_param = yaml.load(param_config, Loader=yaml.FullLoader) folder_plots = data_param[case]["analysis"]["dir_general_plots"] if not os.path.exists(folder_plots): print("creating folder ", folder_plots) os.makedirs(folder_plots) folder_MB_allperiods = data_param[case]["analysis"][ arraytype[0]]["data"]["resultsallp"] folder_triggered = data_param[case]["analysis"][
def setStyle(): gStyle.SetPadBorderMode(0); gStyle.SetFrameBorderMode(0); gStyle.SetPadBottomMargin(0.12); gStyle.SetPadLeftMargin(0.12); gStyle.SetCanvasColor(ROOT.kWhite); gStyle.SetCanvasDefH(600); #Height of canvas gStyle.SetCanvasDefW(600); #Width of canvas gStyle.SetCanvasDefX(0); #POsition on screen gStyle.SetCanvasDefY(0); gStyle.SetPadTopMargin(0.05); gStyle.SetPadBottomMargin(0.15);#0.13); gStyle.SetPadLeftMargin(0.11);#0.16); gStyle.SetPadRightMargin(0.05);#0.02); # For the Pad: gStyle.SetPadBorderMode(0); gStyle.SetPadColor(ROOT.kWhite); gStyle.SetPadGridX(ROOT.kFALSE); gStyle.SetPadGridY(ROOT.kFALSE); gStyle.SetGridColor(0); gStyle.SetGridStyle(3); gStyle.SetGridWidth(1); # For the frame: gStyle.SetFrameBorderMode(0); gStyle.SetFrameBorderSize(1); gStyle.SetFrameFillColor(0); gStyle.SetFrameFillStyle(0); gStyle.SetFrameLineColor(1); gStyle.SetFrameLineStyle(1); gStyle.SetFrameLineWidth(1); gStyle.SetAxisColor(1, "XYZ"); gStyle.SetStripDecimals(ROOT.kTRUE); gStyle.SetTickLength(0.03, "XYZ"); gStyle.SetNdivisions(505, "XYZ"); gStyle.SetPadTickX(1); # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1); gStyle.SetGridColor(0); gStyle.SetGridStyle(3); gStyle.SetGridWidth(1); gStyle.SetTitleColor(1, "XYZ"); gStyle.SetTitleFont(42, "XYZ"); gStyle.SetTitleSize(0.05, "XYZ"); gStyle.SetTitleXOffset(1.15);#0.9); gStyle.SetTitleYOffset(1.3); # => 1.15 if exponents gStyle.SetLabelColor(1, "XYZ"); gStyle.SetLabelFont(42, "XYZ"); gStyle.SetLabelOffset(0.007, "XYZ"); gStyle.SetLabelSize(0.045, "XYZ"); gStyle.SetPadBorderMode(0); gStyle.SetFrameBorderMode(0); gStyle.SetTitleTextColor(1); gStyle.SetTitleFillColor(10); gStyle.SetTitleFontSize(0.05); gStyle.SetOptStat(0); gStyle.SetOptTitle(0) gStyle.SetOptFit(1) NRGBs = 5 NCont = 255 stops = [ 0.00, 0.34, 0.61, 0.84, 1.00 ] red = [ 0.00, 0.00, 0.87, 1.00, 0.51 ] green = [ 0.00, 0.81, 1.00, 0.20, 0.00 ] blue = [ 0.51, 1.00, 0.12, 0.00, 0.00 ] stopsArray = array('d', stops) redArray = array('d', red) greenArray = array('d', green) blueArray = array('d', blue) TColor.CreateGradientColorTable(NRGBs, stopsArray, redArray, greenArray, blueArray, NCont) gStyle.SetNumberContours(NCont)
def SetGlobalStyle(**kwargs): ''' Method to set global style. Parameters ---------- - padrightmargin (float), default = 0.035 - padleftmargin (float), default = 0.12 - padtopmargin (float), default = 0.035 - padbottommargin (float), default = 0.12 - titlesize (float), default = 0.050 - titlesizex (float), default = 0.050 - titlesizey (float), default = 0.050 - titlesizez (float), default = 0.050 - labelsize (float), default = 0.045 - labelsizex (float), default = 0.045 - labelsizey (float), default = 0.045 - labelsizez (float), default = 0.045 - titleoffset (float), default = 1.2 - titleoffsetx (float), default = 1.2 - titleoffsey (float), default = 1.2 - titleoffsetz (float), default = 1.2 - opttitle (int), default = 0 - optstat (int), default = 0 - maxdigits (int), default no max value ''' # pad margins if 'padrightmargin' in kwargs: gStyle.SetPadRightMargin(kwargs['padrightmargin']) else: gStyle.SetPadRightMargin(0.035) if 'padleftmargin' in kwargs: gStyle.SetPadLeftMargin(kwargs['padleftmargin']) else: gStyle.SetPadLeftMargin(0.12) if 'padtopmargin' in kwargs: gStyle.SetPadTopMargin(kwargs['padtopmargin']) else: gStyle.SetPadTopMargin(0.035) if 'padbottommargin' in kwargs: gStyle.SetPadBottomMargin(kwargs['padbottommargin']) else: gStyle.SetPadBottomMargin(0.1) # title sizes if 'titlesize' in kwargs: gStyle.SetTitleSize(kwargs['titlesize'], 'xyz') else: gStyle.SetTitleSize(0.050, 'xyz') if 'titlesizex' in kwargs: gStyle.SetTitleSize(kwargs['titlesizex'], 'x') if 'titlesizey' in kwargs: gStyle.SetTitleSize(kwargs['titlesizex'], 'y') if 'titlesizez' in kwargs: gStyle.SetTitleSize(kwargs['titlesizex'], 'z') # label sizes if 'labelsize' in kwargs: gStyle.SetLabelSize(kwargs['labelsize'], 'xyz') else: gStyle.SetLabelSize(0.045, 'xyz') if 'labelsizex' in kwargs: gStyle.SetLabelSize(kwargs['labelsizex'], 'x') if 'labelsizey' in kwargs: gStyle.SetLabelSize(kwargs['labelsizex'], 'y') if 'labelsizez' in kwargs: gStyle.SetLabelSize(kwargs['labelsizex'], 'z') # title offsets if 'titleoffset' in kwargs: gStyle.SetTitleOffset(kwargs['titleoffset'], 'xyz') else: gStyle.SetTitleOffset(1.2, 'xyz') if 'titleoffsetx' in kwargs: gStyle.SetTitleOffset(kwargs['titleoffsetx'], 'x') if 'titleoffsety' in kwargs: gStyle.SetTitleOffset(kwargs['titleoffsety'], 'y') if 'titleoffsetz' in kwargs: gStyle.SetTitleOffset(kwargs['titleoffsetz'], 'z') # other options if 'opttitle' in kwargs: gStyle.SetOptTitle(kwargs['opttitle']) else: gStyle.SetOptTitle(0) if 'optstat' in kwargs: gStyle.SetOptStat(kwargs['optstat']) else: gStyle.SetOptStat(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetLegendBorderSize(0) if 'maxdigits' in kwargs: TGaxis.SetMaxDigits(kwargs['maxdigits'])
def initStyle(): gROOT.SetStyle("Plain") # For the canvas: gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(700) #Height of canvas gStyle.SetCanvasDefW(700) #Width of canvas gStyle.SetCanvasDefX(0) #Position on screen gStyle.SetCanvasDefY(0) # For the line: gStyle.SetLineWidth(2) # For the Pad: gStyle.SetPadBorderMode(0) # gStyle.SetPadBorderSize(Width_t size = 1) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(True) gStyle.SetPadGridY(True) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) # For the histo: # gStyle.SetHistFillColor(1) # gStyle.SetHistFillStyle(0) gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) # gStyle.SetLegoInnerR(Float_t rad = 0.5) # gStyle.SetNumberContours(Int_t number = 20) gStyle.SetEndErrorSize(2) #gStyle.SetErrorMarker(20) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(8) gStyle.SetMarkerSize(1) #For the fit/function: gStyle.SetOptFit(0) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) #For the date: gStyle.SetOptDate(0) # gStyle.SetDateX(Float_t x = 0.01) # gStyle.SetDateY(Float_t y = 0.01) # For the statistics box: gStyle.SetOptFile(0) gStyle.SetOptStat(0) # To display the mean and RMS: SetOptStat("mr") gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) # gStyle.SetStatStyle(Style_t style = 1001) # gStyle.SetStatX(Float_t x = 0) # gStyle.SetStatY(Float_t y = 0) # Margins: gStyle.SetPadTopMargin(0.11) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.17) gStyle.SetPadRightMargin(0.07) # For the Global title: gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.04) # gStyle.SetTitleH(0) # Set the height of the title box # gStyle.SetTitleW(0) # Set the width of the title box #gStyle.SetTitleX(0.35) # Set the position of the title box #gStyle.SetTitleY(0.986) # Set the position of the title box # gStyle.SetTitleStyle(Style_t style = 1001) #gStyle.SetTitleBorderSize(0) # For the axis titles: gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.05, "XYZ") # gStyle.SetTitleXSize(Float_t size = 0.02) # Another way to set the size? # gStyle.SetTitleYSize(Float_t size = 0.02) gStyle.SetTitleXOffset(1.) gStyle.SetTitleYOffset(1.3) #gStyle.SetTitleOffset(1.1, "Y") # Another way to set the Offset # For the axis labels: gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.035, "XYZ") # For the axis: gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX( 1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) # Change for log plots: gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPalette(1) #(1,0) # another top group addition gStyle.SetHatchesSpacing(1.0) # Postscript options: gStyle.SetPaperSize(20., 20.) #gStyle.SetPaperSize(TStyle.kA4) #gStyle.SetPaperSize(27., 29.7) #TGaxis.SetMaxDigits(3) # gStyle.SetLineScalePS(Float_t scale = 3) # gStyle.SetLineStyleString(Int_t i, const char* text) # gStyle.SetHeaderPS(const char* header) # gStyle.SetTitlePS(const char* pstitle) #gStyle.SetColorModelPS(1) # gStyle.SetBarOffset(Float_t baroff = 0.5) # gStyle.SetBarWidth(Float_t barwidth = 0.5) # gStyle.SetPaintTextFormat(const char* format = "g") # gStyle.SetPalette(Int_t ncolors = 0, Int_t* colors = 0) # gStyle.SetTimeOffset(Double_t toffset) # gStyle.SetHistMinimumZero(kTRUE) #gStyle.cd() print "TDR Style initialized"
import ROOT from ROOT import gStyle, TF1, TMath, TH1F # Global style settings gStyle.SetOptStat(1111) gStyle.SetOptFit(111) gStyle.SetLabelSize(0.03, "x") gStyle.SetLabelSize(0.03, "y") #Numeric constants invsq2pi = 0.3989422804014 #(2 pi)^(-1/2) mpshift = -0.22278298 # Landau maximum location def langaufun(x, par): ''' Fit parameters: par[0]=Width (scale) parameter of Landau density par[1]=Most Probable (MP, location) parameter of Landau density par[2]=Total area (integral -inf to inf, normalization constant) par[3]=Width (sigma) of convoluted Gaussian function In the Landau distribution (represented by the CERNLIB approximation), the maximum is located at x=-0.22278298 with the location parameter=0. This shift is corrected within this function, so that the actual maximum is identical to the MP parameter. ''' # control constants ns = 100 # number of convolution steps sc = 5.0 # convolution extends to +-sc Gaussian sigmas
def setStyle(): gStyle.SetPadBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetPadBottomMargin(0.12) gStyle.SetPadLeftMargin(0.12) gStyle.SetCanvasColor(ROOT.kWhite) gStyle.SetCanvasDefH(600) #Height of canvas gStyle.SetCanvasDefW(600) #Width of canvas gStyle.SetCanvasDefX(0) #POsition on screen gStyle.SetCanvasDefY(0) gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.15) #0.13); gStyle.SetPadLeftMargin(0.15) #0.16); gStyle.SetPadRightMargin(0.05) #0.02); # For the Pad: gStyle.SetPadBorderMode(0) # gStyle.SetPadBorderSize(Width_t size = 1); gStyle.SetPadColor(ROOT.kWhite) gStyle.SetPadGridX(ROOT.kFALSE) gStyle.SetPadGridY(ROOT.kFALSE) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(ROOT.kTRUE) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(505, "XYZ") gStyle.SetPadTickX(1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.05, "XYZ") # gStyle.SetTitleXSize(Float_t size = 0.02); # Another way to set the size? # gStyle.SetTitleYSize(Float_t size = 0.02); gStyle.SetTitleXOffset(1.15) #0.9); gStyle.SetTitleYOffset(1.3) # => 1.15 if exponents gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.045, "XYZ") gStyle.SetPadBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05)
def tdrstyle(): gROOT.SetStyle("Plain") gStyle.SetAxisColor(1, "XYZ") gStyle.SetCanvasColor(0) #gStyle.SetCanvasBorderSize(10) gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasDefH(700) gStyle.SetCanvasDefW(700) gStyle.SetCanvasDefX(0) gStyle.SetCanvasDefY(0) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillStyle(0) gStyle.SetFrameFillColor(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) # 0? gStyle.SetFrameLineWidth(1) # 1? gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) #gStyle.SetHistFillColor(1) #gStyle.SetHistFillStyle(0) gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(1) gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42,"XYZ") gStyle.SetLabelOffset(0.007,"XYZ") # 0.010? gStyle.SetLabelSize(0.05,"XYZ") # 0.04? gStyle.SetLegendBorderSize(0) gStyle.SetLegendFillColor(0) gStyle.SetLegendFont(42) gStyle.SetMarkerSize(1.0) gStyle.SetMarkerStyle(20) gStyle.SetLineColor(1) gStyle.SetLineWidth(2) #gStyle.SetLineScalePS(2) gStyle.SetOptDate(0) gStyle.SetOptFile(0) gStyle.SetOptFit(1) gStyle.SetOptStat(0) gStyle.SetOptTitle(0) #gStyle.SetOptLogx(0) #gStyle.SetOptLogy(0) #gStyle.SetOptLogz(0) gStyle.SetPadColor(0) gStyle.SetPadBorderMode(0) gStyle.SetPadBorderSize(10) gStyle.SetPadTopMargin(0.05) # 0.08? gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.03) # 0.05? gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetStatColor(0) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) #gStyle.SetStatX(0) #gStyle.SetStatY(0) #gStyle.SetTextSize(0.055) gStyle.SetTextFont(42) gStyle.SetTitleBorderSize(0) gStyle.SetTitleColor(1) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1,"XYZ") gStyle.SetTitleFont(42,"XYZ") gStyle.SetTitleSize(0.06,"XYZ") # 0.05? #gStyle.SetTitleOffset(1.4,"XYZ") gStyle.SetTitleOffset(0.9,"X") gStyle.SetTitleOffset(1.20,"Y") gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) gStyle.SetTitleTextColor(1) #gStyle.SetTitleH(0) #gStyle.SetTitleW(0) #gStyle.SetTitleX(0) #gStyle.SetTitleY(0.985) #gStyle.SetTitleStyle(1001) gStyle.SetPalette(1) #gStyle.SetNdivisions(510, "XYZ") # 505? gStyle.SetNdivisions(505, "XYZ") gStyle.SetEndErrorSize(2) # 2? #gStyle.SetErrorMarker(20) #gStyle.SetErrorX(0.) #gStyle.SetPaperSize(20.,20.) gStyle.SetStripDecimals(1) gStyle.SetTickLength(0.03, "XYZ") return 1
gStyle.SetTitleXOffset(1.0) gStyle.SetTitleYOffset(1.2) font=42 tsize=0.05 gStyle.SetTextFont(font); gStyle.SetTextSize(tsize); gStyle.SetLabelFont(font,"x"); gStyle.SetTitleFont(font,"x"); gStyle.SetLabelFont(font,"y"); gStyle.SetTitleFont(font,"y"); gStyle.SetLabelFont(font,"z"); gStyle.SetTitleFont(font,"z"); gStyle.SetLabelSize(tsize,"x"); gStyle.SetTitleSize(tsize,"x"); gStyle.SetLabelSize(tsize,"y"); gStyle.SetTitleSize(tsize,"y"); gStyle.SetLabelSize(tsize,"z"); gStyle.SetTitleSize(tsize,"z"); gStyle.SetNdivisions(508); gStyle.SetPadTickX(1); gStyle.SetPadTickY(1); legend_tsize=0.04 gStyle.SetLegendTextSize(legend_tsize); class pixelGraph():
# import myPyRootSettings sys.path.append(os.path.join(os.environ.get("HOME"), 'rootmacros')) from myPyRootSettings import prepPlot if __name__ == '__main__': gROOT.Reset() gROOT.SetStyle("MyStyle") # gStyle.SetOptLogy(0); gStyle.SetPalette(1) gStyle.SetOptTitle(0) gStyle.SetOptStat(0) gStyle.SetPadTopMargin(0.02) gStyle.SetPadTickX(1) gStyle.SetLabelSize(0.045, "XYZ") gStyle.SetLabelSize(0.04, "Y") gStyle.SetTitleSize(0.05, "XYZ") RootDir = "." WhichCorr = "L2L3" WhichJets = "ak5PFJets" # WhichJets="ak5CaloJets" if WhichJets == "ak5PFJets": # RootFile="jetCorrectionsOnTheFlyExample_L2L3.root" RootFile = "jetCorrectionsOnTheFlyExample_" + WhichCorr + "_data_r180250.root" else: RootFile = "jetCorrectionsOnTheFlyExample_" + WhichCorr + "_data_" + WhichJets + "r180250.root" OutFile = "Corr_" + WhichCorr + "_data_" + WhichJets + "r180250.root" HistFile = os.path.join(RootDir, RootFile)
def main(): ''' Main function ''' prod = 'LHC20g11a' tree = uproot.open('AnalysisResults.root')['AOD_dAOD_Matching/fTreeMismatch'] df = tree.pandas.df() df = df.sort_values(by=['file_name']) pd.set_option('display.max_colwidth', None) nFiles = len(df) nEvents = sum(df['n_events'].values) dfSel = {'good_files': df.query('mismatch_status == 0'), 'mism_ev': FilterBitDf(df, 'mismatch_status', [0]), 'mism_TProcessID': FilterBitDf(df, 'mismatch_status', [1]), 'mism_cand': FilterBitDf(df, 'mismatch_status', [2]), 'mism_ev_and_TProcessID': FilterBitDf(df, 'mismatch_status', [0, 1], logic='and'), 'mism_ev_and_cand': FilterBitDf(df, 'mismatch_status', [0, 2], logic='and'), 'mism_cand_and_TProcessID': FilterBitDf(df, 'mismatch_status', [1, 2], logic='and'), 'mism_all': FilterBitDf(df, 'mismatch_status', [1, 2, 3], logic='and')} fracFiles, fracEv = {}, {} for mism in dfSel: fracFiles[mism] = len(dfSel[mism]) / nFiles fracEv[mism] = sum(dfSel[mism]['n_events'].values) / nEvents print(f'\nfraction of files with flag \"{mism}\": {fracFiles[mism]}') print(f'fraction of events with flag \"{mism}\": {fracEv[mism]}') gStyle.SetTitleSize(0.045, 'xy') gStyle.SetLabelSize(0.04, 'xy') gStyle.SetPadTopMargin(0.035) gStyle.SetPadRightMargin(0.035) gStyle.SetPadBottomMargin(0.15) gStyle.SetPadLeftMargin(0.12) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetOptStat(0) gStyle.SetPalette(kIsland) hAODMism = TH1F('hAODMism', ';;fraction', 8, 0.5, 8.5) hAODMism.SetLineWidth(2) hAODMism.SetLineColor(kRed+1) hAODMism.GetYaxis().SetRangeUser(1.e-5, 1.) hEventMism = TH1F('hEventMism', ';;fraction', 8, 0.5, 8.5) hEventMism.SetLineWidth(2) hEventMism.SetLineColor(kAzure+4) hEventMism.GetYaxis().SetRangeUser(1.e-5, 1.) for iMism, mism in enumerate(dfSel): hAODMism.GetXaxis().SetBinLabel(iMism+1, mism) hEventMism.GetXaxis().SetBinLabel(iMism+1, mism) hAODMism.SetBinContent(iMism+1, fracFiles[mism]) hEventMism.SetBinContent(iMism+1, fracEv[mism]) leg = TLegend(0.6, 0.7, 0.8, 0.9) leg.SetBorderSize(0) leg.SetFillStyle(0) leg.AddEntry(hAODMism, 'AOD files', 'l') leg.AddEntry(hEventMism, 'events', 'l') cMismFrac = TCanvas('cMismFrac', '', 1920, 1080) cMismFrac.SetLogy() hAODMism.Draw() hEventMism.Draw('same') leg.Draw() cMismFrac.Modified() cMismFrac.Update() dfSel['mism_cand'][['file_name']].to_csv(f'AOD_mismatch_{prod}_cand.txt', header=False, index=False) dfSel['mism_ev'][['file_name']].to_csv(f'AOD_mismatch_{prod}_nevents.txt', header=False, index=False) dfSel['mism_TProcessID'][['file_name']].to_csv(f'AOD_mismatch_{prod}_TProcessID.txt', header=False, index=False) cMismFrac.SaveAs(f'AODMismatch_fractions_{prod}.pdf') # check for files not tested (jobs failed) runs = np.unique(df['run_number'].values) nRuns = len(runs) for iRun, run in enumerate(runs): dfRunSel = df.query(f'run_number == {run}') lastProcessedFile = list(dfRunSel['file_name'].values)[-1] numLastProcFile = int(lastProcessedFile.decode().rpartition('AOD/')[2].rpartition('/')[0]) hFilesTested = TH2F(f'hFilesTested{run}', f'run {run};AOD number;', numLastProcFile, 0.5, numLastProcFile+0.5, 1, 0., 1.) hFilesTested.GetZaxis().SetRangeUser(-0.001, 1.) cFilesTested = TCanvas(f'cFilesTested{run}', '', 1920, 1080) cFilesTested.SetTopMargin(0.12) cFilesTested.SetRightMargin(0.12) for fileName in dfRunSel['file_name']: numProcFile = int(fileName.decode().rpartition('AOD/')[2].rpartition('/')[0]) hFilesTested.Fill(numProcFile, 0.5) hFilesTested.Draw('colz') cFilesTested.Modified() cFilesTested.Update() if iRun == 0: cFilesTested.SaveAs(f'FilesTested_{prod}.pdf[') cFilesTested.SaveAs(f'FilesTested_{prod}.pdf') if iRun == nRuns-1: cFilesTested.SaveAs(f'FilesTested_{prod}.pdf]') input()
def setgstyle(): # Zero horizontal error bars gStyle.SetErrorX(0) # For the canvas gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(0) gStyle.SetCanvasDefH(800) # Height of canvas gStyle.SetCanvasDefW(800) # Width of canvas gStyle.SetCanvasDefX(0) # Position on screen gStyle.SetCanvasDefY(0) # For the frame gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(1) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(0) gStyle.SetFrameLineWidth(1) # For the Pad gStyle.SetPadBorderMode(0) gStyle.SetPadColor(0) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # Margins gStyle.SetPadTopMargin(0.08) gStyle.SetPadBottomMargin(0.19) gStyle.SetPadLeftMargin(0.17) #gStyle.SetPadRightMargin(0.07) # For the histo: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) gStyle.SetMarkerSize(1.4) gStyle.SetEndErrorSize(4) # For the statistics box: gStyle.SetOptStat(0) # For the axis gStyle.SetAxisColor(1, "XYZ") gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetStripDecimals(False) # For the axis labels and titles gStyle.SetTitleColor(1, "XYZ") gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.045, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") # For the legend gStyle.SetLegendBorderSize(0)
def cebefo_style(): #TStyle *gStyle = new TStyle("gStyle","gStyle"); gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetLineWidth(2) gStyle.SetFuncWidth(2) gStyle.SetHistLineWidth(3) gStyle.SetMarkerStyle(1) gStyle.SetTextSize(0.065) gStyle.SetOptFit(1111) # axis gStyle.SetTitleSize(.05, "X") #.055 gStyle.SetTitleOffset(1.1, "X") #1.2,0.9 #gStyle.SetLabelOffset(0.003,"X"); gStyle.SetLabelSize(.05, "X") #gStyle.SetLabelFont(42,"X"); gStyle.SetTitleSize(.05, "Y") #.055 gStyle.SetTitleOffset(1.5, "Y") #gStyle.SetLabelOffset(0.008,"Y"); gStyle.SetLabelSize(.05, "Y") #gStyle.SetLabelFont(42,"Y"); gStyle.SetTitleSize(.05, "Z") gStyle.SetTitleOffset(1.8, "Z") #gStyle.SetLabelOffset(0.008,"Z"); gStyle.SetLabelSize(0.05, "Z") #gStyle.SetLabelFont(42,"Z"); rt.TGaxis.SetMaxDigits(4) # Legend # gStyle.SetLegendTextSize(0.04); #gStyle.SetStatFontSize(0.2); #histograms properties gStyle.SetOptStat(112210) #gStyle.SetStripDecimals(False) #gStyle.SetLineStyleString(11,"20 10") # canvas #gStyle.SetCanvasColor(0); #gStyle.SetCanvasBorderSize(10); #gStyle.SetCanvasBorderMode(0); #gStyle.SetCanvasDefW(600); #gStyle.SetCanvasDefH(600); # pads # gStyle.SetPadColor(0); # gStyle.SetPadBorderSize(10); # gStyle.SetPadBorderMode(0); gStyle.SetPadLeftMargin(.14) gStyle.SetPadRightMargin(.02) gStyle.SetPadBottomMargin(.12) gStyle.SetPadTopMargin(.05) gStyle.SetPadGridX(1) gStyle.SetPadGridY(1)
def setTDRStyle(force): gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(600) gStyle.SetCanvasDefW(600) gStyle.SetCanvasDefX(0) gStyle.SetCanvasDefY(0) gStyle.SetPadBorderMode(0) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(0) gStyle.SetFrameFillStyle(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) if force: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(1) gStyle.SetEndErrorSize(2) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(20) gStyle.SetOptFit(1) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) gStyle.SetOptDate(0) gStyle.SetOptFile(0) gStyle.SetOptStat(0) gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.04) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.2) gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.04) gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") gStyle.SetTitleXOffset(0.9) gStyle.SetTitleYOffset(1.25) gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPaperSize(20., 20.) gROOT.ForceStyle()
#----------------------------------------------------------------------------- # fonts #----------------------------------------------------------------------------- font = 42 # 22 = Times, 42 = Helvetica gStyle.SetTextFont(font) gStyle.SetLabelFont(font, 'xyz') gStyle.SetTitleFont(font, 'xyz') gStyle.SetTitleFont(font, 't') gStyle.SetStatFont(font) #----------------------------------------------------------------------------- # text sizes #----------------------------------------------------------------------------- gStyle.SetTextSize(0.06) gStyle.SetLabelSize(0.06, 'xyz') gStyle.SetTitleSize(0.06, 'xyz') gStyle.SetTitleSize(0.06, 't') gStyle.SetStatFontSize(0.04) #gStyle.SetTextSizePixels(30) #gStyle.SetLabelSize(30, 'xyz') #gStyle.SetTitleSize(30, 'xyz') #gStyle.SetTitleSize(30, 't') #gStyle.SetStatFontSize(15) #----------------------------------------------------------------------------- # stat box #----------------------------------------------------------------------------- gStyle.SetOptStat(0) #gStyle.SetOptStat(1110)
def setStyle(): gStyle.SetCanvasColor(0) gStyle.SetCanvasBorderSize(10) gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasDefH(700) gStyle.SetCanvasDefW(700) gStyle.SetPadColor(0) gStyle.SetPadBorderSize(10) gStyle.SetPadBorderMode(0) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadTopMargin(0.08) gStyle.SetPadLeftMargin(0.15) gStyle.SetPadRightMargin(0.05) gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetFrameFillStyle(0) gStyle.SetFrameFillColor(0) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(0) gStyle.SetFrameLineWidth(1) gStyle.SetFrameBorderSize(10) gStyle.SetFrameBorderMode(0) gStyle.SetNdivisions(505) gStyle.SetLineWidth(2) gStyle.SetHistLineWidth(2) gStyle.SetFrameLineWidth(2) gStyle.SetLegendFillColor(root.kWhite) gStyle.SetLegendFont(42) gStyle.SetMarkerSize(1.2) gStyle.SetMarkerStyle(20) gStyle.SetLabelSize(0.040, "X") gStyle.SetLabelSize(0.040, "Y") gStyle.SetLabelOffset(0.010, "X") gStyle.SetLabelOffset(0.010, "Y") gStyle.SetLabelFont(42, "X") gStyle.SetLabelFont(42, "Y") gStyle.SetTitleBorderSize(0) gStyle.SetTitleFont(42) gStyle.SetTitleFont(42, "X") gStyle.SetTitleFont(42, "Y") gStyle.SetTitleSize(0.045, "X") gStyle.SetTitleSize(0.045, "Y") gStyle.SetTitleOffset(1.4, "X") gStyle.SetTitleOffset(1.4, "Y") gStyle.SetTextSize(0.055) gStyle.SetTextFont(42) gStyle.SetOptStat(0) setNormalColorTable()
def initialize(fitresults=True, grid=False): gROOT.SetStyle("Plain") gStyle.SetOptFit() gStyle.SetOptStat(0) # For the canvas: gStyle.SetCanvasBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetCanvasDefH(600) #Height of canvas gStyle.SetCanvasDefW(600) #Width of canvas gStyle.SetCanvasDefX(0) #POsition on screen gStyle.SetCanvasDefY(0) # For the Pad: gStyle.SetPadBorderMode(0) gStyle.SetPadColor(kWhite) gStyle.SetPadGridX(False) gStyle.SetPadGridY(False) gStyle.SetGridColor(0) gStyle.SetGridStyle(3) gStyle.SetGridWidth(1) # For the frame: gStyle.SetFrameBorderMode(0) gStyle.SetFrameBorderSize(1) gStyle.SetFrameFillColor(kWhite) gStyle.SetFrameFillStyle(1000) gStyle.SetFrameLineColor(1) gStyle.SetFrameLineStyle(1) gStyle.SetFrameLineWidth(1) # For the histo: gStyle.SetHistLineColor(1) gStyle.SetHistLineStyle(0) gStyle.SetHistLineWidth(2) gStyle.SetEndErrorSize(2) gStyle.SetErrorX(0.) gStyle.SetMarkerStyle(20) #For the fit/function: gStyle.SetOptFit(1) gStyle.SetFitFormat("5.4g") gStyle.SetFuncColor(2) gStyle.SetFuncStyle(1) gStyle.SetFuncWidth(1) #For the date: gStyle.SetOptDate(0) # For the statistics box: gStyle.SetOptFile(0) gStyle.SetOptStat(0) # To display the mean and RMS: SetOptStat("mr") gStyle.SetStatColor(kWhite) gStyle.SetStatFont(42) gStyle.SetStatFontSize(0.025) gStyle.SetStatTextColor(1) gStyle.SetStatFormat("6.4g") gStyle.SetStatBorderSize(1) gStyle.SetStatH(0.1) gStyle.SetStatW(0.15) # Margins: gStyle.SetPadTopMargin(0.05) gStyle.SetPadLeftMargin(0.16) gStyle.SetPadRightMargin(0.04) # top group adaption, original is 0.02 gStyle.SetPadBottomMargin(0.13) # For the Global title: gStyle.SetOptTitle(0) gStyle.SetTitleFont(42) gStyle.SetTitleColor(1) gStyle.SetTitleTextColor(1) gStyle.SetTitleFillColor(10) gStyle.SetTitleFontSize(0.05) # For the axis titles: gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") gStyle.SetTitleXOffset(0.9) gStyle.SetTitleYOffset(1.25) # For the axis labels: gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") #gStyle.SetLabelSize(0.04, "XYZ") # For the axis: gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) # To get tick marks on the opposite side of the frame gStyle.SetPadTickY(1) # Change for log plots: gStyle.SetOptLogx(0) gStyle.SetOptLogy(0) gStyle.SetOptLogz(0) gStyle.SetPalette(1) #(1,0) # another top group addition gStyle.SetHatchesSpacing(1.0) # Postscript options: gStyle.SetPaperSize(20., 20.) # For graphs gStyle.SetErrorX(0) # suppress error along x if grid: gStyle.SetPadGridX(gridOn) gStyle.SetPadGridY(gridOn) gStyle.SetGridColor(kGray)
def CLICdpStyle(): gROOT.SetStyle("Plain") gStyle.SetCanvasColor(root.kWhite) gStyle.SetFrameFillColor(root.kWhite) gStyle.SetStatColor(root.kWhite) gStyle.SetPadColor(root.kWhite) gStyle.SetFillColor(10) gStyle.SetTitleFillColor(root.kWhite) gStyle.SetPaperSize(20, 26) gStyle.SetDrawBorder(0) gStyle.SetCanvasBorderMode(0) gStyle.SetPadBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetLegendBorderSize(0) gStyle.SetTextSize(0.05) gStyle.SetTitleSize(0.06, "xyz") gStyle.SetLabelSize(0.06, "xyz") gStyle.SetLabelOffset(0.015, "xyz") gStyle.SetTitleOffset(1.2, "yz") gStyle.SetTitleOffset(1.17, "x") font = 42 gStyle.SetTitleFont(font) gStyle.SetTitleFontSize(0.06) gStyle.SetStatFont(font) gStyle.SetStatFontSize(0.07) gStyle.SetTextFont(font) gStyle.SetLabelFont(font, "xyz") gStyle.SetTitleFont(font, "xyz") gStyle.SetTitleBorderSize(0) gStyle.SetStatBorderSize(1) gStyle.SetMarkerStyle(1) gStyle.SetLineWidth(2) gStyle.SetMarkerSize(1.2) gStyle.SetPalette(1) gStyle.SetOptTitle(0) gStyle.SetOptStat(0) gStyle.SetOptFit(0) gStyle.SetEndErrorSize(5) gStyle.SetHistLineWidth(2) gStyle.SetFrameLineWidth(2) gStyle.SetFuncWidth(2) gStyle.SetHistLineColor(root.kBlack) gStyle.SetFuncColor(root.kBlack) gStyle.SetLabelColor(root.kBlack, "xyz") gStyle.SetPadBottomMargin(0.18) gStyle.SetPadTopMargin(0.11) gStyle.SetPadRightMargin(0.08) gStyle.SetPadLeftMargin(0.17) gStyle.SetNdivisions(506, "xy") gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetCanvasDefW(800) gStyle.SetCanvasDefH(700) gROOT.ForceStyle()
def initialization(batch=True, font=default_font): '''-- ROOT initialization --''' print "Initializing ROOT ..." # general gROOT.Reset() gROOT.SetBatch(batch) gROOT.SetStyle("Plain") # gStyle gStyle.SetFillColor(0) gStyle.SetCanvasColor(10) gStyle.SetLineWidth(1) gStyle.SetPalette(8) gStyle.SetTextFont(font) #gStyle.SetTextSize(30) # Frame gStyle.SetFrameBorderMode(0) gStyle.SetFrameFillColor(0) # Pad gStyle.SetPadBorderMode(0) gStyle.SetPadColor(0) gStyle.SetPadBottomMargin(0.1) gStyle.SetPadTopMargin(0.01) gStyle.SetPadLeftMargin(0.1) gStyle.SetPadRightMargin(0.01) gStyle.SetPadTickX(1) # make ticks be on all 4 sides. gStyle.SetPadTickY(1) gStyle.SetPadGridX(0) gStyle.SetPadGridY(0) # histogram gStyle.SetHistFillStyle(0) gStyle.SetOptTitle(0) gStyle.SetTitleSize(0.22) gStyle.SetTitleFontSize(10) gStyle.SetTitleFont(font) gStyle.SetTitleFont(font, "xyz") gStyle.SetTitleYOffset(1.0) gStyle.SetTitleXOffset(1.0) gStyle.SetTitleXSize(0.04) gStyle.SetTitleYSize(0.04) gStyle.SetTitleX(.15) gStyle.SetTitleY(.98) gStyle.SetTitleW(.70) gStyle.SetTitleH(.05) # statistics box gStyle.SetOptStat(0) gStyle.SetStatFont(font) gStyle.SetStatFontSize(10) gStyle.SetStatX(.91) gStyle.SetStatY(.90) gStyle.SetStatW(.15) gStyle.SetStatH(.15) # axis labels gStyle.SetLabelFont(font) gStyle.SetLabelFont(font, "xyz") gStyle.SetLabelSize(10, "xyz") # gStyle.SetGridColor(1) gStyle.SetLegendBorderSize(1)
import sys import glob import os import re import argparse import math import numpy as np import ROOT from ROOT import TFile, TTree, TCanvas, TPaveText, TPad, gPad, gStyle, TLegend, TH1F, gROOT, TLegend, TRatioPlot, TStyle, TF1, THStack, TColor, TImage, TLine, TPaveStats from ROOT import kBlack, kBlue, kRed, kOrange, kYellow, kGreen gROOT.SetBatch(True) gStyle.SetOptStat("") gStyle.SetTitleFontSize(.11) gStyle.SetLabelSize(.03, "XY") f = TFile.Open("outputDY.root") t = f.Get("tree") t.Draw("jj_M:NN_jj_M>>jj(100,0,2200,100,0,2200)", "", "colz") jj = gROOT.FindObject("jj") t.Draw("lljj_M:NN_lljj_M>>lljj(100,0,2800,100,0,2800)", "", "colz") lljj = gROOT.FindObject("lljj") c1 = TCanvas('c1', 'rec', 200, 10, 1400, 600) pad1 = TPad('pad1', 'mbb', 0.02, 0.05, 0.49, 1, -1) pad2 = TPad('pad2', 'mllbb', 0.51, 0.05, 0.98, 1, -1)
def main(): # usage description usage = "Example: ./scripts/plotSignificance.py -l logs -f qq --massrange 1200 6000 100" # input parameters parser = ArgumentParser(description='Script that plots significance for specified mass points',epilog=usage) parser.add_argument("-M", "--method", dest="method", choices=['MaxLikelihoodFit'], default='MaxLikelihoodFit', help="Method to calculate upper limits", metavar="METHOD") results_group = parser.add_mutually_exclusive_group(required=True) results_group.add_argument("-l", "--logs_path", dest="logs_path", help="Path to log files", metavar="LOGS_PATH") results_group.add_argument("-r", "--results_file", dest="results_file", help="Path to a file containing results", metavar="RESULTS_FILE") parser.add_argument("-f", "--final_state", dest="final_state", required=True, help="Final state (e.g. qq, qg, gg)", metavar="FINAL_STATE") parser.add_argument("--postfix", dest="postfix", default='', help="Postfix for the output plot name (default: %(default)s)") parser.add_argument("--fileFormat", dest="fileFormat", default='pdf', help="Format of the output plot (default: %(default)s)") parser.add_argument("--extraText", dest="extraText", default='Simulation Preliminary', help="Extra text on the plot (default: %(default)s)") parser.add_argument("--lumi_sqrtS", dest="lumi_sqrtS", default='1 fb^{-1} (13 TeV)', help="Integrated luminosity and center-of-mass energy (default: %(default)s)") parser.add_argument("--printResults", dest="printResults", default=False, action="store_true", help="Print results to the screen") mass_group = parser.add_mutually_exclusive_group(required=True) mass_group.add_argument("--mass", type=int, nargs = '*', default = 1000, help="Mass can be specified as a single value or a whitespace separated list (default: %(default)i)" ) mass_group.add_argument("--massrange", type=int, nargs = 3, help="Define a range of masses to be produced. Format: min max step", metavar = ('MIN', 'MAX', 'STEP') ) mass_group.add_argument("--masslist", help = "List containing mass information" ) args = parser.parse_args() # mass points for which resonance shapes will be produced input_masses = [] if args.massrange != None: MIN, MAX, STEP = args.massrange input_masses = range(MIN, MAX+STEP, STEP) elif args.masslist != None: # A mass list was provided print "Will create mass list according to", args.masslist masslist = __import__(args.masslist.replace(".py","")) input_masses = masslist.masses else: input_masses = args.mass # sort masses input_masses.sort() # arrays holding results masses = array('d') sig = array('d') sig_ex = array('d') sig_eyl = array('d') sig_eyh = array('d') if args.logs_path != None: logs_path = os.path.join(os.getcwd(),args.logs_path) for mass in input_masses: print ">> Reading results for %s resonance with m = %i GeV..."%(args.final_state, int(mass)) masses.append(mass) logName = 'signal_xs_%s_%s_m%i.log'%(args.method,args.final_state,int(mass)) log_file = open(os.path.join(logs_path,logName),'r') # read the log file for line in log_file: if re.search("^Best fit r:", line): sig.append(float(line.split()[3])) sig_eyl.append(float(line.split()[4].split('/')[0].lstrip('-'))) sig_eyh.append(float(line.split()[4].split('/')[1].lstrip('+'))) sig_ex.append(0.) if len(masses) != len(sig): print "** WARNING: ** Fit failed for m =", int(mass), "GeV. Setting signal cross section to 0." sig.append(0.) sig_eyl.append(0.) sig_eyh.append(0.) else: print ">> Importing results..." sys.path.insert(0, os.path.dirname(args.results_file)) results = __import__(os.path.basename(args.results_file).replace(".py","")) all_masses = np.array(results.masses) indices = [] # search for indices of input_masses for mass in input_masses: where = np.where(all_masses==mass)[0] if len(where) == 0: print "** WARNING: ** Cannot find results for m =", int(mass), "GeV in the provided results file. Skipping this mass point." indices.extend( where ) # sort indices indices.sort() for i in indices: masses.append( results.masses[i] ) sig.append( results.sig[i] ) sig_ex.append( results.sig_ex[i] ) sig_eyl.append( results.sig_eyl[i] ) sig_eyh.append( results.sig_eyh[i] ) if args.printResults: print "masses =", masses.tolist() print "sig =", sig.tolist() print "sig_ex =", sig_ex.tolist() print "sig_eyl =", sig_eyl.tolist() print "sig_eyh =", sig_eyh.tolist() # create final arrays sig_pos = array('d') sig_exl = array('d') sig_exh = array('d') # fill final arrays for i in range(0,len(masses)): sig_pos.append(sig[i] if sig[i]>0. else 0.) sig_exl.append(sig_ex[i]) sig_exh.append(sig_ex[i]) sig_eyl.append(sig_eyl[i] if sig[i]>0. else 0.) sig_eyh.append(sig_eyh[i]) # import ROOT stuff from ROOT import kTRUE, kFALSE, gROOT, gStyle, gPad, TGraphAsymmErrors, TCanvas, TLegend from ROOT import kGreen, kYellow, kWhite, kRed, kBlue gROOT.SetBatch(kTRUE); gStyle.SetOptStat(0) gStyle.SetOptTitle(0) gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.06, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") gStyle.SetCanvasBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetPadLeftMargin(0.15) gStyle.SetPadRightMargin(0.05) gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.15) gROOT.ForceStyle() graph_sig = TGraphAsymmErrors(len(masses),masses,sig_pos,sig_exl,sig_exh,sig_eyl,sig_eyh) graph_sig.GetXaxis().SetTitle("%s resonance mass [GeV]"%(args.final_state)) graph_sig.GetYaxis().SetTitle("Signal cross section [pb]") graph_sig.GetYaxis().SetTitleOffset(1.2) graph_sig.GetYaxis().SetRangeUser(1e-4,2e2) graph_sig.SetMarkerStyle(20) graph_sig.SetMarkerColor(1) graph_sig.SetLineWidth(2) graph_sig.SetLineStyle(1) graph_sig.SetLineColor(1) c = TCanvas("c", "",800,800) c.cd() graph_sig.Draw("AP") # draw the lumi text on the canvas CMS_lumi.extraText = args.extraText CMS_lumi.lumi_sqrtS = args.lumi_sqrtS # used with iPeriod = 0 (free form) iPos = 11 iPeriod = 0 CMS_lumi.CMS_lumi(c, iPeriod, iPos) gPad.RedrawAxis() c.SetLogy() c.SetGridx() c.SetGridy() fileName = 'signal_xs_%s_%s.%s'%(args.method,args.final_state + ( ('_' + args.postfix) if args.postfix != '' else '' ), args.fileFormat.lower()) c.SaveAs(fileName) print "Plot saved to '%s'"%(fileName)
colors = [kRed, kBlue, kBlack, kBlue, kRed] linecolors = [kRed, kBlue, kBlack, kBlue, kRed] markers = [kFullSquare, kFullCircle, kOpenCircle] legendnames = [ 'D_{s}^{+} 2015 (2015 cuts)', 'D_{s}^{+} 2018 (2015 cuts)', 'D_{s}^{+} 2018 (2015 cuts, 2015 pp ref)' ] outputsuffix = 'Ds2015_Ds2018_samecuts' hRaa, gRaa, hRaaRatio = ([] for i in range(3)) gStyle.SetPadRightMargin(0.035) gStyle.SetPadLeftMargin(0.12) gStyle.SetPadTopMargin(0.05) gStyle.SetTitleSize(0.045, 'xy') gStyle.SetLabelSize(0.040, 'xy') gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetLegendBorderSize(0) gStyle.SetOptStat(0) leg = TLegend(0.3, 0.68, 0.75, 0.83) leg.SetFillStyle(0) leg.SetBorderSize(0) leg.SetTextSize(0.04) for iFile in range(len(inputfilenames)): inputfile = TFile('%s/%s' % (inputdir, inputfilenames[iFile])) hRaa.append(inputfile.Get(histonames[iFile])) gRaa.append(inputfile.Get(graphnames[iFile])) hRaa[iFile].SetDirectory(0)
""" Helper method to set histo graphic style """ histo.SetLineColor(color) histo.SetMarkerColor(color) histo.SetMarkerStyle(marker) histo.SetMarkerSize(markersize) gStyle.SetPadBottomMargin(0.15) gStyle.SetPadLeftMargin(0.14) gStyle.SetPadRightMargin(0.12) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetTitleSize(0.045, "xy") gStyle.SetLabelSize(0.045, "y") gStyle.SetLabelSize(0.055, "x") gStyle.SetTitleOffset(1.4, "x") gStyle.SetOptStat(0) cand_types = ["2Prong", "3Prong"] colors = {"Prompt": kRed + 1, "NonPrompt": kAzure + 4, "Bkg": kBlack} colors_channel = { "D0ToPiK": kRed + 1, "JpsiToEE": kMagenta + 1, "2Prong": kBlack, "DPlusToPiKPi": kGreen + 2, "DsToPiKK": kOrange + 7, "LcToPKPi": kAzure + 4, "XicToPKPi": kBlue + 3, "3Prong": kBlack,
return data_in,data_out nameX="" nameY="" Ymin=0.0 Ymax=500000 Xmin=0 Xmax=6.0 NN=0 ###################################################### gROOT.SetStyle("Plain"); gStyle.SetLabelSize(0.035,"xyz"); ###################################################### gROOT.SetStyle("Plain"); gStyle.SetLabelSize(0.035,"xyz"); c1=TCanvas("c_massjj","BPRE",10,10,600,500); c1.Divide(1,1,0.008,0.007); ps1 = TPostScript( epsfig,113) c1.SetGrid(); c1.cd(1); gPad.SetLogy(0) gPad.SetTopMargin(0.05) gPad.SetBottomMargin(0.1) gPad.SetLeftMargin(0.1) gPad.SetRightMargin(0.05)
def main(): # usage description usage = "Example: ./scripts/plotLimits.py -M Asymptotic -l logs -f qq --massrange 1200 7000 100" # input parameters parser = ArgumentParser(description='Script that plots limits for specified mass points',epilog=usage) parser.add_argument('analysis', type=str, help='Analysis name') parser.add_argument('model', type=str, help='Model name') parser.add_argument("-M", "--method", dest="method", required=True, choices=['ProfileLikelihood', 'HybridNew', 'Asymptotic', 'MarkovChainMC', 'theta', 'HybridNewGrid'], help="Method to calculate upper limits", metavar="METHOD") parser.add_argument('--fit_function', type=str, default="f4", help="Name of fit function used for background estimate") parser.add_argument('--timesAE', action='store_true', help="Set y-axis to sigma*BR*A*e, instead of sigma*BR") parser.add_argument('--fitTrigger', action='store_true', help="Use trigger fit") parser.add_argument('--correctTrigger', action='store_true', help="Use trigger correction") parser.add_argument('--useMCTrigger', action='store_true', help="Use MC trigger emulation") #results_group = parser.add_mutually_exclusive_group(required=True) #results_group.add_argument("-l", "--logs_path", dest="logs_path", # help="Path to log files", # metavar="LOGS_PATH") #results_group.add_argument("-r", "--results_file", dest="results_file", # help="Path to a file containing results", # metavar="RESULTS_FILE") #parser.add_argument("-f", "--final_state", dest="final_state", required=True, # help="Final state (e.g. qq, qg, gg)", # metavar="FINAL_STATE") #parser.add_argument("-f2", "--finalstate2", dest="final_state2", required=True, help="hG,lG,hR, or lR", metavar="FINAL_STATE2") parser.add_argument("--noSyst", action="store_true", help="Make plots for limits without systematics") parser.add_argument("--freezeNuisances", type=str, help="Make plots for limits with frozen nuisance parameters") parser.add_argument("--postfix", dest="postfix", default='', help="Postfix for the output plot name (default: %(default)s)") parser.add_argument("--fileFormat", dest="fileFormat", default='pdf', help="Format of the output plot (default: %(default)s)") parser.add_argument("--saveObjects", type=str, help="Save plot objects") parser.add_argument("--extraText", dest="extraText", default='', help="Extra text on the plot (default: %(default)s)") parser.add_argument("--lumi_sqrtS", dest="lumi_sqrtS", default='19.7 fb^{-1} (8 TeV)', help="Integrated luminosity and center-of-mass energy (default: %(default)s)") parser.add_argument("--printResults", dest="printResults", default=False, action="store_true", help="Print results to the screen") mass_group = parser.add_mutually_exclusive_group(required=True) mass_group.add_argument("--mass", type=int, nargs = '*', default = 1000, help="Mass can be specified as a single value or a whitespace separated list (default: %(default)i)" ) mass_group.add_argument("--massrange", type=int, nargs = 3, help="Define a range of masses to be produced. Format: min max step", metavar = ('MIN', 'MAX', 'STEP') ) mass_group.add_argument("--masslist", help = "List containing mass information" ) args = parser.parse_args() if args.method == 'HybridNew': searchmethod = 'Hybrid New' # mass points for which resonance shapes will be produced input_masses = [] if args.massrange != None: MIN, MAX, STEP = args.massrange input_masses = range(MIN, MAX+STEP, STEP) elif args.masslist != None: # A mass list was provided print "Will create mass list according to", args.masslist masslist = __import__(args.masslist.replace(".py","")) input_masses = masslist.masses else: input_masses = args.mass # sort masses input_masses.sort() from ROOT import kTRUE, kFALSE, gROOT, gStyle, gPad, TGraph, TCanvas, TLegend, TF1, TFile from ROOT import kGreen, kYellow, kWhite # Make acc*eff TGraph ae_x = array('d',[325, 350, 400, 500, 600, 750, 900, 1200]) if args.timesAE: ae_y = np.ones(len(ae_x)) else: ae_y = array('d', []) for mass in ae_x: ae_y.append(analysis_config.simulation.get_signal_AE(args.analysis, args.model, int(mass))) acceptance_times_efficiency = TGraph(len(ae_x), ae_x, ae_y) #xs = array('d',[250,300,400,500,600,750,900,1200]) #trigger_correctionl = TF1("trigbbl_efficiency", "(1. / (1. + TMath::Exp(-1. * (x - [0]) / [1])))**[2]", 175, 400) #trigger_correctionl.SetParameter(0, 1.82469e+02) #trigger_correctionl.SetParameter(1, 2.87768e+01) #trigger_correctionl.SetParameter(2, 9.11659e-01) #trigger_correctionh = TF1("trigbbh_efficiency", "(1. / (1. + TMath::Exp(-1. * (x - [0]) / [1])))**[2]", 300, 600) #trigger_correctionh.SetParameter(0, 3.61785e+02) #trigger_correctionh.SetParameter(1, 3.16523e+01) #trigger_correctionh.SetParameter(2, 4.84357e-01) #if args.timesAE: # ys = np.ones(len(xs)) #else: # if args.analysis == "trigbbh_CSVTM" and args.model == "Hbb": # #ys = array('d',[188./19751.,1304./19993.,2697./49494.,881./19999.,534./19598.]) # ys = array('d',[24./19737.,188./19751.,1171./19984.,1419./19992.,1304./19993.,2697./49494.,881./19999.,534./19598.]) # #graphMod = trigger_correctionh # elif args.analysis == "trigbbl_CSVTM" and args.model == "Hbb": # #ys = array('d',[30./2797.,1583./19995.,1295./19996.,999./19996.,528./19999.]) # ys = array('d',[574./19737.,763./39502.,651./19984.,583./19992.,984./39986.,1905./98988.,656./39998.,369./39196.]) # #graphMod = trigger_correctionh # elif args.analysis == "trigbbh_CSVTM" and args.model == "RSG": # #ys = array('d',[109./19751.,488./19993.,954./49494.,328./19999.,182./19598.]) # ys = array('d',[40./19977.,30./2797.,1522./19991.,1640./19396.,1583./19995.,1295./19996.,999./19996.,528./19999.]) # #graphMod = trigger_correctionl # elif args.analysis == "trigbbl_CSVTM" and args.model == "RSG": # #ys = array('d',[23./2797.,599./19995.,448./19996.,338./19996.,190./19999.]) # ys = array('d',[696./19977.,137./5594.,797./19991.,652./19396.,1206./39990.,891./39992.,675./39992.,379./39998.]) # #graphMod = trigger_correctionl ##ys = array('d',[1,1,1,1,1,1,1,1,]) #acceptance_times_efficiency = TGraph(len(xs),xs,ys) # arrays holding results masses = array('d') xs_obs_limits = array('d') xs_exp_limits = array('d') masses_exp = array('d') xs_exp_limits_1sigma = array('d') xs_exp_limits_1sigma_up = array('d') xs_exp_limits_2sigma = array('d') xs_exp_limits_2sigma_up = array('d') for mass in input_masses: print ">> Reading results for %s %s resonance with m = %i GeV..."%(args.analysis, args.model, int(mass)) masses.append(mass) masses_exp.append(mass) # For masses above 1100, you scaled down the signal by 10 by hand, to help the limit setting. #if args.analysis == "trigbbh_CSVTM" and mass >= 1100: input_xs = 1./100. #else: # input_xs = 1. if args.method == "HybridNewGrid": found_limit = {"obs":False, "exp0":False, "exp1":False, "exp2":False, "exp-1":False, "exp-2":False} for what in found_limit.keys(): log_file_path = limit_config.get_combine_log_path_grid(args.analysis, args.model, mass, args.fit_function, what, systematics=(not args.noSyst), frozen_nps=args.freezeNuisances, fitTrigger=args.fitTrigger, correctTrigger=args.correctTrigger, useMCTrigger=args.useMCTrigger) print "Reading log file from " + log_file_path log_file = open(log_file_path, 'r') for line in log_file: if re.search("^Limit: r <", line) and re.search("95%", line): found_limit[what] = True this_limit = float(line.split()[3])/acceptance_times_efficiency.Eval(mass) print "Found limit for " + what + " = " + str(this_limit) if what == "obs": xs_obs_limits.append(this_limit * input_xs) elif what == "exp0": xs_exp_limits.append(this_limit * input_xs) elif what == "exp1": xs_exp_limits_1sigma_up.append(this_limit * input_xs) elif what == "exp2": xs_exp_limits_2sigma_up.append(this_limit * input_xs) elif what == "exp-1": xs_exp_limits_1sigma.append(this_limit * input_xs) elif what == "exp-2": xs_exp_limits_2sigma.append(this_limit * input_xs) if not found_limit["obs"]: xs_obs_limits.append(0) if not found_limit["exp0"]: xs_exp_limits.append(0) if not found_limit["exp1"]: xs_exp_limits_1sigma.append(0) if not found_limit["exp2"]: xs_exp_limits_1sigma_up.append(0) if not found_limit["exp-1"]: xs_exp_limits_2sigma.append(0) if not found_limit["exp-2"]: xs_exp_limits_2sigma_up.append(0) if len(masses) != len(xs_obs_limits): print "** ERROR: ** Could not find observed limit for m =", int(mass), "GeV. Aborting." sys.exit(1) else: print "Reading log file from " + limit_config.get_combine_log_path(args.analysis, args.model, mass, args.fit_function, args.method, systematics=(not args.noSyst), frozen_nps=args.freezeNuisances, fitTrigger=args.fitTrigger, correctTrigger=args.correctTrigger, useMCTrigger=args.useMCTrigger) if not os.path.exists((limit_config.get_combine_log_path(args.analysis, args.model, mass, args.fit_function, args.method, systematics=(not args.noSyst), frozen_nps=args.freezeNuisances, fitTrigger=args.fitTrigger, correctTrigger=args.correctTrigger, useMCTrigger=args.useMCTrigger))): print "[plot_limits] WARNING : Log file not found! Setting limits to zero and skipping this point." print "[plot_limits] WARNING : \t{}".format(limit_config.get_combine_log_path(args.analysis, args.model, mass, args.fit_function, args.method, systematics=(not args.noSyst), frozen_nps=args.freezeNuisances, fitTrigger=args.fitTrigger, correctTrigger=args.correctTrigger, useMCTrigger=args.useMCTrigger)) xs_obs_limits.append(0) xs_exp_limits.append(0) xs_exp_limits_1sigma.append(0) xs_exp_limits_1sigma_up.append(0) xs_exp_limits_2sigma.append(0) xs_exp_limits_2sigma_up.append(0) continue log_file = open(limit_config.get_combine_log_path(args.analysis, args.model, mass, args.fit_function, args.method, systematics=(not args.noSyst), frozen_nps=args.freezeNuisances, fitTrigger=args.fitTrigger, correctTrigger=args.correctTrigger, useMCTrigger=args.useMCTrigger)) foundMethod = False middle = 0 # read the log file found_limit = {"obs":False, "exp":False, "exp+1":False, "exp+2":False, "exp-1":False, "exp-2":False} for line in log_file: if args.method == 'Asymptotic': if re.search("^Observed Limit: r", line): xs_obs_limits.append(float(line.split()[-1])/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["obs"] = True if mass == 325 and args.model == "ZPrime": print "[debug] ZPrime 325 GeV limit = {}".format(xs_obs_limits[-1]) print "[debug] \tA*e={}, input_xs={}".format(acceptance_times_efficiency.Eval(mass), input_xs) if re.search("^Expected 50.0%: r", line): middle = float(line.split()[-1]) found_limit["exp"] = True xs_exp_limits.append(middle/acceptance_times_efficiency.Eval(mass) * input_xs) if re.search("^Expected 16.0%: r", line): xs_exp_limits_1sigma.append((float(line.split()[-1]))/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["exp-1"] = True if re.search("^Expected 84.0%: r", line): xs_exp_limits_1sigma_up.append(float(line.split()[-1])/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["exp+1"] = True if re.search("^Expected 2.5%: r", line): xs_exp_limits_2sigma.append(float(line.split()[-1])/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["exp-2"] = True if re.search("^Expected 97.5%: r", line): xs_exp_limits_2sigma_up.append(float(line.split()[-1])/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["exp+2"] = True elif args.method == 'theta': if re.search('^# x; y; yerror', line): foundMethod = True if line.split()[0] == '0' and foundMethod: xs_obs_limits.append(float(line.split()[1])/acceptance_times_efficiency.Eval(mass) * input_xs) else: searchmethod = "Hybrid New" if re.search(' -- ' + searchmethod, line): foundMethod = True if re.search("^Limit: r", line) and foundMethod: xs_obs_limits.append(float(line.split()[3])/acceptance_times_efficiency.Eval(mass) * input_xs) found_limit["obs"] = True print "[debug] Found limit " + str(xs_obs_limits[-1]) if not found_limit["obs"]: xs_obs_limits.append(0) if not found_limit["exp"]: xs_exp_limits.append(0) if not found_limit["exp+1"]: xs_exp_limits_1sigma.append(0) if not found_limit["exp+2"]: xs_exp_limits_1sigma_up.append(0) if not found_limit["exp-1"]: xs_exp_limits_2sigma.append(0) if not found_limit["exp-2"]: xs_exp_limits_2sigma_up.append(0) if len(masses) != len(xs_obs_limits): print "** ERROR: ** Could not find observed limit for m =", int(mass), "GeV. Aborting." sys.exit(1) if args.method == 'Asymptotic' or args.method == 'HybridNewGrid': if len(masses) != len(xs_exp_limits): print "** ERROR: ** Could not find expected limit for m =", int(mass), "GeV. Aborting." print "masses = ", print masses print "xs_exp_limits = ", print xs_exp_limits sys.exit(1) if len(masses) != len(xs_exp_limits_1sigma): print "** ERROR: ** Could not find expected 1 sigma down limit for m =", int(mass), "GeV. Aborting." print "masses = ", print masses print "xs_exp_limits_1sigma = ", print xs_exp_limits_1sigma sys.exit(1) if len(masses) != len(xs_exp_limits_1sigma_up): print "** ERROR: ** Could not find expected 1 sigma up limit for m =", int(mass), "GeV. Aborting." print "masses = ", print masses print "xs_exp_limits_1sigma_up = ", print xs_exp_limits_1sigma_up sys.exit(1) if len(masses) != len(xs_exp_limits_2sigma): print "** ERROR: ** Could not find expected 2 sigma down limit for m =", int(mass), "GeV. Aborting." sys.exit(1) if len(masses) != len(xs_exp_limits_2sigma_up): print "** ERROR: ** Could not find expected 2 sigma up limit for m =", int(mass), "GeV. Aborting." sys.exit(1) if args.method == 'Asymptotic' or args.method == 'HybridNewGrid': # complete the expected limit arrays for i in range(0,len(masses)): masses_exp.append( masses[len(masses)-i-1] ) xs_exp_limits_1sigma.append( xs_exp_limits_1sigma_up[len(masses)-i-1] ) xs_exp_limits_2sigma.append( xs_exp_limits_2sigma_up[len(masses)-i-1] ) if args.printResults: print "masses =", masses.tolist() print "xs_obs_limits =", xs_obs_limits.tolist() print "xs_exp_limits =", xs_exp_limits.tolist() print "" print "masses_exp =", masses_exp.tolist() print "xs_exp_limits_1sigma =", xs_exp_limits_1sigma.tolist() print "xs_exp_limits_2sigma =", xs_exp_limits_2sigma.tolist() gROOT.SetBatch(kTRUE); gStyle.SetOptStat(0) gStyle.SetOptTitle(0) gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.05, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelSize(0.05, "XYZ") gStyle.SetCanvasBorderMode(0) gStyle.SetFrameBorderMode(0) gStyle.SetCanvasColor(kWhite) gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gStyle.SetPadLeftMargin(0.15) gStyle.SetPadRightMargin(0.05) gStyle.SetPadTopMargin(0.05) gStyle.SetPadBottomMargin(0.15) gROOT.ForceStyle() # theory curves: gg massesS8 = array('d', [1000.0,1100.0,1200.0,1300.0,1400.0,1500.0,1600.0,1700.0,1800.0,1900.0,2000.0,2100.0,2200.0,2300.0,2400.0,2500.0,2600.0,2700.0,2800.0,2900.0,3000.0,3100.0,3200.0,3300.0,3400.0,3500.0,3600.0,3700.0,3800.0,3900.0,4000.0,4100.0,4200.0,4300.0,4400.0,4500.0,4600.0,4700.0,4800.0,4900.0,5000.0,5100.0,5200.0,5300.0,5400.0,5500.0,5600.0,5700.0,5800.0,5900.0,6000.0]) xsS8 = array('d', [5.46E+02,3.12E+02,1.85E+02,1.12E+02,7.19E+01,4.59E+01,3.02E+01,2.01E+01,1.37E+01,9.46E+00,6.55E+00,4.64E+00,3.27E+00,2.36E+00,1.70E+00,1.24E+00,9.11E-01,6.69E-01,4.97E-01,3.71E-01,2.78E-01,2.07E-01,1.55E-01,1.19E-01,9.26E-02,7.08E-02,5.43E-02,4.15E-02,3.22E-02,2.50E-02,1.92E-02,1.51E-02,1.19E-02,9.25E-03,7.35E-03,5.86E-03,4.53E-03,3.66E-03,2.91E-03,2.33E-03,1.86E-03,1.45E-03,1.12E-03,8.75E-04,6.90E-04,5.55E-04,4.47E-04,3.63E-04,2.92E-04,2.37E-04,1.97E-04]) graph_xsS8 = TGraph(len(massesS8),massesS8,xsS8) graph_xsS8.SetLineWidth(3) graph_xsS8.SetLineStyle(8) graph_xsS8.SetLineColor(6) # theory curves: qg massesString = array('d', [1000.0,1100.0,1200.0,1300.0,1400.0,1500.0,1600.0,1700.0,1800.0,1900.0,2000.0,2100.0,2200.0,2300.0,2400.0,2500.0,2600.0,2700.0,2800.0,2900.0,3000.0,3100.0,3200.0,3300.0,3400.0,3500.0,3600.0,3700.0,3800.0,3900.0,4000.0,4100.0,4200.0,4300.0,4400.0,4500.0,4600.0,4700.0,4800.0,4900.0,5000.0,5100.0,5200.0,5300.0,5400.0,5500.0,5600.0,5700.0,5800.0,5900.0,6000.0,6100.0,6200.0,6300.0,6400.0,6500.0,6600.0,6700.0,6800.0,6900.0,7000.0,7100.0,7200.0,7300.0,7400.0,7500.0,7600.0,7700.0,7800.0,7900.0,8000.0,8100.0,8200.0,8300.0,8400.0,8500.0,8600.0,8700.0,8800.0,8900.0,9000.0,9100.,9200.,9300.,9400.,9500.,9600.,9700.,9800.,9900.,10000.]) xsString = array('d', [8316.184311558545,5312.93137758767,3435.0309937336524,2304.4139502741305,1569.8115447896687,1090.9516635659693,770.901859690924,551.9206062572061,399.69535383507633,293.77957451762086,218.15126842827823,162.87634729465125,123.17685479653694,93.63530805932386,71.53697229809124,55.37491301647483,42.75271508357369,33.36378355470234,26.06619302090876,20.311817606835643,16.1180931789545,12.768644973921226,10.142660425967444,8.057990848043234,6.400465846290908,5.115134438331436,4.132099789492928,3.3193854239538734,2.6581204529344302,2.157554604919995,1.7505176068913348,1.4049155245498584,1.140055677916783,0.9253251132104159,0.7522038169131606,0.6119747371392215,0.49612321727328523,0.40492020959456737,0.33091999402250655,0.27017917021492555,0.2201693919322846,0.17830700070267996,0.14564253802358157,0.11940534430331146,0.09694948234356839,0.0793065371847468,0.06446186373361917,0.05282660618352478, 0.0428516302310620888,0.0348997638039910363,0.0283334766442618227,0.0231416918363592127,0.0187417921340763783,0.0153501307395115115,0.0124396534127133717,0.0100542205744949455,0.0081744954858627415,0.0066338099362915941,0.0053365711503318145,0.00430912459914657443,0.00346381039244064343,0.00278602671711227174,0.00225154342228859257,0.0018082930150063248,0.00143929440338502119,0.0011581373956044489,0.00091869589873893118,0.00073410823691329855,0.00058669382997948734,0.0004661568745858897,0.000368716655469570365,0.000293168485206959169,0.000230224535021638668,0.000182317101888465142,0.000143263359883433282,0.000112630538527214965,0.000088189175598406759,0.000068708474367442343,0.000053931726669273556,0.0000416417855733682702,0.0000326529676755488658,0.0000254365480426201587,0.0000198410151166864761,0.0000154034425617473576,0.0000119095554601641413,9.2537574320108232e-6,7.2155417437856749e-6,5.6130924422251982e-6,4.36634755605624901e-6,3.39717456406994868e-6,2.6766018046173896e-6]) massesQstar = array('d', [1000.0,1100.0,1200.0,1300.0,1400.0,1500.0,1600.0,1700.0,1800.0,1900.0,2000.0,2100.0,2200.0,2300.0,2400.0,2500.0,2600.0,2700.0,2800.0,2900.0,3000.0,3100.0,3200.0,3300.0,3400.0,3500.0,3600.0,3700.0,3800.0,3900.0,4000.0,4100.0,4200.0,4300.0,4400.0,4500.0,4600.0,4700.0,4800.0,4900.0,5000.0,5100.0,5200.0,5300.0,5400.0,5500.0,5600.0,5700.0,5800.0,5900.0,6000.0,6100.0,6200.0,6300.0,6400.0,6500.0,6600.0,6700.0,6800.0,6900.0,7000.0,7100.0,7200.0,7300.0,7400.0,7500.0,7600.0,7700.0,7800.0,7900.0,8000.0,8100.0,8200.0,8300.0,8400.0,8500.0,8600.0,8700.0,8800.0,8900.0,9000.0]) xsQstar = array('d', [0.4101E+03,0.2620E+03,0.1721E+03,0.1157E+03,0.7934E+02,0.5540E+02,0.3928E+02,0.2823E+02,0.2054E+02,0.1510E+02,0.1121E+02,0.8390E+01,0.6328E+01,0.4807E+01,0.3674E+01,0.2824E+01,0.2182E+01,0.1694E+01,0.1320E+01,0.1033E+01,0.8116E+00,0.6395E+00,0.5054E+00,0.4006E+00,0.3182E+00,0.2534E+00,0.2022E+00,0.1616E+00,0.1294E+00,0.1038E+00,0.8333E-01,0.6700E-01,0.5392E-01,0.4344E-01,0.3503E-01,0.2827E-01,0.2283E-01,0.1844E-01,0.1490E-01,0.1205E-01,0.9743E-02,0.7880E-02,0.6373E-02,0.5155E-02,0.4169E-02,0.3371E-02,0.2725E-02,0.2202E-02,0.1779E-02,0.1437E-02,0.1159E-02,0.9353E-03,0.7541E-03,0.6076E-03,0.4891E-03,0.3935E-03,0.3164E-03,0.2541E-03,0.2039E-03,0.1635E-03,0.1310E-03,0.1049E-03,0.8385E-04,0.6699E-04,0.5347E-04,0.4264E-04,0.3397E-04,0.2704E-04,0.2151E-04,0.1709E-04,0.1357E-04,0.1077E-04,0.8544E-05,0.6773E-05,0.5367E-05,0.4251E-05,0.3367E-05,0.2666E-05,0.2112E-05,0.1673E-05,0.1326E-05]) graph_xsString = TGraph(len(massesString),massesString,xsString) graph_xsString.SetLineWidth(3) graph_xsString.SetLineStyle(8) graph_xsString.SetLineColor(9) graph_xsQstar = TGraph(len(massesQstar),massesQstar,xsQstar) graph_xsQstar.SetLineWidth(3) graph_xsQstar.SetLineStyle(2) graph_xsQstar.SetLineColor(1) # theory curves: qq massesTh = array('d', [1000.0,1100.0,1200.0,1300.0,1400.0,1500.0,1600.0,1700.0,1800.0,1900.0,2000.0,2100.0,2200.0,2300.0,2400.0,2500.0,2600.0,2700.0,2800.0,2900.0,3000.0,3100.0,3200.0,3300.0,3400.0,3500.0,3600.0,3700.0,3800.0,3900.0,4000.0,4100.0,4200.0,4300.0,4400.0,4500.0,4600.0,4700.0,4800.0,4900.0,5000.0,5100.0,5200.0,5300.0,5400.0,5500.0,5600.0,5700.0,5800.0,5900.0,6000.0,6100.0,6200.0,6300.0,6400.0,6500.0,6600.0,6700.0,6800.0,6900.0,7000.0,7100.0,7200.0,7300.0,7400.0,7500.0,7600.0,7700.0,7800.0,7900.0,8000.0,8100.0,8200.0,8300.0,8400.0,8500.0,8600.0,8700.0,8800.0,8900.0,9000.0]) xsAxi = array('d', [0.1849E+03,0.1236E+03,0.8473E+02,0.5937E+02,0.4235E+02,0.3069E+02,0.2257E+02,0.1680E+02,0.1263E+02,0.9577E+01,0.7317E+01,0.5641E+01,0.4374E+01,0.3411E+01,0.2672E+01,0.2103E+01,0.1658E+01,0.1312E+01,0.1041E+01,0.8284E+00,0.6610E+00,0.5294E+00,0.4250E+00,0.3417E+00,0.2752E+00,0.2220E+00,0.1792E+00,0.1449E+00,0.1172E+00,0.9487E-01,0.7686E-01,0.6219E-01,0.5033E-01,0.4074E-01,0.3298E-01,0.2671E-01,0.2165E-01,0.1755E-01,0.1422E-01,0.1152E-01,0.9322E-02,0.7539E-02,0.6092E-02,0.4917E-02,0.3965E-02,0.3193E-02,0.2568E-02,0.2062E-02,0.1653E-02,0.1323E-02,0.1057E-02,0.8442E-03,0.6728E-03,0.5349E-03,0.4242E-03,0.3357E-03,0.2644E-03,0.2077E-03,0.1627E-03,0.1271E-03,0.9891E-04,0.7686E-04,0.5951E-04,0.4592E-04,0.3530E-04,0.2704E-04,0.2059E-04,0.1562E-04,0.1180E-04,0.8882E-05,0.6657E-05,0.4968E-05,0.3693E-05,0.2734E-05,0.2016E-05,0.1481E-05,0.1084E-05,0.7903E-06,0.5744E-06,0.4160E-06,0.3007E-06]) xsDiquark = array('d', [0.5824E+02,0.4250E+02,0.3172E+02,0.2411E+02,0.1862E+02,0.1457E+02,0.1153E+02,0.9211E+01,0.7419E+01,0.6019E+01,0.4912E+01,0.4031E+01,0.3323E+01,0.2750E+01,0.2284E+01,0.1903E+01,0.1590E+01,0.1331E+01,0.1117E+01,0.9386E+00,0.7900E+00,0.6658E+00,0.5618E+00,0.4745E+00,0.4010E+00,0.3391E+00,0.2869E+00,0.2428E+00,0.2055E+00,0.1740E+00,0.1473E+00,0.1246E+00,0.1055E+00,0.8922E-01,0.7544E-01,0.6376E-01,0.5385E-01,0.4546E-01,0.3834E-01,0.3231E-01,0.2720E-01,0.2288E-01,0.1922E-01,0.1613E-01,0.1352E-01,0.1132E-01,0.9463E-02,0.7900E-02,0.6584E-02,0.5479E-02,0.4551E-02,0.3774E-02,0.3124E-02,0.2581E-02,0.2128E-02,0.1750E-02,0.1437E-02,0.1177E-02,0.9612E-03,0.7833E-03,0.6366E-03,0.5160E-03,0.4170E-03,0.3360E-03,0.2700E-03,0.2162E-03,0.1725E-03,0.1372E-03,0.1087E-03,0.8577E-04,0.6742E-04,0.5278E-04,0.4114E-04,0.3192E-04,0.2465E-04,0.1894E-04,0.1448E-04,0.1101E-04,0.8322E-05,0.6253E-05,0.4670E-05]) xsWprime = array('d', [0.8811E+01,0.6024E+01,0.4216E+01,0.3010E+01,0.2185E+01,0.1610E+01,0.1200E+01,0.9043E+00,0.6875E+00,0.5271E+00,0.4067E+00,0.3158E+00,0.2464E+00,0.1932E+00,0.1521E+00,0.1201E+00,0.9512E-01,0.7554E-01,0.6012E-01,0.4792E-01,0.3827E-01,0.3059E-01,0.2448E-01,0.1960E-01,0.1571E-01,0.1259E-01,0.1009E-01,0.8090E-02,0.6483E-02,0.5193E-02,0.4158E-02,0.3327E-02,0.2660E-02,0.2125E-02,0.1695E-02,0.1351E-02,0.1075E-02,0.8546E-03,0.6781E-03,0.5372E-03,0.4248E-03,0.3353E-03,0.2642E-03,0.2077E-03,0.1629E-03,0.1275E-03,0.9957E-04,0.7757E-04,0.6027E-04,0.4670E-04,0.3610E-04,0.2783E-04,0.2140E-04,0.1641E-04,0.1254E-04,0.9561E-05,0.7269E-05,0.5510E-05,0.4167E-05,0.3143E-05,0.2364E-05,0.1774E-05,0.1329E-05,0.9931E-06,0.7411E-06,0.5523E-06,0.4108E-06,0.3055E-06,0.2271E-06,0.1687E-06,0.1254E-06,0.9327E-07,0.6945E-07,0.5177E-07,0.3863E-07,0.2888E-07,0.2162E-07,0.1622E-07,0.1218E-07,0.9156E-08,0.6893E-08]) xsZprime = array('d', [0.5027E+01,0.3398E+01,0.2353E+01,0.1663E+01,0.1196E+01,0.8729E+00,0.6450E+00,0.4822E+00,0.3638E+00,0.2769E+00,0.2123E+00,0.1639E+00,0.1272E+00,0.9933E-01,0.7789E-01,0.6134E-01,0.4848E-01,0.3845E-01,0.3059E-01,0.2440E-01,0.1952E-01,0.1564E-01,0.1256E-01,0.1010E-01,0.8142E-02,0.6570E-02,0.5307E-02,0.4292E-02,0.3473E-02,0.2813E-02,0.2280E-02,0.1848E-02,0.1499E-02,0.1216E-02,0.9864E-03,0.8002E-03,0.6490E-03,0.5262E-03,0.4264E-03,0.3453E-03,0.2795E-03,0.2260E-03,0.1826E-03,0.1474E-03,0.1188E-03,0.9566E-04,0.7690E-04,0.6173E-04,0.4947E-04,0.3957E-04,0.3159E-04,0.2516E-04,0.2001E-04,0.1587E-04,0.1255E-04,0.9906E-05,0.7795E-05,0.6116E-05,0.4785E-05,0.3731E-05,0.2900E-05,0.2247E-05,0.1734E-05,0.1334E-05,0.1022E-05,0.7804E-06,0.5932E-06,0.4492E-06,0.3388E-06,0.2544E-06,0.1903E-06,0.1417E-06,0.1051E-06,0.7764E-07,0.5711E-07,0.4186E-07,0.3055E-07,0.2223E-07,0.1612E-07,0.1164E-07,0.8394E-08]) graph_xsAxi = TGraph(len(massesTh),massesTh,xsAxi) graph_xsAxi.SetLineWidth(3) graph_xsAxi.SetLineStyle(3) graph_xsAxi.SetLineColor(63) graph_xsDiquark = TGraph(len(massesTh),massesTh,xsDiquark) graph_xsDiquark.SetLineWidth(3) graph_xsDiquark.SetLineStyle(9) graph_xsDiquark.SetLineColor(8) graph_xsWprime = TGraph(len(massesTh),massesTh,xsWprime) graph_xsWprime.SetLineWidth(3) graph_xsWprime.SetLineStyle(7) graph_xsWprime.SetLineColor(46) graph_xsZprime = TGraph(len(massesTh),massesTh,xsZprime) graph_xsZprime.SetLineWidth(3) graph_xsZprime.SetLineStyle(5) graph_xsZprime.SetLineColor(38) # limits if args.method == "Asymptotic" or args.method == "HybridNewGrid": graph_exp_2sigma = ( TGraph(len(masses_exp),masses_exp,xs_exp_limits_2sigma) if len(xs_exp_limits_2sigma) > 0 else TGraph(0) ) graph_exp_2sigma.SetFillColor(kYellow) graph_exp_1sigma = ( TGraph(len(masses_exp),masses_exp,xs_exp_limits_1sigma) if len(xs_exp_limits_2sigma) > 0 else TGraph(0) ) graph_exp_1sigma.SetFillColor(kGreen+1) graph_exp = ( TGraph(len(masses),masses,xs_exp_limits) if len(xs_exp_limits_2sigma) > 0 else TGraph(0) ) #graph_exp.SetMarkerStyle(24) graph_exp.SetLineWidth(3) graph_exp.SetLineStyle(2) graph_exp.SetLineColor(4) graph_obs = TGraph(len(masses),masses,xs_obs_limits) graph_obs.SetMarkerStyle(20) graph_obs.SetLineWidth(3) #graph_obs.SetLineStyle(1) graph_obs.SetLineColor(1) c = TCanvas("c", "",800,800) c.cd() legend = TLegend(.58,.72,.90,.90) legend.SetBorderSize(0) legend.SetFillColor(0) legend.SetFillStyle(0) legend.SetTextFont(42) legend.SetTextSize(0.03) legend.SetHeader('95% CL upper limits') if len(xs_exp_limits_2sigma) > 0 and (args.method == "Asymptotic" or args.method == "HybridNewGrid"): frame = graph_exp_2sigma.GetHistogram().Clone() else: frame = graph_obs.GetHistogram().Clone() frame.Reset() frame.GetXaxis().SetTitle("Resonance mass [GeV]") frame.GetXaxis().SetTitleOffset(1.05) if args.timesAE: #if args.model == "ZPrime": # frame.GetYaxis().SetTitle("#sigma #times BR(c#bar{c},b#bar{b}) #times #it{A} #times #epsilon [pb]") #else: frame.GetYaxis().SetTitle("#sigma #times BR(b#bar{b}) #times #it{A} #times #epsilon [pb]") else: #if args.model == "ZPrime": # frame.GetYaxis().SetTitle("#sigma #times BR(c#bar{c},b#bar{b}) [pb]") #else: frame.GetYaxis().SetTitle("#sigma #times BR(b#bar{b}) [pb]") frame.GetYaxis().SetTitleOffset(1.2) if args.timesAE: frame.GetYaxis().SetRangeUser(1e-03,1e+01) else: frame.GetYaxis().SetRangeUser(1e-01,5e+02) frame.Draw("axis") if len(xs_exp_limits_2sigma) > 0 and (args.method == "Asymptotic" or args.method == "HybridNewGrid"): graph_exp_2sigma.GetXaxis().SetTitle("Resonance mass [GeV]") graph_exp_2sigma.GetXaxis().SetTitleOffset(1.1) graph_exp_2sigma.GetYaxis().SetTitle("#sigma #times #it{B} [pb]") graph_exp_2sigma.GetYaxis().SetTitleOffset(1.1) #graph_exp_2sigma.GetYaxis().SetRangeUser(1e-03,1e+02) #graph_exp_2sigma.GetXaxis().SetNdivisions(1005) graph_exp_2sigma.Draw("F") graph_exp_1sigma.Draw("F") graph_exp.Draw("L") graph_obs.Draw("LP") legend.AddEntry(graph_obs,"Observed","lp") legend.AddEntry(graph_exp,"Expected","lp") legend.AddEntry(graph_exp_1sigma,"#pm 1#sigma","F") legend.AddEntry(graph_exp_2sigma,"#pm 2#sigma","F") else: graph_obs.GetXaxis().SetTitle("Resonance mass [GeV]") graph_obs.GetYaxis().SetTitle("#sigma #times #it{B} [pb]") graph_obs.GetYaxis().SetTitleOffset(1.1) graph_obs.GetYaxis().SetRangeUser(1e-02,1e+03) #graph_obs.GetXaxis().SetNdivisions(1005) graph_obs.Draw("LP") legend.AddEntry(graph_obs,"Observed","lp") #if args.final_state == 'gg' : # graph_xsS8.Draw("L") #elif args.final_state == 'qg' : # graph_xsQstar.Draw("L") # graph_xsString.Draw("L") #elif args.final_state == 'qq' : # graph_xsAxi.Draw("L") # graph_xsDiquark.Draw("L") # graph_xsWprime.Draw("L") # graph_xsZprime.Draw("L") legend.Draw() #legendTh = TLegend(.60,.72,.90,.88) #legendTh.SetBorderSize(0) #legendTh.SetFillColor(0) #legendTh.SetFillStyle(0) #legendTh.SetTextFont(42) #legendTh.SetTextSize(0.03) #legendTh.AddEntry(graph_xsAxi,"Axigluon/coloron","l") #legendTh.AddEntry(graph_xsDiquark,"Scalar diquark","l") #legendTh.AddEntry(graph_xsWprime,"W' SSM","l") #legendTh.AddEntry(graph_xsZprime,"Z' SSM","l") #legendTh.Draw() # draw the lumi text on the canvas CMS_lumi.extraText = args.extraText CMS_lumi.lumi_sqrtS = args.lumi_sqrtS # used with iPeriod = 0 (free form) iPos = 11 iPeriod = 0 CMS_lumi.CMS_lumi(c, iPeriod, iPos) gPad.RedrawAxis() c.SetLogy() postfix = ( ('_' + args.postfix) if args.postfix != '' else '' ) if args.noSyst: postfix += "_noSyst" if args.freezeNuisances: postfix += "_" + args.freezeNuisances.replace(",", "_") if args.fitTrigger: postfix += "_fitTrigger" elif args.correctTrigger: postfix += "_correctTrigger" if args.useMCTrigger: postfix += "_useMCTrigger" fileName = limit_config.paths["limit_plots"] + '/xs_limit_%s_%s_%s_%s.%s'%(args.method,args.analysis, args.model + postfix, args.fit_function, args.fileFormat.lower()) if args.timesAE: fileName = fileName.replace("xs_limit", "xsAE_limit") c.SaveAs(fileName) print "Plot saved to '%s'"%(fileName) graph_obs.Print("all") if args.saveObjects: output_file = args.saveObjects if args.timesAE: output_file = output_file.replace(".root", "_timesAE.root") f = TFile(output_file, "RECREATE") if args.method == "Asymptotic" or args.method == "HybridNewGrid": graph_exp_2sigma.SetName("graph_exp_2sigma") graph_exp_2sigma.Write() graph_exp_1sigma.SetName("graph_exp_1sigma") graph_exp_1sigma.Write() graph_exp.SetName("graph_exp") graph_exp.Write() graph_obs.SetName("graph_obs") graph_obs.Write() f.Close()
gStyle.SetCanvasDefX(0) gStyle.SetCanvasDefY(0) gStyle.SetPadTopMargin(0.07) gStyle.SetPadBottomMargin(0.13) gStyle.SetPadLeftMargin(0.15) gStyle.SetPadRightMargin(0.05) gStyle.SetTitleColor(1, "XYZ") gStyle.SetTitleFont(42, "XYZ") gStyle.SetTitleSize(0.04, "XYZ") gStyle.SetTitleXOffset(1.1) gStyle.SetTitleYOffset(1.5) gStyle.SetTextAlign(12) gStyle.SetLabelColor(1, "XYZ") gStyle.SetLabelFont(42, "XYZ") gStyle.SetLabelOffset(0.007, "XYZ") gStyle.SetLabelSize(0.04, "XYZ") gStyle.SetAxisColor(1, "XYZ") gStyle.SetStripDecimals(True) gStyle.SetTickLength(0.03, "XYZ") gStyle.SetNdivisions(510, "XYZ") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) gROOT.ForceStyle() line_width = 2 if arguments.line_width: line_width = arguments.line_width #set the text for the luminosity label if(intLumi < 1000.): LumiInPb = intLumi
#!/usr/bin/env python from ROOT import TFile, TCanvas, TColor, gStyle, TLegend, TLatex, TH1F, TTree, TH2F from math import sqrt from array import array # style gStyle.SetOptStat(0) gStyle.SetLabelSize(0.06, "xy") gStyle.SetTitleSize(0.06, "xy") gStyle.SetTitleOffset(1.6, "x") gStyle.SetTitleOffset(0.4, "y") gStyle.SetPadTopMargin(0.1) gStyle.SetPadRightMargin(0.1) gStyle.SetPadBottomMargin(0.16) gStyle.SetPadLeftMargin(0.14) # create canvas canvas1 = TCanvas("c1", "c1", 800, 800) canvas1.SetTickx() canvas1.SetTicky() variables = [] # open file muon = TFile("res/QCDMuEPt20toInf_muon.root") muonantiiso = TFile("res/QCDMuEPt20toInf_muonantiiso.root") for key in muon.GetListOfKeys(): kname = key.GetName() #print kname variables.append(kname)
def plot_hfptspectrum_ratios_comb(case_num, case_den, arraytype): gROOT.SetStyle("Plain") gStyle.SetOptStat(0) gStyle.SetOptStat(0000) gStyle.SetPalette(0) gStyle.SetCanvasColor(0) gStyle.SetFrameFillColor(0) gStyle.SetOptTitle(0) gStyle.SetTitleOffset(1.15, "y") gStyle.SetTitleFont(42, "xy") gStyle.SetLabelFont(42, "xy") gStyle.SetTitleSize(0.042, "xy") gStyle.SetLabelSize(0.035, "xy") gStyle.SetPadTickX(1) gStyle.SetPadTickY(1) with open("data/database_ml_parameters_%s.yml" % case_num, 'r') as param_config_num: data_param_num = yaml.load(param_config_num, Loader=yaml.FullLoader) with open("data/database_ml_parameters_%s.yml" % case_den, 'r') as param_config_den: data_param_den = yaml.load(param_config_den, Loader=yaml.FullLoader) folder_plots_num = data_param_num[case_num]["analysis"][ "dir_general_plots"] folder_plots_den = data_param_den[case_den]["analysis"][ "dir_general_plots"] if not os.path.exists(folder_plots_num): print("creating folder ", folder_plots_num) os.makedirs(folder_plots_num) if not os.path.exists(folder_plots_den): print("creating folder ", folder_plots_den) os.makedirs(folder_plots_den) folder_num_allperiods = \ data_param_num[case_num]["analysis"][arraytype[0]]["data"]["resultsallp"] folder_den_allperiods = \ data_param_den[case_den]["analysis"][arraytype[0]]["data"]["resultsallp"] folder_num_triggered = \ data_param_num[case_num]["analysis"][arraytype[1]]["data"]["resultsallp"] folder_den_triggered = \ data_param_den[case_den]["analysis"][arraytype[1]]["data"]["resultsallp"] binsmin_num = data_param_num[case_num]["analysis"][ arraytype[0]]["sel_binmin2"] binsmax_num = data_param_num[case_num]["analysis"][ arraytype[0]]["sel_binmax2"] name_num = data_param_num[case_num]["analysis"][ arraytype[0]]["latexnamemeson"] name_den = data_param_den[case_den]["analysis"][ arraytype[0]]["latexnamemeson"] latexbin2var = data_param_num[case_num]["analysis"][ arraytype[0]]["latexbin2var"] plotbinMB = data_param_num[case_num]["analysis"][arraytype[0]]["plotbin"] plotbinHM = data_param_num[case_num]["analysis"][arraytype[1]]["plotbin"] br_num = data_param_num[case_num]["ml"]["opt"]["BR"] br_den = data_param_den[case_den]["ml"]["opt"]["BR"] sigmav0_num = data_param_num[case_num]["analysis"]["sigmav0"] sigmav0_den = data_param_den[case_den]["analysis"]["sigmav0"] file_num_allperiods = TFile.Open("%s/finalcross%s%smulttot.root" % \ (folder_num_allperiods, case_num, arraytype[0])) file_den_allperiods = TFile.Open("%s/finalcross%s%smulttot.root" % \ (folder_den_allperiods, case_den, arraytype[0])) file_num_triggered = TFile.Open("%s/finalcross%s%smulttot.root" % \ (folder_num_triggered, case_num, arraytype[1])) file_den_triggered = TFile.Open("%s/finalcross%s%smulttot.root" % \ (folder_den_triggered, case_den, arraytype[1])) if not file_num_allperiods or not file_num_triggered: print("---Warning: Issue with %s merged files. Meson ratio plot skipped (%s, %s)---" % \ (case_num, arraytype[0], arraytype[1])) return if not file_den_allperiods or not file_den_triggered: print("---Warning: Issue with %s merged files. Meson ratio plot skipped (%s, %s)---" % \ (case_den, arraytype[0], arraytype[1])) return rootfilename = "%s/ComparisonRatios_%s%s_%scombined%s.root" % \ (folder_plots_num, case_num, case_den, arraytype[0], arraytype[1]) fileoutput = TFile.Open(rootfilename, "recreate") ccross = TCanvas('cRatioCross', 'The Fit Canvas') ccross.SetCanvasSize(1500, 1500) ccross.SetWindowSize(500, 500) maxplot = 1.0 if case_num == "Dspp": maxplot = 0.5 ccross.cd(1).DrawFrame(0.9, 0, 30, maxplot, ";#it{p}_{T} (GeV/#it{c});%s / %s" % \ (name_num, name_den)) ccross.cd(1).SetLogx() legyield = TLegend(.4, .68, .8, .88) legyield.SetBorderSize(0) legyield.SetFillColor(0) legyield.SetFillStyle(0) legyield.SetTextFont(42) legyield.SetTextSize(0.025) colors = [ kBlack, kRed, kGreen + 2, kBlue, kViolet - 1, kOrange + 2, kAzure + 1, kOrange - 7 ] for imult, iplot in enumerate(plotbinMB): if not iplot: continue hratio = file_num_allperiods.Get("histoSigmaCorr%d" % (imult)) hratio.Scale(1. / (br_num * sigmav0_num * 1e12)) hcross_den = file_den_allperiods.Get("histoSigmaCorr%d" % (imult)) hcross_den.Scale(1. / (br_den * sigmav0_den * 1e12)) hratio.Divide(hcross_den) hratio.SetLineColor(colors[imult % len(colors)]) hratio.SetMarkerColor(colors[imult % len(colors)]) hratio.SetMarkerStyle(21) hratio.SetTitle(";#it{p}_{T} (GeV/#it{c});%s / %s" % (name_num, name_den)) hratio.Draw("same") legyieldstring = "%.1f #leq %s < %.1f (MB)" % \ (binsmin_num[imult], latexbin2var, binsmax_num[imult]) legyield.AddEntry(hratio, legyieldstring, "LEP") fileoutput.cd() hratio.Write("hratio_fromMB_%.1f_%s_%.1f" % \ (binsmin_num[imult], latexbin2var, binsmax_num[imult])) for imult, iplot in enumerate(plotbinHM): if not iplot: continue hratioHM = file_num_triggered.Get("histoSigmaCorr%d" % (imult)) hratioHM.Scale(1. / (br_num * sigmav0_num * 1e12)) hcrossHM_den = file_den_triggered.Get("histoSigmaCorr%d" % (imult)) hcrossHM_den.Scale(1. / (br_den * sigmav0_den * 1e12)) hratioHM.Divide(hcrossHM_den) hratioHM.SetLineColor(colors[imult % len(colors)]) hratioHM.SetMarkerColor(colors[imult % len(colors)]) hratioHM.SetTitle(";#it{p}_{T} (GeV/#it{c});%s / %s" % (name_num, name_den)) hratioHM.Draw("same") legyieldstring = "%.1f #leq %s < %.1f (HM)" % \ (binsmin_num[imult], latexbin2var, binsmax_num[imult]) legyield.AddEntry(hratioHM, legyieldstring, "LEP") fileoutput.cd() hratioHM.Write("hratio_fromHM_%.1f_%s_%.1f" % \ (binsmin_num[imult], latexbin2var, binsmax_num[imult])) legyield.Draw() ccross.SaveAs("%s/PtSpec_ComparisonRatios_%s%s_%scombined%s_logx.eps" % \ (folder_plots_num, case_num, case_den, arraytype[0], arraytype[1])) ccross.SaveAs("%s/PtSpec_ComparisonRatios_%s%s_%scombined%s_logx.eps" % \ (folder_plots_den, case_num, case_den, arraytype[0], arraytype[1])) ccross.cd(1).SetLogx(0) ccross.SaveAs("%s/PtSpec_ComparisonRatios_%s%s_%scombined%s.eps" % \ (folder_plots_num, case_num, case_den, arraytype[0], arraytype[1])) ccross.SaveAs("%s/PtSpec_ComparisonRatios_%s%s_%scombined%s.eps" % \ (folder_plots_den, case_num, case_den, arraytype[0], arraytype[1])) fileoutput.cd() ccross.Write() fileoutput.Close() rootfilenameden = "%s/ComparisonRatios_%s%s_%scombined%s.root" % \ (folder_plots_den, case_num, case_den, arraytype[0], arraytype[1]) copyfile(rootfilename, rootfilenameden) print("---Output stored in:", rootfilename, "and", rootfilenameden, "---")
import sys from ROOT import gRandom, TH1, TH1D, cout, TFile, gSystem, TCanvas, TPad, gPad, gROOT, gStyle, THStack, TLegend, TLatex, TColor, TUnfold from array import array gROOT.Macro("rootlogon.C") gROOT.SetBatch(True) gStyle.SetOptStat(000000) gStyle.SetOptTitle(0) gStyle.SetTitleFont(43) gStyle.SetTitleFont(43, "XYZ") gStyle.SetTitleSize(30, "XYZ") gStyle.SetLabelFont(43, "XYZ") gStyle.SetLabelSize(24, "XYZ") gStyle.SetPadTopMargin(0.07) gStyle.SetPadRightMargin(0.05) gStyle.SetPadBottomMargin(0.16) gStyle.SetPadLeftMargin(0.18) gSystem.Load("RooUnfold/libRooUnfold.so") from ROOT import RooUnfoldResponse from ROOT import RooUnfold from ROOT import RooUnfoldBayes from ROOT import RooUnfoldSvd from ROOT import RooUnfoldTUnfold # -------------------------------------------------------------------------------------