SUBROUTINE SB_SF_%(iborn)3.3d(P1,ANS) C %(info_lines)s C C RETURNS AMPLITUDE SQUARED SUMMED/AVG OVER COLORS C AND HELICITIES C FOR THE POINT IN PHASE SPACE P(0:3,NEXTERNAL-1) C %(process_lines)s C IMPLICIT NONE C C CONSTANTS C Include "nexternal.inc" INTEGER NCOMB PARAMETER ( NCOMB= %(ncomb)d ) INTEGER THEL PARAMETER (THEL=NCOMB*%(nconfs)d) INTEGER NGRAPHS PARAMETER (NGRAPHS= %(ngraphs)d) C C ARGUMENTS C REAL*8 P1(0:3,NEXTERNAL-1),ANS C C LOCAL VARIABLES C INTEGER IHEL,IDEN,j REAL*8 B_SF_%(iborn)3.3d %(den_factor_lines)s C C GLOBAL VARIABLES C LOGICAL GOODHEL(NCOMB,%(nconfs)d) common /c_goodhel/ goodhel double precision savemom(nexternal-1,2) common/to_savemom/savemom logical calculatedBorn common/ccalculatedBorn/calculatedBorn integer nfksprocess common/c_nfksprocess/nfksprocess C ---------- C BEGIN CODE C ---------- iden=iden_values(nfksprocess) if (calculatedBorn) then do j=1,nexternal-1 if (savemom(j,1).ne.p1(0,j) .or. savemom(j,2).ne.p1(3,j)) then calculatedBorn=.false. write(*,*) 'Error in sb_sf: momenta not the same in the born' stop endif enddo else write(*,*) 'Error in sb_sf: color_linked borns should be called only with calculatedborn = true' stop endif ANS = 0D0 DO IHEL=1,NCOMB IF (GOODHEL(IHEL,nFKSprocess)) THEN ANS=ANS+B_SF_%(iborn)3.3d(P1,IHEL) ENDIF ENDDO ANS=ANS/DBLE(IDEN) END REAL*8 FUNCTION B_SF_%(iborn)3.3d(P,HELL) C %(info_lines)s C RETURNS AMPLITUDE SQUARED SUMMED/AVG OVER COLORS C FOR THE POINT WITH EXTERNAL LINES W(0:6,NEXTERNAL-1) %(process_lines)s C IMPLICIT NONE C C CONSTANTS C INTEGER NGRAPHS PARAMETER ( NGRAPHS = %(ngraphs)d ) INTEGER NCOLOR1, NCOLOR2 PARAMETER (NCOLOR1=%(ncolor1)d, NCOLOR2=%(ncolor2)d) REAL*8 ZERO PARAMETER (ZERO=0D0) complex*16 imag1 parameter (imag1 = (0d0,1d0)) include "nexternal.inc" include "born_nhel.inc" C C ARGUMENTS C REAL*8 P(0:3,NEXTERNAL-1) INTEGER HELL C C LOCAL VARIABLES C INTEGER I,J REAL*8 DENOM(NCOLOR1), CF(NCOLOR2,NCOLOR1) COMPLEX*16 ZTEMP, AMP(NGRAPHS), JAMP1(NCOLOR1), JAMP2(NCOLOR2) C C GLOBAL VARIABLES C double complex saveamp(ngraphs,max_bhel) common/to_saveamp/saveamp logical calculatedBorn common/ccalculatedBorn/calculatedBorn C C COLOR DATA C %(color_data_lines)s C ---------- C BEGIN CODE C ---------- if (.not. calculatedBorn) then write(*,*) 'Error in b_sf: color_linked borns should be called only with calculatedborn = true' stop elseif (calculatedBorn) then do i=1,ngraphs amp(i)=saveamp(i,hell) enddo endif %(jamp1_lines)s %(jamp2_lines)s B_SF_%(iborn)3.3d = 0.D0 DO I = 1, NCOLOR1 ZTEMP = (0.D0,0.D0) DO J = 1, NCOLOR2 ZTEMP = ZTEMP + CF(j,i)*JAMP2(J) ENDDO B_SF_%(iborn)3.3d =B_SF_%(iborn)3.3d+ZTEMP*DCONJG(JAMP1(I))/DENOM(I) ENDDO END