1
SUBROUTINE SBORN_HEL(P1,ANS)
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=1)
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)
3
61
C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
4
62
C By the MadGraph5_aMC@NLO Development Team
9
67
C FOR THE POINT IN PHASE SPACE P1(0:3,NEXTERNAL-1)
11
C Process: u u~ > t t~ WEIGHTED<=2 [ real = QCD ]
12
C Process: c c~ > t t~ WEIGHTED<=2 [ real = QCD ]
13
C Process: d d~ > t t~ WEIGHTED<=2 [ real = QCD ]
14
C Process: s s~ > t t~ WEIGHTED<=2 [ real = QCD ]
69
C Process: u u~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
70
C Process: c c~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
71
C Process: d d~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
72
C Process: s s~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
59
118
IF (SAVEMOM(J,1).NE.P1(0,J) .OR. SAVEMOM(J,2).NE.P1(3,J))
61
120
CALCULATEDBORN=.FALSE.
62
WRITE (*,*) 'momenta not the same in Born_hel'
121
WRITE(*,*) 'Error in sborn_hel_splitorders: momenta not'
122
$ //' the same in the born'
67
WRITE(*,*) 'Error in born_hel: should be called only with'
68
$ //' calculatedborn = true'
127
WRITE(*,*) 'Error in sborn_hel_splitorders: this should be'
128
$ //' called only with calculatedborn = true'
74
135
IF (GOODHEL(IHEL,NFKSPROCESS)) THEN
75
WGT_HEL(IHEL)=BORN_HEL(P1,IHEL)/DBLE(IDEN)
136
CALL BORN_HEL_SPLITORDERS(P1,IHEL,T)
138
WGT_HEL(I, IHEL) = T(I) / DBLE(IDEN)
144
ANS(I)=ANS(I)/DBLE(IDEN)
82
REAL*8 FUNCTION BORN_HEL(P,HELL)
150
SUBROUTINE BORN_HEL_SPLITORDERS(P,HELL,ANS)
84
152
C Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
85
153
C By the MadGraph5_aMC@NLO Development Team
87
155
C RETURNS AMPLITUDE SQUARED SUMMED/AVG OVER COLORS
88
156
C FOR THE POINT WITH EXTERNAL LINES W(0:6,NEXTERNAL-1)
90
C Process: u u~ > t t~ WEIGHTED<=2 [ real = QCD ]
91
C Process: c c~ > t t~ WEIGHTED<=2 [ real = QCD ]
92
C Process: d d~ > t t~ WEIGHTED<=2 [ real = QCD ]
93
C Process: s s~ > t t~ WEIGHTED<=2 [ real = QCD ]
158
C Process: u u~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
159
C Process: c c~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
160
C Process: d d~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
161
C Process: s s~ > t t~ [ real = QED QCD ] QCD^2<=6 QED^2<=0
167
INTEGER NAMPSO, NSQAMPSO
168
PARAMETER (NAMPSO=1, NSQAMPSO=1)
100
170
PARAMETER ( NGRAPHS = 1 )
102
172
PARAMETER (NCOLOR=2)
104
174
PARAMETER (ZERO=0D0)
125
197
LOGICAL CALCULATEDBORN
126
198
COMMON/CCALCULATEDBORN/CALCULATEDBORN
131
DATA (CF(I, 1),I= 1, 2) / 9, 3/
206
DATA (CF(I, 1),I= 1, 2) /9.000000000000000D+00
207
$ ,3.000000000000000D+00/
132
208
C 1 T(2,1) T(3,4)
134
DATA (CF(I, 2),I= 1, 2) / 3, 9/
209
DATA (CF(I, 2),I= 1, 2) /3.000000000000000D+00
210
$ ,9.000000000000000D+00/
135
211
C 1 T(2,4) T(3,1)
139
215
IF (.NOT. CALCULATEDBORN) THEN
140
WRITE(*,*) 'Error in born_hel.f: this should be called only'
141
$ //' with calculatedborn = true'
216
WRITE(*,*) 'Error in b_sf: color_linked borns should be called'
217
$ //' only with calculatedborn = true'
143
219
ELSEIF (CALCULATEDBORN) THEN
145
221
AMP(I)=SAVEAMP(I,HELL)
148
JAMP(1)=+1D0/2D0*(+1D0/3D0*AMP(1))
149
JAMP(2)=+1D0/2D0*(-AMP(1))
154
ZTEMP = ZTEMP + CF(J,I)*JAMP(J)
156
BORN_HEL =BORN_HEL+ZTEMP*DCONJG(JAMP(I))/DENOM(I)
224
C JAMPs contributing to orders QCD=2 QED=0
225
JAMP(1,1) = (1.666666666666667D-01)*AMP(1)
226
JAMP(2,1) = (-5.000000000000000D-01)*AMP(1)
234
ZTEMP = ZTEMP + CF(J,I)*JAMP(J,M)
236
ANS(SQSOINDEXB(M,M))=ANS(SQSOINDEXB(M,M))+ZTEMP
245
SUBROUTINE PICKHELICITYMC(P,GOODHEL,HEL,IHEL_OUT,VOL)
247
INCLUDE 'nexternal.inc'
248
INCLUDE 'born_nhel.inc'
249
DOUBLE PRECISION P(0:3, NEXTERNAL-1)
250
INTEGER GOODHEL(MAX_BHEL),HEL(0:MAX_BHEL)
255
PARAMETER (NSQAMPSO=1)
256
DOUBLE PRECISION WGT_HEL(NSQAMPSO, MAX_BHEL)
257
COMMON/C_BORN_HEL_SPLIT/WGT_HEL
258
DOUBLE PRECISION SUM_HEL(NSQAMPSO)
261
INTEGER N_NONZERO_ORD
262
DOUBLE PRECISION SUM_ALL
263
DOUBLE PRECISION ACCUM, TARGET
264
DOUBLE PRECISION BORN_WGT_RECOMP_DIRECT
266
DOUBLE PRECISION RAN2
268
CALL SBORN_HEL(P,BORN_WGT_RECOMP_DIRECT)
270
C Loop over the various orders of squared Feynman diagrams and
271
C compute for each order the sum
277
IF (WGT_HEL(I, HEL(IHEL)).LT.0D0) THEN
278
WRITE(*,*) 'Helicities from squared diagrams must be > 0 !'
281
SUM_HEL(I)=SUM_HEL(I) + WGT_HEL(I, HEL(IHEL))
282
$ *DBLE(GOODHEL(IHEL))
284
IF (SUM_HEL(I).GT.0D0) THEN
285
N_NONZERO_ORD = N_NONZERO_ORD + 1
286
SUM_ALL = SUM_ALL + SUM_HEL(I)
296
IF (SUM_HEL(I).EQ.0D0) CYCLE
297
ACCUM=ACCUM+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)*DBLE(GOODHEL(IHEL))
301
DO WHILE (ACCUM.LT.TARGET)
304
IF (SUM_HEL(I).EQ.0D0) CYCLE
305
ACCUM=ACCUM+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)
306
$ *DBLE(GOODHEL(IHEL))/N_NONZERO_ORD
312
IF (SUM_HEL(I).EQ.0D0) CYCLE
313
VOL=VOL+WGT_HEL(I,HEL(IHEL))/SUM_HEL(I)*DBLE(GOODHEL(IHEL))