~maddevelopers/mg5amcnlo/WWW5_caching

« back to all changes in this revision

Viewing changes to users/mardelcourt/PROC_141512/PROC_141512/SubProcesses/P0_qq_qq/auto_dsig.f

  • Committer: John Doe
  • Date: 2013-03-25 20:27:02 UTC
  • Revision ID: john.doe@gmail.com-20130325202702-5sk3t1r8h33ca4p4
first clean version

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      DOUBLE PRECISION FUNCTION DSIG(PP,WGT,IMODE)
 
2
C     ****************************************************
 
3
C     
 
4
C     Generated by MadGraph 5 v. 2.0.0.beta3, 2013-02-14
 
5
C     By the MadGraph Development Team
 
6
C     Please visit us at https://launchpad.net/madgraph5
 
7
C     
 
8
C     Process: u u > u u WEIGHTED=2
 
9
C     Process: s s > s s WEIGHTED=2
 
10
C     Process: u u~ > u u~ WEIGHTED=2
 
11
C     Process: s s~ > s s~ WEIGHTED=2
 
12
C     Process: d~ d~ > d~ d~ WEIGHTED=2
 
13
C     Process: u~ u~ > u~ u~ WEIGHTED=2
 
14
C     Process: s~ s~ > s~ s~ WEIGHTED=2
 
15
C     Process: u s > u s WEIGHTED=2
 
16
C     Process: u d~ > u d~ WEIGHTED=2
 
17
C     Process: u s~ > u s~ WEIGHTED=2
 
18
C     Process: s d~ > s d~ WEIGHTED=2
 
19
C     Process: s u~ > s u~ WEIGHTED=2
 
20
C     Process: u u~ > s s~ WEIGHTED=2
 
21
C     Process: s s~ > u u~ WEIGHTED=2
 
22
C     Process: d~ u~ > d~ u~ WEIGHTED=2
 
23
C     Process: d~ s~ > d~ s~ WEIGHTED=2
 
24
C     Process: u~ s~ > u~ s~ WEIGHTED=2
 
25
C     
 
26
C     RETURNS DIFFERENTIAL CROSS SECTION 
 
27
C     FOR MULTIPLE PROCESSES IN PROCESS GROUP
 
28
C     Input:
 
29
C     pp    4 momentum of external particles
 
30
C     wgt   weight from Monte Carlo
 
31
C     imode 0 run, 1 init, 2 reweight,
 
32
C     3 finalize, 4 only PDFs
 
33
C     Output:
 
34
C     Amplitude squared and summed
 
35
C     ****************************************************
 
36
      IMPLICIT NONE
 
37
C     
 
38
C     CONSTANTS
 
39
C     
 
40
      INCLUDE 'genps.inc'
 
41
      INCLUDE 'maxconfigs.inc'
 
42
      INCLUDE 'nexternal.inc'
 
43
      INCLUDE 'maxamps.inc'
 
44
      REAL*8     PI
 
45
      PARAMETER (PI=3.1415926D0)
 
46
C     
 
47
C     ARGUMENTS 
 
48
C     
 
49
      DOUBLE PRECISION PP(0:3,NEXTERNAL), WGT
 
50
      INTEGER IMODE
 
51
C     
 
52
C     LOCAL VARIABLES 
 
53
C     
 
54
      INTEGER I,J,K,LUN,ICONF,IMIRROR,NPROC
 
55
      SAVE NPROC
 
56
      INTEGER SYMCONF(0:LMAXCONFIGS)
 
57
      SAVE SYMCONF
 
58
      DOUBLE PRECISION SUMPROB,TOTWGT,R,XDUM
 
59
      INTEGER CONFSUB(MAXSPROC,LMAXCONFIGS)
 
60
      INCLUDE 'config_subproc_map.inc'
 
61
      INTEGER PERMS(NEXTERNAL,LMAXCONFIGS)
 
62
      INCLUDE 'symperms.inc'
 
63
      LOGICAL MIRRORPROCS(MAXSPROC)
 
64
      INCLUDE 'mirrorprocs.inc'
 
65
C     SELPROC is vector of selection weights for the subprocesses
 
66
C     SUMWGT is vector of total weight for the subprocesses
 
67
C     NUMEVTS is vector of event calls for the subprocesses
 
68
      DOUBLE PRECISION SELPROC(2, MAXSPROC,LMAXCONFIGS)
 
69
      DOUBLE PRECISION SUMWGT(2, MAXSPROC,LMAXCONFIGS)
 
70
      INTEGER NUMEVTS(2, MAXSPROC,LMAXCONFIGS)
 
71
      INTEGER LARGEDIM
 
72
      PARAMETER (LARGEDIM=2*MAXSPROC*LMAXCONFIGS)
 
73
      DATA SELPROC/LARGEDIM*0D0/
 
74
      DATA SUMWGT/LARGEDIM*0D0/
 
75
      DATA NUMEVTS/LARGEDIM*0/
 
76
      SAVE SELPROC,SUMWGT,NUMEVTS
 
77
C     
 
78
C     EXTERNAL FUNCTIONS
 
79
C     
 
80
      INTEGER NEXTUNOPEN
 
81
      DOUBLE PRECISION DSIGPROC
 
82
      EXTERNAL NEXTUNOPEN,DSIGPROC
 
83
C     
 
84
C     GLOBAL VARIABLES
 
85
C     
 
86
      INCLUDE 'coupl.inc'
 
87
      INCLUDE 'run.inc'
 
88
C     ICONFIG has this config number
 
89
      INTEGER MAPCONFIG(0:LMAXCONFIGS), ICONFIG
 
90
      COMMON/TO_MCONFIGS/MAPCONFIG, ICONFIG
 
91
C     IPROC has the present process number
 
92
      INTEGER IPROC
 
93
      COMMON/TO_MIRROR/IMIRROR, IPROC
 
94
C     CM_RAP has parton-parton system rapidity
 
95
      DOUBLE PRECISION CM_RAP
 
96
      LOGICAL SET_CM_RAP
 
97
      COMMON/TO_CM_RAP/SET_CM_RAP,CM_RAP
 
98
C     Keep track of whether cuts already calculated for this event
 
99
      LOGICAL CUTSDONE,CUTSPASSED
 
100
      COMMON/TO_CUTSDONE/CUTSDONE,CUTSPASSED
 
101
C     ----------
 
102
C     BEGIN CODE
 
103
C     ----------
 
104
      DSIG=0D0
 
105
 
 
106
      CUTSDONE=.FALSE.
 
107
 
 
108
      IF(IMODE.EQ.1)THEN
 
109
C       Set up process information from file symfact
 
110
        LUN=NEXTUNOPEN()
 
111
        IPROC=1
 
112
        SYMCONF(IPROC)=ICONFIG
 
113
        OPEN(UNIT=LUN,FILE='../symfact.dat',STATUS='OLD',ERR=20)
 
114
        DO WHILE(.TRUE.)
 
115
          READ(LUN,*,ERR=10,END=10) XDUM, ICONF
 
116
          IF(ICONF.EQ.-MAPCONFIG(ICONFIG))THEN
 
117
            IPROC=IPROC+1
 
118
            SYMCONF(IPROC)=INT(XDUM)
 
119
          ENDIF
 
120
        ENDDO
 
121
 10     SYMCONF(0)=IPROC
 
122
        CLOSE(LUN)
 
123
        RETURN
 
124
 20     SYMCONF(0)=IPROC
 
125
        WRITE(*,*)'Error opening symfact.dat. No permutations used.'
 
126
        RETURN
 
127
      ELSE IF(IMODE.EQ.2)THEN
 
128
C       Output weights and number of events
 
129
        SUMPROB=0D0
 
130
        DO J=1,SYMCONF(0)
 
131
          DO I=1,MAXSPROC
 
132
            DO K=1,2
 
133
              SUMPROB=SUMPROB+SUMWGT(K,I,J)
 
134
            ENDDO
 
135
          ENDDO
 
136
        ENDDO
 
137
        WRITE(*,*)'Relative summed weights:'
 
138
        DO J=1,SYMCONF(0)
 
139
          WRITE(*,'(14E12.4)')((SUMWGT(K,I,J)/SUMPROB,K=1,2),I=1
 
140
     $     ,MAXSPROC)
 
141
        ENDDO
 
142
        SUMPROB=0D0
 
143
        DO J=1,SYMCONF(0)
 
144
          DO I=1,MAXSPROC
 
145
            DO K=1,2
 
146
              SUMPROB=SUMPROB+NUMEVTS(K,I,J)
 
147
            ENDDO
 
148
          ENDDO
 
149
        ENDDO
 
150
        WRITE(*,*)'Relative number of events:'
 
151
        DO J=1,SYMCONF(0)
 
152
          WRITE(*,'(14E12.4)')((NUMEVTS(K,I,J)/SUMPROB,K=1,2),I=1
 
153
     $     ,MAXSPROC)
 
154
        ENDDO
 
155
        WRITE(*,*)'Events:'
 
156
        DO J=1,SYMCONF(0)
 
157
          WRITE(*,'(14I12)')((NUMEVTS(K,I,J),K=1,2),I=1,MAXSPROC)
 
158
        ENDDO
 
159
C       Reset weights and number of events
 
160
        DO J=1,SYMCONF(0)
 
161
          DO I=1,MAXSPROC
 
162
            DO K=1,2
 
163
              NUMEVTS(K,I,J)=0
 
164
              SUMWGT(K,I,J)=0D0
 
165
            ENDDO
 
166
          ENDDO
 
167
        ENDDO
 
168
        RETURN
 
169
      ELSE IF(IMODE.EQ.3)THEN
 
170
C       No finalize needed
 
171
        RETURN
 
172
      ENDIF
 
173
 
 
174
C     IMODE.EQ.0, regular run mode
 
175
 
 
176
C     Select among the subprocesses based on PDF weight
 
177
      SUMPROB=0D0
 
178
      DO J=1,SYMCONF(0)
 
179
        DO IPROC=1,MAXSPROC
 
180
          IF(CONFSUB(IPROC,SYMCONF(J)).NE.0) THEN
 
181
            DO IMIRROR=1,2
 
182
              IF(IMIRROR.EQ.1.OR.MIRRORPROCS(IPROC))THEN
 
183
C               Calculate PDF weight for all subprocesses
 
184
                SELPROC(IMIRROR,IPROC,J)=DSIGPROC(PP,J,IPROC,IMIRROR
 
185
     $           ,SYMCONF,CONFSUB,1D0,4)
 
186
                SUMPROB=SUMPROB+SELPROC(IMIRROR,IPROC,J)
 
187
                IF(IMIRROR.EQ.2)THEN
 
188
C                 Need to flip back x values
 
189
                  XDUM=XBK(1)
 
190
                  XBK(1)=XBK(2)
 
191
                  XBK(2)=XDUM
 
192
                  CM_RAP=-CM_RAP
 
193
                ENDIF
 
194
              ENDIF
 
195
            ENDDO
 
196
          ENDIF
 
197
        ENDDO
 
198
      ENDDO
 
199
 
 
200
C     Perform the selection
 
201
      CALL RANMAR(R)
 
202
      R=R*SUMPROB
 
203
      ICONF=0
 
204
      IPROC=0
 
205
      TOTWGT=0D0
 
206
      DO J=1,SYMCONF(0)
 
207
        DO I=1,MAXSPROC
 
208
          DO K=1,2
 
209
            TOTWGT=TOTWGT+SELPROC(K,I,J)
 
210
            IF(R.LT.TOTWGT)THEN
 
211
C             Normalize SELPROC to selection probability
 
212
              SELPROC(K,I,J)=SELPROC(K,I,J)/SUMPROB
 
213
              IPROC=I
 
214
              ICONF=J
 
215
              IMIRROR=K
 
216
              GOTO 50
 
217
            ENDIF
 
218
          ENDDO
 
219
        ENDDO
 
220
      ENDDO
 
221
 50   CONTINUE
 
222
 
 
223
      IF(IPROC.EQ.0) RETURN
 
224
 
 
225
C     Update weigth w.r.t SELPROC
 
226
      WGT=WGT/SELPROC(IMIRROR,IPROC,ICONF)
 
227
 
 
228
C     Call DSIGPROC to calculate sigma for process
 
229
      DSIG=DSIGPROC(PP,ICONF,IPROC,IMIRROR,SYMCONF,CONFSUB,WGT,IMODE)
 
230
 
 
231
      IF(DSIG.GT.0D0)THEN
 
232
C       Update summed weight and number of events
 
233
        SUMWGT(IMIRROR,IPROC,ICONF)=SUMWGT(IMIRROR,IPROC,ICONF)
 
234
     $   +DABS(DSIG*WGT)
 
235
        NUMEVTS(IMIRROR,IPROC,ICONF)=NUMEVTS(IMIRROR,IPROC,ICONF)+1
 
236
      ENDIF
 
237
 
 
238
      RETURN
 
239
      END
 
240
 
 
241
      FUNCTION DSIGPROC(PP,ICONF,IPROC,IMIRROR,SYMCONF,CONFSUB,WGT
 
242
     $ ,IMODE)
 
243
C     ****************************************************
 
244
C     RETURNS DIFFERENTIAL CROSS SECTION 
 
245
C     FOR A PROCESS
 
246
C     Input:
 
247
C     pp    4 momentum of external particles
 
248
C     wgt   weight from Monte Carlo
 
249
C     imode 0 run, 1 init, 2 reweight, 3 finalize
 
250
C     Output:
 
251
C     Amplitude squared and summed
 
252
C     ****************************************************
 
253
 
 
254
      IMPLICIT NONE
 
255
 
 
256
      INCLUDE 'genps.inc'
 
257
      INCLUDE 'maxconfigs.inc'
 
258
      INCLUDE 'nexternal.inc'
 
259
      INCLUDE 'maxamps.inc'
 
260
      INCLUDE 'coupl.inc'
 
261
      INCLUDE 'run.inc'
 
262
C     
 
263
C     ARGUMENTS 
 
264
C     
 
265
      DOUBLE PRECISION DSIGPROC
 
266
      DOUBLE PRECISION PP(0:3,NEXTERNAL), WGT
 
267
      INTEGER ICONF,IPROC,IMIRROR,IMODE
 
268
      INTEGER SYMCONF(0:LMAXCONFIGS)
 
269
      INTEGER CONFSUB(MAXSPROC,LMAXCONFIGS)
 
270
C     
 
271
C     GLOBAL VARIABLES
 
272
C     
 
273
C     SUBDIAG is vector of diagram numbers for this config
 
274
C     IB gives which beam is which (for mirror processes)
 
275
      INTEGER SUBDIAG(MAXSPROC),IB(2)
 
276
      COMMON/TO_SUB_DIAG/SUBDIAG,IB
 
277
C     ICONFIG has this config number
 
278
      INTEGER MAPCONFIG(0:LMAXCONFIGS), ICONFIG
 
279
      COMMON/TO_MCONFIGS/MAPCONFIG, ICONFIG
 
280
C     CM_RAP has parton-parton system rapidity
 
281
      DOUBLE PRECISION CM_RAP
 
282
      LOGICAL SET_CM_RAP
 
283
      COMMON/TO_CM_RAP/SET_CM_RAP,CM_RAP
 
284
C     
 
285
C     EXTERNAL FUNCTIONS
 
286
C     
 
287
      DOUBLE PRECISION DSIG1,DSIG2,DSIG3,DSIG4,DSIG5,DSIG6,DSIG7
 
288
      LOGICAL PASSCUTS
 
289
C     
 
290
C     LOCAL VARIABLES 
 
291
C     
 
292
      DOUBLE PRECISION P1(0:3,NEXTERNAL),XDUM
 
293
      INTEGER I,J,K,JC(NEXTERNAL)
 
294
      INTEGER PERMS(NEXTERNAL,LMAXCONFIGS)
 
295
      INCLUDE 'symperms.inc'
 
296
 
 
297
      ICONFIG=SYMCONF(ICONF)
 
298
      DO I=1,MAXSPROC
 
299
        SUBDIAG(I) = CONFSUB(I,SYMCONF(ICONF))
 
300
      ENDDO
 
301
 
 
302
C     Set momenta according to this permutation
 
303
      CALL SWITCHMOM(PP,P1,PERMS(1,MAPCONFIG(ICONFIG)),JC,NEXTERNAL)
 
304
 
 
305
      IB(1)=1
 
306
      IB(2)=2
 
307
 
 
308
      IF(IMIRROR.EQ.2)THEN
 
309
C       Flip momenta (rotate around x axis)
 
310
        DO I=1,NEXTERNAL
 
311
          P1(2,I)=-P1(2,I)
 
312
          P1(3,I)=-P1(3,I)
 
313
        ENDDO
 
314
C       Flip beam identity
 
315
        IB(1)=2
 
316
        IB(2)=1
 
317
C       Flip x values (to get boost right)
 
318
        XDUM=XBK(1)
 
319
        XBK(1)=XBK(2)
 
320
        XBK(2)=XDUM
 
321
C       Flip CM_RAP (to get rapidity right)
 
322
        CM_RAP=-CM_RAP
 
323
      ENDIF
 
324
 
 
325
      DSIGPROC=0D0
 
326
 
 
327
      IF (PASSCUTS(P1)) THEN
 
328
        IF(IPROC.EQ.1) DSIGPROC=DSIG1(P1,WGT,IMODE)  ! u u > u u
 
329
        IF(IPROC.EQ.2) DSIGPROC=DSIG2(P1,WGT,IMODE)  ! u u~ > u u~
 
330
        IF(IPROC.EQ.3) DSIGPROC=DSIG3(P1,WGT,IMODE)  ! d~ d~ > d~ d~
 
331
        IF(IPROC.EQ.4) DSIGPROC=DSIG4(P1,WGT,IMODE)  ! u s > u s
 
332
        IF(IPROC.EQ.5) DSIGPROC=DSIG5(P1,WGT,IMODE)  ! u d~ > u d~
 
333
        IF(IPROC.EQ.6) DSIGPROC=DSIG6(P1,WGT,IMODE)  ! u u~ > s s~
 
334
        IF(IPROC.EQ.7) DSIGPROC=DSIG7(P1,WGT,IMODE)  ! d~ u~ > d~ u~
 
335
      ENDIF
 
336
      RETURN
 
337
      END
 
338
 
 
339