예제 #1
0
def all_single_hadrons(mom):
    logging.info("Include all the single hadrons")
    args.outfile.write("# start with all the single hadrons\n") #beyonce
    isomap = {"1": ["pion"], "1h": ["kaon"], "0": ["eta", "phi"]}

    basechan = args.channel.split("_")[0]

    psqr = sum(int(i)**2 for i in args.momentum)
    if psqr == 0:
        sh = getprunedops(args.isospin, "sh")
        atrest = getprunedops(args.isospin, "atrest")
        ops = sh[basechan] + atrest[basechan]
    if psqr == 1 or psqr == 4:
        ops = getprunedops(args.isospin, "OA")[basechan]
    if psqr == 2:
        ops = getprunedops(args.isospin, "PD")[basechan]
    if psqr == 3:
        ops = getprunedops(args.isospin, "CD")[basechan]
    isomap = {"1": ["pion"], "1h": ["kaon"], "0": ["eta", "phi"]}
    namemap = {"1": "pi", "1h": "K", "0": "eta"}
    psqr = sum(int(i)**2 for i in args.momentum)
    operators = particle_operators.particleDatabase()
    op = operators.read_op(namemap[args.isospin], basechan, psqr)
    for disp in ops:

        for name in isomap[args.isospin]:
            p = "({},{},{})".format(*[mom_map[i] for i in mom])
            singleopline = '@oplist.push("{} P={} {} {}")\n'.format(name, p, args.channel, disp)
            args.outfile.write(singleopline)
예제 #2
0
def operator_for_singlehadron(name, psqr):
    logging.info("Translating {}".format(name))
    operators = particle_operators.particleDatabase()
    p1 = particle_name(name)
    try:
        irreps = irrep_moving_particle(p1, psqr)
    except KeyError:
        logging.critical("I don't know how to do subductions for this momenta")
        raise NotImplementedError("Unsupported momenta")
    ops = {}
    for irrep in irreps:
        op = operators.read_op(name, irrep, getmomint(psqr))
        logging.info("particle1 %s in %s, primary operator is %s", name, irrep, op)
        ops[irrep] = op
    return ops
예제 #3
0
def translate_name_to_irrep(name):
    logging.info("Translating {}".format(name))
    name = name.replace("KB", "K")
    operators = particle_operators.particleDatabase()
    if "_" not in name:
        logging.info("Is a single hadron?")
        p1 = particle_name(name)
        logging.info("particle %s at rest irreps: %s", name, " ".join(irrep_rest_particle(p1)))
        raise ValueError("is a single hadron")

    if name.count("_") > 5:
        logging.info("Is a three or four hadron state?")
        raise NotImplementedError("3 or more hadrons")

    particle1, momentum1, particle2, momentum2, _, _ = name.split("_")
    mom1 = getmomint(momentum1)
    mom2 = getmomint(momentum2)
    try:
        p1 = particle_name(particle1)
        p2 = particle_name(particle2)
    except KeyError:
        logging.critical("I don't know understand one of the particle names")
        raise NotImplementedError("Particle name unknown")
    logging.info("particle1 %s at rest irreps: %s", particle1, " ".join(irrep_rest_particle(p1)))
    logging.info("particle2 %s at rest irreps: %s", particle2, " ".join(irrep_rest_particle(p2)))

    iso = [i for i in name.split("_") if i.startswith("iso")][0]

    try:
        irreps1 = irrep_moving_particle(p1, momentum1)
        irreps2 = irrep_moving_particle(p2, momentum2)
    except KeyError:
        logging.critical("I don't know how to do subductions for this momenta")
        raise NotImplementedError("Unsupported momenta")

    if mom1 > 0:
        logging.info("particle1 %s moving irreps: %s", particle1,
                     " ".join(irreps1))

    if mom2 > 0:
        logging.info("particle2 %s moving irreps: %s", particle2,
                     " ".join(irreps2))

    for i in irreps1:
        for j in irreps2:
            logging.info("operator file: {}_{}_{}_{}".format(momentums[mom1], i, momentums[mom2], j))

    for irrep in irreps1:
        op = operators.read_op(particle1, irrep, mom1)
        logging.info("particle1 %s in %s, primary operator is %s", particle1, irrep, op)

    for irrep in irreps2:
        op = operators.read_op(particle2, irrep, mom2)
        logging.info("particle2 %s in %s, primary operator is %s", particle2, irrep, op)

    opset = []
    for i in irreps1:
        op1 = operators.read_op(particle1, i, mom1)
        for j in irreps2:
            op2 = operators.read_op(particle2, j, mom2)
            opset.append(((p1, momentums[mom1], i, op1), (p2, momentums[mom2], j, op2)))
            opfile = "{}_{}_{}_{}".format(momentums[mom1], i, momentums[mom2], j)
            if op1 == op2:
                logging.info("cat S\=0_{opfile}_* | grep -r {op1}.*{op2}".format(opfile=opfile, op1=op1, op2=op2))
            else:
                logging.info("cat S\=0_{opfile}_* | grep {op1} |grep {op2}".format(opfile=opfile, op1=op1, op2=op2))
            #print "op1:", "p={}".format(mom1), i, op1, "op2:", "p={}".format(mom2), j, op2

    return opset