コード例 #1
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def pid_background_fraction():
    """simplistic calculation of background contamination fraction"""
    nsig_p = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 'plus', 
        'away2_nSigmaPion')
    nsig_m = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 'minus', 
        'away2_nSigmaPion')
    
    nsig_p.SetTitle('n#sigma(#pi) for #pi^{+}')
    nsig_m.SetTitle('n#sigma(#pi) for #pi^{-}')
    
    print 'Fit summary for π+'
    pfits = pid_calibration(nsig_p)
    print 'Fit summary for π-'
    mfits = pid_calibration(nsig_m)
    c = graphics.canvas2()
    
    c.cd(1)
    nsig_m.Draw()
    [fit.Draw('same') for fit in mfits[1:]]
    
    c.cd(2)
    nsig_p.Draw()
    [fit.Draw('same') for fit in pfits[1:]]
    
    raw_input('wait here:')
    c.Print('pid_background_fraction.png')
コード例 #2
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def subprocess_shift():
    import histos
    histos.simu = True
    f = ROOT.TFile(datamcFile)
    mgr = HistogramManager(f, ['hardP'])
    mb = {
        'all': mgr.anyspin['117001']['hardP'],
        'gg': mgr.gg['117001']['hardP'],
        'qg': mgr.qg['117001']['hardP'],
        'qq': mgr.qq['117001']['hardP']
    }
    jp = {
        'all': mgr.anyspin['jetpatch']['hardP'],
        'gg': mgr.gg['jetpatch']['hardP'],
        'qg': mgr.qg['jetpatch']['hardP'],
        'qq': mgr.qq['jetpatch']['hardP']
    }
    print mb
    print jp
    
    for key in ('gg','qg','qq'):
        mb[key].Divide(mb['all'])
        jp[key].Divide(jp['all'])
    
    for h in (mb,jp):
        h['gg'].SetLineColor(ROOT.kRed)
        h['qg'].SetLineColor(ROOT.kBlue)
        h['qq'].SetLineColor(ROOT.kGreen)
    
    c = graphics.canvas2()
    c.cd(1)
    mb['gg'].Draw()
    mb['gg'].SetTitle('MB')
    mb['gg'].GetYaxis().SetRangeUser(0., 0.8)
    mb['gg'].GetXaxis().SetRangeUser(0, 30)
    mb['qg'].Draw('same')
    mb['qq'].Draw('same')
    
    c.cd(2)
    jp['gg'].Draw()
    jp['gg'].SetTitle('JP')
    jp['gg'].SetXTitle('hardP')
    jp['gg'].GetYaxis().SetRangeUser(0., 0.8)
    jp['gg'].GetXaxis().SetRangeUser(0, 30)
    jp['qg'].Draw('same')
    jp['qq'].Draw('same')
    
    raw_input('wait here:')
コード例 #3
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def subprocess_fraction_z(charge = 1):
    import histos
    histos.simu = True
    ROOT.gStyle.SetErrorX()
    f = ROOT.TFile(datamcFile)
    mgr = HistogramManager(f, ['z_away2'])
    mb = {
        'all': mgr.anyspin['117001'].trackHistograms(charge)['z_away2'],
        'gg': mgr.gg['117001'].trackHistograms(charge)['z_away2'],
        'qg': mgr.qg['117001'].trackHistograms(charge)['z_away2'],
        'qq': mgr.qq['117001'].trackHistograms(charge)['z_away2']
    }
    jp = {
        'all': mgr.anyspin['jetpatch'].trackHistograms(charge)['z_away2'],
        'gg': mgr.gg['jetpatch'].trackHistograms(charge)['z_away2'],
        'qg': mgr.qg['jetpatch'].trackHistograms(charge)['z_away2'],
        'qq': mgr.qq['jetpatch'].trackHistograms(charge)['z_away2']
    }
    
    for key in ('gg','qg','qq'):
        mb[key].Divide(mb['all'])
        jp[key].Divide(jp['all'])
    
    for h in (mb,jp):
        h['gg'].SetLineColor(ROOT.kRed)
        h['qg'].SetLineColor(ROOT.kBlue)
        h['qq'].SetLineColor(ROOT.kGreen)
        [h[k].SetMarkerStyle(24) for k in ('gg','qg','qq')]
    
    leg = ROOT.TLegend(0.65, 0.7, 0.85, 0.88)
    leg.AddEntry(mb['gg'], 'gg')
    leg.AddEntry(mb['qg'], 'qg')
    leg.AddEntry(mb['qq'], 'qq')
    
    c = graphics.canvas2()
    c.cd(1)
    mb['gg'].Draw('e1')
    mb['gg'].SetTitle('MB for charge=%d' % charge)
    mb['gg'].GetYaxis().SetRangeUser(0., 0.8)
    mb['gg'].GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    mb['qg'].Draw('e1 same')
    mb['qq'].Draw('e1 same')
    leg.Draw()
    
    c.cd(2)
    jp['gg'].Draw('e1')
    jp['gg'].SetTitle('JP for charge=%d' % charge)
    jp['gg'].GetYaxis().SetRangeUser(0., 0.8)
    jp['gg'].GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    jp['qg'].Draw('e1 same')
    jp['qq'].Draw('e1 same')
    
    c2 = graphics.canvas1()
    delta = {
        'gg': jp['gg'].Clone(),
        'qg': jp['qg'].Clone(),
        'qq': jp['qq'].Clone()
    }
    for k in delta.keys():
        delta[k].Add(mb[k], -1)
        delta[k].SetMarkerStyle(24)
    
    delta['gg'].SetTitle('Subprocess fraction difference (JP - MB) : charge=%d'\
        % charge)
    delta['gg'].GetYaxis().SetRangeUser(-0.4, 0.4)
    delta['gg'].Draw('e1')
    delta['qg'].Draw('e1 same')
    delta['qq'].Draw('e1 same')
    
    leg2 = ROOT.TLegend(0.15, 0.7, 0.25, 0.88)
    leg2.AddEntry(mb['gg'], 'gg')
    leg2.AddEntry(mb['qg'], 'qg')
    leg2.AddEntry(mb['qq'], 'qq')
    leg2.Draw()
    
    line = ROOT.TLine(zbins[0], 0.0, zbins[-1], 0.0)
    line.SetLineStyle(2)
    line.Draw()
    
    raw_input('wait here:')
    
    if charge == 1:
        c.Print('subprocess_fraction_trigger_plus.png')
        c2.Print('subprocess_fraction_difference_plus.png')
    else:
        c.Print('subprocess_fraction_trigger_minus.png')
        c2.Print('subprocess_fraction_difference_minus.png')
コード例 #4
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def mcasym(spin = 'anyspin'):
    """
    comparison of MC asymmetries for minbias and 137222
    """
    if spin == 'anyspin':
        stitle = ''
    else:
        stitle = '_%(spin)s' % locals()
    
    f = ROOT.TFile(mcasymFile)
    keys = ['STD', 'MIN','ZERO','GS_NLOC']
    wkeys = [key+'w' for key in keys]
    mgr = HistogramManager(f, keys=keys+wkeys)
    
    line = ROOT.TLine(zbins[0], 0.0, zbins[-1], 0.0)
    line.SetLineStyle(2)
    ROOT.gStyle.SetErrorX()
    
    color = {
        'STD': ROOT.kBlack,
        'MAX': ROOT.kRed,
        'MIN': ROOT.kGreen,
        'ZERO': ROOT.kBlue,
        'GS_NLOC': ROOT.kMagenta
    }
    
    smooth_factor = 1
    
    cmb = graphics.canvas2()
    cmbw = graphics.canvas2()
    cjp = graphics.canvas2()
    alldiffs = graphics.canvas2('Asymmetry Differences')
    alldiffsw = graphics.canvas2('Reweighted Asymmetry Differences')
    keepme = []
    diffs = {}
    for i,key in enumerate(keys):
        mb_m = mgr[spin]['117001'].tracks_minus[key].Clone()
        mb_p = mgr[spin]['117001'].tracks_plus[key].Clone()
        jp_m = mgr[spin]['jetpatch'].tracks_minus[key].Clone()
        jp_p = mgr[spin]['jetpatch'].tracks_plus[key].Clone()
        mb_mw = mgr[spin]['117001'].tracks_minus[key+'w'].Clone()
        mb_pw = mgr[spin]['117001'].tracks_plus[key+'w'].Clone()
        
        opt = i>0 and 'e2 same' or 'e2'
        
        for h in (mb_m, mb_p, jp_m, jp_p, mb_mw, mb_pw):
            h.Smooth(smooth_factor)
            h.GetXaxis().SetTitle('p_{T}(#pi)/p_{T}(jet)')
            h.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
            h.GetYaxis().SetRangeUser(-0.08,0.08)
            h.SetLineColor(color[key])
            h.SetFillColor(color[key])
        
        cmb.cd(1)
        line.Draw()
        mb_m.SetTitle('MB MC Asymmetries for #pi^{-} %(stitle)s' % locals())
        mb_m.Draw(opt)
        
        cmb.cd(2)
        line.Draw()
        mb_p.SetTitle('MB MC Asymmetries for #pi^{+} %(stitle)s' % locals())
        mb_p.Draw(opt)
        
        cmbw.cd(1)
        line.Draw()
        mb_mw.SetTitle('Reweighted MB MC Asymmetries for #pi^{-} %(stitle)s' \
            % locals())
        mb_mw.Draw(opt)
        
        cmbw.cd(2)
        line.Draw()
        mb_pw.SetTitle('Reweighted MB MC Asymmetries for #pi^{+} %(stitle)s' \
            % locals())
        mb_pw.Draw(opt)
        
        cjp.cd(1)
        line.Draw()
        jp_m.SetTitle('JP1 MC Asymmetries for #pi^{-} %(stitle)s' % locals())
        jp_m.Draw(opt)
        
        cjp.cd(2)
        line.Draw()
        jp_p.SetTitle('JP1 MC Asymmetries for #pi^{+} %(stitle)s' % locals())
        jp_p.Draw(opt)
        
        diff_m = jp_m.Clone()
        diff_m.Add(mb_m, -1)
        
        diff_mw = jp_m.Clone()
        diff_mw.Add(mb_mw, -1)
        
        diff_p = jp_p.Clone()
        diff_p.Add(mb_p, -1)
        
        diff_pw = jp_p.Clone()
        diff_pw.Add(mb_pw, -1)
        
        for h in (diff_m, diff_p):
            h.GetYaxis().SetRangeUser(-0.03, 0.03)
            h.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
            h.SetMarkerStyle(20)
        
        
        for h in (diff_mw, diff_pw):
            h.GetYaxis().SetRangeUser(-0.03, 0.03)
            h.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
            h.SetMarkerStyle(24)
            
        
        cdiff = graphics.canvas2(key)
        
        leg = ROOT.TLegend(0.15, 0.15, 0.6, 0.35)
        leg.SetHeader('Compare triggered asym to:')
        leg.AddEntry(diff_m, 'MB', 'p')
        leg.AddEntry(diff_mw, 'p_{T} reweighted MB', 'p')
        
        cdiff.cd(1)
        if spin == 'anyspin':
            mtitle = '#pi^{-} JP1 - MB for %(key)s' % locals()
            ptitle = '#pi^{+} JP1 - MB for %(key)s' % locals()            
        else:
            mtitle = '#pi^{-} JP1 - MB for %(key)s -- %(spin)s processes only' \
                % locals()
            ptitle = '#pi^{+} JP1 - MB for %(key)s -- %(spin)s processes only' \
                % locals()
        
        diff_m.SetTitle(mtitle)
        diff_mw.SetTitle(mtitle)
        diff_m.Draw('e1')
        diff_mw.Draw('e1 same')
        line.Draw()
        leg.Draw()
        
        cdiff.cd(2)
        diff_p.SetTitle(ptitle)
        diff_pw.SetTitle(ptitle)
        diff_p.Draw('e1')
        diff_pw.Draw('e1 same')
        line.Draw()
        
        cdiff.Print('mcasym_%(key)s_diffs%(stitle)s.png' % locals())
        
        opt2 = i>0 and 'e1 same' or 'e1'
        
        alldiffs.cd(1)
        line.Draw()
        diff_m.Draw(opt2)
        
        alldiffs.cd(2)
        line.Draw()
        diff_p.Draw(opt2)
        
        alldiffsw.cd(1)
        line.Draw()
        diff_mw.Draw(opt2)
        
        alldiffsw.cd(2)
        line.Draw()
        diff_pw.Draw(opt2)
        
        diffs[key] = (diff_mw, diff_pw)
        
        keepme.extend([jp_m, jp_p, cdiff, leg])
    
    # now report the asymmetry difference for each scenario
    for key in keys:
        diff_m, diff_p = diffs[key]
        print '\nπ- asymmetry differences for %(key)s' % locals()
        for bin in range(1, diff_m.GetNbinsX()+1):
            print '[%.2f-%.2f]  % .4f ± %.4f' % (
                diff_m.GetBinLowEdge(bin), diff_m.GetBinLowEdge(bin+1), 
                diff_m.GetBinContent(bin), diff_m.GetBinError(bin) )
                
        print '\nπ+ asymmetry differences for %(key)s' % locals()
        for bin in range(1, diff_m.GetNbinsX()+1):
            print '[%.2f-%.2f]  % .4f ± %.4f' % (
                diff_p.GetBinLowEdge(bin), diff_p.GetBinLowEdge(bin+1), 
                diff_p.GetBinContent(bin), diff_p.GetBinError(bin) )
    
    raw_input('wait here:')
    
    cmb.Print('mcasym_minbias%(stitle)s.png' % locals())
    cmbw.Print('mcasym_minbias_reweight%(stitle)s.png' % locals())
    cjp.Print('mcasym_jetpatch%(stitle)s.png' % locals())
    alldiffs.Print('mcasym_diff%(stitle)s.png' % locals())
    alldiffsw.Print('mcasym_diff_reweight%(stitle)s.png' % locals())
コード例 #5
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def asigma():
    asym_p = AsymmetryGenerator('asym_p', bins=zbins, key='z_away2')
    asym_m = AsymmetryGenerator('asym_m', bins=zbins, key='z_away2')
    
    scalars = ScalarCounts(os.environ['STAR'] + 
        '/StRoot/StSpinPool/StTamuRelLum/inputs/run6.txt')
    
    polarizations = Polarizations.Final
    
    ## generate the asymmetries
    allFiles = glob(transHistDir + '/chargedPions_*.hist.root')
    for fname in allFiles[:]:
        run = getRun(fname)
        if run in transverse_runlist:
            print fname, run
            mgr = HistogramManager(ROOT.TFile(fname), ['z_away2'])
            
            try:
                bin6 = scalars[str(run) + '-5-6']
                bin7 = scalars[str(run) + '-5-7']
                bin8 = scalars[str(run) + '-5-8']
                bin9 = scalars[str(run) + '-5-9']
            except KeyError:
                bin6 = scalars[str(run) + '-6-6']
                bin7 = scalars[str(run) + '-6-7']
                bin8 = scalars[str(run) + '-6-8']
                bin9 = scalars[str(run) + '-6-9']
            uu = bin6.uu + bin7.uu + bin8.uu + bin9.uu
            ud = bin6.ud + bin7.ud + bin8.ud + bin9.ud
            du = bin6.du + bin7.du + bin8.du + bin9.du
            dd = bin6.dd + bin7.dd + bin8.dd + bin9.dd
            
            pol = polarizations[bin7.fill]
            
            asym_p.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_m.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
    
    c = graphics.canvas2()
    c.SetLogy(0)
    ROOT.gStyle.SetErrorX(0.0)
    
    c.cd(1)
    hm = asym_m.GetAsymmetry('ll')
    hm.SetMarkerStyle(20)
    hm.SetTitle('A_{#sigma} #pi^{-}')
    hm.Fit('pol0', 'q')
    hm.Draw('e1')
    
    c.cd(2)
    hp = asym_p.GetAsymmetry('ll')
    hp.SetTitle('A_{#sigma} #pi^{+}')
    hp.SetMarkerStyle(21)
    hp.Fit('pol0', 'q')
    hp.Draw('e1')
    
    for h in (hm,hp):
        h.GetXaxis().SetTitle('p_{T}(#pi)/p_{T}(jet)')
        h.GetYaxis().SetRangeUser(-0.1, 0.1)
    
    raw_input('wait here:')
    c.Print('asigma.png')
    
    print '\nπ- A_{σ}'
    for bin in range(1, hm.GetNbinsX()+1):
        print '[%.2f-%.2f]  % .3f ± %.3f' % (hm.GetBinLowEdge(bin), 
            hm.GetBinLowEdge(bin+1), hm.GetBinContent(bin), hm.GetBinError(bin))
    
    print '\nπ+ A_{σ}'
    for bin in range(1, hp.GetNbinsX()+1):
        print '[%.2f-%.2f]  % .3f ± %.3f' % (hp.GetBinLowEdge(bin), 
            hp.GetBinLowEdge(bin+1), hp.GetBinContent(bin), hp.GetBinError(bin))
コード例 #6
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def ssa():
    """
    plots single-spin asymmetries versus fill and z, saves them in PNG format
    """
    asym_zp = AsymmetryGenerator('asym_zp', bins=zbins, key='z_away2')
    asym_zm = AsymmetryGenerator('asym_zm', bins=zbins, key='z_away2')
    asym_fp = {}
    asym_fm = {}
    
    fills = [int(f) for f in fillList(runlist)]
    for fill in fills:
        asym_fp[fill] = AsymmetryGenerator('p%d' % fill, bins=[1,-0.5,0.5], 
            key='one')
        asym_fm[fill] = AsymmetryGenerator('m%d' % fill, bins=[1,-0.5,0.5], 
            key='one')
    
    scalars = ScalarCounts(os.environ['STAR'] + 
        '/StRoot/StSpinPool/StTamuRelLum/inputs/run6.txt')
    
    polarizations = Polarizations.Final
    
    allFiles = glob(histDir + '/chargedPions_*.hist.root')
    for fname in allFiles[:]:
        run = getRun(fname)
        if run in runlist:
            print fname, run
            mgr = HistogramManager(ROOT.TFile(fname), ['z_away2','one'])
            
            try:
                bin6 = scalars[str(run) + '-5-6']
                bin7 = scalars[str(run) + '-5-7']
                bin8 = scalars[str(run) + '-5-8']
                bin9 = scalars[str(run) + '-5-9']
            except KeyError:
                bin6 = scalars[str(run) + '-6-6']
                bin7 = scalars[str(run) + '-6-7']
                bin8 = scalars[str(run) + '-6-8']
                bin9 = scalars[str(run) + '-6-9']
            uu = bin6.uu + bin7.uu + bin8.uu + bin9.uu
            ud = bin6.ud + bin7.ud + bin8.ud + bin9.ud
            du = bin6.du + bin7.du + bin8.du + bin9.du
            dd = bin6.dd + bin7.dd + bin8.dd + bin9.dd
            
            pol = polarizations[bin7.fill]
            
            asym_zp.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd,
                pol.py,pol.pb)
            asym_zm.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd,
                pol.py,pol.pb)
            asym_fp[bin7.fill].FillFromHistogramManager(mgr, 'jetpatch', 1, 
                uu,ud,du,dd, pol.py,pol.pb)
            asym_fm[bin7.fill].FillFromHistogramManager(mgr, 'jetpatch', -1, 
                uu,ud,du,dd, pol.py,pol.pb)
            
    title = {
        'ly':'Yellow Beam', 
        'lb':'Blue Beam', 
        'ls':'Like-Sign', 
        'us':'Unlike-Sign'
    }
    marker_color = {
        'ly':ROOT.kYellow, 
        'lb':ROOT.kBlue, 
        'ls':ROOT.kRed, 
        'us':ROOT.kBlack
    }
    
    ROOT.gStyle.SetOptStat(0)
    ROOT.gStyle.SetErrorX(0.0)
    ROOT.gStyle.SetOptFit(111)
    
    canvases = []
    for key in ('ly','lb','ls','us'):
        final_plus = ROOT.TH1D('final_plus_%s' % key, '', len(fills), 0.5, 
            len(fills)+0.5)
        final_minus = ROOT.TH1D('final_minus_%s' % key, '', len(fills), 0.5, 
            len(fills)+0.5)
        canvases.append([final_minus, final_plus])
        for i,f in enumerate(fills):
            hplus = asym_fp[f].GetAsymmetry(key)
            final_plus.SetBinContent( i+1, hplus.GetBinContent(1) )
            final_plus.SetBinError( i+1, hplus.GetBinError(1) )
            hplus.Delete()
            
            hminus = asym_fm[f].GetAsymmetry(key)
            final_minus.SetBinContent( i+1, hminus.GetBinContent(1) )
            final_minus.SetBinError( i+1, hminus.GetBinError(1) )
            hminus.Delete()
            
        for var,p,m in [('z',asym_zp,asym_zm), ('fill',asym_fp,asym_fm)]:
            c = graphics.canvas2()
            canvases.append(c)
        
            hp = (var == 'z') and p.GetAsymmetry(key) or final_plus
            hp.SetTitle(title[key] + ' SSA for #pi^{+}')
            hp.SetMarkerStyle(21)
    
            hm = (var == 'z') and m.GetAsymmetry(key) or final_minus
            hm.SetTitle(title[key] + ' SSA for #pi^{-}')
            hm.SetMarkerStyle(20)
    
            for h in (hp,hm):
                h.SetMarkerColor(marker_color[key])
                if var == 'fill':
                    h.GetYaxis().SetRangeUser(-0.2, 0.2)
                    h.SetXTitle('fill index')
                elif var == 'z':
                    h.SetXTitle('p_{T}(#pi) / p_{T}(jet)')
                    if key in ('ly', 'lb'):
                        h.GetYaxis().SetRangeUser(-0.05, 0.05)
                    else:
                        h.GetYaxis().SetRangeUser(-0.1, 0.1)
        
            c.cd(1)
            hm.Fit('pol0')
            hm.Draw('e1')
        
            c.cd(2)
            hp.Fit('pol0')
            hp.Draw('e1')
        
            c.Print('%s_ssa_%s.png' % (key, var))
    
    raw_input('wait here:')
コード例 #7
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def result():
    """
    result plot showing asymmetries versus z
    """    
    asym_p = AsymmetryGenerator('asym_p', bins=zbins, key='z_away2')
    asym_m = AsymmetryGenerator('asym_m', bins=zbins, key='z_away2')
    
    scalars = ScalarCounts(os.environ['STAR'] + 
        '/StRoot/StSpinPool/StTamuRelLum/inputs/run6.txt')
    
    polarizations = Polarizations.Final
    
    allFiles = glob(histDir + '/chargedPions_*.hist.root')
    for fname in allFiles[:]:
        run = getRun(fname)
        if run in runlist:
            print fname, run
            mgr = HistogramManager(ROOT.TFile(fname), ['z_away2'])
            
            try:
                bin6 = scalars[str(run) + '-5-6']
                bin7 = scalars[str(run) + '-5-7']
                bin8 = scalars[str(run) + '-5-8']
                bin9 = scalars[str(run) + '-5-9']
            except KeyError:
                bin6 = scalars[str(run) + '-6-6']
                bin7 = scalars[str(run) + '-6-7']
                bin8 = scalars[str(run) + '-6-8']
                bin9 = scalars[str(run) + '-6-9']
            uu = bin6.uu + bin7.uu + bin8.uu + bin9.uu
            ud = bin6.ud + bin7.ud + bin8.ud + bin9.ud
            du = bin6.du + bin7.du + bin8.du + bin9.du
            dd = bin6.dd + bin7.dd + bin8.dd + bin9.dd
            
            pol = polarizations[bin7.fill]
            
            asym_p.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_m.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
    
    ## fun with graphics
    ROOT.gStyle.SetErrorX(0.0)
    ROOT.gStyle.SetOptDate(0)
    
    c = graphics.canvas2()
    c.SetLogy(0)
    
    line = ROOT.TLine(zbins[0], 0.0, zbins[-1], 0.0)
    line.SetLineStyle(2)
    line.SetLineColor(10)
    
    prelim = ROOT.TText()
    prelim.SetTextColor(44)
    prelim.SetTextAlign(21)
    
    latex = ROOT.TLatex()
    latex.SetTextSize(0.25)
    # latex.SetTextAlign(21)
    
    syst = systematic_uncertainties()
    syst_m = ROOT.TGraphErrors(len(zbins))
    syst_p = ROOT.TGraphErrors(len(zbins))
    
    for g in (syst_m,syst_p):
        g.SetMarkerColor(15)
        g.SetFillColor(15)
        g.SetPoint(len(zbins), 1.0, 0)
        g.SetPointError(len(zbins), 0., 0.)
        g.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    
    hm = asym_m.GetAsymmetry('ll')
    hp = asym_p.GetAsymmetry('ll')
    
    for i in range(len(zbins)-1):
        z = (zbins[i] + zbins[i+1])/2
        syst_m.SetPoint(i, z, hm.GetBinContent(i+1))
        syst_m.SetPointError(i, 0.01, syst['minus'][i])
        syst_p.SetPoint(i, z, hp.GetBinContent(i+1))
        syst_p.SetPointError(i, 0.01, syst['plus'][i])
        
    c.cd(1)
    syst_m.Draw('a2p')
    line.Draw()
    hm.SetMarkerStyle(20)
    hm.Draw('e1 same')
    prelim.DrawText(0.5,0.065,"2006 STAR Preliminary")
    latex.DrawLatex(0.07 + zbins[0], -0.085, '#pi^{-}')
    
    c.cd(2)
    syst_p.Draw('a2p')
    line.Draw()
    hp.SetMarkerStyle(21)
    hp.Draw('e1 same')
    prelim.DrawText(0.5,0.065,"2006 STAR Preliminary")
    latex.DrawLatex(0.07 + zbins[0], -0.085, '#pi^{+}')
    
    for h in (hm,hp, syst_m, syst_p):
        h.SetTitle('')
        h.GetXaxis().SetTitle('z = p_{T}(#pi)/p_{T}(jet)')
        h.GetYaxis().SetRangeUser(-0.1, 0.1)
    
    raw_input('wait here:')
    c.Print('preliminary_result.png')
    
    print '\nπ- A_{LL}'
    for bin in range(1, hm.GetNbinsX()+1):
        print '[%.2f-%.2f]  % .3f ± %.3f' % (hm.GetBinLowEdge(bin), 
            hm.GetBinLowEdge(bin+1), hm.GetBinContent(bin), hm.GetBinError(bin))
    
    print '\nπ+ A_{LL}'
    for bin in range(1, hp.GetNbinsX()+1):
        print '[%.2f-%.2f]  % .3f ± %.3f' % (hp.GetBinLowEdge(bin), 
            hp.GetBinLowEdge(bin+1), hp.GetBinContent(bin), hp.GetBinError(bin))
    
    color = {
        'STD': ROOT.kBlack,
        'ZERO': ROOT.kBlue,
        'GS_NLOC': ROOT.kMagenta,
        'MIN': ROOT.kGreen,
        'DSSV': ROOT.kGreen + 100
    }
    title = {
        'STD': 'GRSV-STD',
        'MIN': 'GRSV-MIN',
        'ZERO': 'GRSV-ZERO',
        'GS_NLOC': 'GS Set C',
        'DSSV': 'DSSV'
    }
    mcasym_tfile = ROOT.TFile(mcasymFile)
    keys = ['STD','ZERO','GS_NLOC','DSSV']
    wkeys = [key+'w' for key in keys]
    mgr2 = HistogramManager(mcasym_tfile, keys=wkeys)
    leg = ROOT.TLegend(0.6, 0.13, 0.87, 0.37)
    leg.SetHeader('LO MC Evaluation')
    leg.SetBorderSize(1)
    for key in keys:
        m = mgr2['anyspin']['117001'].tracks_minus[key+'w']
        p = mgr2['anyspin']['117001'].tracks_plus[key+'w']
        for h in (m,p):
            h.Smooth(2)
            h.SetLineColor(color[key])
            h.SetFillColor(color[key])
            h.SetLineWidth(2)
        leg.AddEntry(m, title[key])
        c.cd(1)
        m.Draw('e3 same')
        hm.Draw('e1 same')
        c.cd(2)
        p.Draw('e3 same')
        hp.Draw('e1 same')
    c.cd(1)
    leg.Draw()
    raw_input('now wait here:')
    
    c.Print('preliminary_result_models.png')
コード例 #8
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def pt_shift_uncertainty_asymmetry():
    """
    calculate A_{LL} assuming different jet pt shifts
    """
    asym_pl = AsymmetryGenerator('asym_pl', bins=zbins, key='z_away2_low')
    asym_pm = AsymmetryGenerator('asym_pm', bins=zbins, key='z_away2')
    asym_ph = AsymmetryGenerator('asym_ph', bins=zbins, key='z_away2_high')
    asym_ml = AsymmetryGenerator('asym_ml', bins=zbins, key='z_away2_low')
    asym_mm = AsymmetryGenerator('asym_mm', bins=zbins, key='z_away2')
    asym_mh = AsymmetryGenerator('asym_mh', bins=zbins, key='z_away2_high')
    
    scalars = ScalarCounts(os.environ['STAR'] + 
        '/StRoot/StSpinPool/StTamuRelLum/inputs/run6.txt')
    
    polarizations = Polarizations.Final
    
    ## generate the asymmetries
    allFiles = glob(histDir + '/chargedPions_*.hist.root')
    for fname in allFiles[:]:
        run = getRun(fname)
        if run in runlist:
            print fname, run
            mgr = HistogramManager(ROOT.TFile(fname), ['z_away2', 
                'z_away2_low', 'z_away2_high'])
            
            try:
                bin6 = scalars[str(run) + '-5-6']
                bin7 = scalars[str(run) + '-5-7']
                bin8 = scalars[str(run) + '-5-8']
                bin9 = scalars[str(run) + '-5-9']
            except KeyError:
                bin6 = scalars[str(run) + '-6-6']
                bin7 = scalars[str(run) + '-6-7']
                bin8 = scalars[str(run) + '-6-8']
                bin9 = scalars[str(run) + '-6-9']
            uu = bin6.uu + bin7.uu + bin8.uu + bin9.uu
            ud = bin6.ud + bin7.ud + bin8.ud + bin9.ud
            du = bin6.du + bin7.du + bin8.du + bin9.du
            dd = bin6.dd + bin7.dd + bin8.dd + bin9.dd
            
            pol = polarizations[bin7.fill]
            
            asym_ml.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_mm.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_mh.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_pl.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_pm.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_ph.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
    
    
    c = graphics.canvas2()
    c.SetLogy(0)
    ROOT.gStyle.SetErrorX(0.0)
    
    c.cd(1)
    hml = asym_ml.GetAsymmetry('ll')
    hmm = asym_mm.GetAsymmetry('ll')
    hmh = asym_mh.GetAsymmetry('ll')
    hmm.SetMarkerStyle(20)
    hmm.SetTitle('p_{T} shift uncertainty on A_{LL} #pi^{-}')
    # hml.Fit('pol0', 'q')
    hmm.Draw('e1')
    gml = ROOT.TGraphErrors(hml)
    gmh = ROOT.TGraphErrors(hmh)
    for i in range(hmm.GetNbinsX()):
        gml.SetPoint(i, hml.GetBinCenter(i+1)-0.02, hml.GetBinContent(i+1))
        gmh.SetPoint(i, hmh.GetBinCenter(i+1)+0.02, hmh.GetBinContent(i+1))
    gml.Draw('p')
    gmh.Draw('p')
    
    c.cd(2)
    hpl = asym_pl.GetAsymmetry('ll')
    hpm = asym_pm.GetAsymmetry('ll')
    hph = asym_ph.GetAsymmetry('ll')
    hpm.SetTitle('p_{T} shift uncertainty on A_{LL} #pi^{+}')
    hpm.SetMarkerStyle(21)
    # hpl.Fit('pol0', 'q')
    hpm.Draw('e1')
    gpl = ROOT.TGraphErrors(hpl)
    gph = ROOT.TGraphErrors(hph)
    for i in range(hpm.GetNbinsX()):
        gpl.SetPoint(i, hpl.GetBinCenter(i+1)-0.02, hpl.GetBinContent(i+1))
        gph.SetPoint(i, hph.GetBinCenter(i+1)+0.02, hph.GetBinContent(i+1))
    gpl.Draw('p')
    gph.Draw('p')
    
    for g in (gml, gmh):
        g.SetMarkerStyle(24)
    for g in (gpl, gph):
        g.SetMarkerStyle(25)
    
    for h in (hmm,hpm):
        h.GetXaxis().SetTitle('p_{T}(#pi)/p_{T}(jet)')
        h.GetYaxis().SetRangeUser(-0.06, 0.08)
    
    raw_input('wait here:')
    c.Print('pt_shift_uncertainty_asymmetry.png')
    
    print '\nπ- shift asymmetry'
    for bin in range(1, hmm.GetNbinsX()+1):
        low = hml.GetBinContent(bin)
        mid = hmm.GetBinContent(bin)
        high = hmh.GetBinContent(bin)
        diffl = abs(mid-low)
        diffh = abs(mid-high)
        diff = (diffl+diffh)/2
        print '[%.2f-%.2f]  % .3f low, %.3f high, %.3f avg' % \
            (hmm.GetBinLowEdge(bin), hmm.GetBinLowEdge(bin+1),diffl,diffh,diff)
    
    print '\nπ+ shift asymmetry'
    for bin in range(1, hpm.GetNbinsX()+1):
        low = hpl.GetBinContent(bin)
        mid = hpm.GetBinContent(bin)
        high = hph.GetBinContent(bin)
        diffl = abs(mid-low)
        diffh = abs(mid-high)
        diff = (diffl+diffh)/2
        print '[%.2f-%.2f]  % .3f low, %.3f high, %.3f avg' % \
            (hpm.GetBinLowEdge(bin), hpm.GetBinLowEdge(bin+1),diffl,diffh,diff)
コード例 #9
0
ファイル: spin2008.py プロジェクト: gdwebb/UnderlyingEvent
def meanpt():
    """plots mean pT in each z bin for for pions and tracks"""
    meanpt_p = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 
        'plus', 'meanpt')
    meanpt_m = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 
        'minus', 'meanpt')
    
    meanjetpt_p = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 
        'plus', 'meanjetpt')
    meanjetpt_m = hadd_interactive(histDir, runlist, 'jetpatch', 'anyspin', 
        'minus', 'meanjetpt')
    
    ## now get some results from simulations
    f = ROOT.TFile(datamcFile)
    mgr = HistogramManager(f, keys=['meanpt', 'meanjetpt'])
    meansim_p = mgr.anyspin['jetpatch'].tracks_plus['meanpt']
    meansim_m = mgr.anyspin['jetpatch'].tracks_minus['meanpt']
    meanjetsim_p = mgr.anyspin['jetpatch'].tracks_plus['meanjetpt']
    meanjetsim_m = mgr.anyspin['jetpatch'].tracks_minus['meanjetpt']
    
    mbsim_p = mgr.anyspin['117001'].tracks_plus['meanpt']
    mbsim_m = mgr.anyspin['117001'].tracks_minus['meanpt']
    mbjetsim_p = mgr.anyspin['117001'].tracks_plus['meanjetpt']
    mbjetsim_m = mgr.anyspin['117001'].tracks_minus['meanjetpt']
    
    meanjetpt_m.SetTitle('JP Data / Monte Carlo comparison, #pi -')
    meanjetpt_p.SetTitle('JP Data / Monte Carlo comparison, #pi +')
    
    meanjetsim_m.SetTitle('Monte Carlo #pi -')
    meanjetsim_p.SetTitle('Monte Carlo #pi +')
    
    for h in (meanjetpt_m, meanjetpt_p, meanjetsim_m, meanjetsim_p):
        h.SetMarkerStyle(21)
        h.SetXTitle('z')
        h.SetYTitle('< pT >')
    
    [h.SetMarkerStyle(20) for h in (mbjetsim_m, mbjetsim_p)]
    [h.SetMarkerStyle(24) for h in (mbsim_m, mbsim_p)]
    
    for h in (meanpt_m, meanpt_p, meansim_m, meansim_p):
        h.SetMarkerStyle(25)
    
    for h in (meansim_m, meansim_p, meanjetsim_m, meanjetsim_p):
        h.SetMarkerColor(ROOT.kRed)
        h.SetLineColor(ROOT.kRed)
    
    leg = ROOT.TLegend(.6, .7, .8, .88)
    leg.AddEntry(meanjetpt_p, 'jet')
    leg.AddEntry(meanpt_p, '#pi')
    
    ## first compare JP data/MC
    c = graphics.canvas2('Data / Monte Carlo comparison for JP')
    c.cd(1)
    meanjetpt_m.Draw()
    meanjetpt_m.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    meanjetpt_m.GetYaxis().SetRangeUser(0, 25)
    meanjetsim_m.Draw('][ hist same')
    meanpt_m.Draw('same')
    meansim_m.Draw('][ hist same')
    
    c.cd(2)
    meanjetpt_p.Draw()
    meanjetpt_p.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    meanjetpt_p.GetYaxis().SetRangeUser(0, 25)
    meanjetsim_p.Draw('][ hist same')
    meanpt_p.Draw('same')
    meansim_p.Draw('][ hist same')
    leg.Draw()
    
    raw_input('wait here:')
    c.Print('jp-means.png')
    
    ## now compare JP and MB simulations
    c2 = graphics.canvas2('Comparison of MB and JP simulations')
    
    for h in (meanjetsim_m, meanjetsim_p, meansim_m, meansim_p):
        h.SetMarkerColor(ROOT.kBlue)
        h.SetLineColor(ROOT.kBlue)
    for h in (mbjetsim_m, mbjetsim_p, mbsim_m, mbsim_p):
        h.SetMarkerColor(ROOT.kRed)
        h.SetLineColor(ROOT.kRed)
    
    c2.cd(1)
    meanjetsim_m.Draw('hist p')
    meanjetsim_m.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    meanjetsim_m.GetYaxis().SetRangeUser(0, 25)
    mbjetsim_m.Draw('hist p same')
    mbsim_m.Draw('hist p same')
    meansim_m.Draw('hist p same')
    
    c2.cd(2)
    meanjetsim_p.Draw('hist p')
    meanjetsim_p.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    meanjetsim_p.GetYaxis().SetRangeUser(0, 25)
    mbjetsim_p.Draw('hist p same')
    mbsim_p.Draw('hist p same')
    meansim_p.Draw('hist p same')
    
    leg2 = ROOT.TLegend(.68, .7, .88, .88)
    leg2.AddEntry(meanjetsim_p, 'JP')
    leg2.AddEntry(mbjetsim_p, 'MB')
    leg2.Draw()
    
    raw_input('wait here:')
    
    c.Print('jp-means.png')
    c2.Print('simu-means.png')
コード例 #10
0
ファイル: misc.py プロジェクト: kocolosk/analysis
def run6_result_theory_curves():
    """
    result plot showing asymmetries versus z
    """    
    asym_p = AsymmetryGenerator('asym_p', bins=zbins, key='z_away2')
    asym_m = AsymmetryGenerator('asym_m', bins=zbins, key='z_away2')
    
    scalars = ScalarCounts(os.environ['STAR'] + 
        '/StRoot/StSpinPool/StTamuRelLum/inputs/run6.txt')
    
    polarizations = Polarizations.Final
    
    allFiles = glob(histDir + '/chargedPions_*.hist.root')
    for fname in allFiles[:]:
        run = getRun(fname)
        if run in runlist:
            print fname, run
            mgr = HistogramManager(ROOT.TFile(fname), ['z_away2'])
            
            try:
                bin6 = scalars[str(run) + '-5-6']
                bin7 = scalars[str(run) + '-5-7']
                bin8 = scalars[str(run) + '-5-8']
                bin9 = scalars[str(run) + '-5-9']
            except KeyError:
                bin6 = scalars[str(run) + '-6-6']
                bin7 = scalars[str(run) + '-6-7']
                bin8 = scalars[str(run) + '-6-8']
                bin9 = scalars[str(run) + '-6-9']
            uu = bin6.uu + bin7.uu + bin8.uu + bin9.uu
            ud = bin6.ud + bin7.ud + bin8.ud + bin9.ud
            du = bin6.du + bin7.du + bin8.du + bin9.du
            dd = bin6.dd + bin7.dd + bin8.dd + bin9.dd
            
            pol = polarizations[bin7.fill]
            
            asym_p.FillFromHistogramManager(mgr, 'jetpatch', 1, uu,ud,du,dd, \
                pol.py,pol.pb)
            asym_m.FillFromHistogramManager(mgr, 'jetpatch', -1, uu,ud,du,dd, \
                pol.py,pol.pb)
    
    ## fun with graphics
    ROOT.gStyle.SetErrorX(0.0)
    ROOT.gStyle.SetOptDate(0)
    
    c = graphics.canvas2()
    c.SetLogy(0)
    
    for i in (1, 2):
        pad = c.cd(i)
        pad.SetTopMargin(0.03)
        pad.SetBottomMargin(0.1)
        pad.SetLeftMargin(0.12)
        pad.SetRightMargin(0.02)
    
    line = ROOT.TLine(zbins[0], 0.0, zbins[-1], 0.0)
    line.SetLineStyle(2)
    
    prelim = ROOT.TText()
    prelim.SetTextColor(44)
    prelim.SetTextAlign(21)
    
    latex = ROOT.TLatex()
    latex.SetTextSize(0.25)
    
    syst = systematic_uncertainties()
    syst_m = ROOT.TGraphErrors(len(zbins))
    syst_p = ROOT.TGraphErrors(len(zbins))
    
    for g in (syst_m,syst_p):
        g.SetMarkerColor(15)
        g.SetFillColor(15)
        g.SetPoint(len(zbins), 1.0, 0)
        g.SetPointError(len(zbins), 0., 0.)
        g.GetXaxis().SetRangeUser(zbins[0], zbins[-1])
    
    hm = asym_m.GetAsymmetry('ll')
    hp = asym_p.GetAsymmetry('ll')
    for i in range(len(zbins)-1):
        z = (zbins[i] + zbins[i+1])/2
        syst_m.SetPoint(i, z, hm.GetBinContent(i+1))
        syst_m.SetPointError(i, 0.01, syst['minus'][i])
        syst_p.SetPoint(i, z, hp.GetBinContent(i+1))
        syst_p.SetPointError(i, 0.01, syst['plus'][i])
    
    [ g.GetXaxis().SetRangeUser(zbins[0], zbins[-1]) for g in (syst_m,syst_p) ]
    
    for h in (hm,hp, syst_m, syst_p):
        h.SetTitle('')
        h.GetXaxis().SetTitle('z')
        h.GetYaxis().SetRangeUser(-0.05, 0.08)
        h.GetYaxis().SetTitle('A_{LL}  ')
        h.GetYaxis().SetTitleSize(0.06)
        h.GetYaxis().SetTitleOffset(1.0)
        h.GetXaxis().SetTitle('z  ')
        h.GetXaxis().SetTitleSize(0.065)
        h.GetXaxis().SetTitleOffset(0.7)
    
    title = {
        'STD': 'GRSV-STD',
        'GSC': 'GS Set C',
        'DSSV': 'DSSV'
    }
    
    def make_graph(num, denom):
        g = ROOT.TGraphErrors(len(num))
        for i,n in enumerate(num):
            d = denom[i]
            val = n.y / d.y
            err = val*math.sqrt((n.sys/n.y)**2 + (d.sys/d.y)**2)
            g.SetPoint(i, n.x, val)
            g.SetPointError(i, 0, err)
        return g
    
    nlo_m = {
        'STD': make_graph(analysis.deflorian.minus.std, 
            analysis.deflorian.minus.mrst),
        'DSSV': make_graph(analysis.deflorian.minus.dssv, 
            analysis.deflorian.minus.mrst),
        'GSC': make_graph(analysis.deflorian.minus.gsc, 
            analysis.deflorian.minus.mrst),
    }
    nlo_p = {
        'STD': make_graph(analysis.deflorian.plus.std, 
            analysis.deflorian.plus.mrst),
        'DSSV': make_graph(analysis.deflorian.plus.dssv, 
            analysis.deflorian.plus.mrst),
        'GSC': make_graph(analysis.deflorian.plus.gsc, 
            analysis.deflorian.plus.mrst),
    }
    
    for nlo in (nlo_m, nlo_p):
        nlo['DSSV'].SetLineStyle(2)
        nlo['GSC'].SetLineColor(ROOT.kMagenta)
        nlo['DSSV'].SetLineColor(ROOT.kGreen+2)
        [gr.SetLineWidth(3) for gr in nlo.values()]
        [gr.SetFillColor(ROOT.kOrange) for gr in nlo.values()]
    
    leg = ROOT.TLegend(0.69, 0.15, 0.97, 0.36)
    leg.SetBorderSize(0)
    leg.SetNColumns(1)
    leg.AddEntry(nlo_m['STD'], 'GRSV-STD', 'l')
    leg.AddEntry(nlo_m['DSSV'], 'DSSV', 'l')
    leg.AddEntry(nlo_m['GSC'], 'GS-C', 'l')
    
    latex2 = ROOT.TLatex()
    
    c.cd(1)
    hm.SetMarkerStyle(20)
    syst_m.Draw('a2p')
    prelim.DrawText(0.42,-0.041,"STAR Preliminary")
    latex.DrawLatex(0.05 + zbins[0], 0.044, '#pi^{-}')
    latex2.DrawLatex(0.45, 0.06, '10 < jet p_{T} < 30')
    latex2.DrawLatex(0.5, 0.045, '#pi p_{T} > 2')
    [ g.Draw('3') for g in nlo_m.values() ]
    [ g.Draw('lx') for g in nlo_m.values() ]
    line.Draw()
    syst_m.Draw('2p')
    hm.Draw('e1 same')
    
    c.cd(2)
    hp.SetMarkerStyle(21)
    syst_p.Draw('a2p')
    prelim.DrawText(0.42,-0.041,"STAR Preliminary")
    latex.DrawLatex(0.05 + zbins[0], 0.044, '#pi^{+}')
    [ g.Draw('3') for g in nlo_p.values() ]
    [ g.Draw('lx') for g in nlo_p.values() ]
    line.Draw()
    leg.Draw()
    syst_p.Draw('2p')
    hp.Draw('e1 same')
    
    graphics.maybe_save(c)