1
DOUBLE PRECISION FUNCTION DSIG(PP,WGT,IMODE)
2
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
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
26
C RETURNS DIFFERENTIAL CROSS SECTION
27
C FOR MULTIPLE PROCESSES IN PROCESS GROUP
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
34
C Amplitude squared and summed
35
C ****************************************************
41
INCLUDE 'maxconfigs.inc'
42
INCLUDE 'nexternal.inc'
45
PARAMETER (PI=3.1415926D0)
49
DOUBLE PRECISION PP(0:3,NEXTERNAL), WGT
54
INTEGER I,J,K,LUN,ICONF,IMIRROR,NPROC
56
INTEGER SYMCONF(0:LMAXCONFIGS)
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)
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
81
DOUBLE PRECISION DSIGPROC
82
EXTERNAL NEXTUNOPEN,DSIGPROC
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
93
COMMON/TO_MIRROR/IMIRROR, IPROC
94
C CM_RAP has parton-parton system rapidity
95
DOUBLE PRECISION 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
109
C Set up process information from file symfact
112
SYMCONF(IPROC)=ICONFIG
113
OPEN(UNIT=LUN,FILE='../symfact.dat',STATUS='OLD',ERR=20)
115
READ(LUN,*,ERR=10,END=10) XDUM, ICONF
116
IF(ICONF.EQ.-MAPCONFIG(ICONFIG))THEN
118
SYMCONF(IPROC)=INT(XDUM)
125
WRITE(*,*)'Error opening symfact.dat. No permutations used.'
127
ELSE IF(IMODE.EQ.2)THEN
128
C Output weights and number of events
133
SUMPROB=SUMPROB+SUMWGT(K,I,J)
137
WRITE(*,*)'Relative summed weights:'
139
WRITE(*,'(14E12.4)')((SUMWGT(K,I,J)/SUMPROB,K=1,2),I=1
146
SUMPROB=SUMPROB+NUMEVTS(K,I,J)
150
WRITE(*,*)'Relative number of events:'
152
WRITE(*,'(14E12.4)')((NUMEVTS(K,I,J)/SUMPROB,K=1,2),I=1
157
WRITE(*,'(14I12)')((NUMEVTS(K,I,J),K=1,2),I=1,MAXSPROC)
159
C Reset weights and number of events
169
ELSE IF(IMODE.EQ.3)THEN
174
C IMODE.EQ.0, regular run mode
176
C Select among the subprocesses based on PDF weight
180
IF(CONFSUB(IPROC,SYMCONF(J)).NE.0) THEN
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)
188
C Need to flip back x values
200
C Perform the selection
209
TOTWGT=TOTWGT+SELPROC(K,I,J)
211
C Normalize SELPROC to selection probability
212
SELPROC(K,I,J)=SELPROC(K,I,J)/SUMPROB
223
IF(IPROC.EQ.0) RETURN
225
C Update weigth w.r.t SELPROC
226
WGT=WGT/SELPROC(IMIRROR,IPROC,ICONF)
228
C Call DSIGPROC to calculate sigma for process
229
DSIG=DSIGPROC(PP,ICONF,IPROC,IMIRROR,SYMCONF,CONFSUB,WGT,IMODE)
232
C Update summed weight and number of events
233
SUMWGT(IMIRROR,IPROC,ICONF)=SUMWGT(IMIRROR,IPROC,ICONF)
235
NUMEVTS(IMIRROR,IPROC,ICONF)=NUMEVTS(IMIRROR,IPROC,ICONF)+1
241
FUNCTION DSIGPROC(PP,ICONF,IPROC,IMIRROR,SYMCONF,CONFSUB,WGT
243
C ****************************************************
244
C RETURNS DIFFERENTIAL CROSS SECTION
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
251
C Amplitude squared and summed
252
C ****************************************************
257
INCLUDE 'maxconfigs.inc'
258
INCLUDE 'nexternal.inc'
259
INCLUDE 'maxamps.inc'
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)
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
283
COMMON/TO_CM_RAP/SET_CM_RAP,CM_RAP
287
DOUBLE PRECISION DSIG1,DSIG2,DSIG3,DSIG4,DSIG5,DSIG6,DSIG7
292
DOUBLE PRECISION P1(0:3,NEXTERNAL),XDUM
293
INTEGER I,J,K,JC(NEXTERNAL)
294
INTEGER PERMS(NEXTERNAL,LMAXCONFIGS)
295
INCLUDE 'symperms.inc'
297
ICONFIG=SYMCONF(ICONF)
299
SUBDIAG(I) = CONFSUB(I,SYMCONF(ICONF))
302
C Set momenta according to this permutation
303
CALL SWITCHMOM(PP,P1,PERMS(1,MAPCONFIG(ICONFIG)),JC,NEXTERNAL)
309
C Flip momenta (rotate around x axis)
317
C Flip x values (to get boost right)
321
C Flip CM_RAP (to get rapidity right)
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~