~maddevelopers/mg5amcnlo/2.5.3

« back to all changes in this revision

Viewing changes to tests/input_files/IOTestsComparison/IOExportV4IOTest/export_matrix_element_v4_standalone/matrix.f

  • Committer: olivier-mattelaer
  • Date: 2017-03-08 12:31:17 UTC
  • Revision ID: olivier-mattelaer-20170308123117-h0zkqjyh9sihsc61
empty version to have an effective freeze of the code

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
      SUBROUTINE SMATRIXHEL(P,HEL,ANS)
2
 
      IMPLICIT NONE
3
 
C     
4
 
C     CONSTANT
5
 
C     
6
 
      INTEGER    NEXTERNAL
7
 
      PARAMETER (NEXTERNAL=5)
8
 
      INTEGER                 NCOMB
9
 
      PARAMETER (             NCOMB=32)
10
 
CF2PY INTENT(OUT) :: ANS
11
 
CF2PY INTENT(IN) :: HEL
12
 
CF2PY INTENT(IN) :: P(0:3,NEXTERNAL)
13
 
 
14
 
C     
15
 
C     ARGUMENTS 
16
 
C     
17
 
      REAL*8 P(0:3,NEXTERNAL),ANS
18
 
      INTEGER HEL
19
 
C     
20
 
C     GLOBAL VARIABLES
21
 
C     
22
 
      INTEGER USERHEL
23
 
      COMMON/HELUSERCHOICE/USERHEL
24
 
C     ----------
25
 
C     BEGIN CODE
26
 
C     ----------
27
 
      USERHEL=HEL
28
 
      CALL SMATRIX(P,ANS)
29
 
      USERHEL=-1
30
 
 
31
 
      END
32
 
 
33
 
      SUBROUTINE SMATRIX(P,ANS)
34
 
C     
35
 
C     Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
36
 
C     By the MadGraph5_aMC@NLO Development Team
37
 
C     Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
38
 
C     
39
 
C     MadGraph5_aMC@NLO StandAlone Version
40
 
C     
41
 
C     Returns amplitude squared summed/avg over colors
42
 
C     and helicities
43
 
C     for the point in phase space P(0:3,NEXTERNAL)
44
 
C     
45
 
C     Process: e+ e- > a a a
46
 
C     
47
 
      IMPLICIT NONE
48
 
C     
49
 
C     CONSTANTS
50
 
C     
51
 
      INTEGER    NEXTERNAL
52
 
      PARAMETER (NEXTERNAL=5)
53
 
      INTEGER    NINITIAL
54
 
      PARAMETER (NINITIAL=2)
55
 
      INTEGER NPOLENTRIES
56
 
      PARAMETER (NPOLENTRIES=(NEXTERNAL+1)*6)
57
 
      INTEGER                 NCOMB
58
 
      PARAMETER (             NCOMB=32)
59
 
      INTEGER HELAVGFACTOR
60
 
      PARAMETER (HELAVGFACTOR=4)
61
 
C     
62
 
C     ARGUMENTS 
63
 
C     
64
 
      REAL*8 P(0:3,NEXTERNAL),ANS
65
 
CF2PY INTENT(OUT) :: ANS
66
 
CF2PY INTENT(IN) :: P(0:3,NEXTERNAL)
67
 
C     
68
 
C     LOCAL VARIABLES 
69
 
C     
70
 
      INTEGER NHEL(NEXTERNAL,NCOMB),NTRY
71
 
      REAL*8 T
72
 
      REAL*8 MATRIX
73
 
      INTEGER IHEL,IDEN, I, J
74
 
C     For a 1>N process, them BEAMTWO_HELAVGFACTOR would be set to 1.
75
 
      INTEGER BEAMS_HELAVGFACTOR(2)
76
 
      DATA (BEAMS_HELAVGFACTOR(I),I=1,2)/2,2/
77
 
      INTEGER JC(NEXTERNAL)
78
 
      LOGICAL GOODHEL(NCOMB)
79
 
      DATA NTRY/0/
80
 
      DATA GOODHEL/NCOMB*.FALSE./
81
 
 
82
 
C     
83
 
C     GLOBAL VARIABLES
84
 
C     
85
 
      INTEGER USERHEL
86
 
      COMMON/HELUSERCHOICE/USERHEL
87
 
      DATA USERHEL/-1/
88
 
 
89
 
      DATA (NHEL(I,   1),I=1,5) /-1, 1,-1,-1,-1/
90
 
      DATA (NHEL(I,   2),I=1,5) /-1, 1,-1,-1, 1/
91
 
      DATA (NHEL(I,   3),I=1,5) /-1, 1,-1, 1,-1/
92
 
      DATA (NHEL(I,   4),I=1,5) /-1, 1,-1, 1, 1/
93
 
      DATA (NHEL(I,   5),I=1,5) /-1, 1, 1,-1,-1/
94
 
      DATA (NHEL(I,   6),I=1,5) /-1, 1, 1,-1, 1/
95
 
      DATA (NHEL(I,   7),I=1,5) /-1, 1, 1, 1,-1/
96
 
      DATA (NHEL(I,   8),I=1,5) /-1, 1, 1, 1, 1/
97
 
      DATA (NHEL(I,   9),I=1,5) /-1,-1,-1,-1,-1/
98
 
      DATA (NHEL(I,  10),I=1,5) /-1,-1,-1,-1, 1/
99
 
      DATA (NHEL(I,  11),I=1,5) /-1,-1,-1, 1,-1/
100
 
      DATA (NHEL(I,  12),I=1,5) /-1,-1,-1, 1, 1/
101
 
      DATA (NHEL(I,  13),I=1,5) /-1,-1, 1,-1,-1/
102
 
      DATA (NHEL(I,  14),I=1,5) /-1,-1, 1,-1, 1/
103
 
      DATA (NHEL(I,  15),I=1,5) /-1,-1, 1, 1,-1/
104
 
      DATA (NHEL(I,  16),I=1,5) /-1,-1, 1, 1, 1/
105
 
      DATA (NHEL(I,  17),I=1,5) / 1, 1,-1,-1,-1/
106
 
      DATA (NHEL(I,  18),I=1,5) / 1, 1,-1,-1, 1/
107
 
      DATA (NHEL(I,  19),I=1,5) / 1, 1,-1, 1,-1/
108
 
      DATA (NHEL(I,  20),I=1,5) / 1, 1,-1, 1, 1/
109
 
      DATA (NHEL(I,  21),I=1,5) / 1, 1, 1,-1,-1/
110
 
      DATA (NHEL(I,  22),I=1,5) / 1, 1, 1,-1, 1/
111
 
      DATA (NHEL(I,  23),I=1,5) / 1, 1, 1, 1,-1/
112
 
      DATA (NHEL(I,  24),I=1,5) / 1, 1, 1, 1, 1/
113
 
      DATA (NHEL(I,  25),I=1,5) / 1,-1,-1,-1,-1/
114
 
      DATA (NHEL(I,  26),I=1,5) / 1,-1,-1,-1, 1/
115
 
      DATA (NHEL(I,  27),I=1,5) / 1,-1,-1, 1,-1/
116
 
      DATA (NHEL(I,  28),I=1,5) / 1,-1,-1, 1, 1/
117
 
      DATA (NHEL(I,  29),I=1,5) / 1,-1, 1,-1,-1/
118
 
      DATA (NHEL(I,  30),I=1,5) / 1,-1, 1,-1, 1/
119
 
      DATA (NHEL(I,  31),I=1,5) / 1,-1, 1, 1,-1/
120
 
      DATA (NHEL(I,  32),I=1,5) / 1,-1, 1, 1, 1/
121
 
      DATA IDEN/24/
122
 
 
123
 
      INTEGER POLARIZATIONS(0:NEXTERNAL,0:5)
124
 
      DATA ((POLARIZATIONS(I,J),I=0,NEXTERNAL),J=0,5)/NPOLENTRIES*-1/
125
 
      COMMON/BORN_BEAM_POL/POLARIZATIONS
126
 
C     
127
 
C     FUNCTIONS
128
 
C     
129
 
      LOGICAL IS_BORN_HEL_SELECTED
130
 
 
131
 
C     ----------
132
 
C     BEGIN CODE
133
 
C     ----------
134
 
      IF(USERHEL.EQ.-1) NTRY=NTRY+1
135
 
      DO IHEL=1,NEXTERNAL
136
 
        JC(IHEL) = +1
137
 
      ENDDO
138
 
C     When spin-2 particles are involved, the Helicity filtering is
139
 
C      dangerous for the 2->1 topology.
140
 
C     This is because depending on the MC setup the initial PS points
141
 
C      have back-to-back initial states
142
 
C     for which some of the spin-2 helicity configurations are zero.
143
 
C      But they are no longer zero
144
 
C     if the point is boosted on the z-axis. Remember that HELAS
145
 
C      helicity amplitudes are no longer
146
 
C     lorentz invariant with expternal spin-2 particles (only the
147
 
C      helicity sum is).
148
 
C     For this reason, we simply remove the filterin when there is
149
 
C      only three external particles.
150
 
      IF (NEXTERNAL.LE.3) THEN
151
 
        DO IHEL=1,NCOMB
152
 
          GOODHEL(IHEL)=.TRUE.
153
 
        ENDDO
154
 
      ENDIF
155
 
      ANS = 0D0
156
 
      DO IHEL=1,NCOMB
157
 
        IF (USERHEL.EQ.-1.OR.USERHEL.EQ.IHEL) THEN
158
 
          IF (GOODHEL(IHEL) .OR. NTRY .LT. 20.OR.USERHEL.NE.-1) THEN
159
 
            IF(NTRY.GE.2.AND.POLARIZATIONS(0,0).NE.
160
 
     $       -1.AND.(.NOT.IS_BORN_HEL_SELECTED(IHEL))) THEN
161
 
              CYCLE
162
 
            ENDIF
163
 
            T=MATRIX(P ,NHEL(1,IHEL),JC(1))
164
 
            IF(POLARIZATIONS(0,0).EQ.-1.OR.IS_BORN_HEL_SELECTED(IHEL))
165
 
     $        THEN
166
 
              ANS=ANS+T
167
 
            ENDIF
168
 
            IF (T .NE. 0D0 .AND. .NOT.    GOODHEL(IHEL)) THEN
169
 
              GOODHEL(IHEL)=.TRUE.
170
 
            ENDIF
171
 
          ENDIF
172
 
        ENDIF
173
 
      ENDDO
174
 
      ANS=ANS/DBLE(IDEN)
175
 
      IF(USERHEL.NE.-1) THEN
176
 
        ANS=ANS*HELAVGFACTOR
177
 
      ELSE
178
 
        DO J=1,NINITIAL
179
 
          IF (POLARIZATIONS(J,0).NE.-1) THEN
180
 
            ANS=ANS*BEAMS_HELAVGFACTOR(J)
181
 
            ANS=ANS/POLARIZATIONS(J,0)
182
 
          ENDIF
183
 
        ENDDO
184
 
      ENDIF
185
 
      END
186
 
 
187
 
 
188
 
      REAL*8 FUNCTION MATRIX(P,NHEL,IC)
189
 
C     
190
 
C     Generated by MadGraph5_aMC@NLO v. %(version)s, %(date)s
191
 
C     By the MadGraph5_aMC@NLO Development Team
192
 
C     Visit launchpad.net/madgraph5 and amcatnlo.web.cern.ch
193
 
C     
194
 
C     Returns amplitude squared summed/avg over colors
195
 
C     for the point with external lines W(0:6,NEXTERNAL)
196
 
C     
197
 
C     Process: e+ e- > a a a
198
 
C     
199
 
      IMPLICIT NONE
200
 
C     
201
 
C     CONSTANTS
202
 
C     
203
 
      INTEGER    NGRAPHS
204
 
      PARAMETER (NGRAPHS=6)
205
 
      INTEGER    NEXTERNAL
206
 
      PARAMETER (NEXTERNAL=5)
207
 
      INTEGER    NWAVEFUNCS, NCOLOR
208
 
      PARAMETER (NWAVEFUNCS=9, NCOLOR=1)
209
 
      REAL*8     ZERO
210
 
      PARAMETER (ZERO=0D0)
211
 
      COMPLEX*16 IMAG1
212
 
      PARAMETER (IMAG1=(0D0,1D0))
213
 
C     
214
 
C     ARGUMENTS 
215
 
C     
216
 
      REAL*8 P(0:3,NEXTERNAL)
217
 
      INTEGER NHEL(NEXTERNAL), IC(NEXTERNAL)
218
 
C     
219
 
C     LOCAL VARIABLES 
220
 
C     
221
 
      INTEGER I,J
222
 
      COMPLEX*16 ZTEMP
223
 
      REAL*8 DENOM(NCOLOR), CF(NCOLOR,NCOLOR)
224
 
      COMPLEX*16 AMP(NGRAPHS), JAMP(NCOLOR)
225
 
      COMPLEX*16 W(20,NWAVEFUNCS)
226
 
      COMPLEX*16 DUM0,DUM1
227
 
      DATA DUM0, DUM1/(0D0, 0D0), (1D0, 0D0)/
228
 
C     
229
 
C     GLOBAL VARIABLES
230
 
C     
231
 
      INCLUDE 'coupl.inc'
232
 
 
233
 
C     
234
 
C     COLOR DATA
235
 
C     
236
 
      DATA DENOM(1)/1/
237
 
      DATA (CF(I,  1),I=  1,  1) /    1/
238
 
C     1 ColorOne()
239
 
C     ----------
240
 
C     BEGIN CODE
241
 
C     ----------
242
 
      CALL OXXXXX(P(0,1),ZERO,NHEL(1),-1*IC(1),W(1,1))
243
 
      CALL IXXXXX(P(0,2),ZERO,NHEL(2),+1*IC(2),W(1,2))
244
 
      CALL VXXXXX(P(0,3),ZERO,NHEL(3),+1*IC(3),W(1,3))
245
 
      CALL VXXXXX(P(0,4),ZERO,NHEL(4),+1*IC(4),W(1,4))
246
 
      CALL VXXXXX(P(0,5),ZERO,NHEL(5),+1*IC(5),W(1,5))
247
 
      CALL FVOXXX(W(1,1),W(1,3),MGVX12,ZERO,ZERO,W(1,6))
248
 
      CALL FVIXXX(W(1,2),W(1,4),MGVX12,ZERO,ZERO,W(1,7))
249
 
C     Amplitude(s) for diagram number 1
250
 
      CALL IOVXXX(W(1,7),W(1,6),W(1,5),MGVX12,AMP(1))
251
 
      CALL FVIXXX(W(1,2),W(1,5),MGVX12,ZERO,ZERO,W(1,8))
252
 
C     Amplitude(s) for diagram number 2
253
 
      CALL IOVXXX(W(1,8),W(1,6),W(1,4),MGVX12,AMP(2))
254
 
      CALL FVOXXX(W(1,1),W(1,4),MGVX12,ZERO,ZERO,W(1,6))
255
 
      CALL FVIXXX(W(1,2),W(1,3),MGVX12,ZERO,ZERO,W(1,9))
256
 
C     Amplitude(s) for diagram number 3
257
 
      CALL IOVXXX(W(1,9),W(1,6),W(1,5),MGVX12,AMP(3))
258
 
C     Amplitude(s) for diagram number 4
259
 
      CALL IOVXXX(W(1,8),W(1,6),W(1,3),MGVX12,AMP(4))
260
 
      CALL FVOXXX(W(1,1),W(1,5),MGVX12,ZERO,ZERO,W(1,6))
261
 
C     Amplitude(s) for diagram number 5
262
 
      CALL IOVXXX(W(1,9),W(1,6),W(1,4),MGVX12,AMP(5))
263
 
C     Amplitude(s) for diagram number 6
264
 
      CALL IOVXXX(W(1,7),W(1,6),W(1,3),MGVX12,AMP(6))
265
 
      JAMP(1)=-AMP(1)-AMP(2)-AMP(3)-AMP(4)-AMP(5)-AMP(6)
266
 
 
267
 
      MATRIX = 0.D0
268
 
      DO I = 1, NCOLOR
269
 
        ZTEMP = (0.D0,0.D0)
270
 
        DO J = 1, NCOLOR
271
 
          ZTEMP = ZTEMP + CF(J,I)*JAMP(J)
272
 
        ENDDO
273
 
        MATRIX = MATRIX+ZTEMP*DCONJG(JAMP(I))/DENOM(I)
274
 
      ENDDO
275
 
 
276
 
      END
277
 
 
278
 
      SUBROUTINE GET_ME(P, ALPHAS, NHEL ,ANS)
279
 
      IMPLICIT NONE
280
 
C     
281
 
C     CONSTANT
282
 
C     
283
 
      INTEGER    NEXTERNAL
284
 
      PARAMETER (NEXTERNAL=5)
285
 
C     
286
 
C     ARGUMENTS 
287
 
C     
288
 
      REAL*8 P(0:3,NEXTERNAL),ANS
289
 
      INTEGER NHEL
290
 
      DOUBLE PRECISION ALPHAS
291
 
      REAL*8 PI
292
 
CF2PY INTENT(OUT) :: ANS
293
 
CF2PY INTENT(IN) :: NHEL
294
 
CF2PY INTENT(IN) :: P(0:3,NEXTERNAL)
295
 
CF2PY INTENT(IN) :: ALPHAS
296
 
C     ROUTINE FOR F2PY to read the benchmark point.    
297
 
C     the include file with the values of the parameters and masses 
298
 
      INCLUDE 'coupl.inc'
299
 
 
300
 
      PI = 3.141592653589793D0
301
 
      G = 2* DSQRT(ALPHAS*PI)
302
 
      CALL UPDATE_AS_PARAM()
303
 
      IF (NHEL.NE.0) THEN
304
 
        CALL SMATRIXHEL(P, NHEL, ANS)
305
 
      ELSE
306
 
        CALL SMATRIX(P, ANS)
307
 
      ENDIF
308
 
      RETURN
309
 
      END
310
 
 
311
 
      SUBROUTINE INITIALISE(PATH)
312
 
C     ROUTINE FOR F2PY to read the benchmark point.    
313
 
      IMPLICIT NONE
314
 
      CHARACTER*180 PATH
315
 
CF2PY INTENT(IN) :: PATH
316
 
      CALL SETPARA(PATH)  !first call to setup the paramaters    
317
 
      RETURN
318
 
      END
319
 
 
320
 
      LOGICAL FUNCTION IS_BORN_HEL_SELECTED(HELID)
321
 
      IMPLICIT NONE
322
 
C     
323
 
C     CONSTANTS
324
 
C     
325
 
      INTEGER    NEXTERNAL
326
 
      PARAMETER (NEXTERNAL=5)
327
 
      INTEGER    NCOMB
328
 
      PARAMETER (NCOMB=32)
329
 
C     
330
 
C     ARGUMENTS
331
 
C     
332
 
      INTEGER HELID
333
 
C     
334
 
C     LOCALS
335
 
C     
336
 
      INTEGER I,J
337
 
      LOGICAL FOUNDIT
338
 
C     
339
 
C     GLOBALS
340
 
C     
341
 
      INTEGER HELC(NEXTERNAL,NCOMB)
342
 
      COMMON/BORN_HEL_CONFIGS/HELC
343
 
 
344
 
      INTEGER POLARIZATIONS(0:NEXTERNAL,0:5)
345
 
      COMMON/BORN_BEAM_POL/POLARIZATIONS
346
 
C     ----------
347
 
C     BEGIN CODE
348
 
C     ----------
349
 
 
350
 
      IS_BORN_HEL_SELECTED = .TRUE.
351
 
      IF (POLARIZATIONS(0,0).EQ.-1) THEN
352
 
        RETURN
353
 
      ENDIF
354
 
 
355
 
      DO I=1,NEXTERNAL
356
 
        IF (POLARIZATIONS(I,0).EQ.-1) THEN
357
 
          CYCLE
358
 
        ENDIF
359
 
        FOUNDIT = .FALSE.
360
 
        DO J=1,POLARIZATIONS(I,0)
361
 
          IF (HELC(I,HELID).EQ.POLARIZATIONS(I,J)) THEN
362
 
            FOUNDIT = .TRUE.
363
 
            EXIT
364
 
          ENDIF
365
 
        ENDDO
366
 
        IF(.NOT.FOUNDIT) THEN
367
 
          IS_BORN_HEL_SELECTED = .FALSE.
368
 
          RETURN
369
 
        ENDIF
370
 
      ENDDO
371
 
 
372
 
      RETURN
373
 
      END
374