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)
# 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])
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.')
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.')