Beispiel #1
0
def printMCTree(mcps,filename="temp.dot"):
    #start the graph
    f=open(filename, 'w')
    f.write('digraph G {\nranksep="equally";\noverlap="false";\nrankdir="LR";\ncompound=true;\n')
    #make a node for each mcp 
    colors = {-1:"white",0:"white",1:"grey",2:"yellow",3:"green",4:"red",5:"blue",6:"pink"}
    for mcp in mcps:
        name = str(mcp.id())
        label = lc.pdgToName(mcp.getPDG())
        colour= colors[quarkType(mcp.getPDG())]
        f.write('"'+name+'" [ label="'+label+' '+str(len(mcp.getParents()))+'",style="filled",color="'+colour+'" ];\n')
    #idn = 0
    #mcp_ids = [mcp.id() for mcp in mcps]
    #for mcp in mcps:
    #    daughters = [daughter for daughter in mcp.getDaughters() if daughter.id() in mcp_ids]
    #    if daughters:
    #        f.write('subgraph cluster'+str(idn)+'{\n')
    #        for daughter in daughters:
    #            f.write(str(daughter.id())+';\n')
    #        f.write('}\n')
    #        f.write(str(mcp.id())+'->'+str(daughter.id())+' [ lhead=cluster'+str(idn)+',label = #"'+str(mu.threeDRadius(sub(mcp.getVertex(),mcp.getEndpoint())))[:4]+'" ];')
    #        idn += 1

    #make a node in each cluster
    #idn = 0
    #for vert in mCVertices(mcps).itervalues():
    #    #we need to remove the ones that leave this vertex
    #    #vert = [mcp for mcp in vert if mu.threeDRadius(sub(mcp.getVertex(),mcp.getEndpoint())) < 0.00000001]
    #    if len(vert) > 1:
    #        f.write('subgraph cluster'+str(idn)+'{\n')
    #        for mcp in vert:
    #            f.write(str(mcp.id())+';\n')
    #        f.write('}\n')
    #        idn += 1
    #make a link for each decay (whose product is in the list!)
    mcp_ids = [mcp.id() for mcp in mcps ]#if fromIP(mcp)]
    for mcp in mcps:
        for parent in mcp.getParents():
     #       if fromIP(parent):
                f.write(str(parent.id())+'->'+str(mcp.id())+' [ label = "'+str(mu.threeDRadius(mu.sub(parent.getVertex(),parent.getEndpoint())))[:4]+'" ];')
    #end graph
    f.write('}\n')
    f.close()
    f=open(filename+".png", 'w')
    sp.call(['dot', '-Tpng', filename],stdout = f)
    f.close()
    sp.call(['eog', filename+".png"])
Beispiel #2
0
def getTrueJetFlavour(event, jet):
    return lc.pdgToName(event.getCorrespondingObject(jet,"TrueJetFlavour")[0])