!==============================================================================
!
SUBROUTINE SIGVBB_Z(SIG, A, B, COS_THETA,&
     EDUMMY, T1DUMMY, T2DUMMY, ZEXPDUMMY, NTHETA, NREACT)
!
!   THIS COMPUTES THE VALUE OF V*SIGMA(V), WHERE V IS THE
!   RELATIVE VELOCITY.
!
!	SIGMA(V) COMES FROM HARRY TOWNER'S FUNCTION "SIGMA"
!	for source see TOWNER$:[FUSION]SIGMA.FOR, for literature
!   see George H. Miley, Harry Towner, and Nenad Ivich, Report C00-2218-17,
!       University of Illinois. (3/8/77 ? )
!
!   Please note that, here, A and B are in eV, and SIG is in Barns*cm/sec.
!   Also note that SIGMA returns SIGMA in units of m**2, but it takes the
!   incident particle energy to be in keV.  Also note that, in the reaction
!   T(D,N)He4, it is the T which is stationary and the D which is incident.
!
! ------------------------------------------------------------------------
!   SIGE(E) replaces old computation			12/5/90  HF
!	E in kev,  SIGE returns m**2
! ------------------------------------------------------------------------
!============
! idecl:  explicitize implicit INTEGER declarations:
  use iso_c_binding, only: fp => c_double
  use physconst_mod, only : zero,two,zev2kev
  IMPLICIT NONE
  INTEGER ntheta,i
!============
! idecl:  explicitize implicit REAL declarations:
  real(fp) a,b,edummy,t1dummy,t2dummy,zexpdummy,e,sigtmp,sige_z,v
  real(fp),dimension(NTHETA) :: sig,cos_theta
!============
!!---> idecl moved declarations:
  INTEGER		NREACT	    !WHICH REACTION TO COMPUTE
!
!
!
!...NREACT  Tells what reaction you want:
!
!	  =1 you get the cross section for the reaction  T(D,N)HE4
!	  =2 you get the cross section for the reaction  HE3(D,P)HE4
!	  =3 you get the cross section for the reaction  D(D,P)T
!	  =4 you get the cross section for the reaction  D(D,N)HE3
!	  =5 you get the cross section for the reaction  T(T,2N)HE4
!	  =12 you get the cross section for the reaction  T(T,2N)HE4 !DPC fit 06/2018
!	  =6 you get the cross section for the reaction  T(HE3,X)Y
!
!	    N.B.: The reaction convention is
!		TARGET (INCIDENT, SMALL_PRODUCT) LARGE_PRODUCT
!
  real(fp) :: AMU_PROJECTILE(12)   !ATOMIC MASS UNITS OF PROJECTILE SPECIES
!
  DATA AMU_PROJECTILE/two,two,two,two,3.0_fp,3.0_fp,5*zero,3.0_fp/ !D,D,D,D,T,HE3, 5 none, T
!
!==============================================================================
!
  DO I = 1, NTHETA
     E = A - B*COS_THETA(I)    !I assume B.LE.A
     E = max(zero, E)	!DON'T TRUST COS(THETA)!
!
!   NOW FIX THE UNITS TO BE BARNS*CM/SEC INSTEAD OF BARNS*SQRT(EV)
!
!	Note that we are computing SIGMA(E)*V(E), not SIGMA(E)
!	V = CONST*SQRT(2*E/(A*Mp))  where A is the atomic number & Mp is the
!				    proton mass (grams), E is the projectile
!				    energy in eV, CONST is a conversion factor
!				    V is the projectile velocity in cm/sec.
!	V = SQRT(E)*CONST*SQRT(2/(A*Mp))
!	V = SQRT(E)*CON
!	    CON = CONST*SQRT(2/(A*Mp)) = 9.786E5 for D projectile
!
!  For reactions where D is not the projectile CON=>CON*SQRT(2/A)
!
!	BOLTZMAN'S CONST K = 1.3807E-16 ERG/DEG(K) = 1/(11605 DEG(K)/eV)
!	SO THERE ARE 1.3807*1.1605E-12 ERG/EV = 1.6022E-12 ERG/EV
!	MULT BY 2 AND DIVIDE BY MP GIVING 1.9158E12. TAKE SQRT
!	GIVING 1.384E6 CM/SEC FOR 1 EV FOR A PROTON OR DIV BY SQRT(2)
!	GIVING 9.786E5 CM/SEC FOR D.
!
! ---  SIGE argument in kev, returns  m**2   (1 barn = 1.e-28 x m**2)
     SIGTMP=zero		!   	SIGE not set for very low E
     SIGTMP=1.e+28_fp*SIGE_Z(zev2kev*E)
     V = SQRT(1.9158e+12_fp*E/AMU_PROJECTILE(NREACT))	!   cm/sec
     SIG(I) = SIGTMP*V		!    barns*cm/sec
  enddo
!
  RETURN
!
END SUBROUTINE SIGVBB_Z
!
!------------------------------------------------------------------------------
! 30Jun2000 fgtok -s r8_precision.sub "r8con.csh conversion"
