def histo(variable, hname):
     h = None
     mtBinEdges = fakeu.mtBinEdges()
     ptBinEdges = fakeu.ptBinEdges()
     etaBinEdges = fakeu.etaBinEdges()
     if variable == 'mt0':
         h = r.TH1F(hname, ';m_{T}(tag,MET) [GeV]; entries/bin',
                    len(mtBinEdges) - 1, mtBinEdges)
     elif variable == 'mt1':
         h = r.TH1F(hname, ';m_{T}(probe,MET) [GeV]; entries/bin',
                    len(mtBinEdges) - 1, mtBinEdges)
     elif variable == 'pt0':
         h = r.TH1F(hname, ';p_{T,l0} [GeV]; entries/bin',
                    len(ptBinEdges) - 1, ptBinEdges)
     elif variable == 'pt1':
         h = r.TH1F(hname, ';p_{T,l1} [GeV]; entries/bin',
                    len(ptBinEdges) - 1, ptBinEdges)
     elif variable == 'eta1':
         h = r.TH1F(hname, ';#eta_{l1}; entries/bin',
                    len(etaBinEdges) - 1, etaBinEdges)
     elif v == 'pt1_eta1':
         h = r.TH2F(hname, ';p_{T} [GeV]; #eta',
                    len(ptBinEdges) - 1, ptBinEdges,
                    len(etaBinEdges) - 1, etaBinEdges)
     else:
         print "unknown variable %s" % v
     h.SetDirectory(0)
     h.Sumw2()
     return h
def shiftWithinRange(pt, eta, mt, epsilon=1.0e-3):
    ptBins, etaBins, mtBins = fakeu.ptBinEdges(), fakeu.etaBinEdges(), fakeu.mtBinEdges()
    minPt, maxPt = min(ptBins), max(ptBins)
    minEta, maxEta = min(etaBins), max(etaBins)
    minMt, maxMt = min(mtBins), max(mtBins)
    pt  = minPt*(1.0+epsilon)  if pt<minPt   else maxPt*(1.0-epsilon)  if pt > maxPt   else pt
    eta = minEta*(1.0+epsilon) if eta<minEta else maxEta*(1.0-epsilon) if eta > maxEta else eta
    mt  = minMt*(1.0+epsilon)  if mt<minMt   else maxMt*(1.0-epsilon)  if mt > maxMt   else mt
    return pt, eta, mt
 def histo(variable, hname):
     h = None
     mtBinEdges = fakeu.mtBinEdges()
     ptBinEdges = fakeu.ptBinEdges()
     etaBinEdges = fakeu.etaBinEdges()
     if   variable=='mt0'     : h = r.TH1F(hname, ';m_{T}(tag,MET) [GeV]; entries/bin', len(mtBinEdges)-1,  mtBinEdges)
     elif variable=='mt1'     : h = r.TH1F(hname, ';m_{T}(probe,MET) [GeV]; entries/bin', len(mtBinEdges)-1,  mtBinEdges)
     elif variable=='pt0'     : h = r.TH1F(hname, ';p_{T,l0} [GeV]; entries/bin',   len(ptBinEdges)-1,  ptBinEdges)
     elif variable=='pt1'     : h = r.TH1F(hname, ';p_{T,l1} [GeV]; entries/bin',   len(ptBinEdges)-1,  ptBinEdges)
     elif variable=='eta1'    : h = r.TH1F(hname, ';#eta_{l1}; entries/bin',        len(etaBinEdges)-1, etaBinEdges)
     else : print "unknown variable %s"%v
     h.SetDirectory(0)
     h.Sumw2()
     return h
 def histo(variable, hname):
     h = None
     mtBinEdges = fakeu.mtBinEdges()
     ptBinEdges = fakeu.ptBinEdges()
     etaBinEdges = fakeu.etaBinEdges()
     mdrBinEdges = fakeu.mdeltarBinEdges()
     if   variable=='pt'  : h = r.TH1F(hname, ';p_{T,l} [GeV]; entries/bin',   len(ptBinEdges)-1,  ptBinEdges)
     elif variable=='eta' : h = r.TH1F(hname, ';|#eta_{l}|; entries/bin',        len(etaBinEdges)-1, etaBinEdges)
     elif variable=='mt'  : h = r.TH1F(hname, ';m_{T}(l,MET) [GeV]; entries/bin', len(mtBinEdges)-1, mtBinEdges)
     elif variable=='mdeltar': h = r.TH1F(hname, ';m_{T}(l,MET) [GeV]; entries/bin', len(mdrBinEdges)-1, mdrBinEdges)
     elif variable=='pt_eta' : h = r.TH2F(hname, ';p_{T,l} [GeV]; #eta_{l};',  len(ptBinEdges)-1,  ptBinEdges, len(etaBinEdges)-1, etaBinEdges)
     else : print "unknown variable %s"%v
     h.SetDirectory(0)
     h.Sumw2()
     return h