JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
mod_HashCollection.F90
Go to the documentation of this file.
3 implicit none
4 save
5 public
6 
7 
8 ! MCFM qq_VVqq hash - JHU conventions
9 integer, parameter :: hash_mcfm_qqvvqq_size = 164
10 integer, target :: hash_mcfm_qqvvqq(1:hash_mcfm_qqvvqq_size,1:4)
11 
12 ! MCFM qq_VVll hash - JHU conventions
13 integer, parameter :: hash_mcfm_qqvvll_size = 84
14 integer, target :: hash_mcfm_qqvvll(1:hash_mcfm_qqvvll_size,1:4)
15 
16 ! MCFM qq_VVqqStrong hash - JHU conventions
17 integer, parameter :: hash_mcfm_qqvvqqstrong_size = 175
19 
20 ! MCFM qq_VVqq hash (generation) - PDF/PDG conventions
21 integer, parameter :: hash_mcfm_qqvvqq_gen_size = 121 ! Maximum size
23 
24 ! JHUGen onshell 0-jet hash - PDF conventions
25 integer, parameter :: hash_ppxchannel_size = 121 ! Maximum size
26 integer, target :: hash_ppxchannel(1:hash_ppxchannel_size,1:3)
27 
28 ! JHUGen onshell VBF hash (approximate) - PDF/PDG conventions
29 integer, parameter :: hash_onshellvbf_size = 121 ! Maximum size
30 integer, target :: hash_onshellvbf(1:hash_onshellvbf_size,1:3)
31 
32 ! JHUGen onshell VBF hash (exact) - PDF/PDG conventions
33 integer, parameter :: hash_onshellvbf_nosplit_size = 121 ! Maximum size
35 
36 ! JHUGen onshell HJJ hash (approximate) - PDF conventions
37 integer, parameter :: hash_onshellhjj_size = 121 ! Maximum size
38 integer, target :: hash_onshellhjj(1:hash_onshellhjj_size,1:3)
39 
40 ! JHUGen onshell HJJ hash (exact) - PDF conventions
41 integer, parameter :: hash_onshellhjj_nosplit_size = 121 ! Maximum size
43 
44 ! JHUGen onshell GEN channel hash - PDF conventions
45 integer, parameter :: hash_genchannel_size = 121 ! Maximum size
46 integer, target :: hash_genchannel(1:hash_genchannel_size,1:3)
47 
48 ! JHUGen onshell TH hash - PDF conventions
49 integer, parameter :: hash_thchannel_size = 121, hash_twhchannel_size = 121 ! Maximum size
51 
52 ! Variable to control initialization
53 logical, private :: hashcoll_hashes_initialized = .false.
54 
55 contains
56 
57 
58 
59 
60 subroutine init_hash_mcfm_qqvvqq()
61 implicit none
62 integer :: i
63 
64  hash_mcfm_qqvvqq( 1,:) = (/ dn_ , up_ , dn_ , up_ /)
65  hash_mcfm_qqvvqq( 2,:) = (/ up_ , dn_ , dn_ , up_ /)
66 
67 
68  hash_mcfm_qqvvqq( 3,:) = (/ up_ , aup_ , adn_ , dn_ /)
69  hash_mcfm_qqvvqq( 4,:) = (/ aup_ , up_ , adn_ , dn_ /)
70  hash_mcfm_qqvvqq( 5,:) = (/ str_ , up_ , dn_ , chm_ /)
71  hash_mcfm_qqvvqq( 6,:) = (/ up_ , str_ , dn_ , chm_ /)
72  hash_mcfm_qqvvqq( 7,:) = (/ dn_ , adn_ , aup_ , up_ /)
73  hash_mcfm_qqvvqq( 8,:) = (/ adn_ , dn_ , aup_ , up_ /)
74  hash_mcfm_qqvvqq( 9,:) = (/ up_ , up_ , up_ , up_ /)
75 
76 
77  hash_mcfm_qqvvqq( 10,:) = (/ up_ , adn_ , adn_ , up_ /)
78  hash_mcfm_qqvvqq( 11,:) = (/ adn_ , up_ , adn_ , up_ /)
79  hash_mcfm_qqvvqq( 12,:) = (/ up_ , adn_ , astr_ , chm_ /)
80  hash_mcfm_qqvvqq( 13,:) = (/ aup_ , dn_ , achm_ , str_ /)
81  hash_mcfm_qqvvqq( 14,:) = (/ adn_ , up_ , astr_ , chm_ /)
82  hash_mcfm_qqvvqq( 15,:) = (/ aup_ , dn_ , aup_ , dn_ /)
83  hash_mcfm_qqvvqq( 16,:) = (/ up_ , achm_ , astr_ , dn_ /)
84  hash_mcfm_qqvvqq( 17,:) = (/ achm_ , up_ , astr_ , dn_ /)
85  hash_mcfm_qqvvqq( 18,:) = (/ dn_ , astr_ , achm_ , up_ /)
86  hash_mcfm_qqvvqq( 19,:) = (/ dn_ , aup_ , aup_ , dn_ /)
87  hash_mcfm_qqvvqq( 20,:) = (/ dn_ , aup_ , achm_ , str_ /)
88  hash_mcfm_qqvvqq( 21,:) = (/ dn_ , chm_ , up_ , str_ /)
89  hash_mcfm_qqvvqq( 22,:) = (/ chm_ , dn_ , up_ , str_ /)
90  hash_mcfm_qqvvqq( 23,:) = (/ adn_ , aup_ , aup_ , adn_ /)
91  hash_mcfm_qqvvqq( 24,:) = (/ aup_ , adn_ , aup_ , adn_ /)
92  hash_mcfm_qqvvqq( 25,:) = (/ achm_ , adn_ , astr_ , aup_ /)
93  hash_mcfm_qqvvqq( 26,:) = (/ adn_ , achm_ , astr_ , aup_ /)
94  hash_mcfm_qqvvqq( 27,:) = (/ adn_ , str_ , aup_ , chm_ /)
95  hash_mcfm_qqvvqq( 28,:) = (/ str_ , adn_ , aup_ , chm_ /)
96  hash_mcfm_qqvvqq( 29,:) = (/ aup_ , astr_ , achm_ , adn_ /)
97  hash_mcfm_qqvvqq( 30,:) = (/ astr_ , aup_ , achm_ , adn_ /)
98  hash_mcfm_qqvvqq( 31,:) = (/ astr_ , str_ , achm_ , chm_ /)
99  hash_mcfm_qqvvqq( 32,:) = (/ str_ , astr_ , achm_ , chm_ /)
100  hash_mcfm_qqvvqq( 33,:) = (/ aup_ , up_ , aup_ , up_ /)
101  hash_mcfm_qqvvqq( 34,:) = (/ up_ , aup_ , aup_ , up_ /)
102  hash_mcfm_qqvvqq( 35,:) = (/ dn_ , adn_ , adn_ , dn_ /)
103  hash_mcfm_qqvvqq( 36,:) = (/ adn_ , dn_ , adn_ , dn_ /)
104  hash_mcfm_qqvvqq( 37,:) = (/ chm_ , aup_ , adn_ , str_ /)
105  hash_mcfm_qqvvqq( 38,:) = (/ str_ , up_ , up_ , str_ /)
106  hash_mcfm_qqvvqq( 39,:) = (/ adn_ , dn_ , astr_ , str_ /)
107  hash_mcfm_qqvvqq( 40,:) = (/ dn_ , adn_ , astr_ , str_ /)
108 
109  hash_mcfm_qqvvqq(41,:) = (/ achm_ , adn_ , achm_ , adn_ /)
110  hash_mcfm_qqvvqq(42,:) = (/ aup_ , aup_ , aup_ , aup_ /)
111  hash_mcfm_qqvvqq(43,:) = (/ achm_ , achm_ , achm_ , achm_ /)
112  hash_mcfm_qqvvqq(44,:) = (/ adn_ , adn_ , adn_ , adn_ /)
113  hash_mcfm_qqvvqq(45,:) = (/ astr_ , astr_ , astr_ , astr_ /)
114  hash_mcfm_qqvvqq(46,:) = (/ abot_ , abot_ , abot_ , abot_ /)
115  hash_mcfm_qqvvqq(47,:) = (/ aup_ , achm_ , achm_ , aup_ /)
116  hash_mcfm_qqvvqq(48,:) = (/ adn_ , astr_ , astr_ , adn_ /)
117  hash_mcfm_qqvvqq(49,:) = (/ adn_ , abot_ , abot_ , adn_ /)
118  hash_mcfm_qqvvqq(50,:) = (/ astr_ , abot_ , abot_ , astr_ /)
119  hash_mcfm_qqvvqq(51,:) = (/ aup_ , astr_ , astr_ , aup_ /)
120  hash_mcfm_qqvvqq(52,:) = (/ aup_ , abot_ , abot_ , aup_ /)
121  hash_mcfm_qqvvqq(53,:) = (/ achm_ , abot_ , abot_ , achm_ /)
122  hash_mcfm_qqvvqq(54,:) = (/ adn_ , achm_ , achm_ , adn_ /)
123  hash_mcfm_qqvvqq(55,:) = (/ up_ , chm_ , up_ , chm_ /)
124  hash_mcfm_qqvvqq(56,:) = (/ dn_ , str_ , dn_ , str_ /)
125  hash_mcfm_qqvvqq(57,:) = (/ dn_ , bot_ , dn_ , bot_ /)
126  hash_mcfm_qqvvqq(58,:) = (/ str_ , bot_ , str_ , bot_ /)
127  hash_mcfm_qqvvqq(59,:) = (/ aup_ , chm_ , aup_ , chm_ /)
128  hash_mcfm_qqvvqq(60,:) = (/ adn_ , str_ , adn_ , str_ /)
129  hash_mcfm_qqvvqq(61,:) = (/ adn_ , bot_ , adn_ , bot_ /)
130  hash_mcfm_qqvvqq(62,:) = (/ astr_ , bot_ , astr_ , bot_ /)
131  hash_mcfm_qqvvqq(63,:) = (/ aup_ , str_ , aup_ , str_ /)
132  hash_mcfm_qqvvqq(64,:) = (/ aup_ , bot_ , aup_ , bot_ /)
133  hash_mcfm_qqvvqq(65,:) = (/ achm_ , bot_ , achm_ , bot_ /)
134  hash_mcfm_qqvvqq(66,:) = (/ adn_ , chm_ , adn_ , chm_ /)
135  hash_mcfm_qqvvqq(67,:) = (/ up_ , bot_ , up_ , bot_ /)
136  hash_mcfm_qqvvqq(68,:) = (/ astr_ , chm_ , astr_ , chm_ /)
137  hash_mcfm_qqvvqq(69,:) = (/ chm_ , bot_ , chm_ , bot_ /)
138  hash_mcfm_qqvvqq(70,:) = (/ dn_ , chm_ , dn_ , chm_ /)
139  hash_mcfm_qqvvqq(71,:) = (/ str_ , chm_ , str_ , chm_ /)
140  hash_mcfm_qqvvqq(72,:) = (/ achm_ , chm_ , achm_ , chm_ /)
141  hash_mcfm_qqvvqq(73,:) = (/ chm_ , chm_ , chm_ , chm_ /)
142  hash_mcfm_qqvvqq(74,:) = (/ astr_ , str_ , astr_ , str_ /)
143  hash_mcfm_qqvvqq(75,:) = (/ abot_ , bot_ , abot_ , bot_ /)
144  hash_mcfm_qqvvqq(76,:) = (/ achm_ , up_ , achm_ , up_ /)
145  hash_mcfm_qqvvqq(77,:) = (/ astr_ , dn_ , astr_ , dn_ /)
146  hash_mcfm_qqvvqq(78,:) = (/ abot_ , dn_ , abot_ , dn_ /)
147  hash_mcfm_qqvvqq(79,:) = (/ abot_ , str_ , abot_ , str_ /)
148  hash_mcfm_qqvvqq(80,:) = (/ astr_ , up_ , astr_ , up_ /)
149  hash_mcfm_qqvvqq(81,:) = (/ abot_ , up_ , abot_ , up_ /)
150  hash_mcfm_qqvvqq(82,:) = (/ abot_ , chm_ , abot_ , chm_ /)
151  hash_mcfm_qqvvqq(83,:) = (/ achm_ , dn_ , achm_ , dn_ /)
152  hash_mcfm_qqvvqq(84,:) = (/ dn_ , dn_ , dn_ , dn_ /)
153  hash_mcfm_qqvvqq(85,:) = (/ achm_ , str_ , achm_ , str_ /)
154  hash_mcfm_qqvvqq(86,:) = (/ str_ , str_ , str_ , str_ /)
155  hash_mcfm_qqvvqq(87,:) = (/ bot_ , bot_ , bot_ , bot_ /)
156  hash_mcfm_qqvvqq(88,:) = (/ chm_ , aup_ , aup_ , chm_ /)
157  hash_mcfm_qqvvqq(89,:) = (/ str_ , adn_ , adn_ , str_ /)
158  hash_mcfm_qqvvqq(90,:) = (/ bot_ , adn_ , adn_ , bot_ /)
159  hash_mcfm_qqvvqq(91,:) = (/ bot_ , astr_ , astr_ , bot_ /)
160  hash_mcfm_qqvvqq(92,:) = (/ str_ , aup_ , aup_ , str_ /)
161  hash_mcfm_qqvvqq(93,:) = (/ bot_ , aup_ , aup_ , bot_ /)
162  hash_mcfm_qqvvqq(94,:) = (/ bot_ , achm_ , achm_ , bot_ /)
163  hash_mcfm_qqvvqq(95,:) = (/ chm_ , adn_ , adn_ , chm_ /)
164  hash_mcfm_qqvvqq(96,:) = (/ chm_ , up_ , up_ , chm_ /)
165  hash_mcfm_qqvvqq(97,:) = (/ chm_ , astr_ , astr_ , chm_ /)
166  hash_mcfm_qqvvqq(98,:) = (/ str_ , dn_ , dn_ , str_ /)
167  hash_mcfm_qqvvqq(99,:) = (/ bot_ , dn_ , dn_ , bot_ /)
168  hash_mcfm_qqvvqq(100,:) = (/ bot_ , str_ , str_ , bot_ /)
169  hash_mcfm_qqvvqq(101,:) = (/ chm_ , achm_ , achm_ , chm_ /)
170  hash_mcfm_qqvvqq(102,:) = (/ bot_ , up_ , up_ , bot_ /)
171  hash_mcfm_qqvvqq(103,:) = (/ str_ , astr_ , astr_ , str_ /)
172 
173  hash_mcfm_qqvvqq(104,:) = (/ bot_ , abot_ , abot_ , bot_ /)
174  hash_mcfm_qqvvqq(105,:) = (/ up_ , achm_ , achm_ , up_ /)
175  hash_mcfm_qqvvqq(106,:) = (/ dn_ , astr_ , astr_ , dn_ /)
176  hash_mcfm_qqvvqq(107,:) = (/ dn_ , abot_ , abot_ , dn_ /)
177  hash_mcfm_qqvvqq(108,:) = (/ str_ , abot_ , abot_ , str_ /)
178  hash_mcfm_qqvvqq(109,:) = (/ up_ , astr_ , astr_ , up_ /)
179  hash_mcfm_qqvvqq(110,:) = (/ up_ , abot_ , abot_ , up_ /)
180  hash_mcfm_qqvvqq(111,:) = (/ chm_ , abot_ , abot_ , chm_ /)
181  hash_mcfm_qqvvqq(112,:) = (/ dn_ , achm_ , achm_ , dn_ /)
182  hash_mcfm_qqvvqq(113,:) = (/ astr_ , achm_ , achm_ , astr_ /)
183  hash_mcfm_qqvvqq(114,:) = (/ str_ , achm_ , achm_ , str_ /)
184  hash_mcfm_qqvvqq(115,:) = (/ bot_ , chm_ , chm_ , bot_ /)
185  hash_mcfm_qqvvqq(116,:) = (/ astr_ , adn_ , astr_ , adn_ /)
186  hash_mcfm_qqvvqq(117,:) = (/ up_ , aup_ , achm_ , chm_ /)
187  hash_mcfm_qqvvqq(118,:) = (/ abot_ , adn_ , abot_ , adn_ /)
188  hash_mcfm_qqvvqq(119,:) = (/ dn_ , adn_ , abot_ , bot_ /)
189  hash_mcfm_qqvvqq(120,:) = (/ str_ , astr_ , abot_ , bot_ /)
190  hash_mcfm_qqvvqq(121,:) = (/ up_ , aup_ , astr_ , str_ /)
191  hash_mcfm_qqvvqq(122,:) = (/ up_ , aup_ , abot_ , bot_ /)
192  hash_mcfm_qqvvqq(123,:) = (/ chm_ , achm_ , abot_ , bot_ /)
193  hash_mcfm_qqvvqq(124,:) = (/ dn_ , adn_ , achm_ , chm_ /)
194  hash_mcfm_qqvvqq(125,:) = (/ chm_ , dn_ , dn_ , chm_ /)
195  hash_mcfm_qqvvqq(126,:) = (/ abot_ , astr_ , abot_ , astr_ /)
196  hash_mcfm_qqvvqq(127,:) = (/ chm_ , achm_ , aup_ , up_ /)
197  hash_mcfm_qqvvqq(128,:) = (/ str_ , astr_ , adn_ , dn_ /)
198  hash_mcfm_qqvvqq(129,:) = (/ astr_ , dn_ , achm_ , up_ /)
199  hash_mcfm_qqvvqq(130,:) = (/ aup_ , chm_ , adn_ , str_ /)
200  hash_mcfm_qqvvqq(131,:) = (/ up_ , str_ , up_ , str_ /)
201  hash_mcfm_qqvvqq(132,:) = (/ achm_ , astr_ , achm_ , astr_ /)
202  hash_mcfm_qqvvqq(133,:) = (/ bot_ , abot_ , adn_ , dn_ /)
203  hash_mcfm_qqvvqq(134,:) = (/ bot_ , abot_ , astr_ , str_ /)
204  hash_mcfm_qqvvqq(135,:) = (/ str_ , astr_ , aup_ , up_ /)
205  hash_mcfm_qqvvqq(136,:) = (/ bot_ , abot_ , aup_ , up_ /)
206  hash_mcfm_qqvvqq(137,:) = (/ bot_ , abot_ , achm_ , chm_ /)
207  hash_mcfm_qqvvqq(138,:) = (/ chm_ , achm_ , adn_ , dn_ /)
208  hash_mcfm_qqvvqq(139,:) = (/ chm_ , str_ , str_ , chm_ /)
209  hash_mcfm_qqvvqq(140,:) = (/ chm_ , achm_ , astr_ , str_ /)
210  hash_mcfm_qqvvqq(141,:) = (/ chm_ , astr_ , adn_ , up_ /)
211  hash_mcfm_qqvvqq(142,:) = (/ str_ , achm_ , aup_ , dn_ /)
212  hash_mcfm_qqvvqq(143,:) = (/ aup_ , up_ , achm_ , chm_ /)
213  hash_mcfm_qqvvqq(144,:) = (/ abot_ , achm_ , abot_ , achm_ /)
214  hash_mcfm_qqvvqq(145,:) = (/ adn_ , dn_ , abot_ , bot_ /)
215  hash_mcfm_qqvvqq(146,:) = (/ astr_ , str_ , abot_ , bot_ /)
216  hash_mcfm_qqvvqq(147,:) = (/ aup_ , up_ , astr_ , str_ /)
217  hash_mcfm_qqvvqq(148,:) = (/ aup_ , up_ , abot_ , bot_ /)
218  hash_mcfm_qqvvqq(149,:) = (/ achm_ , chm_ , abot_ , bot_ /)
219  hash_mcfm_qqvvqq(150,:) = (/ adn_ , dn_ , achm_ , chm_ /)
220  hash_mcfm_qqvvqq(151,:) = (/ astr_ , aup_ , astr_ , aup_ /)
221  hash_mcfm_qqvvqq(152,:) = (/ abot_ , aup_ , abot_ , aup_ /)
222  hash_mcfm_qqvvqq(153,:) = (/ achm_ , chm_ , aup_ , up_ /)
223  hash_mcfm_qqvvqq(154,:) = (/ astr_ , str_ , adn_ , dn_ /)
224  hash_mcfm_qqvvqq(155,:) = (/ abot_ , bot_ , adn_ , dn_ /)
225  hash_mcfm_qqvvqq(156,:) = (/ abot_ , bot_ , astr_ , str_ /)
226  hash_mcfm_qqvvqq(157,:) = (/ astr_ , str_ , aup_ , up_ /)
227  hash_mcfm_qqvvqq(158,:) = (/ abot_ , bot_ , aup_ , up_ /)
228  hash_mcfm_qqvvqq(159,:) = (/ abot_ , bot_ , achm_ , chm_ /)
229  hash_mcfm_qqvvqq(160,:) = (/ achm_ , chm_ , adn_ , dn_ /)
230  hash_mcfm_qqvvqq(161,:) = (/ achm_ , aup_ , achm_ , aup_ /)
231  hash_mcfm_qqvvqq(162,:) = (/ achm_ , chm_ , astr_ , str_ /)
232  hash_mcfm_qqvvqq(163,:) = (/ astr_ , chm_ , adn_ , up_ /)
233  hash_mcfm_qqvvqq(164,:) = (/ achm_ , str_ , aup_ , dn_ /)
234 
235 end subroutine
236 
237 subroutine init_hash_mcfm_qqvvqqstrong()
238 implicit none
239 integer :: ih
240 
241  ih=1
242  ! 1-25
243  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, up_, dn_, up_ /); ih=ih+1
244  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, dn_, dn_, up_ /); ih=ih+1
245  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, chm_, up_, chm_ /); ih=ih+1
246  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, str_, dn_, str_ /); ih=ih+1
247  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, bot_, dn_, bot_ /); ih=ih+1
248  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, bot_, str_, bot_ /); ih=ih+1
249  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, str_, up_, str_ /); ih=ih+1
250  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, bot_, up_, bot_ /); ih=ih+1
251  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, bot_, chm_, bot_ /); ih=ih+1
252  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, chm_, dn_, chm_ /); ih=ih+1
253  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, chm_, str_, chm_ /); ih=ih+1
254  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, up_, up_, up_ /); ih=ih+1
255  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, chm_, chm_, chm_ /); ih=ih+1
256  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, dn_, dn_, dn_ /); ih=ih+1
257  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, str_, str_, str_ /); ih=ih+1
258  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, bot_, bot_, bot_ /); ih=ih+1
259  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, up_, up_, chm_ /); ih=ih+1
260  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, dn_, dn_, str_ /); ih=ih+1
261  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, dn_, dn_, bot_ /); ih=ih+1
262  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, str_, str_, bot_ /); ih=ih+1
263  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, up_, up_, str_ /); ih=ih+1
264  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, up_, up_, bot_ /); ih=ih+1
265  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, chm_, chm_, bot_ /); ih=ih+1
266  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, dn_, dn_, chm_ /); ih=ih+1
267  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, str_, str_, chm_ /); ih=ih+1
268  !26-50
269  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, aup_, achm_, aup_ /); ih=ih+1
270  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, adn_, astr_, adn_ /); ih=ih+1
271  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, adn_, abot_, adn_ /); ih=ih+1
272  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, astr_, abot_, astr_ /); ih=ih+1
273  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, aup_, astr_, aup_ /); ih=ih+1
274  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, aup_, abot_, aup_ /); ih=ih+1
275  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, achm_, abot_, achm_ /); ih=ih+1
276  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, adn_, achm_, adn_ /); ih=ih+1
277  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, adn_, aup_, adn_ /); ih=ih+1
278  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, astr_, achm_, astr_ /); ih=ih+1
279  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, aup_, aup_, aup_ /); ih=ih+1
280  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, achm_, achm_, achm_ /); ih=ih+1
281  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, adn_, adn_, adn_ /); ih=ih+1
282  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, astr_, astr_, astr_ /); ih=ih+1
283  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, abot_, abot_, abot_ /); ih=ih+1
284  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, achm_, achm_, aup_ /); ih=ih+1
285  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, astr_, astr_, adn_ /); ih=ih+1
286  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, abot_, abot_, adn_ /); ih=ih+1
287  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, abot_, abot_, astr_ /); ih=ih+1
288  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, astr_, astr_, aup_ /); ih=ih+1
289  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, abot_, abot_, aup_ /); ih=ih+1
290  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, abot_, abot_, achm_ /); ih=ih+1
291  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, achm_, achm_, adn_ /); ih=ih+1
292  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, aup_, aup_, adn_ /); ih=ih+1
293  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, achm_, achm_, astr_ /); ih=ih+1
294  !51-100
295  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, chm_, aup_, chm_ /); ih=ih+1
296  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, str_, adn_, str_ /); ih=ih+1
297  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, bot_, adn_, bot_ /); ih=ih+1
298  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, bot_, astr_, bot_ /); ih=ih+1
299  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, str_, aup_, str_ /); ih=ih+1
300  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, bot_, aup_, bot_ /); ih=ih+1
301  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, bot_, achm_, bot_ /); ih=ih+1
302  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, chm_, adn_, chm_ /); ih=ih+1
303  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, up_, adn_, up_ /); ih=ih+1
304  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, chm_, astr_, chm_ /); ih=ih+1
305  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, aup_, up_ /); ih=ih+1
306  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, achm_, chm_ /); ih=ih+1
307  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, adn_, dn_ /); ih=ih+1
308  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, astr_, str_ /); ih=ih+1
309  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, abot_, bot_ /); ih=ih+1
310  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, up_, achm_, up_ /); ih=ih+1
311  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, dn_, astr_, dn_ /); ih=ih+1
312  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, dn_, abot_, dn_ /); ih=ih+1
313  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, str_, abot_, str_ /); ih=ih+1
314  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, up_, astr_, up_ /); ih=ih+1
315  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, up_, abot_, up_ /); ih=ih+1
316  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, chm_, abot_, chm_ /); ih=ih+1
317  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, dn_, achm_, dn_ /); ih=ih+1
318  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, dn_, aup_, dn_ /); ih=ih+1
319  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, str_, achm_, str_ /); ih=ih+1
320  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, aup_, aup_, chm_ /); ih=ih+1
321  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, adn_, adn_, str_ /); ih=ih+1
322  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, adn_, adn_, bot_ /); ih=ih+1
323  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, astr_, astr_, bot_ /); ih=ih+1
324  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, aup_, aup_, str_ /); ih=ih+1
325  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, aup_, aup_, bot_ /); ih=ih+1
326  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, achm_, achm_, bot_ /); ih=ih+1
327  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, adn_, adn_, chm_ /); ih=ih+1
328  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, adn_, adn_, up_ /); ih=ih+1
329  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, astr_, astr_, chm_ /); ih=ih+1
330  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, aup_, up_ /); ih=ih+1
331  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, achm_, chm_ /); ih=ih+1
332  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, adn_, dn_ /); ih=ih+1
333  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, astr_, str_ /); ih=ih+1
334  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, abot_, bot_ /); ih=ih+1
335  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, achm_, achm_, up_ /); ih=ih+1
336  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, astr_, astr_, dn_ /); ih=ih+1
337  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, abot_, abot_, dn_ /); ih=ih+1
338  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, abot_, abot_, str_ /); ih=ih+1
339  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, astr_, astr_, up_ /); ih=ih+1
340  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, abot_, abot_, up_ /); ih=ih+1
341  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, abot_, abot_, chm_ /); ih=ih+1
342  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, achm_, achm_, dn_ /); ih=ih+1
343  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, aup_, aup_, dn_ /); ih=ih+1
344  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, achm_, achm_, str_ /); ih=ih+1
345  !101-140
346  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, achm_, chm_ /); ih=ih+1
347  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, astr_, str_ /); ih=ih+1
348  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, abot_, bot_ /); ih=ih+1
349  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, abot_, bot_ /); ih=ih+1
350  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, astr_, str_ /); ih=ih+1
351  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, abot_, bot_ /); ih=ih+1
352  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, abot_, bot_ /); ih=ih+1
353  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, achm_, chm_ /); ih=ih+1
354  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, aup_, up_ /); ih=ih+1
355  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, achm_, chm_ /); ih=ih+1
356  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, aup_, up_ /); ih=ih+1
357  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, adn_, dn_ /); ih=ih+1
358  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, adn_, dn_ /); ih=ih+1
359  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, astr_, str_ /); ih=ih+1
360  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, aup_, up_ /); ih=ih+1
361  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, aup_, up_ /); ih=ih+1
362  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, achm_, chm_ /); ih=ih+1
363  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, adn_, dn_ /); ih=ih+1
364  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, adn_, dn_ /); ih=ih+1
365  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, astr_, str_ /); ih=ih+1
366  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, achm_, chm_ /); ih=ih+1
367  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, astr_, str_ /); ih=ih+1
368  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, abot_, bot_ /); ih=ih+1
369  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, abot_, bot_ /); ih=ih+1
370  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, astr_, str_ /); ih=ih+1
371  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, abot_, bot_ /); ih=ih+1
372  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, abot_, bot_ /); ih=ih+1
373  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, achm_, chm_ /); ih=ih+1
374  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, aup_, up_ /); ih=ih+1
375  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, achm_, chm_ /); ih=ih+1
376  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, aup_, up_ /); ih=ih+1
377  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, adn_, dn_ /); ih=ih+1
378  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, adn_, dn_ /); ih=ih+1
379  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, astr_, str_ /); ih=ih+1
380  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, aup_, up_ /); ih=ih+1
381  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, aup_, up_ /); ih=ih+1
382  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, achm_, chm_ /); ih=ih+1
383  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, adn_, dn_ /); ih=ih+1
384  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, adn_, dn_ /); ih=ih+1
385  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, astr_, str_ /); ih=ih+1
386  !141-150
387  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, adn_, glu_, glu_ /); ih=ih+1
388  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, aup_, glu_, glu_ /); ih=ih+1
389  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, astr_, glu_, glu_ /); ih=ih+1
390  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, achm_, glu_, glu_ /); ih=ih+1
391  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, abot_, glu_, glu_ /); ih=ih+1
392  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, dn_, glu_, glu_ /); ih=ih+1
393  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, up_, glu_, glu_ /); ih=ih+1
394  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, str_, glu_, glu_ /); ih=ih+1
395  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, chm_, glu_, glu_ /); ih=ih+1
396  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, bot_, glu_, glu_ /); ih=ih+1
397  !151-160
398  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, dn_, glu_, dn_ /); ih=ih+1
399  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, up_, glu_, up_ /); ih=ih+1
400  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, str_, glu_, str_ /); ih=ih+1
401  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, chm_, glu_, chm_ /); ih=ih+1
402  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, bot_, glu_, bot_ /); ih=ih+1
403  hash_mcfm_qqvvqqstrong(ih,:) = (/ dn_, glu_, glu_, dn_ /); ih=ih+1
404  hash_mcfm_qqvvqqstrong(ih,:) = (/ up_, glu_, glu_, up_ /); ih=ih+1
405  hash_mcfm_qqvvqqstrong(ih,:) = (/ str_, glu_, glu_, str_ /); ih=ih+1
406  hash_mcfm_qqvvqqstrong(ih,:) = (/ chm_, glu_, glu_, chm_ /); ih=ih+1
407  hash_mcfm_qqvvqqstrong(ih,:) = (/ bot_, glu_, glu_, bot_ /); ih=ih+1
408  !161-170
409  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, adn_, adn_, glu_ /); ih=ih+1
410  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, aup_, aup_, glu_ /); ih=ih+1
411  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, astr_, astr_, glu_ /); ih=ih+1
412  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, achm_, achm_, glu_ /); ih=ih+1
413  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, abot_, abot_, glu_ /); ih=ih+1
414  hash_mcfm_qqvvqqstrong(ih,:) = (/ adn_, glu_, adn_, glu_ /); ih=ih+1
415  hash_mcfm_qqvvqqstrong(ih,:) = (/ aup_, glu_, aup_, glu_ /); ih=ih+1
416  hash_mcfm_qqvvqqstrong(ih,:) = (/ astr_, glu_, astr_, glu_ /); ih=ih+1
417  hash_mcfm_qqvvqqstrong(ih,:) = (/ achm_, glu_, achm_, glu_ /); ih=ih+1
418  hash_mcfm_qqvvqqstrong(ih,:) = (/ abot_, glu_, abot_, glu_ /); ih=ih+1
419  !171-175
420  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, glu_, adn_, dn_ /); ih=ih+1
421  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, glu_, aup_, up_ /); ih=ih+1
422  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, glu_, astr_, str_ /); ih=ih+1
423  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, glu_, achm_, chm_ /); ih=ih+1
424  hash_mcfm_qqvvqqstrong(ih,:) = (/ glu_, glu_, abot_, bot_ /); ih=ih+1
425 
426  if (ih .ne. hash_mcfm_qqvvqqstrong_size+1) then
427  print *,"Init_Hash_MCFM_qqVVqqStrong: Hash size does not match compiled parameter!"
428  stop
429  endif
430 
431 end subroutine
432 
433 subroutine init_hash_mcfm_qqvvll()
434 implicit none
435 integer :: i,j,ih
436 integer :: Zdecarray(6,2),Wplusdecarray(3,2),Wminusdecarray(3,2)
437 integer :: Zprodarray(5,2),Wplusprodarray(2,2),Wminusprodarray(2,2)
438 
439  zprodarray(1,:) = (/ up_, aup_ /)
440  zprodarray(2,:) = (/ dn_, adn_ /)
441  zprodarray(3,:) = (/ chm_, achm_ /)
442  zprodarray(4,:) = (/ str_, astr_ /)
443  zprodarray(5,:) = (/ bot_, abot_ /)
444  wplusprodarray(1,:) = (/ up_, adn_ /)
445  wplusprodarray(2,:) = (/ chm_, astr_ /)
446  wminusprodarray(1,:) = (/ dn_, aup_ /)
447  wminusprodarray(2,:) = (/ str_, achm_ /)
448 
449  zdecarray(1,:) = (/ elp_, elm_ /)
450  zdecarray(2,:) = (/ mup_, mum_ /)
451  zdecarray(3,:) = (/ tap_, tam_ /)
452  zdecarray(4,:) = (/ anue_, nue_ /)
453  zdecarray(5,:) = (/ anum_, num_ /)
454  zdecarray(6,:) = (/ anut_, nut_ /)
455  wplusdecarray(1,:) = (/ elp_, nue_ /)
456  wplusdecarray(2,:) = (/ mup_, num_ /)
457  wplusdecarray(3,:) = (/ tap_, nut_ /)
458  wminusdecarray(1,:) = (/ anue_, elm_ /)
459  wminusdecarray(2,:) = (/ anum_, mum_ /)
460  wminusdecarray(3,:) = (/ anut_, tam_ /)
461 
462  ih=1
463  do i=1,5
464  do j=1,6
465  hash_mcfm_qqvvll(ih,:) = (/ zprodarray(i,1), zprodarray(i,2), zdecarray(j,1), zdecarray(j,2) /); ih=ih+1
466  hash_mcfm_qqvvll(ih,:) = (/ zprodarray(i,2), zprodarray(i,1), zdecarray(j,1), zdecarray(j,2) /); ih=ih+1
467  enddo
468  enddo
469  do i=1,2
470  do j=1,3
471  hash_mcfm_qqvvll(ih,:) = (/ wplusprodarray(i,1), wplusprodarray(i,2), wplusdecarray(j,1), wplusdecarray(j,2) /); ih=ih+1
472  hash_mcfm_qqvvll(ih,:) = (/ wplusprodarray(i,2), wplusprodarray(i,1), wplusdecarray(j,1), wplusdecarray(j,2) /); ih=ih+1
473  enddo
474  enddo
475  do i=1,2
476  do j=1,3
477  hash_mcfm_qqvvll(ih,:) = (/ wminusprodarray(i,1), wminusprodarray(i,2), wminusdecarray(j,1), wminusdecarray(j,2) /); ih=ih+1
478  hash_mcfm_qqvvll(ih,:) = (/ wminusprodarray(i,2), wminusprodarray(i,1), wminusdecarray(j,1), wminusdecarray(j,2) /); ih=ih+1
479  enddo
480  enddo
481 
482  if (ih .ne. hash_mcfm_qqvvll_size+1) then
483  print *,"Init_Hash_MCFM_qqVVll: Hash size does not match compiled parameter!"
484  stop
485  endif
486 
487 end subroutine
488 
490 implicit none
491 integer :: ch,i,j
493  do i=1,5; do j=1,5
494  hash_mcfm_qqvvqq_gen(20*i+4*j-23,:)=(/-i,-j,0,0/)
495  hash_mcfm_qqvvqq_gen(20*i+4*j-22,:)=(/-i,j,0,0/)
496  hash_mcfm_qqvvqq_gen(20*i+4*j-21,:)=(/i,-j,0,0/)
497  hash_mcfm_qqvvqq_gen(20*i+4*j-20,:)=(/i,j,0,0/)
498  enddo; enddo
499  return
500 end subroutine
501 
502 subroutine init_hash_onshellvbf()
503 implicit none
504 integer,parameter :: zz=1, ww=0
505  hash_onshellvbf( 1,1:3) = (/ 2, 1, zz/)
506  hash_onshellvbf( 2,1:3) = (/ 2, 1, ww/)
507  hash_onshellvbf( 3,1:3) = (/ 2,-2, zz/)
508  hash_onshellvbf( 4,1:3) = (/ 2,-2, ww/)
509  hash_onshellvbf( 5,1:3) = (/ 3, 2, zz/)
510  hash_onshellvbf( 6,1:3) = (/ 3, 2, ww/)
511  hash_onshellvbf( 7,1:3) = (/ 1,-1, zz/)
512  hash_onshellvbf( 8,1:3) = (/ 1,-1, ww/)
513  hash_onshellvbf( 9,1:3) = (/ 2,-4, zz/)
514  hash_onshellvbf( 10,1:3) = (/ 2,-4, ww/)
515  hash_onshellvbf( 11,1:3) = (/ 1,-3, zz/)
516  hash_onshellvbf( 12,1:3) = (/ 1,-3, ww/)
517  hash_onshellvbf( 13,1:3) = (/ 4, 1, zz/)
518  hash_onshellvbf( 14,1:3) = (/ 4, 1, ww/)
519  hash_onshellvbf( 15,1:3) = (/ 2, 2, zz/)
520  hash_onshellvbf( 16,1:3) = (/-1,-2, zz/)
521  hash_onshellvbf( 17,1:3) = (/-1,-2, ww/)
522  hash_onshellvbf( 18,1:3) = (/ 2,-1, zz/)
523  hash_onshellvbf( 19,1:3) = (/ 1, 1, zz/)
524  hash_onshellvbf( 20,1:3) = (/ 3,-1, zz/)
525  hash_onshellvbf( 21,1:3) = (/ 3,-1, ww/)
526  hash_onshellvbf( 22,1:3) = (/ 2,-3, zz/)
527  hash_onshellvbf( 23,1:3) = (/-2,-3, zz/)
528  hash_onshellvbf( 24,1:3) = (/-2,-3, ww/)
529  hash_onshellvbf( 25,1:3) = (/-1,-4, zz/)
530  hash_onshellvbf( 26,1:3) = (/-1,-4, ww/)
531  hash_onshellvbf( 27,1:3) = (/ 3,-3, zz/)
532  hash_onshellvbf( 28,1:3) = (/ 3,-3, ww/)
533  hash_onshellvbf( 29,1:3) = (/ 1,-2, zz/)
534  hash_onshellvbf( 30,1:3) = (/ 3, 1, zz/)
535  hash_onshellvbf( 31,1:3) = (/ 4,-2, zz/)
536  hash_onshellvbf( 32,1:3) = (/ 4,-2, ww/)
537  hash_onshellvbf( 33,1:3) = (/ 4, 2, zz/)
538  hash_onshellvbf( 34,1:3) = (/ 5, 2, zz/)
539  hash_onshellvbf( 35,1:3) = (/ 2,-5, zz/)
540  hash_onshellvbf( 36,1:3) = (/-3,-4, zz/)
541  hash_onshellvbf( 37,1:3) = (/-3,-4, ww/)
542  hash_onshellvbf( 38,1:3) = (/ 4, 3, zz/)
543  hash_onshellvbf( 39,1:3) = (/ 4, 3, ww/)
544  hash_onshellvbf( 40,1:3) = (/ 1,-4, zz/)
545  hash_onshellvbf( 41,1:3) = (/ 5, 1, zz/)
546  hash_onshellvbf( 42,1:3) = (/ 1,-5, zz/)
547  hash_onshellvbf( 43,1:3) = (/ 4,-4, zz/)
548  hash_onshellvbf( 44,1:3) = (/ 4,-4, ww/)
549  hash_onshellvbf( 45,1:3) = (/-1,-3, zz/)
550  hash_onshellvbf( 46,1:3) = (/-1,-1, zz/)
551  hash_onshellvbf( 47,1:3) = (/ 3,-2, zz/)
552  hash_onshellvbf( 48,1:3) = (/ 4,-1, zz/)
553  hash_onshellvbf( 49,1:3) = (/-1,-5, zz/)
554  hash_onshellvbf( 50,1:3) = (/ 5,-1, zz/)
555  hash_onshellvbf( 51,1:3) = (/-2,-2, zz/)
556  hash_onshellvbf( 52,1:3) = (/-2,-4, zz/)
557  hash_onshellvbf( 53,1:3) = (/ 3, 3, zz/)
558  hash_onshellvbf( 54,1:3) = (/-3,-3, zz/)
559  hash_onshellvbf( 55,1:3) = (/ 3,-4, zz/)
560  hash_onshellvbf( 56,1:3) = (/ 4,-3, zz/)
561  hash_onshellvbf( 57,1:3) = (/ 5,-2, zz/)
562  hash_onshellvbf( 58,1:3) = (/-2,-5, zz/)
563  hash_onshellvbf( 59,1:3) = (/ 5, 3, zz/)
564  hash_onshellvbf( 60,1:3) = (/ 3,-5, zz/)
565  hash_onshellvbf( 61,1:3) = (/-3,-5, zz/)
566  hash_onshellvbf( 62,1:3) = (/ 5,-3, zz/)
567  hash_onshellvbf( 63,1:3) = (/-4,-5, zz/)
568  hash_onshellvbf( 64,1:3) = (/ 5, 4, zz/)
569  hash_onshellvbf( 65,1:3) = (/ 4,-5, zz/)
570  hash_onshellvbf( 66,1:3) = (/ 5,-4, zz/)
571  hash_onshellvbf( 67,1:3) = (/ 5,-5, zz/)
572  hash_onshellvbf( 68,1:3) = (/ 4, 4, zz/)
573  hash_onshellvbf( 69,1:3) = (/-4,-4, zz/)
574  hash_onshellvbf( 70,1:3) = (/-5,-5, zz/)
575  hash_onshellvbf( 71,1:3) = (/ 5, 5, zz/)
576 
577  hash_onshellvbf( 72:,:) = 0
578  hash_onshellvbf( 72:,3) = -1
579 end subroutine
580 
581 subroutine init_hash_onshellvbf_nosplit()
582 implicit none
583 integer, parameter :: nijchannels = 68
584 integer, parameter :: zzww=2, zz=1, ww=0
585  ! u-d
586  hash_onshellvbf_nosplit( 1,1:3) = (/ pdfup_,pdfdn_,zzww/)
587  hash_onshellvbf_nosplit( 2,1:3) = (/ pdfup_,pdfstr_,zzww/)
588  hash_onshellvbf_nosplit( 3,1:3) = (/ pdfup_,pdfbot_,zzww/)
589  hash_onshellvbf_nosplit( 4,1:3) = (/ pdfchm_,pdfdn_,zzww/)
590  hash_onshellvbf_nosplit( 5,1:3) = (/ pdfchm_,pdfstr_,zzww/)
591  hash_onshellvbf_nosplit( 6,1:3) = (/ pdfchm_,pdfbot_,zzww/)
592 
593  ! ub-db
594  hash_onshellvbf_nosplit( 7,1:3) = (/ pdfaup_,pdfadn_,zzww/)
595  hash_onshellvbf_nosplit( 8,1:3) = (/ pdfaup_,pdfastr_,zzww/)
596  hash_onshellvbf_nosplit( 9,1:3) = (/ pdfaup_,pdfabot_,zzww/)
597  hash_onshellvbf_nosplit( 10,1:3) = (/ pdfachm_,pdfadn_,zzww/)
598  hash_onshellvbf_nosplit( 11,1:3) = (/ pdfachm_,pdfastr_,zzww/)
599  hash_onshellvbf_nosplit( 12,1:3) = (/ pdfachm_,pdfabot_,zzww/)
600 
601  ! u-ub
602  hash_onshellvbf_nosplit( 13,1:3) = (/ pdfup_,pdfaup_,ww/)
603  hash_onshellvbf_nosplit( 14,1:3) = (/ pdfup_,pdfaup_,zz/)
604  hash_onshellvbf_nosplit( 15,1:3) = (/ pdfup_,pdfachm_,ww/)
605  hash_onshellvbf_nosplit( 16,1:3) = (/ pdfup_,pdfachm_,zz/)
606  hash_onshellvbf_nosplit( 17,1:3) = (/ pdfchm_,pdfaup_,ww/)
607  hash_onshellvbf_nosplit( 18,1:3) = (/ pdfchm_,pdfaup_,zz/)
608  hash_onshellvbf_nosplit( 19,1:3) = (/ pdfchm_,pdfachm_,ww/)
609  hash_onshellvbf_nosplit( 20,1:3) = (/ pdfchm_,pdfachm_,zz/)
610 
611  ! d-db
612  hash_onshellvbf_nosplit( 21,1:3) = (/ pdfdn_,pdfadn_,ww/)
613  hash_onshellvbf_nosplit( 22,1:3) = (/ pdfdn_,pdfadn_,zz/)
614  hash_onshellvbf_nosplit( 23,1:3) = (/ pdfdn_,pdfastr_,ww/)
615  hash_onshellvbf_nosplit( 24,1:3) = (/ pdfdn_,pdfastr_,zz/)
616  hash_onshellvbf_nosplit( 25,1:3) = (/ pdfdn_,pdfabot_,ww/)
617  hash_onshellvbf_nosplit( 26,1:3) = (/ pdfdn_,pdfabot_,zz/)
618  hash_onshellvbf_nosplit( 27,1:3) = (/ pdfstr_,pdfadn_,ww/)
619  hash_onshellvbf_nosplit( 28,1:3) = (/ pdfstr_,pdfadn_,zz/)
620  hash_onshellvbf_nosplit( 29,1:3) = (/ pdfstr_,pdfastr_,ww/)
621  hash_onshellvbf_nosplit( 30,1:3) = (/ pdfstr_,pdfastr_,zz/)
622  hash_onshellvbf_nosplit( 31,1:3) = (/ pdfstr_,pdfabot_,ww/)
623  hash_onshellvbf_nosplit( 32,1:3) = (/ pdfstr_,pdfabot_,zz/)
624 
625  ! b-db
626  ! Some of these will be inefficient
627  hash_onshellvbf_nosplit( 33,1:3) = (/ pdfbot_,pdfadn_,ww/)
628  hash_onshellvbf_nosplit( 34,1:3) = (/ pdfbot_,pdfadn_,zz/)
629  hash_onshellvbf_nosplit( 35,1:3) = (/ pdfbot_,pdfastr_,ww/)
630  hash_onshellvbf_nosplit( 36,1:3) = (/ pdfbot_,pdfastr_,zz/)
631  hash_onshellvbf_nosplit( 37,1:3) = (/ pdfbot_,pdfabot_,ww/)
632  hash_onshellvbf_nosplit( 38,1:3) = (/ pdfbot_,pdfabot_,zz/)
633 
634  ! u-u
635  hash_onshellvbf_nosplit( 39,1:3) = (/ pdfup_,pdfup_,zz/)
636  hash_onshellvbf_nosplit( 40,1:3) = (/ pdfup_,pdfchm_,zz/)
637  hash_onshellvbf_nosplit( 41,1:3) = (/ pdfchm_,pdfchm_,zz/)
638 
639  ! d-d
640  hash_onshellvbf_nosplit( 42,1:3) = (/ pdfdn_,pdfdn_,zz/)
641  hash_onshellvbf_nosplit( 43,1:3) = (/ pdfdn_,pdfstr_,zz/)
642  hash_onshellvbf_nosplit( 44,1:3) = (/ pdfdn_,pdfbot_,zz/)
643  hash_onshellvbf_nosplit( 45,1:3) = (/ pdfstr_,pdfstr_,zz/)
644  hash_onshellvbf_nosplit( 46,1:3) = (/ pdfstr_,pdfbot_,zz/)
645  hash_onshellvbf_nosplit( 47,1:3) = (/ pdfbot_,pdfbot_,zz/)
646 
647  ! u-db
648  hash_onshellvbf_nosplit( 48,1:3) = (/ pdfup_,pdfadn_,zz/)
649  hash_onshellvbf_nosplit( 49,1:3) = (/ pdfup_,pdfastr_,zz/)
650  hash_onshellvbf_nosplit( 50,1:3) = (/ pdfup_,pdfabot_,zz/)
651  hash_onshellvbf_nosplit( 51,1:3) = (/ pdfchm_,pdfadn_,zz/)
652  hash_onshellvbf_nosplit( 52,1:3) = (/ pdfchm_,pdfastr_,zz/)
653  hash_onshellvbf_nosplit( 53,1:3) = (/ pdfchm_,pdfabot_,zz/)
654 
655  ! d-ub
656  hash_onshellvbf_nosplit( 54,1:3) = (/ pdfdn_,pdfaup_,zz/)
657  hash_onshellvbf_nosplit( 55,1:3) = (/ pdfdn_,pdfachm_,zz/)
658  hash_onshellvbf_nosplit( 56,1:3) = (/ pdfstr_,pdfaup_,zz/)
659  hash_onshellvbf_nosplit( 57,1:3) = (/ pdfstr_,pdfachm_,zz/)
660  hash_onshellvbf_nosplit( 58,1:3) = (/ pdfbot_,pdfaup_,zz/)
661  hash_onshellvbf_nosplit( 59,1:3) = (/ pdfbot_,pdfachm_,zz/)
662 
663  ! ub-ub
664  hash_onshellvbf_nosplit( 60,1:3) = (/ pdfaup_,pdfaup_,zz/)
665  hash_onshellvbf_nosplit( 61,1:3) = (/ pdfaup_,pdfachm_,zz/)
666  hash_onshellvbf_nosplit( 62,1:3) = (/ pdfachm_,pdfachm_,zz/)
667 
668  ! db-db
669  hash_onshellvbf_nosplit( 63,1:3) = (/ pdfadn_,pdfadn_,zz/)
670  hash_onshellvbf_nosplit( 64,1:3) = (/ pdfadn_,pdfastr_,zz/)
671  hash_onshellvbf_nosplit( 65,1:3) = (/ pdfadn_,pdfabot_,zz/)
672 
673  hash_onshellvbf_nosplit( 66,1:3) = (/ pdfastr_,pdfastr_,zz/)
674  hash_onshellvbf_nosplit( 67,1:3) = (/ pdfastr_,pdfabot_,zz/)
675  hash_onshellvbf_nosplit( 68,1:3) = (/ pdfabot_,pdfabot_,zz/)
676 
677  !
678  hash_onshellvbf_nosplit( nijchannels+1:,:) = 0
679  hash_onshellvbf_nosplit( nijchannels+1:,3) = -1
680 return
681 end subroutine
682 
683 subroutine init_hash_onshellhjj()
684 implicit none
685  hash_onshellhjj( 1,1:3) = (/ 0, 0, 1/)
686  hash_onshellhjj( 2,1:3) = (/ 0, 0, 2/)
687  hash_onshellhjj( 3,1:3) = (/ 2, 0, 1/)
688  hash_onshellhjj( 4,1:3) = (/ 1, 0, 1/)
689  hash_onshellhjj( 5,1:3) = (/ 0,-1, 1/)
690  hash_onshellhjj( 6,1:3) = (/ 0,-2, 1/)
691  hash_onshellhjj( 7,1:3) = (/ 3, 0, 1/)
692  hash_onshellhjj( 8,1:3) = (/ 0,-3, 1/)
693  hash_onshellhjj( 9,1:3) = (/ 4, 0, 1/)
694  hash_onshellhjj( 10,1:3) = (/ 0,-4, 1/)
695  hash_onshellhjj( 11,1:3) = (/ 5, 0, 1/)
696  hash_onshellhjj( 12,1:3) = (/ 0,-5, 1/)
697  hash_onshellhjj( 13,1:3) = (/ 2, 2, 1/)
698  hash_onshellhjj( 14,1:3) = (/ 2, 1, 1/)
699  hash_onshellhjj( 15,1:3) = (/ 2,-2, 1/)
700  hash_onshellhjj( 16,1:3) = (/ 2,-2, 2/)
701  hash_onshellhjj( 17,1:3) = (/ 2,-2, 3/)
702  hash_onshellhjj( 18,1:3) = (/ 1,-1, 1/)
703  hash_onshellhjj( 19,1:3) = (/ 1,-1, 2/)
704  hash_onshellhjj( 20,1:3) = (/ 1,-1, 3/)
705  hash_onshellhjj( 21,1:3) = (/ 2,-1, 1/)
706  hash_onshellhjj( 22,1:3) = (/ 1, 1, 1/)
707  hash_onshellhjj( 23,1:3) = (/ 3, 2, 1/)
708  hash_onshellhjj( 24,1:3) = (/ 2,-3, 1/)
709  hash_onshellhjj( 25,1:3) = (/ 4, 2, 1/)
710  hash_onshellhjj( 26,1:3) = (/ 1,-2, 1/)
711  hash_onshellhjj( 27,1:3) = (/ 2,-4, 1/)
712  hash_onshellhjj( 28,1:3) = (/ 1,-3, 1/)
713  hash_onshellhjj( 29,1:3) = (/ 2,-5, 1/)
714  hash_onshellhjj( 30,1:3) = (/ 3, 1, 1/)
715  hash_onshellhjj( 31,1:3) = (/ 5, 2, 1/)
716  hash_onshellhjj( 32,1:3) = (/ 4, 1, 1/)
717  hash_onshellhjj( 33,1:3) = (/ 1,-4, 1/)
718  hash_onshellhjj( 34,1:3) = (/ 5, 1, 1/)
719  hash_onshellhjj( 35,1:3) = (/ 1,-5, 1/)
720  hash_onshellhjj( 36,1:3) = (/-1,-2, 1/)
721  hash_onshellhjj( 37,1:3) = (/ 3,-1, 1/)
722  hash_onshellhjj( 38,1:3) = (/ 3,-3, 1/)
723  hash_onshellhjj( 39,1:3) = (/ 3,-3, 2/)
724  hash_onshellhjj( 40,1:3) = (/ 3,-3, 3/)
725  hash_onshellhjj( 41,1:3) = (/-2,-3, 1/)
726  hash_onshellhjj( 42,1:3) = (/-1,-3, 1/)
727  hash_onshellhjj( 43,1:3) = (/ 3,-2, 1/)
728  hash_onshellhjj( 44,1:3) = (/-1,-1, 1/)
729  hash_onshellhjj( 45,1:3) = (/ 4,-1, 1/)
730  hash_onshellhjj( 46,1:3) = (/-2,-2, 1/)
731  hash_onshellhjj( 47,1:3) = (/-1,-4, 1/)
732  hash_onshellhjj( 48,1:3) = (/ 4,-2, 1/)
733  hash_onshellhjj( 49,1:3) = (/-2,-4, 1/)
734  hash_onshellhjj( 50,1:3) = (/ 5,-1, 1/)
735  hash_onshellhjj( 51,1:3) = (/-1,-5, 1/)
736  hash_onshellhjj( 52,1:3) = (/ 4,-4, 1/)
737  hash_onshellhjj( 53,1:3) = (/ 4,-4, 2/)
738  hash_onshellhjj( 54,1:3) = (/ 4,-4, 3/)
739  hash_onshellhjj( 55,1:3) = (/ 4,-3, 1/)
740  hash_onshellhjj( 56,1:3) = (/ 4, 3, 1/)
741  hash_onshellhjj( 57,1:3) = (/ 3,-4, 1/)
742  hash_onshellhjj( 58,1:3) = (/-2,-5, 1/)
743  hash_onshellhjj( 59,1:3) = (/-3,-4, 1/)
744  hash_onshellhjj( 60,1:3) = (/ 5,-2, 1/)
745  hash_onshellhjj( 61,1:3) = (/ 3, 3, 1/)
746  hash_onshellhjj( 62,1:3) = (/-3,-3, 1/)
747  hash_onshellhjj( 63,1:3) = (/ 5, 3, 1/)
748  hash_onshellhjj( 64,1:3) = (/ 3,-5, 1/)
749  hash_onshellhjj( 65,1:3) = (/ 5,-3, 1/)
750  hash_onshellhjj( 66,1:3) = (/-3,-5, 1/)
751  hash_onshellhjj( 67,1:3) = (/ 5, 4, 1/)
752  hash_onshellhjj( 68,1:3) = (/ 5,-4, 1/)
753  hash_onshellhjj( 69,1:3) = (/-4,-5, 1/)
754  hash_onshellhjj( 70,1:3) = (/ 4,-5, 1/)
755  hash_onshellhjj( 71,1:3) = (/ 5,-5, 1/)
756  hash_onshellhjj( 72,1:3) = (/ 5,-5, 2/)
757  hash_onshellhjj( 73,1:3) = (/ 5,-5, 3/)
758  hash_onshellhjj( 74,1:3) = (/-4,-4, 1/)
759  hash_onshellhjj( 75,1:3) = (/ 4, 4, 1/)
760  hash_onshellhjj( 76,1:3) = (/-5,-5, 1/)
761  hash_onshellhjj( 77,1:3) = (/ 5, 5, 1/)
762 
763  hash_onshellhjj( 78:,:) = 0
764  hash_onshellhjj( 78:,3) = -1
765 return
766 end subroutine
767 
768 subroutine init_hash_onshellhjj_nosplit()
769 implicit none
770 integer, parameter :: nijchannels = 77
771  hash_onshellhjj_nosplit( 1,1:3) = (/ 0, 0, 1/)
772  hash_onshellhjj_nosplit( 2,1:3) = (/ 0, 0, 2/)
773  hash_onshellhjj_nosplit( 3,1:3) = (/ 2, 0, 1/)
774  hash_onshellhjj_nosplit( 4,1:3) = (/ 1, 0, 1/)
775  hash_onshellhjj_nosplit( 5,1:3) = (/ 0,-1, 1/)
776  hash_onshellhjj_nosplit( 6,1:3) = (/ 0,-2, 1/)
777  hash_onshellhjj_nosplit( 7,1:3) = (/ 3, 0, 1/)
778  hash_onshellhjj_nosplit( 8,1:3) = (/ 0,-3, 1/)
779  hash_onshellhjj_nosplit( 9,1:3) = (/ 4, 0, 1/)
780  hash_onshellhjj_nosplit( 10,1:3) = (/ 0,-4, 1/)
781  hash_onshellhjj_nosplit( 11,1:3) = (/ 5, 0, 1/)
782  hash_onshellhjj_nosplit( 12,1:3) = (/ 0,-5, 1/)
783  hash_onshellhjj_nosplit( 13,1:3) = (/ 2, 2, 1/)
784  hash_onshellhjj_nosplit( 14,1:3) = (/ 2, 1, 1/)
785  hash_onshellhjj_nosplit( 15,1:3) = (/ 2,-2, 1/)
786  hash_onshellhjj_nosplit( 16,1:3) = (/ 2,-2, 2/)
787  hash_onshellhjj_nosplit( 17,1:3) = (/ 2,-2, 3/)
788  hash_onshellhjj_nosplit( 18,1:3) = (/ 1,-1, 1/)
789  hash_onshellhjj_nosplit( 19,1:3) = (/ 1,-1, 2/)
790  hash_onshellhjj_nosplit( 20,1:3) = (/ 1,-1, 3/)
791  hash_onshellhjj_nosplit( 21,1:3) = (/ 2,-1, 1/)
792  hash_onshellhjj_nosplit( 22,1:3) = (/ 1, 1, 1/)
793  hash_onshellhjj_nosplit( 23,1:3) = (/ 3, 2, 1/)
794  hash_onshellhjj_nosplit( 24,1:3) = (/ 2,-3, 1/)
795  hash_onshellhjj_nosplit( 25,1:3) = (/ 4, 2, 1/)
796  hash_onshellhjj_nosplit( 26,1:3) = (/ 1,-2, 1/)
797  hash_onshellhjj_nosplit( 27,1:3) = (/ 2,-4, 1/)
798  hash_onshellhjj_nosplit( 28,1:3) = (/ 1,-3, 1/)
799  hash_onshellhjj_nosplit( 29,1:3) = (/ 2,-5, 1/)
800  hash_onshellhjj_nosplit( 30,1:3) = (/ 3, 1, 1/)
801  hash_onshellhjj_nosplit( 31,1:3) = (/ 5, 2, 1/)
802  hash_onshellhjj_nosplit( 32,1:3) = (/ 4, 1, 1/)
803  hash_onshellhjj_nosplit( 33,1:3) = (/ 1,-4, 1/)
804  hash_onshellhjj_nosplit( 34,1:3) = (/ 5, 1, 1/)
805  hash_onshellhjj_nosplit( 35,1:3) = (/ 1,-5, 1/)
806  hash_onshellhjj_nosplit( 36,1:3) = (/-1,-2, 1/)
807  hash_onshellhjj_nosplit( 37,1:3) = (/ 3,-1, 1/)
808  hash_onshellhjj_nosplit( 38,1:3) = (/ 3,-3, 1/)
809  hash_onshellhjj_nosplit( 39,1:3) = (/ 3,-3, 2/)
810  hash_onshellhjj_nosplit( 40,1:3) = (/ 3,-3, 3/)
811  hash_onshellhjj_nosplit( 41,1:3) = (/-2,-3, 1/)
812  hash_onshellhjj_nosplit( 42,1:3) = (/-1,-3, 1/)
813  hash_onshellhjj_nosplit( 43,1:3) = (/ 3,-2, 1/)
814  hash_onshellhjj_nosplit( 44,1:3) = (/-1,-1, 1/)
815  hash_onshellhjj_nosplit( 45,1:3) = (/ 4,-1, 1/)
816  hash_onshellhjj_nosplit( 46,1:3) = (/-2,-2, 1/)
817  hash_onshellhjj_nosplit( 47,1:3) = (/-1,-4, 1/)
818  hash_onshellhjj_nosplit( 48,1:3) = (/ 4,-2, 1/)
819  hash_onshellhjj_nosplit( 49,1:3) = (/-2,-4, 1/)
820  hash_onshellhjj_nosplit( 50,1:3) = (/ 5,-1, 1/)
821  hash_onshellhjj_nosplit( 51,1:3) = (/-1,-5, 1/)
822  hash_onshellhjj_nosplit( 52,1:3) = (/ 4,-4, 1/)
823  hash_onshellhjj_nosplit( 53,1:3) = (/ 4,-4, 2/)
824  hash_onshellhjj_nosplit( 54,1:3) = (/ 4,-4, 3/)
825  hash_onshellhjj_nosplit( 55,1:3) = (/ 4,-3, 1/)
826  hash_onshellhjj_nosplit( 56,1:3) = (/ 4, 3, 1/)
827  hash_onshellhjj_nosplit( 57,1:3) = (/ 3,-4, 1/)
828  hash_onshellhjj_nosplit( 58,1:3) = (/-2,-5, 1/)
829  hash_onshellhjj_nosplit( 59,1:3) = (/-3,-4, 1/)
830  hash_onshellhjj_nosplit( 60,1:3) = (/ 5,-2, 1/)
831  hash_onshellhjj_nosplit( 61,1:3) = (/ 3, 3, 1/)
832  hash_onshellhjj_nosplit( 62,1:3) = (/-3,-3, 1/)
833  hash_onshellhjj_nosplit( 63,1:3) = (/ 5, 3, 1/)
834  hash_onshellhjj_nosplit( 64,1:3) = (/ 3,-5, 1/)
835  hash_onshellhjj_nosplit( 65,1:3) = (/ 5,-3, 1/)
836  hash_onshellhjj_nosplit( 66,1:3) = (/-3,-5, 1/)
837  hash_onshellhjj_nosplit( 67,1:3) = (/ 5, 4, 1/)
838  hash_onshellhjj_nosplit( 68,1:3) = (/ 5,-4, 1/)
839  hash_onshellhjj_nosplit( 69,1:3) = (/-4,-5, 1/)
840  hash_onshellhjj_nosplit( 70,1:3) = (/ 4,-5, 1/)
841  hash_onshellhjj_nosplit( 71,1:3) = (/ 5,-5, 1/)
842  hash_onshellhjj_nosplit( 72,1:3) = (/ 5,-5, 2/)
843  hash_onshellhjj_nosplit( 73,1:3) = (/ 5,-5, 3/)
844  hash_onshellhjj_nosplit( 74,1:3) = (/-4,-4, 1/)
845  hash_onshellhjj_nosplit( 75,1:3) = (/ 4, 4, 1/)
846  hash_onshellhjj_nosplit( 76,1:3) = (/-5,-5, 1/)
847  hash_onshellhjj_nosplit( 77,1:3) = (/ 5, 5, 1/)
848 
849  hash_onshellhjj_nosplit( nijchannels+1:,:) = 0
850  hash_onshellhjj_nosplit( nijchannels+1:,3) = -1
851 return
852 end subroutine
853 
854 subroutine init_hash_genchannel()
855 implicit none
856  hash_genchannel( 1,1:3) = (/-5,-5, 1/)
857  hash_genchannel( 2,1:3) = (/-5,-4, 1/)
858  hash_genchannel( 3,1:3) = (/-5,-3, 1/)
859  hash_genchannel( 4,1:3) = (/-5,-2, 1/)
860  hash_genchannel( 5,1:3) = (/-5,-1, 1/)
861  hash_genchannel( 6,1:3) = (/-5, 0, 1/)
862  hash_genchannel( 7,1:3) = (/-5, 1, 1/)
863  hash_genchannel( 8,1:3) = (/-5, 2, 1/)
864  hash_genchannel( 9,1:3) = (/-5, 3, 1/)
865  hash_genchannel( 10,1:3) = (/-5, 4, 1/)
866  hash_genchannel( 11,1:3) = (/-5, 5, 1/)
867  hash_genchannel( 12,1:3) = (/-4,-5, 1/)
868  hash_genchannel( 13,1:3) = (/-4,-4, 1/)
869  hash_genchannel( 14,1:3) = (/-4,-3, 1/)
870  hash_genchannel( 15,1:3) = (/-4,-2, 1/)
871  hash_genchannel( 16,1:3) = (/-4,-1, 1/)
872  hash_genchannel( 17,1:3) = (/-4, 0, 1/)
873  hash_genchannel( 18,1:3) = (/-4, 1, 1/)
874  hash_genchannel( 19,1:3) = (/-4, 2, 1/)
875  hash_genchannel( 20,1:3) = (/-4, 3, 1/)
876  hash_genchannel( 21,1:3) = (/-4, 4, 1/)
877  hash_genchannel( 22,1:3) = (/-4, 5, 1/)
878  hash_genchannel( 23,1:3) = (/-3,-5, 1/)
879  hash_genchannel( 24,1:3) = (/-3,-4, 1/)
880  hash_genchannel( 25,1:3) = (/-3,-3, 1/)
881  hash_genchannel( 26,1:3) = (/-3,-2, 1/)
882  hash_genchannel( 27,1:3) = (/-3,-1, 1/)
883  hash_genchannel( 28,1:3) = (/-3, 0, 1/)
884  hash_genchannel( 29,1:3) = (/-3, 1, 1/)
885  hash_genchannel( 30,1:3) = (/-3, 2, 1/)
886  hash_genchannel( 31,1:3) = (/-3, 3, 1/)
887  hash_genchannel( 32,1:3) = (/-3, 4, 1/)
888  hash_genchannel( 33,1:3) = (/-3, 5, 1/)
889  hash_genchannel( 34,1:3) = (/-2,-5, 1/)
890  hash_genchannel( 35,1:3) = (/-2,-4, 1/)
891  hash_genchannel( 36,1:3) = (/-2,-3, 1/)
892  hash_genchannel( 37,1:3) = (/-2,-2, 1/)
893  hash_genchannel( 38,1:3) = (/-2,-1, 1/)
894  hash_genchannel( 39,1:3) = (/-2, 0, 1/)
895  hash_genchannel( 40,1:3) = (/-2, 1, 1/)
896  hash_genchannel( 41,1:3) = (/-2, 2, 1/)
897  hash_genchannel( 42,1:3) = (/-2, 3, 1/)
898  hash_genchannel( 43,1:3) = (/-2, 4, 1/)
899  hash_genchannel( 44,1:3) = (/-2, 5, 1/)
900  hash_genchannel( 45,1:3) = (/-1,-5, 1/)
901  hash_genchannel( 46,1:3) = (/-1,-4, 1/)
902  hash_genchannel( 47,1:3) = (/-1,-3, 1/)
903  hash_genchannel( 48,1:3) = (/-1,-2, 1/)
904  hash_genchannel( 49,1:3) = (/-1,-1, 1/)
905  hash_genchannel( 50,1:3) = (/-1, 0, 1/)
906  hash_genchannel( 51,1:3) = (/-1, 1, 1/)
907  hash_genchannel( 52,1:3) = (/-1, 2, 1/)
908  hash_genchannel( 53,1:3) = (/-1, 3, 1/)
909  hash_genchannel( 54,1:3) = (/-1, 4, 1/)
910  hash_genchannel( 55,1:3) = (/-1, 5, 1/)
911  hash_genchannel( 56,1:3) = (/ 0,-5, 1/)
912  hash_genchannel( 57,1:3) = (/ 0,-4, 1/)
913  hash_genchannel( 58,1:3) = (/ 0,-3, 1/)
914  hash_genchannel( 59,1:3) = (/ 0,-2, 1/)
915  hash_genchannel( 60,1:3) = (/ 0,-1, 1/)
916  hash_genchannel( 61,1:3) = (/ 0, 0, 1/)
917  hash_genchannel( 62,1:3) = (/ 0, 1, 1/)
918  hash_genchannel( 63,1:3) = (/ 0, 2, 1/)
919  hash_genchannel( 64,1:3) = (/ 0, 3, 1/)
920  hash_genchannel( 65,1:3) = (/ 0, 4, 1/)
921  hash_genchannel( 66,1:3) = (/ 0, 5, 1/)
922  hash_genchannel( 67,1:3) = (/ 1,-5, 1/)
923  hash_genchannel( 68,1:3) = (/ 1,-4, 1/)
924  hash_genchannel( 69,1:3) = (/ 1,-3, 1/)
925  hash_genchannel( 70,1:3) = (/ 1,-2, 1/)
926  hash_genchannel( 71,1:3) = (/ 1,-1, 1/)
927  hash_genchannel( 72,1:3) = (/ 1, 0, 1/)
928  hash_genchannel( 73,1:3) = (/ 1, 1, 1/)
929  hash_genchannel( 74,1:3) = (/ 1, 2, 1/)
930  hash_genchannel( 75,1:3) = (/ 1, 3, 1/)
931  hash_genchannel( 76,1:3) = (/ 1, 4, 1/)
932  hash_genchannel( 77,1:3) = (/ 1, 5, 1/)
933  hash_genchannel( 78,1:3) = (/ 2,-5, 1/)
934  hash_genchannel( 79,1:3) = (/ 2,-4, 1/)
935  hash_genchannel( 80,1:3) = (/ 2,-3, 1/)
936  hash_genchannel( 81,1:3) = (/ 2,-2, 1/)
937  hash_genchannel( 82,1:3) = (/ 2,-1, 1/)
938  hash_genchannel( 83,1:3) = (/ 2, 0, 1/)
939  hash_genchannel( 84,1:3) = (/ 2, 1, 1/)
940  hash_genchannel( 85,1:3) = (/ 2, 2, 1/)
941  hash_genchannel( 86,1:3) = (/ 2, 3, 1/)
942  hash_genchannel( 87,1:3) = (/ 2, 4, 1/)
943  hash_genchannel( 88,1:3) = (/ 2, 5, 1/)
944  hash_genchannel( 89,1:3) = (/ 3,-5, 1/)
945  hash_genchannel( 90,1:3) = (/ 3,-4, 1/)
946  hash_genchannel( 91,1:3) = (/ 3,-3, 1/)
947  hash_genchannel( 92,1:3) = (/ 3,-2, 1/)
948  hash_genchannel( 93,1:3) = (/ 3,-1, 1/)
949  hash_genchannel( 94,1:3) = (/ 3, 0, 1/)
950  hash_genchannel( 95,1:3) = (/ 3, 1, 1/)
951  hash_genchannel( 96,1:3) = (/ 3, 2, 1/)
952  hash_genchannel( 97,1:3) = (/ 3, 3, 1/)
953  hash_genchannel( 98,1:3) = (/ 3, 4, 1/)
954  hash_genchannel( 99,1:3) = (/ 3, 5, 1/)
955  hash_genchannel(100,1:3) = (/ 4,-5, 1/)
956  hash_genchannel(101,1:3) = (/ 4,-4, 1/)
957  hash_genchannel(102,1:3) = (/ 4,-3, 1/)
958  hash_genchannel(103,1:3) = (/ 4,-2, 1/)
959  hash_genchannel(104,1:3) = (/ 4,-1, 1/)
960  hash_genchannel(105,1:3) = (/ 4, 0, 1/)
961  hash_genchannel(106,1:3) = (/ 4, 1, 1/)
962  hash_genchannel(107,1:3) = (/ 4, 2, 1/)
963  hash_genchannel(108,1:3) = (/ 4, 3, 1/)
964  hash_genchannel(109,1:3) = (/ 4, 4, 1/)
965  hash_genchannel(110,1:3) = (/ 4, 5, 1/)
966  hash_genchannel(111,1:3) = (/ 5,-5, 1/)
967  hash_genchannel(112,1:3) = (/ 5,-4, 1/)
968  hash_genchannel(113,1:3) = (/ 5,-3, 1/)
969  hash_genchannel(114,1:3) = (/ 5,-2, 1/)
970  hash_genchannel(115,1:3) = (/ 5,-1, 1/)
971  hash_genchannel(116,1:3) = (/ 5, 0, 1/)
972  hash_genchannel(117,1:3) = (/ 5, 1, 1/)
973  hash_genchannel(118,1:3) = (/ 5, 2, 1/)
974  hash_genchannel(119,1:3) = (/ 5, 3, 1/)
975  hash_genchannel(120,1:3) = (/ 5, 4, 1/)
976  hash_genchannel(121,1:3) = (/ 5, 5, 1/)
977 return
978 end subroutine
979 
980 subroutine init_hash_thchannel()
981 implicit none
982  hash_thchannel( 1,1:3) = (/-5,-4,111/)
983  hash_thchannel( 2,1:3) = (/-5,-2,111/)
984  hash_thchannel( 3,1:3) = (/-5, 1,111/)
985  hash_thchannel( 4,1:3) = (/-5, 3,111/)
986  hash_thchannel( 5,1:3) = (/-4,-5,111/)
987  hash_thchannel( 6,1:3) = (/-4, 3,113/)
988  hash_thchannel( 7,1:3) = (/-3, 4,112/)
989  hash_thchannel( 8,1:3) = (/-3, 5,110/)
990  hash_thchannel( 9,1:3) = (/-2,-5,111/)
991  hash_thchannel( 10,1:3) = (/-2, 1,113/)
992  hash_thchannel( 11,1:3) = (/-1, 2,112/)
993  hash_thchannel( 12,1:3) = (/-1, 5,110/)
994  hash_thchannel( 13,1:3) = (/ 1,-5,111/)
995  hash_thchannel( 14,1:3) = (/ 1,-2,113/)
996  hash_thchannel( 15,1:3) = (/ 2,-1,112/)
997  hash_thchannel( 16,1:3) = (/ 2, 5,110/)
998  hash_thchannel( 17,1:3) = (/ 3,-5,111/)
999  hash_thchannel( 18,1:3) = (/ 3,-4,113/)
1000  hash_thchannel( 19,1:3) = (/ 4,-3,112/)
1001  hash_thchannel( 20,1:3) = (/ 4, 5,110/)
1002  hash_thchannel( 21,1:3) = (/ 5,-3,110/)
1003  hash_thchannel( 22,1:3) = (/ 5,-1,110/)
1004  hash_thchannel( 23,1:3) = (/ 5, 2,110/)
1005  hash_thchannel( 24,1:3) = (/ 5, 4,110/)
1006 
1007  hash_thchannel( 25:,:) = 0
1008  hash_thchannel( 25:,3) = -1
1009 
1010 return
1011 end subroutine
1012 
1013 subroutine init_hash_twhchannel()
1014 implicit none
1015 
1016  hash_twhchannel( 1,1:3) = (/ pdfglu_, pdfbot_,115/)
1017  hash_twhchannel( 2,1:3) = (/ pdfbot_, pdfglu_,115/)
1018  hash_twhchannel( 3,1:3) = (/ pdfglu_, pdfabot_,116/)
1019  hash_twhchannel( 4,1:3) = (/ pdfabot_, pdfglu_,116/)
1020 
1021  hash_twhchannel( 5:,:) = 0
1022  hash_twhchannel( 5:,3) = -1
1023 return
1024 end subroutine
1025 
1026 subroutine init_hash_ppxchannel()
1027 implicit none
1028 integer :: i
1029  hash_ppxchannel = 0
1030  hash_ppxchannel(:,3) = -1
1031 
1032  hash_ppxchannel(1,1:3) = (/0,0,1/)
1033  do i=1,5
1034  hash_ppxchannel(2*i ,1:3) = (/-i,i,1/)
1035  hash_ppxchannel(2*i+1,1:3) = (/i,-i,1/)
1036  enddo
1037 return
1038 end subroutine
1039 
1040 
1041 subroutine setuphashes()
1042 implicit none
1043  if (.not. hashcoll_hashes_initialized) then
1044  call init_hash_mcfm_qqvvqq()
1045  call init_hash_mcfm_qqvvll()
1048  call init_hash_onshellvbf()
1050  call init_hash_onshellhjj()
1052  call init_hash_genchannel()
1053  call init_hash_thchannel()
1054  call init_hash_twhchannel()
1055  call init_hash_ppxchannel()
1056 
1058  endif
1059 end subroutine
1060 
1061 ! Copy functions
1062 subroutine get_mcfm_qqvvqq_hash(ijSel)
1063 implicit none
1064 integer, pointer, intent(out) :: ijSel(:,:)
1065  if (.not. hashcoll_hashes_initialized) then
1066  call setuphashes()
1067  endif
1068  ijsel=hash_mcfm_qqvvqq
1069 return
1070 end subroutine
1071 
1072 subroutine get_mcfm_qqvvll_hash(ijSel)
1073 implicit none
1074 integer, pointer, intent(out) :: ijSel(:,:)
1075  if (.not. hashcoll_hashes_initialized) then
1076  call setuphashes()
1077  endif
1078  ijsel=hash_mcfm_qqvvll
1079 return
1080 end subroutine
1081 
1082 subroutine get_mcfm_qqvvqqstrong_hash(ijSel)
1083 implicit none
1084 integer, pointer, intent(out) :: ijSel(:,:)
1085  if (.not. hashcoll_hashes_initialized) then
1086  call setuphashes()
1087  endif
1089 return
1090 end subroutine
1091 
1092 subroutine get_mcfm_qqvvqq_genhash(ijSel)
1093 implicit none
1094 integer, intent(out) :: ijSel(1:Hash_MCFM_qqVVqq_Gen_Size,1:4)
1095  if (.not. hashcoll_hashes_initialized) then
1096  call setuphashes()
1097  endif
1098  ijsel=hash_mcfm_qqvvqq_gen
1099 return
1100 end subroutine
1101 
1102 subroutine get_vbfchannelhash(ijSel)
1103 implicit none
1104 integer, intent(out) :: ijSel(1:121,1:3)
1105  if (.not. hashcoll_hashes_initialized) then
1106  call setuphashes()
1107  endif
1108  ijsel=hash_onshellvbf
1109 return
1110 end subroutine
1111 
1112 subroutine get_vbfchannelhash_nosplit(ijSel,nijchannels)
1113 implicit none
1114 integer, intent(out) :: ijSel(1:121,1:3)
1115 integer, intent(out) :: nijchannels
1116  nijchannels = 68
1117  if (.not. hashcoll_hashes_initialized) then
1118  call setuphashes()
1119  endif
1121 return
1122 end subroutine
1123 
1124 subroutine get_hjjchannelhash(ijSel)
1125 implicit none
1126 integer, intent(out) :: ijSel(1:121,1:3)
1127  if (.not. hashcoll_hashes_initialized) then
1128  call setuphashes()
1129  endif
1130  ijsel=hash_onshellhjj
1131 return
1132 end subroutine
1133 
1134 subroutine get_hjjchannelhash_nosplit(ijSel,nijchannels)
1135 implicit none
1136 integer, intent(out) :: ijSel(1:121,1:3)
1137 integer, intent(out) :: nijchannels
1138  nijchannels=77
1139  if (.not. hashcoll_hashes_initialized) then
1140  call setuphashes()
1141  endif
1143 return
1144 end subroutine
1145 
1146 subroutine get_genchannelhash(ijSel)
1147 implicit none
1148 integer, intent(out) :: ijSel(1:121,1:3)
1149  if (.not. hashcoll_hashes_initialized) then
1150  call setuphashes()
1151  endif
1152  ijsel=hash_genchannel
1153 return
1154 end subroutine
1155 
1156 subroutine get_thchannelhash(ijSel)
1157 implicit none
1158 integer, intent(out) :: ijSel(1:121,1:3)
1159  if (.not. hashcoll_hashes_initialized) then
1160  call setuphashes()
1161  endif
1162  ijsel=hash_thchannel
1163 return
1164 end subroutine
1165 
1166 subroutine get_twhchannelhash(ijSel)
1167 implicit none
1168 integer, intent(out) :: ijSel(1:121,1:3)
1169  if (.not. hashcoll_hashes_initialized) then
1170  call setuphashes()
1171  endif
1172  ijsel=hash_twhchannel
1173 return
1174 end subroutine
1175 
1176 SUBROUTINE get_ppxchannelhash(ijSel)
1177 implicit none
1178 integer, intent(out) :: ijSel(1:121,1:3)
1179  if (.not. hashcoll_hashes_initialized) then
1180  call setuphashes()
1181  endif
1182  ijsel=hash_ppxchannel
1183 RETURN
1184 END SUBROUTINE
1185 
1186 
1187 ! Reference functions
1188 subroutine getref_mcfm_qqvvqq_hash(ijSel)
1189 implicit none
1190 integer, pointer, intent(out) :: ijSel(:,:)
1191  if (.not. hashcoll_hashes_initialized) then
1192  call setuphashes()
1193  endif
1194  ijsel => hash_mcfm_qqvvqq
1195 return
1196 end subroutine
1197 
1198 subroutine getref_mcfm_qqvvll_hash(ijSel)
1199 implicit none
1200 integer, pointer, intent(out) :: ijSel(:,:)
1201  if (.not. hashcoll_hashes_initialized) then
1202  call setuphashes()
1203  endif
1204  ijsel => hash_mcfm_qqvvll
1205 return
1206 end subroutine
1207 
1208 subroutine getref_mcfm_qqvvqqstrong_hash(ijSel)
1209 implicit none
1210 integer, pointer, intent(out) :: ijSel(:,:)
1211  if (.not. hashcoll_hashes_initialized) then
1212  call setuphashes()
1213  endif
1214  ijsel => hash_mcfm_qqvvqqstrong
1215 return
1216 end subroutine
1217 
1218 subroutine getref_mcfm_qqvvqq_genhash(ijSel)
1219 implicit none
1220 integer, pointer, intent(out) :: ijSel(:,:)
1221  if (.not. hashcoll_hashes_initialized) then
1222  call setuphashes()
1223  endif
1224  ijsel => hash_mcfm_qqvvqq_gen
1225 return
1226 end subroutine
1227 
1228 subroutine getref_vbfchannelhash(ijSel)
1229 implicit none
1230 integer, pointer, intent(out) :: ijSel(:,:)
1231  if (.not. hashcoll_hashes_initialized) then
1232  call setuphashes()
1233  endif
1234  ijsel => hash_onshellvbf
1235 return
1236 end subroutine
1237 
1238 subroutine getref_vbfchannelhash_nosplit(ijSel,nijchannels)
1239 implicit none
1240 integer, pointer, intent(out) :: ijSel(:,:)
1241 integer, intent(out) :: nijchannels
1242  nijchannels = 68
1243  if (.not. hashcoll_hashes_initialized) then
1244  call setuphashes()
1245  endif
1246  ijsel => hash_onshellvbf_nosplit
1247 return
1248 end subroutine
1249 
1250 subroutine getref_hjjchannelhash(ijSel)
1251 implicit none
1252 integer, pointer, intent(out) :: ijSel(:,:)
1253  if (.not. hashcoll_hashes_initialized) then
1254  call setuphashes()
1255  endif
1256  ijsel => hash_onshellhjj
1257 return
1258 end subroutine
1259 
1260 subroutine getref_hjjchannelhash_nosplit(ijSel,nijchannels)
1261 implicit none
1262 integer, pointer, intent(out) :: ijSel(:,:)
1263 integer, intent(out) :: nijchannels
1264  nijchannels=77
1265  if (.not. hashcoll_hashes_initialized) then
1266  call setuphashes()
1267  endif
1268  ijsel => hash_onshellhjj_nosplit
1269 return
1270 end subroutine
1271 
1272 subroutine getref_genchannelhash(ijSel)
1273 implicit none
1274 integer, pointer, intent(out) :: ijSel(:,:)
1275  if (.not. hashcoll_hashes_initialized) then
1276  call setuphashes()
1277  endif
1278  ijsel => hash_genchannel
1279 return
1280 end subroutine
1281 
1282 subroutine getref_thchannelhash(ijSel)
1283 implicit none
1284 integer, pointer, intent(out) :: ijSel(:,:)
1285  if (.not. hashcoll_hashes_initialized) then
1286  call setuphashes()
1287  endif
1288  ijsel => hash_thchannel
1289 return
1290 end subroutine
1291 
1292 subroutine getref_twhchannelhash(ijSel)
1293 implicit none
1294 integer, pointer, intent(out) :: ijSel(:,:)
1295  if (.not. hashcoll_hashes_initialized) then
1296  call setuphashes()
1297  endif
1298  ijsel => hash_twhchannel
1299 return
1300 end subroutine
1301 
1302 SUBROUTINE getref_ppxchannelhash(ijSel)
1303 implicit none
1304 integer, pointer, intent(out) :: ijSel(:,:)
1305  if (.not. hashcoll_hashes_initialized) then
1306  call setuphashes()
1307  endif
1308  ijsel => hash_ppxchannel
1309 RETURN
1310 END SUBROUTINE
1311 
1312 
1313 subroutine removeoffshellchannelfromhash(ijSel,iremove,imax,jmax)
1314 implicit none
1315 integer, intent(in) :: imax,jmax,iremove
1316 integer :: ijSel(:,:),k
1317  if (iremove.gt.0 .and. iremove .lt. imax) then
1318  do k=iremove+1,imax
1319  ijsel(k-1,1:jmax) = ijsel(k,1:jmax)
1320  enddo
1321  ijsel(imax,:)=not_a_particle_
1322  elseif (iremove .eq. imax) then
1323  ijsel(imax,:)=not_a_particle_
1324  endif
1325 end subroutine
1326 
1327 subroutine removeoffshellchannelfromhashref(ijSel,iremove,imax,jmax)
1328 implicit none
1329 integer, intent(in) :: imax,jmax,iremove
1330 integer, pointer :: ijSel(:,:)
1331 integer :: k
1332  if (iremove.gt.0 .and. iremove .lt. imax) then
1333  do k=iremove+1,imax
1334  ijsel(k-1,1:jmax) = ijsel(k,1:jmax)
1335  enddo
1336  ijsel(imax,:)=not_a_particle_
1337  elseif (iremove .eq. imax) then
1338  ijsel(imax,:)=not_a_particle_
1339  endif
1340 end subroutine
1341 
1342 
1343 END MODULE
modhashcollection::hash_onshellhjj_size
integer, parameter hash_onshellhjj_size
Definition: mod_HashCollection.F90:37
modparameters::abot_
integer, target, public abot_
Definition: mod_Parameters.F90:1111
modhashcollection::get_mcfm_qqvvqq_genhash
subroutine get_mcfm_qqvvqq_genhash(ijSel)
Definition: mod_HashCollection.F90:1093
modparameters::achm_
integer, target, public achm_
Definition: mod_Parameters.F90:1108
modhashcollection::getref_mcfm_qqvvqq_genhash
subroutine getref_mcfm_qqvvqq_genhash(ijSel)
Definition: mod_HashCollection.F90:1219
modparameters::glu_
integer, target, public glu_
Definition: mod_Parameters.F90:1093
modhashcollection::init_hash_twhchannel
subroutine init_hash_twhchannel()
Definition: mod_HashCollection.F90:1014
modparameters::pdfstr_
integer, parameter, public pdfstr_
Definition: mod_Parameters.F90:1127
modhashcollection::getref_thchannelhash
subroutine getref_thchannelhash(ijSel)
Definition: mod_HashCollection.F90:1283
modparameters::elm_
integer, target, public elm_
Definition: mod_Parameters.F90:1112
modhashcollection::setuphashes
subroutine setuphashes()
Definition: mod_HashCollection.F90:1042
modparameters::pdfastr_
integer, parameter, public pdfastr_
Definition: mod_Parameters.F90:1133
modhashcollection::hash_onshellvbf
integer, dimension(1:hash_onshellvbf_size, 1:3), target hash_onshellvbf
Definition: mod_HashCollection.F90:30
modhashcollection::hash_ppxchannel
integer, dimension(1:hash_ppxchannel_size, 1:3), target hash_ppxchannel
Definition: mod_HashCollection.F90:26
modhashcollection
Definition: mod_HashCollection.F90:1
modparameters::pdfglu_
integer, parameter, public pdfglu_
Definition: mod_Parameters.F90:1124
modhashcollection::init_hash_mcfm_qqvvqq
subroutine init_hash_mcfm_qqvvqq()
Definition: mod_HashCollection.F90:61
modhashcollection::hash_mcfm_qqvvqqstrong_size
integer, parameter hash_mcfm_qqvvqqstrong_size
Definition: mod_HashCollection.F90:17
modparameters::dn_
integer, target, public dn_
Definition: mod_Parameters.F90:1085
modhashcollection::hash_mcfm_qqvvqq_gen_size
integer, parameter hash_mcfm_qqvvqq_gen_size
Definition: mod_HashCollection.F90:21
modparameters::pdfdn_
integer, parameter, public pdfdn_
Definition: mod_Parameters.F90:1125
modhashcollection::hash_mcfm_qqvvll
integer, dimension(1:hash_mcfm_qqvvll_size, 1:4), target hash_mcfm_qqvvll
Definition: mod_HashCollection.F90:14
modhashcollection::get_vbfchannelhash
subroutine get_vbfchannelhash(ijSel)
Definition: mod_HashCollection.F90:1103
modhashcollection::getref_mcfm_qqvvqqstrong_hash
subroutine getref_mcfm_qqvvqqstrong_hash(ijSel)
Definition: mod_HashCollection.F90:1209
modhashcollection::hash_mcfm_qqvvll_size
integer, parameter hash_mcfm_qqvvll_size
Definition: mod_HashCollection.F90:13
modparameters::adn_
integer, target, public adn_
Definition: mod_Parameters.F90:1107
modparameters::chm_
integer, target, public chm_
Definition: mod_Parameters.F90:1086
modparameters::up_
integer, target, public up_
Definition: mod_Parameters.F90:1084
modparameters::bot_
integer, target, public bot_
Definition: mod_Parameters.F90:1089
modhashcollection::getref_twhchannelhash
subroutine getref_twhchannelhash(ijSel)
Definition: mod_HashCollection.F90:1293
modhashcollection::removeoffshellchannelfromhash
subroutine removeoffshellchannelfromhash(ijSel, iremove, imax, jmax)
Definition: mod_HashCollection.F90:1314
modhashcollection::get_vbfchannelhash_nosplit
subroutine get_vbfchannelhash_nosplit(ijSel, nijchannels)
Definition: mod_HashCollection.F90:1113
modhashcollection::get_mcfm_qqvvll_hash
subroutine get_mcfm_qqvvll_hash(ijSel)
Definition: mod_HashCollection.F90:1073
modhashcollection::init_hash_ppxchannel
subroutine init_hash_ppxchannel()
Definition: mod_HashCollection.F90:1027
modhashcollection::hash_onshellhjj_nosplit
integer, dimension(1:hash_onshellhjj_nosplit_size, 1:3), target hash_onshellhjj_nosplit
Definition: mod_HashCollection.F90:42
modhashcollection::hashcoll_hashes_initialized
logical, private hashcoll_hashes_initialized
Definition: mod_HashCollection.F90:53
modhashcollection::removeoffshellchannelfromhashref
subroutine removeoffshellchannelfromhashref(ijSel, iremove, imax, jmax)
Definition: mod_HashCollection.F90:1328
modhashcollection::getref_vbfchannelhash_nosplit
subroutine getref_vbfchannelhash_nosplit(ijSel, nijchannels)
Definition: mod_HashCollection.F90:1239
modhashcollection::get_hjjchannelhash
subroutine get_hjjchannelhash(ijSel)
Definition: mod_HashCollection.F90:1125
modhashcollection::getref_mcfm_qqvvll_hash
subroutine getref_mcfm_qqvvll_hash(ijSel)
Definition: mod_HashCollection.F90:1199
modhashcollection::get_genchannelhash
subroutine get_genchannelhash(ijSel)
Definition: mod_HashCollection.F90:1147
modparameters::tam_
integer, target, public tam_
Definition: mod_Parameters.F90:1114
modhashcollection::getref_mcfm_qqvvqq_hash
subroutine getref_mcfm_qqvvqq_hash(ijSel)
Definition: mod_HashCollection.F90:1189
modhashcollection::hash_genchannel_size
integer, parameter hash_genchannel_size
Definition: mod_HashCollection.F90:45
modparameters::aup_
integer, target, public aup_
Definition: mod_Parameters.F90:1106
modparameters::nue_
integer, target, public nue_
Definition: mod_Parameters.F90:1097
modhashcollection::init_hash_onshellvbf_nosplit
subroutine init_hash_onshellvbf_nosplit()
Definition: mod_HashCollection.F90:582
modhashcollection::hash_thchannel
integer, dimension(1:hash_thchannel_size, 1:3), target hash_thchannel
Definition: mod_HashCollection.F90:50
modhashcollection::get_thchannelhash
subroutine get_thchannelhash(ijSel)
Definition: mod_HashCollection.F90:1157
modhashcollection::hash_mcfm_qqvvqq
integer, dimension(1:hash_mcfm_qqvvqq_size, 1:4), target hash_mcfm_qqvvqq
Definition: mod_HashCollection.F90:10
modparameters::pdfup_
integer, parameter, public pdfup_
Definition: mod_Parameters.F90:1126
modhashcollection::hash_onshellhjj_nosplit_size
integer, parameter hash_onshellhjj_nosplit_size
Definition: mod_HashCollection.F90:41
modparameters::elp_
integer, target, public elp_
Definition: mod_Parameters.F90:1090
modparameters::pdfaup_
integer, parameter, public pdfaup_
Definition: mod_Parameters.F90:1132
modhashcollection::get_twhchannelhash
subroutine get_twhchannelhash(ijSel)
Definition: mod_HashCollection.F90:1167
modhashcollection::hash_mcfm_qqvvqqstrong
integer, dimension(1:hash_mcfm_qqvvqqstrong_size, 1:4), target hash_mcfm_qqvvqqstrong
Definition: mod_HashCollection.F90:18
modparameters::anum_
integer, target, public anum_
Definition: mod_Parameters.F90:1117
modhashcollection::init_hash_onshellhjj_nosplit
subroutine init_hash_onshellhjj_nosplit()
Definition: mod_HashCollection.F90:769
modhashcollection::hash_genchannel
integer, dimension(1:hash_genchannel_size, 1:3), target hash_genchannel
Definition: mod_HashCollection.F90:46
modhashcollection::get_mcfm_qqvvqq_hash
subroutine get_mcfm_qqvvqq_hash(ijSel)
Definition: mod_HashCollection.F90:1063
modhashcollection::hash_thchannel_size
integer, parameter hash_thchannel_size
Definition: mod_HashCollection.F90:49
modhashcollection::hash_mcfm_qqvvqq_size
integer, parameter hash_mcfm_qqvvqq_size
Definition: mod_HashCollection.F90:9
modhashcollection::getref_hjjchannelhash_nosplit
subroutine getref_hjjchannelhash_nosplit(ijSel, nijchannels)
Definition: mod_HashCollection.F90:1261
modparameters::anut_
integer, target, public anut_
Definition: mod_Parameters.F90:1118
modparameters::anue_
integer, target, public anue_
Definition: mod_Parameters.F90:1116
modparameters::pdfchm_
integer, parameter, public pdfchm_
Definition: mod_Parameters.F90:1128
modhashcollection::hash_onshellvbf_size
integer, parameter hash_onshellvbf_size
Definition: mod_HashCollection.F90:29
modhashcollection::hash_ppxchannel_size
integer, parameter hash_ppxchannel_size
Definition: mod_HashCollection.F90:25
modhashcollection::get_ppxchannelhash
subroutine get_ppxchannelhash(ijSel)
Definition: mod_HashCollection.F90:1177
modparameters
Definition: mod_Parameters.F90:1
modhashcollection::init_hash_genchannel
subroutine init_hash_genchannel()
Definition: mod_HashCollection.F90:855
modparameters::pdfbot_
integer, parameter, public pdfbot_
Definition: mod_Parameters.F90:1129
modhashcollection::init_hash_mcfm_qqvvll
subroutine init_hash_mcfm_qqvvll()
Definition: mod_HashCollection.F90:434
modparameters::pdfachm_
integer, parameter, public pdfachm_
Definition: mod_Parameters.F90:1134
modhashcollection::hash_onshellvbf_nosplit_size
integer, parameter hash_onshellvbf_nosplit_size
Definition: mod_HashCollection.F90:33
modparameters::nut_
integer, target, public nut_
Definition: mod_Parameters.F90:1099
modhashcollection::init_hash_mcfm_qqvvqq_generation
subroutine init_hash_mcfm_qqvvqq_generation()
Definition: mod_HashCollection.F90:490
modparameters::mum_
integer, target, public mum_
Definition: mod_Parameters.F90:1113
modhashcollection::hash_onshellvbf_nosplit
integer, dimension(1:hash_onshellvbf_nosplit_size, 1:3), target hash_onshellvbf_nosplit
Definition: mod_HashCollection.F90:34
modparameters::str_
integer, target, public str_
Definition: mod_Parameters.F90:1087
modhashcollection::hash_onshellhjj
integer, dimension(1:hash_onshellhjj_size, 1:3), target hash_onshellhjj
Definition: mod_HashCollection.F90:38
modparameters::astr_
integer, target, public astr_
Definition: mod_Parameters.F90:1109
modhashcollection::init_hash_onshellhjj
subroutine init_hash_onshellhjj()
Definition: mod_HashCollection.F90:684
modhashcollection::hash_twhchannel
integer, dimension(1:hash_twhchannel_size, 1:3), target hash_twhchannel
Definition: mod_HashCollection.F90:50
modparameters::not_a_particle_
integer, parameter, public not_a_particle_
Definition: mod_Parameters.F90:1121
modparameters::num_
integer, target, public num_
Definition: mod_Parameters.F90:1098
modhashcollection::getref_ppxchannelhash
subroutine getref_ppxchannelhash(ijSel)
Definition: mod_HashCollection.F90:1303
modparameters::tap_
integer, target, public tap_
Definition: mod_Parameters.F90:1092
modhashcollection::init_hash_onshellvbf
subroutine init_hash_onshellvbf()
Definition: mod_HashCollection.F90:503
modhashcollection::init_hash_mcfm_qqvvqqstrong
subroutine init_hash_mcfm_qqvvqqstrong()
Definition: mod_HashCollection.F90:238
modhashcollection::hash_twhchannel_size
integer, parameter hash_twhchannel_size
Definition: mod_HashCollection.F90:49
modhashcollection::getref_genchannelhash
subroutine getref_genchannelhash(ijSel)
Definition: mod_HashCollection.F90:1273
modhashcollection::get_mcfm_qqvvqqstrong_hash
subroutine get_mcfm_qqvvqqstrong_hash(ijSel)
Definition: mod_HashCollection.F90:1083
modhashcollection::hash_mcfm_qqvvqq_gen
integer, dimension(1:hash_mcfm_qqvvqq_gen_size, 1:4), target hash_mcfm_qqvvqq_gen
Definition: mod_HashCollection.F90:22
modhashcollection::get_hjjchannelhash_nosplit
subroutine get_hjjchannelhash_nosplit(ijSel, nijchannels)
Definition: mod_HashCollection.F90:1135
modparameters::pdfadn_
integer, parameter, public pdfadn_
Definition: mod_Parameters.F90:1131
modhashcollection::getref_vbfchannelhash
subroutine getref_vbfchannelhash(ijSel)
Definition: mod_HashCollection.F90:1229
modhashcollection::getref_hjjchannelhash
subroutine getref_hjjchannelhash(ijSel)
Definition: mod_HashCollection.F90:1251
modparameters::pdfabot_
integer, parameter, public pdfabot_
Definition: mod_Parameters.F90:1135
modhashcollection::init_hash_thchannel
subroutine init_hash_thchannel()
Definition: mod_HashCollection.F90:981
modparameters::mup_
integer, target, public mup_
Definition: mod_Parameters.F90:1091