JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
democache.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

program democache
 
subroutine getinvariants (MomInv6, ievent)
 
double complex function, dimension(0:n-2) submasses (N, k, masses)
 
double complex function, dimension((n-1) *(n-2)/2) submominv (N, k, MomInv)
 

Function/Subroutine Documentation

◆ democache()

program democache

Definition at line 10 of file democache.f90.

◆ getinvariants()

subroutine democache::getinvariants ( double complex, dimension(1:15)  MomInv6,
integer  ievent 
)

Definition at line 198 of file democache.f90.

198 
199  implicit none
200 
201  double precision p(1:6,0:3)
202  double complex MomInv6(1:15)
203  double precision :: s(0:5,0:5),fact=47d0/49d0
204  integer :: N=6,k,i,newmom,ievent
205  save s,fact,n
206 
207  newmom=0
208 
209  if (ievent.eq.1) then
210  newmom=1
211 ! use momentum set from Racoon
212  p(1,0) = -0.9500000000000000d+02
213  p(1,1) = 0.0000000000000000d+00
214  p(1,2) = 0.0000000000000000d+00
215  p(1,3) = 0.9500000000000000d+02
216 
217  p(2,0) = -0.9500000000000000d+02
218  p(2,1) = 0.0000000000000000d+00
219  p(2,2) = 0.0000000000000000d+00
220  p(2,3) = -0.9500000000000000d+02
221 
222  p(3,0) = 0.2046111001757171d+02
223  p(3,1) = 0.1057734233089455d+02
224  p(3,2) = -0.2324961261504543d+01
225  p(3,3) = 0.1736005205921753d+02
226 
227  p(4,0) = 0.3558305163378869d+01
228  p(4,1) = 0.1436222934374051d+01
229  p(4,2) = -0.2174258125294355d+01
230  p(4,3) = -0.2423097382091398d+01
231 
232  p(5,0) = 0.8154540918019539d+02
233  p(5,1) = -0.5230395944682889d+02
234  p(5,2) = 0.3083642435466509d+02
235  p(5,3) = 0.5443403822581044d+02
236 
237  p(6,0) = 0.8443517563885433d+02
238  p(6,1) = 0.4029039418156027d+02
239  p(6,2) = -0.2633720496786619d+02
240  p(6,3) = -0.6937099290293661d+02
241 
242 
243  else if (ievent.eq.50) then
244  newmom=1
245 ! set with small momentum 1.9 versus 3.0 seconds
246  p(1,0) = -250.0000000000000d0
247  p(1,1) = 0.0000000000000000d+00
248  p(1,2) = 0.0000000000000000d+00
249  p(1,3) = -250.0000000000000d0
250 
251  p(2,0) = -250.0000000000000d0
252  p(2,1) = 0.0000000000000000d+00
253  p(2,2) = 0.0000000000000000d+00
254  p(2,3) = 250.0000000000000d0
255 
256  p(3,0) = 239.91697591218110d0
257  p(3,1) = 31.640107125154238d0
258  p(3,2) = -116.12928664566658d0
259  p(3,3) = -207.54047252312847d0
260 
261  p(4,0) = 10.276659578244022d0
262  p(4,1) = 1.2584629023924521d0
263  p(4,2) = 10.131487190720421d0
264  p(4,3) = -1.1742957526504370d0
265 
266  p(5,0) = 181.18800109198216d0
267  p(5,1) = -35.098898474333737d0
268  p(5,2) = 109.26326872331617d0
269  p(5,3) = 140.20947604742324d0
270 
271  p(6,0) = 68.618363417592718d0
272  p(6,1) = 2.2003284467870472d0
273  p(6,2) = -3.2654692683700119d0
274  p(6,3) = 68.505292228355671d0
275 
276  else if (ievent.eq.100) then
277  newmom=1
278  p(1,0) = -100.0000000000000d0
279  p(1,1) = 0.000000000000000d0
280  p(1,2) = 0.000000000000000d0
281  p(1,3) = -100.0000000000000d0
282 
283  p(2,0) = -100.0000000000000d0
284  p(2,1) = 0.000000000000000d0
285  p(2,2) = 0.000000000000000d0
286  p(2,3) = 100.0000000000000d0
287 
288  p(5,0) = 42.13045937773281d0
289  p(5,1) = 38.71045260055064d0
290  p(5,2) = 16.54764683624944d0
291  p(5,3) = 1.628450497276325d0
292 
293  p(6,0) = 73.31699208541762d0
294  p(6,1) = -66.17895647220249d0
295  p(6,2) = 31.53024134467396d0
296  p(6,3) = -1.253367244715983d0
297 
298  p(4,0) = 69.60509150033207d0
299  p(4,1) = 34.42307953372518d0
300  p(4,2) = -60.31848303205667d0
301  p(4,3) = 4.647683605402023d0
302 
303  p(3,0) = 14.94745703651754d0
304  p(3,1) = -6.954575662073326d0
305  p(3,2) = 12.24059485113326d0
306  p(3,3) = -5.022766857962365d0
307  else if (ievent.eq.150) then
308  newmom=1
309  p(1,0) = -100.0000000000000d0
310  p(1,1) = 0.0000000000000000d+00
311  p(1,2) = 0.0000000000000000d+00
312  p(1,3) = -100.0000000000000d0
313 
314  p(2,0) = -100.0000000000000d0
315  p(2,1) = 0.0000000000000000d+00
316  p(2,2) = 0.0000000000000000d+00
317  p(2,3) = 100.0000000000000d0
318 
319  p(3,0) = 72.02905523601244d0
320  p(3,1) = 32.33193950844802d0
321  p(3,2) = 64.10893732125734d0
322  p(3,3) = 5.733641195059672d0
323 
324  p(4,0) = 25.07519219892066d0
325  p(4,1) = 2.906699172283076d0
326  p(4,2) = -24.65281899347465d0
327  p(4,3) = 3.543286526606821d0
328 
329  p(5,0) = 60.19609558319355d0
330  p(5,1) = 2.282219923475870d0
331  p(5,2) = -59.72688022443283d0
332  p(5,3) = -7.145710205299344d0
333 
334  p(6,0) = 42.69965698187335d0
335  p(6,1) = -37.52085860420697d0
336  p(6,2) = 20.27076189665014d0
337  p(6,3) = -2.131217516367149d0
338  else if (ievent.eq.200) then
339  newmom=1
340  p(1,0) = -100.0000000000000d0
341  p(1,1) = 0.0000000000000000d+00
342  p(1,2) = 0.0000000000000000d+00
343  p(1,3) = -100.0000000000000d0
344 
345  p(2,0) = -100.0000000000000d0
346  p(2,1) = 0.0000000000000000d+00
347  p(2,2) = 0.0000000000000000d+00
348  p(2,3) = 100.0000000000000d0
349 
350  p(3,0) = 69.63925440091566d0
351  p(3,1) = -68.33683461638704d0
352  p(3,2) = -3.803463998624776d0
353  p(3,3) = -12.85443307731553d0
354 
355  p(4,0) = 34.49634785978589d0
356  p(4,1) = 21.54290146454439d0
357  p(4,2) = -15.60187514686951d0
358  p(4,3) = 21.96549348532329d0
359 
360  p(5,0) = 66.20628864972379d0
361  p(5,1) = 65.60907499667245d0
362  p(5,2) = -3.500460884404577d0
363  p(5,3) = -8.152834381263276d0
364 
365  p(6,0) = 29.65810908957467d0
366  p(6,1) = -18.81514184482980d0
367  p(6,2) = 22.90580002989887d0
368  p(6,3) = -0.9582260267444891d0
369 
370  else if (ievent.eq.250) then
371  newmom=1
372  p( 1, 0) = -159.2798637127597488d0
373  p( 1, 1) = 0.0000000000000000d0
374  p( 1, 2) = 0.0000000000000000d0
375  p( 1, 3) = -159.2798637127597488d0
376  p( 2, 0) = -237.6261878491357891d0
377  p( 2, 1) = 0.0000000000000000d0
378  p( 2, 2) = 0.0000000000000000d0
379  p( 2, 3) = 237.6261878491357891d0
380  p( 3, 0) = 133.6018149124976446d0
381  p( 3, 1) = 60.5134748218625731d0
382  p( 3, 2) = 112.6312302087531094d0
383  p( 3, 3) = -38.7526811273741174d0
384  p( 4, 0) = 69.9256648527542950d0
385  p( 4, 1) = 66.6463990867762135d0
386  p( 4, 2) = 7.6538437283820429d0
387  p( 4, 3) = -19.7300473909055754d0
388  p( 5, 0) = 85.7314709474216841d0
389  p( 5, 1) = -38.6625297933730749d0
390  p( 5, 2) = -63.4432116127613241d0
391  p( 5, 3) = -42.7791164126088006d0
392  p( 6, 0) = 107.6471008492219283d0
393  p( 6, 1) = -88.4973441152657188d0
394  p( 6, 2) = -56.8418623243738281d0
395  p( 6, 3) = 22.9155207945124531d0
396 
397 
398  end if
399 
400  if (newmom.eq.1) then
401  ! define invariants
402  n=6
403  do k=0,n-1
404  s(modulo(k+1,n),k) = p(k+1,0)**2
405  do i=1,3
406  s(modulo(k+1,n),k) = s(modulo(k+1,n),k) - p(k+1,i)**2
407  end do
408  if(abs(s(modulo(k+1,n),k)).lt.1d-14* abs(p(k+1,0))**2) s(modulo(k+1,n),k) = 0d0
409 
410  s(k,modulo(k+1,n)) = s(modulo(k+1,n),k)
411  end do
412 
413  do k=0,n-1
414  s(modulo(k+2,n),k) = (p(modulo(k+1,n)+1,0) + p(k+1,0))**2
415  do i=1,3
416  s(modulo(k+2,n),k) = s(modulo(k+2,n),k) &
417  - (p(modulo(k+1,n)+1,i) + p(k+1,i))**2
418  end do
419  s(k,modulo(k+2,n)) = s(modulo(k+2,n),k)
420  end do
421  do k=0,(n-1)/2
422  s(modulo(k+3,n),k) = (p(modulo(k+2,n)+1,0) + p(modulo(k+1,n)+1,0) + p(k+1,0))**2
423  do i=1,3
424  s(modulo(k+3,n),k) = s(modulo(k+3,n),k) &
425  - (p(modulo(k+2,n)+1,i) + p(modulo(k+1,n)+1,i) + p(k+1,i))**2
426  end do
427  s(k,modulo(k+3,n)) = s(modulo(k+3,n),k)
428  end do
429 
430  do k=1,n
431  mominv6(k) = s(modulo(k,n),k-1)
432  end do
433  do k=1,n
434  mominv6(k+n) = s(modulo(k+1,n),k-1)
435  end do
436  do k=1,n/2
437  mominv6(k+2*n) = s(modulo(k+2,n),k-1)
438  end do
439  fact = 47d0/97d0
440 
441  else
442 ! rescale invariants
443  fact = 4*fact*(1-fact)
444 
445  do k=1,n
446  mominv6(k) = s(modulo(k,n),k-1)*fact
447  end do
448  do k=1,n
449  mominv6(k+n) = s(modulo(k+1,n),k-1)*fact
450  end do
451  do k=1,n/2
452  mominv6(k+2*n) = s(modulo(k+2,n),k-1)*fact
453  end do
454  end if
455 

◆ submasses()

double complex function, dimension(0:n-2) democache::submasses ( integer  N,
integer  k,
double complex, dimension(0:n-1)  masses 
)

Definition at line 468 of file democache.f90.

468 
469  integer :: N,k,i
470  double complex :: masses(0:N-1), SubMasses(0:N-2)
471 
472  do i=0,n-2
473  if (i.lt.k) then
474  submasses(i) = masses(i)
475  else
476  submasses(i) = masses(i+1)
477  end if
478  end do
479 

◆ submominv()

double complex function, dimension((n-1)*(n-2)/2) democache::submominv ( integer, intent(in)  N,
integer, intent(in)  k,
double complex, dimension(n*(n-1)/2)  MomInv 
)

Definition at line 495 of file democache.f90.

495 
496  integer, intent(in) :: N,k
497  integer :: i,cnt,moms,limit
498  double complex :: MomInv(N*(N-1)/2), SubMomInv((N-1)*(N-2)/2)
499 
500  if (n.eq.2) return
501 
502  cnt = 1
503  do moms=1,(n-3)/2
504  do i=1,n
505  if (i.ne.k+1) then
506  if ((k.ge.i).and.(i.ge.k-moms+1).or.(n+k.ge.i).and.(i.ge.n+k-moms+1)) then
507  submominv(cnt) = mominv(n*moms+i)
508  else
509  submominv(cnt) = mominv(n*(moms-1)+i)
510  end if
511 
512  cnt = cnt+1
513  end if
514  end do
515  end do
516 
517  if (mod(n,2).eq.1) then
518  moms = (n-1)/2
519  if(k.le.(n-1)/2) then
520  limit = (n+1)/2
521  else
522  limit = (n-1)/2
523  end if
524  do i=1,limit
525  if (i.ne.k+1) then
526  if ((k.ge.i).and.(i.ge.k-moms+1).or.(n+k.ge.i).and.(i.ge.n+k-moms+1)) then
527  submominv(cnt) = mominv(n*moms+i-(n-1)/2)
528  else
529  submominv(cnt) = mominv(n*(moms-1)+i)
530  end if
531 
532  cnt = cnt+1
533  end if
534  end do
535 
536  else
537  do i=1,n
538  if (i.ne.k+1) then
539  moms = (n/2-1)
540  if ((k.ge.i).and.(i.ge.k-moms+1).or.(n+k.ge.i).and.(i.ge.n+k-moms+1)) then
541  if (i.gt.n/2) then
542  submominv(cnt) = mominv(n*moms-n/2+i)
543  else
544  submominv(cnt) = mominv(n*moms+i)
545  endif
546  else
547  submominv(cnt) = mominv(n*(moms-1)+i)
548  end if
549 
550  cnt = cnt+1
551  end if
552  end do
553 
554  end if
555 
556 
submasses
double complex function, dimension(0:n-2) submasses(N, k, masses)
Definition: democache.f90:468
submominv
double complex function, dimension((n-1) *(n-2)/2) submominv(N, k, MomInv)
Definition: democache.f90:495
endif
O0 g endif() string(TOLOWER "$
Definition: CMakeLists.txt:143