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 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"
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 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()
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 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)
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 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)
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)
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
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 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 main(): gROOT.SetBatch() #range for |t| ptmin = 0. ptmax = 0.109 # 0.109 0.01 for interference range #default binning ptbin = 0.004 # 0.004 0.0005 for interference range #long bins at high |t| ptmid = 0.06 # 0.08, value > ptmax will switch it off 0.06 ptlon = 0.01 # 0.01 #short bins at low |t| ptlow = 0.01 ptshort = 0.0005 #mass interval mmin = 2.8 mmax = 3.2 #dy = 2. # rapidity interval, for integrated sigma dy = 1. ngg = 131 # number of gamma-gamma from mass fit lumi = 13871.907 # lumi in inv. ub #correction to luminosity for ana/triggered events ratio_ana = 3420950. / 3694000 #scale the lumi for |z| around nominal bunch crossing ratio_zdc_vtx = 0.502 Reta = 0.503 # pseudorapidity preselection #Reta = 1. trg_eff = 0.67 # bemc trigger efficiency ratio_tof = 1.433 # tof correction to efficiency bbceff = 0.97 # BBC veto inefficiency zdc_acc = 0.49 # ZDC acceptance to XnXn 0.7 #zdc_acc = 1. br = 0.05971 # dielectrons branching ratio #data basedir = "../../../star-upc-data/ana/muDst/muDst_run1/sel5" infile = "ana_muDst_run1_all_sel5z.root" #MC basedir_sl = "../../../star-upc-data/ana/starsim/slight14e/sel5" #infile_sl = "ana_slight14e1x2_s6_sel5z.root" infile_sl = "ana_slight14e1x3_s6_sel5z.root" # basedir_sart = "../../../star-upc-data/ana/starsim/sartre14a/sel5" infile_sart = "ana_sartre14a1_sel5z_s6_v2.root" # basedir_bgen = "../../../star-upc-data/ana/starsim/bgen14a/sel5" infile_bgen = "ana_bgen14a1_v0_sel5z_s6.root" #infile_bgen = "ana_bgen14a2_sel5z_s6.root" # basedir_gg = "../../../star-upc-data/ana/starsim/slight14e/sel5" infile_gg = "ana_slight14e2x1_sel5_nzvtx.root" #model predictions gSlight = load_starlight(dy) gSartre = load_sartre() gFlat = loat_flat_pt2() gMS = load_ms() gCCK = load_cck() #open the inputs inp = TFile.Open(basedir + "/" + infile) tree = inp.Get("jRecTree") # inp_gg = TFile.Open(basedir_gg + "/" + infile_gg) tree_gg = inp_gg.Get("jRecTree") # inp_sl = TFile.Open(basedir_sl + "/" + infile_sl) tree_sl_gen = inp_sl.Get("jGenTree") # inp_sart = TFile.Open(basedir_sart + "/" + infile_sart) tree_sart_gen = inp_sart.Get("jGenTree") # inp_bgen = TFile.Open(basedir_bgen + "/" + infile_bgen) tree_bgen_gen = inp_bgen.Get("jGenTree") #evaluate binning #print "bins:", ut.get_nbins(ptbin, ptmin, ptmax) bins = ut.get_bins_vec_2pt(ptbin, ptlon, ptmin, ptmax, ptmid) #bins = ut.get_bins_vec_3pt(ptshort, ptbin, ptlon, ptmin, ptmax, ptlow, ptmid) #print "bins2:", bins.size()-1 #load the data strsel = "jRecM>{0:.3f} && jRecM<{1:.3f}".format(mmin, mmax) hPt = ut.prepare_TH1D_vec("hPt", bins) tree.Draw("jRecPt*jRecPt >> hPt", strsel) #distribution for bin centers hPtCen = hPt.Clone("hPtCen") #gamma-gamma component hPtGG = ut.prepare_TH1D_vec("hPtGG", bins) tree_gg.Draw("jRecPt*jRecPt >> hPtGG", strsel) #normalize the gamma-gamma component ut.norm_to_num(hPtGG, ngg, rt.kGreen) #incoherent functional shape func_incoh_pt2 = TF1("func_incoh", "[0]*exp(-[1]*x)", 0., 10.) func_incoh_pt2.SetParameters(873.04, 3.28) #fill incoherent histogram from functional shape hPtIncoh = ut.prepare_TH1D_vec("hPtIncoh", bins) ut.fill_h1_tf(hPtIncoh, func_incoh_pt2, rt.kRed) #print "Entries before gamma-gamma and incoherent subtraction:", hPt.GetEntries() #subtract gamma-gamma and incoherent components hPt.Sumw2() hPt.Add(hPtGG, -1) #print "Gamma-gamma entries:", hPtGG.Integral() #print "Entries after gamma-gamma subtraction:", hPt.Integral() #print "Incoherent entries:", hPtIncoh.Integral() hPt.Add(hPtIncoh, -1) #print "Entries after all subtraction:", hPt.Integral() #scale the luminosity lumi_scaled = lumi * ratio_ana * ratio_zdc_vtx #print "lumi_scaled:", lumi_scaled #denominator for deconvoluted distribution, conversion ub to mb den = Reta * br * zdc_acc * trg_eff * bbceff * ratio_tof * lumi_scaled * 1000. * dy #deconvolution deconv_min = bins[0] deconv_max = bins[bins.size() - 1] deconv_nbin = bins.size() - 1 gROOT.LoadMacro("fill_response_matrix.C") #Starlight response #resp_sl = RooUnfoldResponse(deconv_nbin, deconv_min, deconv_max, deconv_nbin, deconv_min, deconv_max) resp_sl = RooUnfoldResponse(hPt, hPt) rt.fill_response_matrix(tree_sl_gen, resp_sl) # unfold_sl = RooUnfoldBayes(resp_sl, hPt, 15) #unfold_sl = RooUnfoldSvd(resp_sl, hPt, 15) hPtSl = unfold_sl.Hreco() #ut.set_H1D(hPtSl) #apply the denominator and bin width ut.norm_to_den_w(hPtSl, den) #Sartre response #resp_sart = RooUnfoldResponse(deconv_nbin, deconv_min, deconv_max, deconv_nbin, deconv_min, deconv_max) #resp_sart = RooUnfoldResponse(hPt, hPt) #rt.fill_response_matrix(tree_sart_gen, resp_sart) # #unfold_sart = RooUnfoldBayes(resp_sart, hPt, 10) #hPtSart = unfold_sart.Hreco() #ut.set_H1D(hPtSart) #hPtSart.SetMarkerStyle(21) #Flat pT^2 response #resp_bgen = RooUnfoldResponse(deconv_nbin, deconv_min, deconv_max, deconv_nbin, deconv_min, deconv_max) resp_bgen = RooUnfoldResponse(hPt, hPt) rt.fill_response_matrix(tree_bgen_gen, resp_bgen) # unfold_bgen = RooUnfoldBayes(resp_bgen, hPt, 14) hPtFlat = unfold_bgen.Hreco() #ut.set_H1D(hPtFlat) #apply the denominator and bin width ut.norm_to_den_w(hPtFlat, den) #hPtFlat.SetMarkerStyle(22) #hPtFlat.SetMarkerSize(1.3) #systematical errors err_zdc_acc = 0.1 err_bemc_eff = 0.03 #sys_err = rt.TMath.Sqrt(err_zdc_acc*err_zdc_acc + err_bemc_eff*err_bemc_eff) sys_err = err_zdc_acc * err_zdc_acc + err_bemc_eff * err_bemc_eff #print "Total sys err:", sys_err hSys = ut.prepare_TH1D_vec("hSys", bins) hSys.SetOption("E2") hSys.SetFillColor(rt.kOrange + 1) hSys.SetLineColor(rt.kOrange) for ibin in xrange(1, hPtFlat.GetNbinsX() + 1): hSys.SetBinContent(ibin, hPtFlat.GetBinContent(ibin)) sig_sl = hPtSl.GetBinContent(ibin) sig_fl = hPtFlat.GetBinContent(ibin) err_deconv = TMath.Abs(sig_fl - sig_sl) / sig_fl #print "err_deconv", err_deconv #sys_err += err_deconv*err_deconv sys_err_sq = sys_err + err_deconv * err_deconv sys_err_bin = TMath.Sqrt(sys_err_sq) stat_err = hPtFlat.GetBinError(ibin) / hPtFlat.GetBinContent(ibin) tot_err = TMath.Sqrt(stat_err * stat_err + sys_err_sq) #hSys.SetBinError(ibin, hPtFlat.GetBinContent(ibin)*err_deconv) hSys.SetBinError(ibin, hPtFlat.GetBinContent(ibin) * sys_err_bin) #hPtFlat.SetBinError(ibin, hPtFlat.GetBinContent(ibin)*tot_err) #draw the results gStyle.SetPadTickX(1) gStyle.SetFrameLineWidth(2) #frame for models plot only frame = ut.prepare_TH1D("frame", ptbin, ptmin, ptmax) can = ut.box_canvas() #ut.set_margin_lbtr(gPad, 0.1, 0.09, 0.03, 0.03) ut.set_margin_lbtr(gPad, 0.1, 0.09, 0.055, 0.01) ytit = "d#it{#sigma}/d#it{t}d#it{y} (mb/(GeV/c)^{2})" xtit = "|#kern[0.3]{#it{t}}| ((GeV/c)^{2})" ut.put_yx_tit(frame, ytit, xtit, 1.4, 1.2) frame.SetMaximum(11) #frame.SetMinimum(1.e-6) #frame.SetMinimum(2e-4) frame.SetMinimum(1e-5) # 3e-5 frame.Draw() #hSys.Draw("e2same") #bin center points from data #gSig = apply_centers(hPtFlat, hPtCen) gSig = fixed_centers(hPtFlat) ut.set_graph(gSig) #hPtSl.Draw("e1same") #hPtSart.Draw("e1same") #hPtFlat.Draw("e1same") #put model predictions #gSartre.Draw("lsame") #gFlat.Draw("lsame") gMS.Draw("lsame") gCCK.Draw("lsame") gSlight.Draw("lsame") gSig.Draw("P") frame.Draw("same") gPad.SetLogy() cleg = ut.prepare_leg(0.1, 0.96, 0.14, 0.01, 0.035) cleg.AddEntry( None, "Au+Au #rightarrow J/#psi + Au+Au + XnXn, #sqrt{#it{s}_{#it{NN}}} = 200 GeV", "") cleg.Draw("same") leg = ut.prepare_leg(0.45, 0.82, 0.18, 0.1, 0.035) leg.AddEntry(None, "#bf{|#kern[0.3]{#it{y}}| < 1}", "") hx = ut.prepare_TH1D("hx", 1, 0, 1) leg.AddEntry(hx, "STAR") hx.Draw("same") leg.Draw("same") #legend for models mleg = ut.prepare_leg(0.68, 0.76, 0.3, 0.16, 0.035) #mleg = ut.prepare_leg(0.68, 0.8, 0.3, 0.12, 0.035) mleg.AddEntry(gSlight, "STARLIGHT", "l") mleg.AddEntry(gMS, "MS", "l") mleg.AddEntry(gCCK, "CCK-hs", "l") #mleg.AddEntry(gSartre, "Sartre", "l") #mleg.AddEntry(gFlat, "Flat #it{p}_{T}^{2}", "l") mleg.Draw("same") #legend for deconvolution method dleg = ut.prepare_leg(0.3, 0.75, 0.2, 0.18, 0.035) #dleg = ut.prepare_leg(0.3, 0.83, 0.2, 0.1, 0.035) dleg.AddEntry(None, "Unfolding with:", "") dleg.AddEntry(hPtSl, "Starlight", "p") #dleg.AddEntry(hPtSart, "Sartre", "p") dleg.AddEntry(hPtFlat, "Flat #it{p}_{T}^{2}", "p") #dleg.Draw("same") ut.invert_col(rt.gPad) can.SaveAs("01fig.pdf") #to prevent 'pure virtual method called' gPad.Close() #save the cross section to output file out = TFile("sigma.root", "recreate") gSig.Write("sigma") out.Close() #beep when finished gSystem.Exec("mplayer ../computerbeep_1.mp3 > /dev/null 2>&1")
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 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 setupROOT(): """sets up ROOT """ gROOT.Reset() gROOT.SetStyle('Plain') gStyle.SetPadTickY(1) gStyle.SetPadTickX(1)
""" __author__ = "Maoqiang JING <*****@*****.**>" __copyright__ = "Copyright (c) Maoqiang JING" __created__ = "[2019-11-05 Tue 16:27]" import ROOT from ROOT import TCanvas, gStyle, TTree, THStack from ROOT import TFile, TH1F, TLegend, TArrow import sys, os import logging from math import * logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s- %(message)s') gStyle.SetOptTitle(0) # quench title gStyle.SetPadTickX(1) # dicide on boxing on or not of x and y axis gStyle.SetPadTickY(1) # dicide on boxing on or not of x and y axis def usage(): sys.stdout.write(''' NAME plot_m_Dpi.py SYNOPSIS ./plot_m_Dpi.py [ecms] AUTHOR Maoqiang JING <*****@*****.**> DATE
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.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 LumiText = str(intLumi) + " pb^{-1}" LumiText = str.format('{0:.1f}', LumiInPb) + " pb^{-1}" else: LumiInFb = intLumi/1000. LumiText = str.format('{0:.1f}', LumiInFb) + " fb^{-1}"
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)