1
SUBROUTINE SBORN_HEL(P,ANS_SUMMED)
3
C Return the sum of the split orders which are required in
4
C orders.inc (BORN_ORDERS)
5
C Also the values needed for the counterterms are stored in the
6
C C_BORN_CNT common block
12
INCLUDE 'nexternal.inc'
14
PARAMETER (NSQAMPSO=3)
18
REAL*8 P(0:3,NEXTERNAL-1), ANS_SUMMED
24
REAL*8 ANS(0:NSQAMPSO)
25
INCLUDE 'born_nhel.inc'
26
DOUBLE PRECISION WGT_HEL(NSQAMPSO, MAX_BHEL)
27
COMMON/C_BORN_HEL_SPLIT/WGT_HEL
28
DOUBLE PRECISION WGT_HEL_SUMMED(MAX_BHEL)
29
COMMON/C_BORN_HEL/WGT_HEL_SUMMED
33
INTEGER GETORDPOWFROMINDEX_B
37
C Store all the orders that come from the diagrams, regardless
38
C of the fact that they satisfy or not the squared-orders
42
C look for orders which match the born order constraint
43
CALL SBORN_HEL_SPLITORDERS(P,ANS)
46
WGT_HEL_SUMMED(J) = 0D0
49
ANS_SUMMED = ANS_SUMMED + ANS(I)
51
WGT_HEL_SUMMED(J) = WGT_HEL_SUMMED(J) + WGT_HEL(I,J)
59
SUBROUTINE SBORN_HEL_SPLITORDERS(P1,ANS)
61
C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
62
C By the MadGraph5_aMC@NLO Development Team
63
C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
65
C RETURNS AMPLITUDE SQUARED SUMMED/AVG OVER COLORS
67
C FOR THE POINT IN PHASE SPACE P1(0:3,NEXTERNAL-1)
69
C Process: u u~ > t t~ [ real = QED QCD ] QCD^2<=4 QED^2<=2
70
C Process: c c~ > t t~ [ real = QED QCD ] QCD^2<=4 QED^2<=2
76
INCLUDE 'nexternal.inc'
77
INCLUDE 'born_nhel.inc'
79
PARAMETER ( NCOMB= 16 )
81
PARAMETER (NSQAMPSO=3)
83
PARAMETER (THEL=NCOMB*12)
85
PARAMETER (NGRAPHS= 3)
89
REAL*8 P1(0:3,NEXTERNAL-1),ANS(0:NSQAMPSO)
94
DOUBLE PRECISION T(NSQAMPSO)
95
INTEGER IDEN_VALUES(12)
96
DATA IDEN_VALUES /36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36/
100
LOGICAL GOODHEL(NCOMB,12)
101
COMMON /C_GOODHEL/ GOODHEL
102
DOUBLE PRECISION SAVEMOM(NEXTERNAL-1,2)
103
COMMON/TO_SAVEMOM/SAVEMOM
104
LOGICAL CALCULATEDBORN
105
COMMON/CCALCULATEDBORN/CALCULATEDBORN
107
COMMON/C_NFKSPROCESS/NFKSPROCESS
108
DOUBLE PRECISION WGT_HEL(NSQAMPSO, MAX_BHEL)
109
COMMON/C_BORN_HEL_SPLIT/WGT_HEL
113
IDEN=IDEN_VALUES(NFKSPROCESS)
114
IF (CALCULATEDBORN) THEN
116
IF (SAVEMOM(J,1).NE.P1(0,J) .OR. SAVEMOM(J,2).NE.P1(3,J))
118
CALCULATEDBORN=.FALSE.
119
WRITE(*,*) 'Error in sborn_hel_splitorders: momenta not'
120
$ //' the same in the born'
125
WRITE(*,*) 'Error in sborn_hel_splitorders: this should be'
126
$ //' called only with calculatedborn = true'
133
IF (GOODHEL(IHEL,NFKSPROCESS)) THEN
134
CALL BORN_HEL_SPLITORDERS(P1,IHEL,T)
136
WGT_HEL(I, IHEL) = T(I) / DBLE(IDEN)
142
ANS(I)=ANS(I)/DBLE(IDEN)
148
SUBROUTINE BORN_HEL_SPLITORDERS(P,HELL,ANS)
150
C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
151
C By the MadGraph5_aMC@NLO Development Team
152
C Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
153
C RETURNS AMPLITUDE SQUARED SUMMED/AVG OVER COLORS
154
C FOR THE POINT WITH EXTERNAL LINES W(0:6,NEXTERNAL-1)
156
C Process: u u~ > t t~ [ real = QED QCD ] QCD^2<=4 QED^2<=2
157
C Process: c c~ > t t~ [ real = QED QCD ] QCD^2<=4 QED^2<=2
163
INTEGER NAMPSO, NSQAMPSO
164
PARAMETER (NAMPSO=2, NSQAMPSO=3)
166
PARAMETER ( NGRAPHS = 3 )
172
PARAMETER (IMAG1 = (0D0,1D0))
173
INCLUDE 'nexternal.inc'
174
INCLUDE 'born_nhel.inc'
178
REAL*8 P(0:3,NEXTERNAL-1)
185
REAL*8 CF(NCOLOR,NCOLOR)
186
COMPLEX*16 ZTEMP, AMP(NGRAPHS), JAMP(NCOLOR,NAMPSO)
187
COMPLEX*16 TMP_JAMP(0)
191
DOUBLE COMPLEX SAVEAMP(NGRAPHS,MAX_BHEL)
192
COMMON/TO_SAVEAMP/SAVEAMP
193
LOGICAL CALCULATEDBORN
194
COMMON/CCALCULATEDBORN/CALCULATEDBORN
202
DATA (CF(I, 1),I= 1, 2) /9.000000000000000D+00
203
$ ,3.000000000000000D+00/
205
DATA (CF(I, 2),I= 1, 2) /3.000000000000000D+00
206
$ ,9.000000000000000D+00/
211
IF (.NOT. CALCULATEDBORN) THEN
212
WRITE(*,*) 'Error in b_sf: color_linked borns should be called'
213
$ //' only with calculatedborn = true'
215
ELSEIF (CALCULATEDBORN) THEN
217
AMP(I)=SAVEAMP(I,HELL)
220
C JAMPs contributing to orders QCD=2 QED=0
221
JAMP(1,1) = (1.666666666666667D-01)*AMP(2)
222
JAMP(2,1) = (-5.000000000000000D-01)*AMP(2)
223
C JAMPs contributing to orders QCD=0 QED=2
224
JAMP(1,2) = (-1.000000000000000D+00)*AMP(1)+(-1.000000000000000D
233
ZTEMP = ZTEMP + CF(J,I)*JAMP(J,M)
235
ANS(SQSOINDEXB(M,M))=ANS(SQSOINDEXB(M,M))+ZTEMP
244
SUBROUTINE PICKHELICITYMC(P,GOODHEL,HEL,IHEL_OUT,VOL)
246
INCLUDE 'nexternal.inc'
247
INCLUDE 'born_nhel.inc'
248
DOUBLE PRECISION P(0:3, NEXTERNAL-1)
249
INTEGER GOODHEL(MAX_BHEL),HEL(0:MAX_BHEL)
254
PARAMETER (NSQAMPSO=3)
255
DOUBLE PRECISION WGT_HEL(NSQAMPSO, MAX_BHEL)
256
COMMON/C_BORN_HEL_SPLIT/WGT_HEL
257
DOUBLE PRECISION SUM_HEL(NSQAMPSO)
260
INTEGER N_NONZERO_ORD
261
DOUBLE PRECISION SUM_ALL
262
DOUBLE PRECISION ACCUM, TARGET
263
DOUBLE PRECISION BORN_WGT_RECOMP_DIRECT
265
DOUBLE PRECISION RAN2
267
CALL SBORN_HEL(P,BORN_WGT_RECOMP_DIRECT)
269
C Loop over the various orders of squared Feynman diagrams and
270
C compute for each order the sum
276
IF (WGT_HEL(I, HEL(IHEL)).LT.0D0) THEN
277
WRITE(*,*) 'Helicities from squared diagrams must be > 0 !'
280
SUM_HEL(I)=SUM_HEL(I) + WGT_HEL(I, HEL(IHEL))
281
$ *DBLE(GOODHEL(IHEL))
283
IF (SUM_HEL(I).GT.0D0) THEN
284
N_NONZERO_ORD = N_NONZERO_ORD + 1
285
SUM_ALL = SUM_ALL + SUM_HEL(I)
295
IF (SUM_HEL(I).EQ.0D0) CYCLE
296
ACCUM=ACCUM+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)*DBLE(GOODHEL(IHEL))
300
DO WHILE (ACCUM.LT.TARGET)
303
IF (SUM_HEL(I).EQ.0D0) CYCLE
304
ACCUM=ACCUM+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)
305
$ *DBLE(GOODHEL(IHEL))/N_NONZERO_ORD
311
IF (SUM_HEL(I).EQ.0D0) CYCLE
312
VOL=VOL+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)*DBLE(GOODHEL(IHEL))