JHUGen MELA  v2.4.1
Matrix element calculations as used in JHUGen. MELA is an important tool that was used for the Higgs boson discovery and for precise measurements of its structure and interactions. Please see the website https://spin.pha.jhu.edu/ and papers cited there for more details, and kindly cite those papers when using this code.
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