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.
Public Member Functions | List of all members
collier_tensors::tnten_cll Interface Reference

Public Member Functions

subroutine tnten_main_cll (TN, TNuv, MomVec, MomInv, masses2, N, rmax, TNerr)
 
subroutine tnten_list_cll (TN, TNuv, MomVec, MomInv, masses2, N, rmax, TNerr)
 
subroutine t1ten_main_cll (TA, TAuv, masses2, N, rmax, TAerr)
 
subroutine t1ten_list_cll (TA, TAuv, masses2, N, rmax, TAerr)
 

Detailed Description

Definition at line 86 of file collier_tensors.F90.

Member Function/Subroutine Documentation

◆ t1ten_list_cll()

subroutine collier_tensors::tnten_cll::t1ten_list_cll ( double complex, dimension(:), intent(out)  TA,
double complex, dimension(:), intent(out)  TAuv,
double complex, dimension(0:0), intent(in)  masses2,
integer, intent(in)  N,
integer, intent(in)  rmax,
double precision, dimension(0:rmax), intent(out), optional  TAerr 
)

Definition at line 6649 of file collier_tensors.F90.

6649 
6650  integer, intent(in) :: rmax,N
6651  double complex,intent(in) :: masses2(0:0)
6652  double complex, intent(out) :: TA(:),TAuv(:)
6653  double precision, intent(out), optional :: TAerr(0:rmax)
6654  integer :: r,i
6655  logical :: eflag
6656 
6657  if (n.ne.1) then
6658  call seterrflag_cll(-10)
6659  call errout_cll('TNten_cll','subroutine called with inconsistent arguments',eflag)
6660  end if
6661  if (n.gt.nmax_cll) then
6662  call seterrflag_cll(-10)
6663  call errout_cll('TNten_cll','argument N larger than Nmax_cll',eflag,.true.)
6664  write(nerrout_cll,*) 'N =',n
6665  write(nerrout_cll,*) 'Nmax_cll =',nmax_cll
6666  write(nerrout_cll,*) 'Reinitialize COLLIER with Nmax_cll >= ',n
6667  call propagateerrflag_cll
6668  return
6669  end if
6670  if (rmax.gt.rmax_cll) then
6671  call seterrflag_cll(-10)
6672  call errout_cll('TNten_cll','argument rmax larger than rmax_cll',eflag,.true.)
6673  write(nerrout_cll,*) 'rmax =',rmax
6674  write(nerrout_cll,*) 'rmax_cll =',rmax_cll
6675  write(nerrout_cll,*) 'Reinitialize COLLIER with rmax_cll >= ',rmax
6676  call propagateerrflag_cll
6677  return
6678  end if
6679 
6680  call t1ten_list_checked_cll(ta,tauv,masses2,n,rmax,taerr)
6681 

◆ t1ten_main_cll()

subroutine collier_tensors::tnten_cll::t1ten_main_cll ( double complex, dimension(0:rmax,0:rmax,0:rmax,0:rmax), intent(out)  TA,
double complex, dimension(0:rmax,0:rmax,0:rmax,0:rmax), intent(out)  TAuv,
double complex, dimension(0:0), intent(in)  masses2,
integer, intent(in)  N,
integer, intent(in)  rmax,
double precision, dimension(0:rmax), intent(out), optional  TAerr 
)

Definition at line 6470 of file collier_tensors.F90.

6470 
6471  integer, intent(in) :: rmax,N
6472  double complex,intent(in) :: masses2(0:0)
6473  double complex, intent(out) :: TA(0:rmax,0:rmax,0:rmax,0:rmax)
6474  double complex, intent(out) :: TAuv(0:rmax,0:rmax,0:rmax,0:rmax)
6475  double precision, intent(out), optional :: TAerr(0:rmax)
6476  double complex :: TA2(0:rmax,0:rmax,0:rmax,0:rmax), TAuv2(0:rmax,0:rmax,0:rmax,0:rmax)
6477  double complex :: CA(0:rmax/2), CAuv(0:rmax/2)
6478  double precision :: CAerr(0:rmax),TAerr_aux(0:rmax),TAerr_aux2(0:rmax)
6479  double complex :: args(1)
6480  double precision :: TAdiff(0:rmax),norm(0:rmax),norm_coli,norm_dd,TAacc(0:rmax)
6481  integer :: r,n0,n1,n2,n3
6482  logical :: eflag
6483 
6484  if (n.ne.1) then
6485  call seterrflag_cll(-10)
6486  call errout_cll('TNten_cll','subroutine called with inconsistent arguments',eflag)
6487  end if
6488  if (n.gt.nmax_cll) then
6489  call seterrflag_cll(-10)
6490  call errout_cll('TNten_cll','argument N larger than Nmax_cll',eflag,.true.)
6491  write(nerrout_cll,*) 'N =',n
6492  write(nerrout_cll,*) 'Nmax_cll =',nmax_cll
6493  write(nerrout_cll,*) 'Reinitialize COLLIER with Nmax_cll >= ',n
6494  call propagateerrflag_cll
6495  return
6496  end if
6497  if (rmax.gt.rmax_cll) then
6498  call seterrflag_cll(-10)
6499  call errout_cll('TNten_cll','argument rmax larger than rmax_cll',eflag,.true.)
6500  write(nerrout_cll,*) 'rmax =',rmax
6501  write(nerrout_cll,*) 'rmax_cll =',rmax_cll
6502  write(nerrout_cll,*) 'Reinitialize COLLIER with rmax_cll >= ',rmax
6503  call propagateerrflag_cll
6504  return
6505  end if
6506 
6507  args(1) = masses2(0)
6508  call setmasterfname_cll('TNten_cll')
6509  call setmastern_cll(1)
6510  call setmasterr_cll(rmax)
6511  call setmasterargs_cll(1,args)
6512 
6513  call settencache_cll(tenred_cll-1)
6514 
6515  if (mode_cll.eq.3) then
6516  ! calculate tensor with coefficients from COLI
6517  mode_cll = 1
6518 ! call A_cll(CA,CAuv,masses2(0),rmax,CAerr,0)
6519  call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6520  call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
6521 
6522  ! calculate tensor with coefficients from DD
6523  mode_cll = 2
6524 ! call A_cll(CA,CAuv,masses2(0),rmax,CAerr,0)
6525  call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6526  call calctensora(ta2,tauv2,taerr_aux2,ca,cauv,caerr,rmax)
6527 
6528  ! comparison --> take better result
6529  mode_cll = 3
6530  do r=0,rmax
6531  norm_coli=0d0
6532  norm_dd=0d0
6533  do n0=0,r
6534  do n1=0,r-n0
6535  do n2=0,r-n0-n1
6536  n3=r-n0-n1-n2
6537  norm_coli = max(norm_coli,abs(ta(n0,n1,n2,n3)))
6538  norm_dd = max(norm_dd,abs(ta2(n0,n1,n2,n3)))
6539  end do
6540  end do
6541  end do
6542  if (norm_coli.eq.0d0) then
6543  norm_coli = abs(masses2(0))
6544  if(norm_coli.ne.0d0) then
6545  norm_coli=norm_coli**(1+real(r)/2)
6546  else
6547  norm_coli=muuv2_cll**(1+real(r)/2)
6548  end if
6549  end if
6550  if (norm_dd.eq.0d0) then
6551  norm_dd = abs(masses2(0))
6552  if(norm_dd.ne.0d0) then
6553  norm_dd=norm_dd**(1+real(r)/2)
6554  else
6555  norm_dd=muuv2_cll**(1+real(r)/2)
6556  end if
6557  end if
6558  norm(r) = min(norm_coli,norm_dd)
6559  end do
6560 
6561  call checktena_cll(ta,ta2,masses2,norm,rmax,tadiff)
6562 ! call CheckTensors_cll(TA,TA2,masses2,norm,1,rmax,TAdiff)
6563 
6564  if (taerr_aux(rmax).lt.taerr_aux2(rmax)) then
6565  if (present(taerr)) taerr = max(taerr_aux,tadiff*norm)
6566  do r=0,rmax
6567  taacc(r) = max(taerr_aux(r)/norm(r),tadiff(r))
6568  end do
6569  pointscnttnten_coli(1) = pointscnttnten_coli(1) + 1
6570  else
6571  ta = ta2
6572  tauv = tauv2
6573  if (present(taerr)) taerr = max(taerr_aux2,tadiff*norm)
6574  do r=0,rmax
6575  taacc(r) = max(taerr_aux2(r)/norm(r),tadiff(r))
6576  end do
6577  pointscnttnten_dd(1) = pointscnttnten_dd(1) + 1
6578  end if
6579 
6580  else
6581 ! call A_cll(CA,CAuv,masses2(0),rmax,CAerr,0)
6582  call tn_cll(ca,cauv,masses2(0:0),1,rmax,caerr,0)
6583  call calctensora(ta,tauv,taerr_aux,ca,cauv,caerr,rmax)
6584  if (present(taerr)) taerr = taerr_aux
6585  do r=0,rmax
6586  norm(r)=0d0
6587  do n0=0,r
6588  do n1=0,r-n0
6589  do n2=0,r-n0-n1
6590  n3=r-n0-n1-n2
6591  norm(r) = max(norm(r),abs(ta(n0,n1,n2,n3)))
6592  end do
6593  end do
6594  end do
6595  if (norm(r).eq.0d0) then
6596  norm(r) = abs(masses2(0))
6597  if(norm(r).ne.0d0) then
6598  norm(r)=norm(r)**(1+real(r)/2)
6599  else
6600  norm(r)=muuv2_cll**(1+real(r)/2)
6601  end if
6602  end if
6603  end do
6604  do r=0,rmax
6605  taacc(r) = taerr_aux(r)/norm(r)
6606  end do
6607 
6608  end if
6609 
6610  call propagateaccflag_cll(taacc,rmax)
6611  call propagateerrflag_cll
6612 
6613  if (monitoring) then
6614  pointscnttnten_cll(1) = pointscnttnten_cll(1) + 1
6615 
6616  if(maxval(taacc).gt.reqacc_cll) accpointscnttnten_cll(1) = accpointscnttnten_cll(1) + 1
6617 
6618  if(maxval(taacc).gt.critacc_cll) then
6619  critpointscnttnten_cll(1) = critpointscnttnten_cll(1) + 1
6620  if ( critpointscnttnten_cll(1).le.noutcritpointsmax_cll(1) ) then
6621  call critpointsout_cll('TNten_cll',1,maxval(taacc),critpointscnttnten_cll(1))
6622  if( critpointscnttnten_cll(1).eq.noutcritpointsmax_cll(1)) then
6623  write(ncpout_cll,*) ' Further output of Critical Points for TNten_cll suppressed for N =',1
6624  write(ncpout_cll,*)
6625  endif
6626 #ifdef CritPoints2
6627  call critpointsout2_cll('TNten_cll',1,maxval(taacc),critpointscnttnten_cll(1))
6628  if( critpointscnttnten_cll(1).eq.noutcritpointsmax_cll(1)) then
6629  write(ncpout2_cll,*) ' Further output of Critical Points for TNten_cll suppressed for N =',1
6630  write(ncpout2_cll,*)
6631  endif
6632 #endif
6633  end if
6634  end if
6635  end if
6636 

◆ tnten_list_cll()

subroutine collier_tensors::tnten_cll::tnten_list_cll ( double complex, dimension(:), intent(out)  TN,
double complex, dimension(:), intent(out)  TNuv,
double complex, dimension(0:3,max(n-1,1)), intent(in)  MomVec,
double complex, dimension(:), intent(in)  MomInv,
double complex, dimension(0:max(n-1,1)), intent(in)  masses2,
integer, intent(in)  N,
integer, intent(in)  rmax,
double precision, dimension(0:rmax), intent(out), optional  TNerr 
)

Definition at line 6184 of file collier_tensors.F90.

6184 
6185  integer, intent(in) :: N,rmax
6186  double complex, intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(:), masses2(0:max(N-1,1))
6187  double complex, intent(out) :: TN(:),TNuv(:)
6188  double precision, intent(out), optional :: TNerr(0:rmax)
6189  logical :: eflag
6190 
6191  if (n.eq.1) then
6192  call seterrflag_cll(-10)
6193  call errout_cll('TNten_cll','subroutine called with wrong number of arguments for N=1',eflag)
6194  call propagateerrflag_cll
6195  return
6196  end if
6197  if (n.gt.nmax_cll) then
6198  call seterrflag_cll(-10)
6199  call errout_cll('TNten_cll','argument N larger than Nmax_cll',eflag,.true.)
6200  write(nerrout_cll,*) 'N =',n
6201  write(nerrout_cll,*) 'Nmax_cll =',nmax_cll
6202  write(nerrout_cll,*) 'Reinitialize COLLIER with Nmax_cll >= ',n
6203  call propagateerrflag_cll
6204  return
6205  end if
6206  if (rmax.gt.rmax_cll) then
6207  call seterrflag_cll(-10)
6208  call errout_cll('TNten_cll','argument rmax larger than rmax_cll',eflag,.true.)
6209  write(nerrout_cll,*) 'rmax =',rmax
6210  write(nerrout_cll,*) 'rmax_cll =',rmax_cll
6211  write(nerrout_cll,*) 'Reinitialize COLLIER with rmax_cll >= ',rmax
6212  call propagateerrflag_cll
6213  return
6214  end if
6215 
6216  call tnten_list_checked_cll(tn,tnuv,momvec,mominv,masses2,n,rmax,tnerr)
6217 

◆ tnten_main_cll()

subroutine collier_tensors::tnten_cll::tnten_main_cll ( double complex, dimension(0:rmax,0:rmax,0:rmax,0:rmax), intent(out)  TN,
double complex, dimension(0:rmax,0:rmax,0:rmax,0:rmax), intent(out)  TNuv,
double complex, dimension(0:3,max(n-1,1)), intent(in)  MomVec,
double complex, dimension(:), intent(in)  MomInv,
double complex, dimension(0:max(n-1,1)), intent(in)  masses2,
integer, intent(in)  N,
integer, intent(in)  rmax,
double precision, dimension(0:rmax), intent(out), optional  TNerr 
)

Definition at line 5877 of file collier_tensors.F90.

5877 
5878  integer, intent(in) :: N,rmax
5879  double complex, intent(in) :: MomVec(0:3,max(N-1,1)), MomInv(:), masses2(0:max(N-1,1))
5880  double complex, intent(out) :: TN(0:rmax,0:rmax,0:rmax,0:rmax)
5881  double complex, intent(out) :: TNuv(0:rmax,0:rmax,0:rmax,0:rmax)
5882  double precision, intent(out), optional :: TNerr(0:rmax)
5883  logical :: eflag
5884 
5885  if (n.eq.1) then
5886  call seterrflag_cll(-10)
5887  call errout_cll('TNten_cll','subroutine called with wrong number of arguments for N=1',eflag)
5888  call propagateerrflag_cll
5889  return
5890  end if
5891 
5892  if (n.gt.nmax_cll) then
5893  call seterrflag_cll(-10)
5894  call errout_cll('TN_cll','argument N larger than Nmax_cll',eflag,.true.)
5895  write(nerrout_cll,*) 'N =',n
5896  write(nerrout_cll,*) 'Nmax_cll =',nmax_cll
5897  write(nerrout_cll,*) 'Reinitialize COLLIER with Nmax_cll >= ',n
5898  call propagateerrflag_cll
5899  return
5900  end if
5901  if (rmax.gt.rmax_cll) then
5902  call seterrflag_cll(-10)
5903  call errout_cll('TN_cll','argument rmax larger than rmax_cll',eflag,.true.)
5904  write(nerrout_cll,*) 'rmax =',rmax
5905  write(nerrout_cll,*) 'rmax_cll =',rmax_cll
5906  write(nerrout_cll,*) 'Reinitialize COLLIER with rmax_cll >= ',rmax
5907  call propagateerrflag_cll
5908  return
5909  end if
5910 
5911  call tnten_main_checked_cll(tn,tnuv,momvec,mominv,masses2,n,rmax,tnerr)
5912 

The documentation for this interface was generated from the following file:
endif
O0 g endif() string(TOLOWER "$
Definition: CMakeLists.txt:143