def getTomography(x, px, py, mu=-1., n=-1):
    M_proton = 0.932
    p = numpy.sqrt(px**2 + py**2)
    if (n < 0):
        SetUnTMD(numpy.random.randint(1, unSet.numberOfReplicas + 1))
        rSet.SetReplica(numpy.random.randint(1, rSet.numberOfReplicas + 1))
    else:
        SetUnTMD(n)
        rSet.SetReplica(n)
    tmd = numpy.array(harpy.get_uTMDPDF_kT(
        x, p, 1, mu=mu)) - px * M_proton / p * numpy.array(
            harpy.get_SiversTMDPDF_kT(x, p, 1, mu=mu))
    return tmd
def getPDFRowP(x,p,mu=-1.):
    result=[]
    for j in range(unSet.numberOfReplicas+1):
        SetUnTMD(j)
        result.append(numpy.array(harpy.get_uTMDPDF_kT(x,p,1,mu=mu)))
    return numpy.array(result)
예제 #3
0
# Fill the list with values (could take long time!)
#######################################
startTime = time.time()
for i in range(len(Qrange)):
    for j in range(len(Xrange)):
        for k in range(len(Rrange)):
            Qval = float(Qrange[i])
            xval = Xrange[j]
            rval = Rrange[k]

            if (xval == 1):
                TMDval = [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
            else:
                TMDval = harpy.get_uTMDPDF_kT(xval,
                                              rval * Qval,
                                              1,
                                              Qval,
                                              Qval**2,
                                              includeGluon=False)
                #TMDval=harpy.get_uTMDFF_kT(xval,rval*Qval,2,Qval,Qval**2,includeGluon=False)

            valuesList[-5][i][j][k] = '{:g}'.format(xval * TMDval[0])
            valuesList[-4][i][j][k] = '{:g}'.format(xval * TMDval[1])
            valuesList[-3][i][j][k] = '{:g}'.format(xval * TMDval[2])
            valuesList[-2][i][j][k] = '{:g}'.format(xval * TMDval[3])
            valuesList[-1][i][j][k] = '{:g}'.format(xval * TMDval[4])
            #valuesList[0][i][j][k]='{:g}'.format(xval*TMDval[5])
            valuesList[1][i][j][k] = '{:g}'.format(xval * TMDval[6])
            valuesList[2][i][j][k] = '{:g}'.format(xval * TMDval[7])
            valuesList[3][i][j][k] = '{:g}'.format(xval * TMDval[8])
            valuesList[4][i][j][k] = '{:g}'.format(xval * TMDval[9])
            valuesList[5][i][j][k] = '{:g}'.format(xval * TMDval[10])
예제 #4
0
def ComputeAndSave(c,n):
    from numpy import zeros
    
    startTime=time.time()
    print("CASE: "+c+"  n= "+str(n))
    
    if(c=="_"):
        Xrange=XrangePDF
    else:
        Xrange=XrangeFF
        
    valuesList = {
    -5: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    -4: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    -3: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    -2: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    -1: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    1: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    2: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    3: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    4: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist(),
    5: zeros([len(Qrange),len(Xrange),len(Rrange)]).tolist()
    }
        
    rSet.SetReplica(n)
    for i in range(len(Qrange)):
        for j in range(len(Xrange)):
            for k in range(len(Rrange)):
                Qval=float(Qrange[i])
                xval=Xrange[j]
                rval=Rrange[k]
                
                if(xval==1):
                    TMDval=[0.,0.,0.,0.,0.,0.,0.,0.,0.,0.,0.]
                else:
                    if(c=="_"):
                        TMDval=harpy.get_uTMDPDF_kT(xval,rval*Qval,1,Qval,Qval**2,includeGluon=False)
                    elif(c=="_ff_pi_"):
                        TMDval=harpy.get_uTMDFF_kT(xval,rval*Qval,1,Qval,Qval**2,includeGluon=False)
                    elif(c=="_ff_K_"):
                        TMDval=harpy.get_uTMDFF_kT(xval,rval*Qval,2,Qval,Qval**2,includeGluon=False)
                
                valuesList[-5][i][j][k]='{:g}'.format(xval*TMDval[0])
                valuesList[-4][i][j][k]='{:g}'.format(xval*TMDval[1])
                valuesList[-3][i][j][k]='{:g}'.format(xval*TMDval[2])
                valuesList[-2][i][j][k]='{:g}'.format(xval*TMDval[3])
                valuesList[-1][i][j][k]='{:g}'.format(xval*TMDval[4])
                #valuesList[0][i][j][k]='{:g}'.format(xval*TMDval[5])
                valuesList[1][i][j][k]='{:g}'.format(xval*TMDval[6])
                valuesList[2][i][j][k]='{:g}'.format(xval*TMDval[7])
                valuesList[3][i][j][k]='{:g}'.format(xval*TMDval[8])
                valuesList[4][i][j][k]='{:g}'.format(xval*TMDval[9])
                valuesList[5][i][j][k]='{:g}'.format(xval*TMDval[10])
                
    endTime=time.time()
    print('Computation time : ',endTime-startTime,' sec.')

    #######################################
    # Save replica 0000
    #######################################
    startTime=time.time()
    with open(SAVEPATH+"SV19"+c+prefix+"/SV19"+c+prefix+'_'+'{:04d}'.format(n)+'.dat', 'w') as outfile:
        outfile.write("Qg: "+str(Qrange)+"\n")
        outfile.write("xg: "+str(Xrange)+"\n")
        outfile.write("qToQg: "+str(Rrange)+"\n")
        outfile.write("TMDs: "+str(valuesList).replace("'","")+"\n")
    endTime=time.time()
    print('Dump time : ',endTime-startTime,' sec.')
예제 #5
0
def SaveGrid_kT(path,
                Qrange=Qrange_default,
                Xrange=XrangePDF_default,
                Rrange=Rrange_default):
    """
    Saves the grid for optimal TMDPDF in kT space at Q, Q^2, as returned from the artmide (should be setup)

    Parameters
    ----------
    path : TYPE
        DESCRIPTION.
    Qrange : TYPE, optional
        DESCRIPTION. The default is Qrange_default.
    Xrange : TYPE, optional
        DESCRIPTION. The default is XrangePDF_default.
    Rrange : TYPE, optional
        DESCRIPTION. The default is Rrange_default.

    Returns
    -------
    None.

    """
    from numpy import zeros
    import harpy
    import time

    startTime = time.time()

    valuesList = {
        -5: zeros([len(Qrange), len(Xrange),
                   len(Rrange)]).tolist(),
        -4: zeros([len(Qrange), len(Xrange),
                   len(Rrange)]).tolist(),
        -3: zeros([len(Qrange), len(Xrange),
                   len(Rrange)]).tolist(),
        -2: zeros([len(Qrange), len(Xrange),
                   len(Rrange)]).tolist(),
        -1: zeros([len(Qrange), len(Xrange),
                   len(Rrange)]).tolist(),
        1: zeros([len(Qrange), len(Xrange),
                  len(Rrange)]).tolist(),
        2: zeros([len(Qrange), len(Xrange),
                  len(Rrange)]).tolist(),
        3: zeros([len(Qrange), len(Xrange),
                  len(Rrange)]).tolist(),
        4: zeros([len(Qrange), len(Xrange),
                  len(Rrange)]).tolist(),
        5: zeros([len(Qrange), len(Xrange),
                  len(Rrange)]).tolist()
    }

    for i in range(len(Qrange)):
        for j in range(len(Xrange)):
            for k in range(len(Rrange)):
                Qval = float(Qrange[i])
                xval = float(Xrange[j])
                rval = float(Rrange[k])

                if (xval < 0.999):
                    TMDval = [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]
                else:
                    TMDval = harpy.get_uTMDPDF_kT(xval,
                                                  rval * Qval,
                                                  1,
                                                  Qval,
                                                  Qval**2,
                                                  includeGluon=False)

                valuesList[-5][i][j][k] = '{:g}'.format(xval * TMDval[0])
                valuesList[-4][i][j][k] = '{:g}'.format(xval * TMDval[1])
                valuesList[-3][i][j][k] = '{:g}'.format(xval * TMDval[2])
                valuesList[-2][i][j][k] = '{:g}'.format(xval * TMDval[3])
                valuesList[-1][i][j][k] = '{:g}'.format(xval * TMDval[4])
                #valuesList[0][i][j][k]='{:g}'.format(xval*TMDval[5])
                valuesList[1][i][j][k] = '{:g}'.format(xval * TMDval[6])
                valuesList[2][i][j][k] = '{:g}'.format(xval * TMDval[7])
                valuesList[3][i][j][k] = '{:g}'.format(xval * TMDval[8])
                valuesList[4][i][j][k] = '{:g}'.format(xval * TMDval[9])
                valuesList[5][i][j][k] = '{:g}'.format(xval * TMDval[10])

    with open(path, 'w') as outfile:
        outfile.write("Qg: " + str(Qrange) + "\n")
        outfile.write("xg: " + str(Xrange) + "\n")
        outfile.write("qToQg: " + str(Rrange) + "\n")
        outfile.write("TMDs: " + str(valuesList).replace("'", "") + "\n")
    endTime = time.time()
    print('Grid written at  : ', path)
    print('Computation time  : ', endTime - startTime, ' sec.')