JHUGen MELA  JHUGen v7.5.6, MELA v2.4.2
Matrix element calculations as used in JHUGen.
hto_ln_2_riemann Module Reference

Data Types

interface  operator(.lnsrs.)
 

Functions/Subroutines

real *8 function, dimension(2) lnsrs (x, y)
 

Function/Subroutine Documentation

◆ lnsrs()

real*8 function, dimension(2) hto_ln_2_riemann::lnsrs ( real*8, dimension(2), intent(in)  x,
real*8, dimension(2), intent(in)  y 
)

Definition at line 523 of file CALLING_cpHTO.f.

523  USE hto_riemann
524  USE hto_full_ln
525  USE hto_units
526  IMPLICIT NONE
527  real*8, dimension(2) :: lnsrs,x,y,olnsrs
528  real*8 ax,ay,teta,tnteta,ilnx,sr,si,sx,sy,xms
529  INTENT(IN) x,y
530 *
531  IF(abs(y(2)).ne.1.d0) THEN
532 *
533  xms= x(1)*x(1)+x(2)*x(2)
534  IF(abs(1.d0-sqrt(xms)).lt.1.d-12) THEN
535  teta= atan(abs(x(2)/x(1)))
536  sr= x(1)/abs(x(1))
537  si= x(2)/abs(x(2))
538  lnsrs(1)= 0.d0
539  IF(sr > 0.d0) THEN
540  lnsrs(2)= si*teta
541  ELSE
542  lnsrs(2)= si*(pi-teta)
543  ENDIF
544  RETURN
545  ELSE
546  lnsrs= x(1).fln.x(2)
547  olnsrs= y(1).fln.y(2)
548  RETURN
549  ENDIF
550  ENDIF
551 *
552  lnsrs(1)= 0.5d0*log(x(1)*x(1)+x(2)*x(2))
553  ax= abs(x(1))
554  ay= abs(x(2))
555  IF(x(1).eq.0.d0) THEN
556  IF(x(2) > 0.d0) THEN
557  teta= pi/2.d0
558  ELSE
559  teta= -pi/2.d0
560  ENDIF
561  ilnx= teta
562  ELSE IF(x(2).eq.0.d0) THEN
563  IF(x(1) > 0.d0) THEN
564  teta= 0.d0
565  ELSE
566  teta= pi
567  ENDIF
568  ilnx= teta
569  ELSE
570  tnteta= ay/ax
571  teta= atan(tnteta)
572  sr= x(1)/ax
573  si= x(2)/ay
574  IF(sr > 0.d0) THEN
575  ilnx= si*teta
576  ELSE
577  ilnx= si*(pi-teta)
578  ENDIF
579  ENDIF
580 *
581  IF(x(1) > 0.d0) THEN
582  IF(y(1) < 0.d0) THEN
583  IF((x(2) > 0.d0.and.y(2) > 0).or.
584  # (x(2) < 0.d0.and.y(2) < 0)) THEN
585  lnsrs(2)= ilnx
586  ELSEIF(x(2) > 0.d0.and.y(2) < 0) THEN
587  lnsrs(2)= ilnx-pi
588  ELSE
589  print*,'+++++++++++++++++++++++++++++++++++'
590  print*,' anomaly ln '
591  print*,x
592  print*,y
593  print*,'+++++++++++++++++++++++++++++++++++'
594  ENDIF
595  ELSE
596  lnsrs(2)= ilnx
597  ENDIF
598  ELSE
599  IF(abs(y(2)).ne.1.d0) THEN
600  print*,' Wrong argument for LNSRS '
601  stop
602  ELSE
603 *
604  IF((x(2)*y(2)) < 0.d0) THEN
605  lnsrs(2)= ilnx+2.d0*y(2)*pi
606  ELSE
607  lnsrs(2)= ilnx
608  ENDIF
609 *
610  ENDIF
611  ENDIF
612  RETURN
hto_riemann
Definition: CALLING_cpHTO.f:195
hto_ln_2_riemann::lnsrs
real *8 function, dimension(2) lnsrs(x, y)
Definition: CALLING_cpHTO.f:523
hto_units
Definition: CALLING_cpHTO.f:179
hto_full_ln
Definition: CALLING_cpHTO.f:464
hto_full_ln::fln
real *8 function, dimension(2) fln(x, y)
Definition: CALLING_cpHTO.f:470