10 SUBROUTINE shiftmass(p1,p2,m1,m2,p1hat,p2hat,MassWeight)
13 real(8),
intent(in) :: p1(1:4),p2(1:4)
14 real(8) :: m1,m2,p1hat(1:4),p2hat(1:4)
15 real(8),
optional :: MassWeight
16 real(8) :: xi,eta,a,b,c,p1sq,p2sq,p1p2
17 real(8) :: p1hatsq, p2hatsq, p12hatsq
19 p1sq = p1(1:4).dot.p1(1:4)
20 p2sq = p2(1:4).dot.p2(1:4)
21 p1p2 = p1(1:4).dot.p2(1:4)
23 a = ( p1sq*p2(1:4) - p2sq*p1(1:4) + p1p2*(p2(1:4)-p1(1:4)) ).dot.( p1sq*p2(1:4) - p2sq*p1(1:4) + p1p2*(p2(1:4)-p1(1:4)) )
24 b = ( p1sq+p2sq+2d0*p1p2+m2**2-m1**2 ) * ( p1p2**2 - p1sq*p2sq )
25 c = 0.25d0*( p1sq+p2sq+2d0*p1p2+m2**2-m1**2 )**2*p1sq - (p1sq+p1p2)**2*m2**2
26 eta = 1d0/2d0/a * ( -b - dsqrt( dabs(b**2 -4d0*a*c) ) )
27 xi = ( p1sq+p2sq+2d0*p1p2 + m2**2 - m1**2 - 2d0*eta*(p2sq+p1p2) )/2d0/( p1sq + p1p2 )
29 p2hat(1:4) = xi*p1(1:4) + eta*p2(1:4)
30 p1hat(1:4) = (1d0-xi)*p1(1:4) + (1d0-eta)*p2(1:4)
32 if(
present(massweight) )
then
33 p1hatsq = p1hat(1:4).dot.p1hat(1:4)
34 p2hatsq = p2hat(1:4).dot.p2hat(1:4)
35 p12hatsq = (p1hat(1:4)+p2hat(1:4)).dot.(p1hat(1:4)+p2hat(1:4))
38 massweight = (p12hatsq**2+p1hatsq**2+p2hatsq**2-2d0*(p1hatsq*p2hatsq+p1hatsq*p12hatsq+p12hatsq*p2hatsq))
39 if(massweight.ge.0d0 .and. p12hatsq.ne.0d0)
then
40 massweight = sqrt(massweight/(p12hatsq**2))
80 print *,
"error ",xrnd
97 if( xrnd .le. 0.5d0 )
then
119 print *,
"error ",xrnd
136 if( xrnd .le. (1d0/3d0) )
then
138 elseif(xrnd .le. (2d0/3d0) )
then
160 print *,
"error ",xrnd
177 if( xrnd .le. (1d0/3d0) )
then
179 elseif(xrnd .le. (2d0/3d0) )
then
193 real(8),
parameter :: ncol=3d0
194 real(8),
parameter :: xxxx=1d0/15d0
195 real(8),
parameter :: yyyy=ncol*xxxx
197 if( xrnd .le. yyyy )
then
199 elseif(xrnd .le. yyyy+yyyy)
then
201 elseif(xrnd .le. yyyy+yyyy+yyyy)
then
203 elseif(xrnd .le. yyyy+yyyy+yyyy+yyyy)
then
205 elseif(xrnd .le. yyyy+yyyy+yyyy+yyyy+yyyy)
then
208 print *,
"error ",xrnd
223 real(8),
parameter :: ncol=3d0
224 real(8),
parameter :: xxxx=1d0/15d0
225 real(8),
parameter :: yyyy=ncol*xxxx
238 print *,
"error ",xrnd
251 real(8),
parameter :: ncol=3d0
252 real(8),
parameter :: xx=1d0/21d0
253 real(8),
parameter :: yy=ncol*xx
259 if( xrnd .le. yy )
then
261 elseif(xrnd .le. 2d0*yy )
then
263 elseif(xrnd .le. 3d0*yy )
then
265 elseif(xrnd .le. 4d0*yy )
then
267 elseif(xrnd .le. 5d0*yy )
then
269 elseif(xrnd .le. 5d0*yy + xx )
then
271 elseif(xrnd .le. 5d0*yy + 2d0*xx )
then
273 elseif(xrnd .le. 5d0*yy + 3d0*xx )
then
275 elseif(xrnd .le. 5d0*yy + 4d0*xx )
then
277 elseif(xrnd .le. 5d0*yy + 5d0*xx )
then
279 elseif(xrnd .le. 5d0*yy + 6d0*xx )
then
282 print *,
"error ",xrnd
352 print *,
"error ",xrnd
404 print *,
"error ",xrnd
420 if( xrnd .le. 0.5d0 )
then
442 print *,
"error ",xrnd
459 if( xrnd .le. (1d0/3d0) )
then
461 elseif(xrnd .le. (2d0/3d0) )
then
481 print *,
"error ",xrnd
498 if( xrnd .le. 0.5d0 )
then
512 real(8),
parameter :: ncol=3d0
513 real(8),
parameter :: xx=1d0/9d0
514 real(8),
parameter :: yy=ncol*xx
517 if( xrnd .le. yy )
then
519 elseif(xrnd .le. 2d0*yy )
then
521 elseif(xrnd .le. 2d0*yy + xx )
then
523 elseif(xrnd .le. 2d0*yy + 2d0*xx )
then
525 elseif(xrnd .le. 2d0*yy + 3d0*xx )
then
528 print *,
"error ",xrnd
553 print *,
"error ",xrnd
584 SUBROUTINE vbranching(DecayMode,MY_IDUP,ICOLUP,CombWeight,ColorBase)
588 integer,
intent(in) :: DecayMode
589 integer :: MY_IDUP(1:3),ICOLUP(1:2,1:2),DKFlavor,ICOLUP_Base
590 integer,
optional ::ColorBase
591 real(8),
intent(out) :: CombWeight
601 if (
present(colorbase))
then
602 icolup_base = colorbase
609 if( decaymode.eq.0 ) then
610 call random_number(dkrnd)
613 my_idup(2) =-dkflavor
614 my_idup(3) =+dkflavor
615 combweight = combweight*2d0
616 elseif( decaymode.eq.1 ) then
617 call random_number(dkrnd)
620 my_idup(2) =-dkflavor
621 my_idup(3) =+dkflavor
622 icolup(1:2,1) = (/ 0,icolup_base+3/)
623 icolup(1:2,2) = (/icolup_base+3, 0/)
624 combweight = combweight*5d0*3d0
625 elseif( decaymode.eq.2 ) then
629 elseif( decaymode.eq.3 ) then
630 call random_number(dkrnd)
633 my_idup(2) =-dkflavor
634 my_idup(3) =+dkflavor
635 combweight = combweight*3d0
636 elseif( decaymode.eq.4 ) then
637 call random_number(dkrnd)
640 my_idup(2) = +abs(dkflavor)
641 my_idup(3) = +abs(dkflavor)+7
642 combweight = combweight*2d0
643 elseif( decaymode.eq.5 ) then
644 call random_number(dkrnd)
647 my_idup(3) = +abs(dkflavor)
649 icolup(1:2,1) = (/ 0,icolup_base+3/)
650 icolup(1:2,2) = (/icolup_base+3, 0/)
651 combweight = combweight*2d0*3d0
652 elseif( decaymode.eq.6 ) then
656 elseif( decaymode.eq.7 ) then
660 elseif( decaymode.eq.8 ) then
661 call random_number(dkrnd)
664 my_idup(2) =-dkflavor
665 my_idup(3) =+dkflavor
666 combweight = combweight*3d0
667 elseif( decaymode.eq.9 ) then
668 call random_number(dkrnd)
671 my_idup(2) =-dkflavor
672 my_idup(3) =+dkflavor
674 icolup(1:2,1) = (/ 0,icolup_base+3/)
675 icolup(1:2,2) = (/icolup_base+3, 0/)
677 combweight = combweight*21d0
678 elseif( decaymode.eq.10 ) then
679 call random_number(dkrnd)
682 my_idup(2) = +abs(dkflavor)
683 my_idup(3) = +abs(dkflavor)+7
684 combweight = combweight*3d0
685 elseif( decaymode.eq.11 ) then
686 call random_number(dkrnd)
690 my_idup(3) = +abs(dkflavor)
692 icolup(1:2,1) = (/ 0,icolup_base+3/)
693 icolup(1:2,2) = (/icolup_base+3, 0/)
695 my_idup(2) = +abs(dkflavor)
696 my_idup(3) = +abs(dkflavor)+7
698 combweight = combweight*9d0
701 decaymode.eq.-2*2 .or. &
702 decaymode.eq.-3*3 .or. &
703 decaymode.eq.-5*5 .or. &
704 decaymode.eq.-7*7 .or. &
705 decaymode.eq.-11*11 .or. &
706 decaymode.eq.-13*13 .or. &
707 decaymode.eq.-17*17 &
719 my_idup(2) =-dkflavor
720 my_idup(3) =+dkflavor
722 icolup(1:2,1) = (/ 0,icolup_base+3/)
723 icolup(1:2,2) = (/icolup_base+3, 0/)
727 decaymode.eq.-2*1 .or. &
728 decaymode.eq.-3*1 .or. &
729 decaymode.eq.-5*7 .or. &
730 decaymode.eq.-5*13 .or. &
731 decaymode.eq.-11*7 .or. &
732 decaymode.eq.-11*13 .or. &
733 decaymode.eq.-17*7 .or. &
734 decaymode.eq.-17*13 &
758 icolup(1:2,1) = (/ 0,icolup_base+3/)
759 icolup(1:2,2) = (/icolup_base+3, 0/)
767 SUBROUTINE vvbranchings(MY_IDUP,ICOLUP,CombWeight,ColorBase)
771 integer :: MY_IDUP(4:9),ICOLUP(1:2,6:9),ICOLUP_Base
772 integer,
optional ::ColorBase
773 real(8),
intent(out) :: CombWeight
774 integer :: tmp_idup(1:3),tmp_icolup(1:2,1:2)
775 real(8) :: tmp_CombWeight
785 if (
present(colorbase))
then
786 icolup_base = colorbase
795 my_idup(4) = tmp_idup(1)
796 my_idup(6) = tmp_idup(2)
797 my_idup(7) = tmp_idup(3)
798 icolup(1:2,6) = tmp_icolup(1:2,1)
799 icolup(1:2,7) = tmp_icolup(1:2,2)
800 combweight = combweight * tmp_combweight
803 icolup_base = icolup_base+1
805 my_idup(5) = tmp_idup(1)
806 my_idup(8) = tmp_idup(2)
807 my_idup(9) = tmp_idup(3)
808 icolup(1:2,8) = tmp_icolup(1:2,1)
809 icolup(1:2,9) = tmp_icolup(1:2,2)
811 my_idup(5) = -my_idup(5)
812 call swap(my_idup(8),my_idup(9))
813 my_idup(8) = -my_idup(8)
814 my_idup(9) = -my_idup(9)
817 combweight = combweight * tmp_combweight
828 real(8) :: flavorrnd,sumckm,vsq(1:3)
830 call random_number(flavorrnd)
833 if( abs(flavor).eq.abs(
up_) )
then
839 sumckm = vsq(1)+vsq(2)+vsq(3)
840 flavorrnd = flavorrnd*sumckm
842 if( flavorrnd.le.vsq(1) ) then
844 elseif( flavorrnd.le.(vsq(2)+vsq(1)) ) then
850 elseif( abs(flavor).eq.abs(
chm_) )
then
856 sumckm = vsq(1)+vsq(2)+vsq(3)
857 flavorrnd = flavorrnd*sumckm
859 if( flavorrnd.le.vsq(2) ) then
861 elseif( flavorrnd.le.(vsq(1)+vsq(2)) ) then
867 elseif( abs(flavor).eq.abs(
top_) )
then
872 sumckm = vsq(1)+vsq(2)+vsq(3)
873 flavorrnd = flavorrnd*sumckm
875 if( flavorrnd.le.vsq(3) ) then
877 elseif( flavorrnd.le.(vsq(2)+vsq(3)) ) then
884 elseif( abs(flavor).eq.abs(
dn_) )
then
890 sumckm = vsq(1)+vsq(2)+vsq(3)
891 flavorrnd = flavorrnd*sumckm
893 if( flavorrnd.le.vsq(1) ) then
895 elseif( flavorrnd.le.(vsq(2)+vsq(1)) ) then
901 elseif( abs(flavor).eq.abs(
str_) )
then
907 sumckm = vsq(1)+vsq(2)+vsq(3)
908 flavorrnd = flavorrnd*sumckm
910 if( flavorrnd.le.vsq(2) ) then
912 elseif( flavorrnd.le.(vsq(1)+vsq(2)) ) then
918 elseif( abs(flavor).eq.abs(
bot_) )
then
923 sumckm = vsq(1)+vsq(2)+vsq(3)
924 flavorrnd = flavorrnd*sumckm
926 if( flavorrnd.le.vsq(3) ) then
928 elseif( flavorrnd.le.(vsq(2)+vsq(3)) ) then
935 call error(
"Dn flavor conversion not yet implemented")
946 real(8) :: flavorrnd,sumckm,vsq(1:3)
948 call random_number(flavorrnd)
950 sumckm = vsq(1)+vsq(2)+vsq(3)
951 flavorrnd = flavorrnd*sumckm
953 if( abs(flavor).eq.abs(
up_) )
then
954 if( flavorrnd.le.vsq(1) ) then
956 elseif( flavorrnd.le.(vsq(2)+vsq(1)) ) then
962 elseif( abs(flavor).eq.abs(
chm_) )
then
963 if( flavorrnd.le.vsq(2) ) then
965 elseif( flavorrnd.le.(vsq(1)+vsq(2)) ) then
971 elseif( abs(flavor).eq.abs(
top_) )
then
972 if( flavorrnd.le.vsq(3) ) then
974 elseif( flavorrnd.le.(vsq(2)+vsq(3)) ) then
981 elseif( abs(flavor).eq.abs(
dn_) )
then
982 if( flavorrnd.le.vsq(1) ) then
984 elseif( flavorrnd.le.(vsq(2)+vsq(1)) ) then
990 elseif( abs(flavor).eq.abs(
str_) )
then
991 if( flavorrnd.le.vsq(2) ) then
993 elseif( flavorrnd.le.(vsq(1)+vsq(2)) ) then
999 elseif( abs(flavor).eq.abs(
bot_) )
then
1000 if( flavorrnd.le.vsq(3) ) then
1002 elseif( flavorrnd.le.(vsq(2)+vsq(3)) ) then
1009 call error(
"Dn flavor conversion not yet implemented")
1022 real(8) :: mhb, ghb, biggamma
1024 double precision decaymass, qqq, qqq0
1026 if( scheme.eq.1 ) then
1028 elseif( scheme.eq.2 ) then
1030 elseif( scheme.eq.3 ) then
1034 print *,
"Passarino's CALL_HTO returned a NaN"
1035 print *,
"(gabarH,Ehat)",
gabarh,dsqrt(dabs(shat))/
gev
1042 mubarh = sqrt(mhb**2/(1d0+(ghb/mhb)**2))
1052 elseif( scheme.eq.4)
then
1059 if(0.25d0*(shat) < decaymass**2)
then
1062 qqq = sqrt(0.25d0*(shat) - decaymass**2)
1064 qqq0=sqrt(0.25d0*(
m_reso**2) - decaymass**2)
1066 elseif( scheme.eq.0 )
then
1069 print *,
"Invalid scheme: ", scheme
1082 real(8) :: breitwigner,breitwigner_run
1100 real(8) Mom(1:4,1:NumPart)
1102 real(8) gamma,betagamma,MomTmp1,MomTmp4
1103 integer :: i,NumPart
1105 gamma = (x1+x2)/2d0/dsqrt(x1*x2)
1106 betagamma = (x2-x1)/2d0/dsqrt(x1*x2)
1111 mom(1,i)= gamma*momtmp1 - betagamma*momtmp4
1112 mom(4,i)= gamma*momtmp4 - betagamma*momtmp1
1125 subroutine lorentz(vector, boost)
1129 double precision vector(4), boost(4)
1130 double precision lambdaMtrx(4,4), vector_copy(4)
1131 double precision beta(2:4), beta_sq, gamma
1133 double precision,
parameter :: epsilon = 1d-13
1139 beta(i) = boost(i)/boost(1)
1142 beta_sq = beta(2)**2+beta(3)**2+beta(4)**2
1144 if(beta_sq.ge.epsilon)
then
1146 gamma = 1d0/dsqrt(1d0-beta_sq)
1148 lambdamtrx(1,1) = gamma
1151 lambdamtrx(1,i) = gamma*beta(i)
1152 lambdamtrx(i,1) = lambdamtrx(1,i)
1157 lambdamtrx(i,j) = (gamma-1d0)*beta(i)*beta(j)/beta_sq +
kronecker_delta(i,j)
1163 vector_copy = vector
1167 vector(i) = vector(i) + lambdamtrx(i,j)*vector_copy(j)
1197 real(
dp),
intent(in) :: p(1:4,4:6)
1198 integer,
intent(in) :: id(4:7)
1199 real(8) :: polemass(3:7)
1200 real(8) :: pjjhstar(4),phstar(4),pj(4,2),pjj(4),pjhstar(4),ptjet(5:6),maxptjet,minptjet
1211 phstar(ip) = phstar(ip) + p(ip,idx)
1214 polemass(idx) =
getmass(id(idx))
1216 pjj(ip) = pjj(ip) + p(ip,idx)
1218 ptjet(idx) =
get_pt(p(1:4,idx))
1221 maxptjet = maxval(ptjet)
1222 minptjet = minval(ptjet, mask=.not.all(p(1:4,5:6).eq.0d0, 1))
1225 pjjhstar = pjj + phstar
1226 if(polemass(5).gt.polemass(6))
then
1232 call swapr(polemass(5),polemass(6))
1234 pjhstar(1:4) = pj(1:4,1) + phstar(1:4)
1251 mu_fact = polemass(4)+polemass(7)
1255 mu_fact = polemass(4)+polemass(5)+polemass(6)
1264 mu_fact = polemass(5)+polemass(6)
1271 mu_fact = polemass(4)+polemass(5)
1285 call error(
"This should never be able to happen.")
1303 mu_ren = polemass(4)+polemass(7)
1307 mu_ren = polemass(4)+polemass(5)+polemass(6)
1316 mu_ren = polemass(5)+polemass(6)
1323 mu_ren = polemass(4)+polemass(5)
1333 call error(
"This should never be able to happen.")
1346 real(8) :: x1,x2,pdfscale
1347 real(8) :: upv(1:2),dnv(1:2),usea(1:2),dsea(1:2),str(1:2),chm(1:2),bot(1:2),glu(1:2),phot(1:2),sbar(1:2),cbar(1:2),bbar(1:2)
1348 integer,
parameter :: swpdf_u=1, swpdf_d=1, swpdf_c=1, swpdf_s=1, swpdf_b=1, swpdf_g=1
1349 real(8) :: pdf(-6:6,1:2),nnpdf(1:2,-6:7)
1355 call evolvepdf(x1,pdfscale,nnpdf(1,-6:7))
1356 call evolvepdf(x2,pdfscale,nnpdf(2,-6:7))
1357 nnpdf(1,-6:7) = nnpdf(1,-6:7)/x1
1358 nnpdf(2,-6:7) = nnpdf(2,-6:7)/x2
1360 pdf(
up_,1) = nnpdf(1,+2) * swpdf_u
1361 pdf(
aup_,1) = nnpdf(1,-2) * swpdf_u
1362 pdf(
dn_,1) = nnpdf(1,+1) * swpdf_d
1363 pdf(
adn_,1) = nnpdf(1,-1) * swpdf_d
1364 pdf(
chm_,1) = nnpdf(1,+4) * swpdf_c
1365 pdf(
achm_,1) = nnpdf(1,-4) * swpdf_c
1366 pdf(
str_,1) = nnpdf(1,+3) * swpdf_s
1367 pdf(
astr_,1) = nnpdf(1,-3) * swpdf_s
1368 pdf(
bot_,1) = nnpdf(1,+5) * swpdf_b
1369 pdf(
abot_,1) = nnpdf(1,-5) * swpdf_b
1370 pdf(0,1) = nnpdf(1,+0) * swpdf_g
1372 pdf(
up_,2) = nnpdf(2,+2) * swpdf_u
1373 pdf(
aup_,2) = nnpdf(2,-2) * swpdf_u
1374 pdf(
dn_,2) = nnpdf(2,+1) * swpdf_d
1375 pdf(
adn_,2) = nnpdf(2,-1) * swpdf_d
1376 pdf(
chm_,2) = nnpdf(2,+4) * swpdf_c
1377 pdf(
achm_,2) = nnpdf(2,-4) * swpdf_c
1378 pdf(
str_,2) = nnpdf(2,+3) * swpdf_s
1379 pdf(
astr_,2) = nnpdf(2,-3) * swpdf_s
1380 pdf(
bot_,2) = nnpdf(2,+5) * swpdf_b
1381 pdf(
abot_,2) = nnpdf(2,-5) * swpdf_b
1382 pdf(0,2) = nnpdf(2,+0) * swpdf_g
1384 pdf(:,:) = dabs(pdf(:,:))
1390 call cteq6(x1,pdfscale,upv(1),dnv(1),usea(1),dsea(1),str(1),chm(1),bot(1),glu(1))
1391 call cteq6(x2,pdfscale,upv(2),dnv(2),usea(2),dsea(2),str(2),chm(2),bot(2),glu(2))
1392 elseif(
pdfset.eq.2 )
then
1393 call getallpdfs(
"pdfs/mstw2008lo",0,x1,pdfscale,upv(1),dnv(1),usea(1),dsea(1),str(1),sbar(1),chm(1),cbar(1),bot(1),bbar(1),glu(1),phot(1))
1394 str(1)= (str(1)+sbar(1))/2d0
1395 chm(1)= (chm(1)+cbar(1))/2d0
1396 bot(1)= (bot(1)+bbar(1))/2d0
1407 call getallpdfs(
"pdfs/mstw2008lo",0,x2,pdfscale,upv(2),dnv(2),usea(2),dsea(2),str(2),sbar(2),chm(2),cbar(2),bot(2),bbar(2),glu(2),phot(2))
1408 str(2)= (str(2)+sbar(2))/2d0
1409 chm(2)= (chm(2)+cbar(2))/2d0
1410 bot(2)= (bot(2)+bbar(2))/2d0
1422 call getallpdfs(
"pdfs/mstw2008lo.90cl",
pdfset-200,x1,pdfscale,upv(1),dnv(1),usea(1),dsea(1),str(1),sbar(1),chm(1),cbar(1),bot(1),bbar(1),glu(1),phot(1))
1423 str(1)= (str(1)+sbar(1))/2d0
1424 chm(1)= (chm(1)+cbar(1))/2d0
1425 bot(1)= (bot(1)+bbar(1))/2d0
1436 call getallpdfs(
"pdfs/mstw2008lo.90cl",
pdfset-200,x2,pdfscale,upv(2),dnv(2),usea(2),dsea(2),str(2),sbar(2),chm(2),cbar(2),bot(2),bbar(2),glu(2),phot(2))
1437 str(2)= (str(2)+sbar(2))/2d0
1438 chm(2)= (chm(2)+cbar(2))/2d0
1439 bot(2)= (bot(2)+bbar(2))/2d0
1449 elseif(
pdfset.eq.3 )
then
1453 nnpdf(1,-6:7) = nnpdf(1,-6:7)/x1
1454 nnpdf(2,-6:7) = nnpdf(2,-6:7)/x2
1457 pdf(
up_,1) = nnpdf(1,+2) * swpdf_u
1458 pdf(
aup_,1) = nnpdf(1,-2) * swpdf_u
1459 pdf(
dn_,1) = nnpdf(1,+1) * swpdf_d
1460 pdf(
adn_,1) = nnpdf(1,-1) * swpdf_d
1461 pdf(
chm_,1) = nnpdf(1,+4) * swpdf_c
1462 pdf(
achm_,1) = nnpdf(1,-4) * swpdf_c
1463 pdf(
str_,1) = nnpdf(1,+3) * swpdf_s
1464 pdf(
astr_,1) = nnpdf(1,-3) * swpdf_s
1465 pdf(
bot_,1) = nnpdf(1,+5) * swpdf_b
1466 pdf(
abot_,1) = nnpdf(1,-5) * swpdf_b
1467 pdf(0,1) = nnpdf(1,+0) * swpdf_g
1469 pdf(
up_,2) = nnpdf(2,+2) * swpdf_u
1470 pdf(
aup_,2) = nnpdf(2,-2) * swpdf_u
1471 pdf(
dn_,2) = nnpdf(2,+1) * swpdf_d
1472 pdf(
adn_,2) = nnpdf(2,-1) * swpdf_d
1473 pdf(
chm_,2) = nnpdf(2,+4) * swpdf_c
1474 pdf(
achm_,2) = nnpdf(2,-4) * swpdf_c
1475 pdf(
str_,2) = nnpdf(2,+3) * swpdf_s
1476 pdf(
astr_,2) = nnpdf(2,-3) * swpdf_s
1477 pdf(
bot_,2) = nnpdf(2,+5) * swpdf_b
1478 pdf(
abot_,2) = nnpdf(2,-5) * swpdf_b
1479 pdf(0,2) = nnpdf(2,+0) * swpdf_g
1481 pdf(:,:) = dabs(pdf(:,:))
1484 print *,
"PDFSet",
pdfset,
"not available!"
1491 pdf(
up_,1) = (upv(1) + usea(1)) * swpdf_u
1492 pdf(
aup_,1) = usea(1) * swpdf_u
1493 pdf(
dn_,1) = (dnv(1) + dsea(1)) * swpdf_d
1494 pdf(
adn_,1) = dsea(1) * swpdf_d
1495 pdf(
chm_,1) = chm(1) * swpdf_c
1496 pdf(
achm_,1) = chm(1) * swpdf_c
1497 pdf(
str_,1) = str(1) * swpdf_s
1498 pdf(
astr_,1) = str(1) * swpdf_s
1499 pdf(
bot_,1) = bot(1) * swpdf_b
1500 pdf(
abot_,1) = bot(1) * swpdf_b
1501 pdf(0,1) = glu(1) * swpdf_g
1504 pdf(
up_,2) = (upv(2) + usea(2)) * swpdf_u
1505 pdf(
aup_,2) = usea(2) * swpdf_u
1506 pdf(
dn_,2) = (dnv(2) + dsea(2)) * swpdf_d
1507 pdf(
adn_,2) = dsea(2) * swpdf_d
1508 pdf(
chm_,2) = chm(2) * swpdf_c
1509 pdf(
achm_,2) = chm(2) * swpdf_c
1510 pdf(
str_,2) = str(2) * swpdf_s
1511 pdf(
astr_,2) = str(2) * swpdf_s
1512 pdf(
bot_,2) = bot(2) * swpdf_b
1513 pdf(
abot_,2) = bot(2) * swpdf_b
1514 pdf(0,2) = glu(2) * swpdf_g
1518 pdf(
up_,1) = (upv(1) + usea(1)) * swpdf_u
1519 pdf(
aup_,1) = usea(1) * swpdf_u
1520 pdf(
dn_,1) = (dnv(1) + dsea(1)) * swpdf_d
1521 pdf(
adn_,1) = dsea(1) * swpdf_d
1522 pdf(
chm_,1) = chm(1) * swpdf_c
1523 pdf(
achm_,1) = chm(1) * swpdf_c
1524 pdf(
str_,1) = str(1) * swpdf_s
1525 pdf(
astr_,1) = str(1) * swpdf_s
1526 pdf(
bot_,1) = bot(1) * swpdf_b
1527 pdf(
abot_,1) = bot(1) * swpdf_b
1528 pdf(0,1) = glu(1) * swpdf_g
1531 pdf(
up_,2) = usea(2) * swpdf_u
1532 pdf(
aup_,2) = (upv(2)+usea(2)) * swpdf_u
1533 pdf(
dn_,2) = dsea(2) * swpdf_d
1534 pdf(
adn_,2) = (dnv(2) + dsea(2)) * swpdf_d
1535 pdf(
chm_,2) = chm(2) * swpdf_c
1536 pdf(
achm_,2) = chm(2) * swpdf_c
1537 pdf(
str_,2) = str(2) * swpdf_s
1538 pdf(
astr_,2) = str(2) * swpdf_s
1539 pdf(
bot_,2) = bot(2) * swpdf_b
1540 pdf(
abot_,2) = bot(2) * swpdf_b
1541 pdf(0,2) = glu(2) * swpdf_g
1545 pdf(:,:) = dabs(pdf(:,:))
1551 SUBROUTINE cteq6(X,SCALE,UPV,DNV,USEA,DSEA,STR,CHM,BOT,GLU)
1553 double precision X,SCALE,UPV,DNV,USEA,DSEA,STR,CHM,BOT,GLU
1554 double precision Q,xsave,qsave,Ctq6Pdf,D,U
1561 usea = ctq6pdf(-1,x,q)
1562 dsea = ctq6pdf(-2,x,q)
1563 str = ctq6pdf(3,x,q)
1564 chm = ctq6pdf(4,x,q)
1565 bot = ctq6pdf(5,x,q)
1566 glu = ctq6pdf(0,x,q)