def getRandomBHinput(n,Type=float,**kargs): psAllIncoming =rambo.PS(n,Type,**kargs) ps=[ [-x for x in psAllIncoming[0]], [-x for x in psAllIncoming[1]] ] +psAllIncoming[2:] return BH.BHinput(BH.vectorm(ps),n)
def treetest(): nbr = 20 r = [None] * nbr for i in range(1, nbr): RG.seed(123456) BH.RGMP_set_precision(200 * i) ps = rambo.PS(6, RandomGenerator=RGr, Type=BH.RGMP, mathLib=BH) cms = [BH.Cmomgmp(*p) for p in ps] mc = BH.mcgmp(*cms) r[i - 1] = A.eval(mc, ind) for i in range(nbr - 2): d = abs(r[i + 1] - r[i]) prec = -BH.log10(d) print "%s: %s" % (i, prec.to_double())
def getNonZeroTree(PRO, excludedList=[], requiredList=[], verbose=False, processTest=lambda x: True): ps = rambo.PS(len(PRO)) cms = [BH.Cmomd(*p) for p in ps] mc = BH.mcd(*cms) ind = BH.vectori(range(1, len(PRO) + 1)) for ps in genProcessList(PRO, excludedList, requiredList): if verbose: print typesString(ps, True) for phs in genAllHelicities(ps): pro = BH.process(BH.vectorpID(phs)) if not processTest(pro): continue A = BH.TreeHelAmpl(pro) ca = A.eval(mc, ind) if abs(ca) != 0.: yield pro
def testTrees(PRO,excludedList=[],requiredList=[],verbose=False,tolerance=0.00000000001,processTest=lambda x: True,StopOnFirstError=False): ntests=0 nzero=0 nfailed=0 npass=0 nnotpresent=0 ps =rambo.PS(len(PRO)) cms = [ BH.Cmomd(*p) for p in ps ] mc = BH.mcd(*cms) ind = BH.vectori(range(1,len(PRO)+1)) for ps in genProcessList(PRO, excludedList, requiredList): if verbose : print typesString(ps, True) for phs in genAllHelicities(ps): pro=BH.process(BH.vectorpID(phs)) if not processTest(pro): continue ntests+=1 A=BH.TreeHelAmpl(pro) ca = A.eval(mc,ind) if abs(ca) != 0.: try: ST = BH.SharedTree(pro) cst = ST.eval(mc,ind) acc=abs((cst-ca)/ca) if acc > tolerance: print '%s NOT OK, Values are st: %s a: %s ' % ( pro,cst,ca ) nfailed+=1 else: if verbose: print '%s OK' % pro npass+=1 except: print "Failed to generate SharedTree for process %s" % pro nnotpresent+=1 if StopOnFirstError: return pro else : if verbose: print '%s zero' % pro nzero+=1 print """ tested: %s zero: %s passed: %s failed: %s not present: %s """ % (ntests,nzero,npass,nfailed,nnotpresent) return (ntests,nzero,nfailed,npass,nnotpresent)
def printCutInfo(): for i in range(1, nbr): RG.seed(123456) BH.RGMP_set_precision(75 * i) ps = rambo.PS(6, RandomGenerator=RGr, Type=BH.RGMP, mathLib=BH) cms = [BH.Cmomgmp(*p) for p in ps] mc = BH.mcgmp(*cms) for b in range(1, cp.nbr_bubbles() + 1): #print " Bubble %s" % b bb = cp.bubble(b) res = bb.eval(mc, ind) bub[b - 1][i - 1] = res for b in range(1, cp.nbr_triangles() + 1): #print " Triangle %s" % b bb = cp.triangle(b) res = bb.eval(mc, ind) tri[b - 1][i - 1] = res for b in range(1, cp.nbr_boxes() + 1): #print " Box %s" % b bb = cp.box(b) res = bb.eval(mc, ind) box[b - 1][i - 1] = res for b in range(1, cp.nbr_bubbles() + 1): print "bubble %s" % b for i in range(nbr - 2): d = abs(bub[b - 1][i + 1] - bub[b - 1][i]) prec = -BH.log10(d) print "%s: %s" % (i, prec.to_double()) for b in range(1, cp.nbr_triangles() + 1): print "triangle %s: %s" % (b, (tri[b - 1][0])) for i in range(nbr - 2): d = abs(tri[b - 1][i + 1] - tri[b - 1][i]) prec = -BH.log10(d) print "%s: %s" % (i, prec.to_double()) for b in range(1, cp.nbr_boxes() + 1): print "box %s" % b for i in range(nbr - 2): d = abs(bub[b - 1][i + 1] - bub[b - 1][i]) prec = -BH.log10(d) print "%s: %s" % (i, prec.to_double())
#PRO=BH.process(m,m,qbp,qm,q2m,m,qb2p) PRO=BH.process(qbp,qm,q2m,m,m,qb2p,m) PRO2=BH.process(m,m,q2m,qm,qbp,m,qb2p) PROfailed=BH.process(qbp,qm,q2m,qb2p,p,m,m) #PRO2=BH.process(qbm,qp,q2m,m,m,qb2p) #PRO2=BH.process(p,qp,qbm,q2p,qb2m) #PRO3=BH.process(p,q2p,qb2m,qp,qbm) #PRO4=BH.process(p,qbm,qp,qb2m,q2p) A1=BH.TreeHelAmpl(PRO) A2=BH.TreeHelAmpl(PRO2) #A3=BH.TreeHelAmpl(PRO3) #A4=BH.TreeHelAmpl(PRO4) ps =rambo.PS(len(PRO)) cms = [ BH.Cmomd(*p) for p in ps ] mc = BH.mcd(*cms) ind = BH.vectori(range(1,len(PRO)+1)) ind2 = BH.vectori([2,1,7,6,5,4,3]) c1=A1.eval(mc,ind) c2=A2.eval(mc,ind2) #c3=A3.eval(mc,ind) #c4=A4.eval(mc,ind2) print c1,c2
import BH p = BH.cvar.p m = BH.cvar.m PRO = BH.process(p, m, p, m, p, m) A = BH.TreeHelAmpl(PRO) ind = BH.vectori([1, 2, 3, 4, 5, 6]) RG = BH.GMP_random() RGr = RG.random RG.seed(123456) BH.RGMP_set_precision(1024) import rambo ps = rambo.PS(6, RandomGenerator=RGr, Type=BH.RGMP, mathLib=BH) cms = [BH.Cmomgmp(*p) for p in ps] mc = BH.mcgmp(*cms) r1 = A.eval(mc, ind) RG.seed(123456) BH.RGMP_set_precision(2048) ps = rambo.PS(6, RandomGenerator=RGr, Type=BH.RGMP, mathLib=BH) cms = [BH.Cmomgmp(*p) for p in ps] mc = BH.mcgmp(*cms) r2 = A.eval(mc, ind) ps = rambo.PS(4, RandomGenerator=RGr, Type=BH.RGMP, mathLib=BH) cms = [BH.Cmomgmp(*p) for p in ps] mc = BH.mcgmp(*cms)
fnString = ' '.join(ts_permuted) if fnString in available: if isPreferred: print 'found permutation with preferred order for ', ts, ' index ', ind, ' (mapped to %s)' % ts_permuted else: print 'found permutation without preferred order for ', ts, ' index ', ind, ' (mapped to %s)' % ts_permuted needed.append(' '.join(ts_permuted)) return (True, 'normal', fnString) else: if verbose: print '%s not available' % fnString return (False, 'normal', '') N = 7 ps = rambo.PS(7) cms = [BH.Cmomd(*p) for p in ps] mc = BH.mcd(*cms) ind = BH.vectori(range(1, N + 1)) indRev = BH.vectori(range(N, 0, -1)) def FindReverseSolution(pro, notPreferredOK=False, **kwargs): ps = list(pro.particle_IDs()) ps.reverse() inversePro = BH.process(BH.vectorpID(ps)) print pro print inversePro found, fnString = isThere(inversePro) if found: A1 = BH.TreeHelAmpl(pro)
def genMomenta(n): psAllIncoming = rambo.PS(n) ps = [[-x for x in psAllIncoming[0]], [-x for x in psAllIncoming[1]] ] + psAllIncoming[2:] return ps
def getRandomMC(n): ps =rambo.PS(n) cms = [ BH.Cmomd(*p) for p in ps ] return BH.mcd(*cms)