Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F7879121
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
23 KB
Subscribers
None
View Options
Index: branches/bach/release_2.1.1_hoppet_top_features/src/models/parameters.SM.f90
===================================================================
--- branches/bach/release_2.1.1_hoppet_top_features/src/models/parameters.SM.f90 (revision 5330)
+++ branches/bach/release_2.1.1_hoppet_top_features/src/models/parameters.SM.f90 (revision 5331)
@@ -1,229 +1,234 @@
! $Id: parameters.SM.f90,v 1.4 2006/06/16 13:31:48 kilian Exp $
!
! Copyright (C) 1999-2012 by
! Wolfgang Kilian <kilian@physik.uni-siegen.de>
! Thorsten Ohl <ohl@physik.uni-wuerzburg.de>
! Juergen Reuter <juergen.reuter@desy.de>
! Christian Speckner <christian.speckner@physik.uni-freiburg.de>
!
! WHIZARD is free software; you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! WHIZARD is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
module parameters_sm
use kinds
use constants
use sm_physics !NODEP!
use omega_vectors
use ilc_tt_threshold
implicit none
private
real(default), dimension(27), public :: mass, width
real(default), public :: as
complex(default), public :: gs, igs
real(default), public :: e, g, e_em
real(default), public :: sinthw, costhw, sin2thw, tanthw
real(default), public :: qelep, qeup, qedwn
complex(default), public :: qlep, qup, qdwn, gcc, qw, &
gzww, gwww, ghww, ghhww, ghzz, ghhzz, &
ghbb, ghtt, ghcc, ghtautau, gh3, gh4, ghmm, &
iqw, igzww, igwww, gw4, gzzww, gazww, gaaww
real(default), public :: vev
complex(default), dimension(2), public :: &
gncneu, gnclep, gncup, gncdwn
logical, public :: ilc_tt_flag = .false.
public :: import_from_whizard, model_update_alpha_s, &
ilc_tt_fudge, va_ilc_tta, va_ilc_ttz
contains
subroutine import_from_whizard (par_array)
real(default), dimension(30), intent(in) :: par_array
type :: parameter_set
real(default) :: gf
real(default) :: mZ
real(default) :: mW
real(default) :: mH
real(default) :: alphas
real(default) :: me
real(default) :: mmu
real(default) :: mtau
real(default) :: ms
real(default) :: mc
real(default) :: mb
real(default) :: mtop
real(default) :: wtop
real(default) :: wZ
real(default) :: wW
real(default) :: wH
real(default) :: khgaz
real(default) :: khgaga
real(default) :: khgg
real(default) :: xi0
real(default) :: xipm
real(default) :: ilc_tt
real(default) :: m1s
real(default) :: vsoft
real(default) :: vmax
real(default) :: nloop
real(default) :: v
real(default) :: cw
real(default) :: sw
real(default) :: ee
end type parameter_set
type(parameter_set) :: par
!!! This corresponds to 1/alpha = 137.03598949333
real(default), parameter :: &
alpha = 1.0_default/137.03598949333_default
e_em = sqrt(4.0_default * PI * alpha)
par%gf = par_array(1)
par%mZ = par_array(2)
par%mW = par_array(3)
par%mH = par_array(4)
par%alphas = par_array(5)
par%me = par_array(6)
par%mmu = par_array(7)
par%mtau = par_array(8)
par%ms = par_array(9)
par%mc = par_array(10)
par%mb = par_array(11)
par%mtop = par_array(12)
par%wtop = par_array(13)
par%wZ = par_array(14)
par%wW = par_array(15)
par%wH = par_array(16)
par%khgaz = par_array(17)
par%khgaga = par_array(18)
par%khgg = par_array(19)
par%xi0 = par_array(20)
par%xipm = par_array(21)
par%ilc_tt = par_array(22)
par%m1s = par_array(23)
par%vsoft = par_array(24)
par%vmax = par_array(25)
par%nloop = par_array(26)
par%v = par_array(27)
par%cw = par_array(28)
par%sw = par_array(29)
par%ee = par_array(30)
mass(1:27) = 0
width(1:27) = 0
mass(3) = par%ms
mass(4) = par%mc
mass(5) = par%mb
mass(6) = par%mtop
width(6) = par%wtop
mass(11) = par%me
mass(13) = par%mmu
mass(15) = par%mtau
mass(23) = par%mZ
width(23) = par%wZ
mass(24) = par%mW
width(24) = par%wW
mass(25) = par%mH
width(25) = par%wH
mass(26) = par%xi0 * mass(23)
width(26) = 0
mass(27) = par%xipm * mass(24)
width(27) = 0
vev = par%v
e = par%ee
sinthw = par%sw
sin2thw = par%sw**2
costhw = par%cw
tanthw = sinthw/costhw
qelep = - 1
qeup = 2.0_default / 3.0_default
qedwn = - 1.0_default / 3.0_default
g = e / sinthw
gcc = - g / 2 / sqrt (2.0_default)
gncneu(1) = - g / 2 / costhw * ( + 0.5_default)
gnclep(1) = - g / 2 / costhw * ( - 0.5_default - 2 * qelep * sin2thw)
gncup(1) = - g / 2 / costhw * ( + 0.5_default - 2 * qeup * sin2thw)
gncdwn(1) = - g / 2 / costhw * ( - 0.5_default - 2 * qedwn * sin2thw)
gncneu(2) = - g / 2 / costhw * ( + 0.5_default)
gnclep(2) = - g / 2 / costhw * ( - 0.5_default)
gncup(2) = - g / 2 / costhw * ( + 0.5_default)
gncdwn(2) = - g / 2 / costhw * ( - 0.5_default)
qlep = - e * qelep
qup = - e * qeup
qdwn = - e * qedwn
qw = e
iqw = (0,1)*qw
gzww = g * costhw
igzww = (0,1)*gzww
gwww = g
igwww = (0,1)*gwww
gw4 = gwww**2
gzzww = gzww**2
gazww = gzww * qw
gaaww = qw**2
ghww = mass(24) * g
ghhww = g**2 / 2.0_default
ghzz = mass(23) * g / costhw
ghhzz = g**2 / 2.0_default / costhw**2
ghtt = - mass(6) / vev
ghbb = - mass(5) / vev
ghcc = - mass(4) / vev
ghtautau = - mass(15) / vev
ghmm = - mass(13) / vev
gh3 = - 3 * mass(25)**2 / vev
gh4 = - 3 * mass(25)**2 / vev**2
!!! Color flow basis, divide by sqrt(2)
gs = sqrt(2.0_default*PI*par%alphas)
igs = cmplx (0.0_default, 1.0_default, kind=default) * gs
if ( par%ilc_tt > 0. ) then
ilc_tt_flag = .true.
call ilc_tt_init (mass(6), width(6), par%m1s, par%vsoft, par%vmax, int(par%nloop))
end if
end subroutine import_from_whizard
subroutine model_update_alpha_s (alpha_s)
real(default), intent(in) :: alpha_s
gs = sqrt(2.0_default*PI*alpha_s)
igs = cmplx (0.0_default, 1.0_default, kind=default) * gs
end subroutine model_update_alpha_s
function ilc_tt_fudge (p, q, i) result (c)
complex(default) :: c
type(momentum), intent(in) :: p, q
integer, intent(in) :: i
real(default) :: en, pt
+ real(single) :: m1, m2
c = 0.0_default
if ( .not. ilc_tt_flag ) return
+!!! on-shell veto???
+! mp = sqrt(p*p)
+! mq = sqrt(q*q)
+! if ( mp==real(mass(6),kind=single) .and. mq==real(mass(6),kind=single) ) return
en = sqrt( (p+q)*(p+q) )
pt = sqrt( dot_product(p%x,p%x) )
c = ilc_tt_formfactor (pt, en, i)
! print *, "c = ", c
end function ilc_tt_fudge
function va_ilc_tta (p, q, i) result (c)
complex(default) :: c
type(momentum), intent(in) :: p, q
integer, intent(in) :: i
c = 0.0_default
if ( i==1 ) c = qup * ilc_tt_fudge (p, q, 1)
end function va_ilc_tta
function va_ilc_ttz (p, q, i) result (c)
complex(default) :: c
type(momentum), intent(in) :: p, q
integer, intent(in) :: i
c = gncup(i) * ilc_tt_fudge (p, q, i)
end function va_ilc_ttz
end module parameters_sm
Index: branches/bach/release_2.1.1_hoppet_top_features/src/misc/ilc_tt_threshold.f90
===================================================================
--- branches/bach/release_2.1.1_hoppet_top_features/src/misc/ilc_tt_threshold.f90 (revision 5330)
+++ branches/bach/release_2.1.1_hoppet_top_features/src/misc/ilc_tt_threshold.f90 (revision 5331)
@@ -1,469 +1,469 @@
! WHIZARD <<Version>> <<Date>>
! Copyright (C) 1999-2013 by
! Wolfgang Kilian <kilian@physik.uni-siegen.de>
! Thorsten Ohl <ohl@physik.uni-wuerzburg.de>
! Juergen Reuter <juergen.reuter@desy.de>
! Christian Speckner <christian.speckner@physik.uni-freiburg.de>
! Fabian Bach <fabian.bach@desy.de> (only this file)
!
! WHIZARD is free software; you can redistribute it and/or modify it
! under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2, or (at your option)
! any later version.
!
! WHIZARD is distributed in the hope that it will be useful, but
! WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
module ilc_tt_threshold
use kinds
use constants, only: CF, imago
use file_utils, only: free_unit
use iso_varying_string, string_t => varying_string !NODEP!
use sm_physics !NODEP!
use interp !NODEP!
use nr_hypgeo_interface !NODEP!
use system_dependencies !NODEP!
implicit none
save
private
integer, parameter :: data_num = 100
real(default), parameter :: dm = 30.0_default
integer :: init = 0
integer :: nloop = -1
integer :: data_num_va(2)
real(default) :: vsoft = 0.
real(single) :: en_ref = -1.E9
-! real(single) :: switch = 1.
- real(default) :: switch = sqrt( 0.64_default )
+ real(single) :: switch = 1.
+! real(default) :: switch = sqrt( 0.64_default )
real(default) :: asoft, mtpole, gam, ptmax, intv(2)
! real(default), allocatable, dimension ( :, : ) :: k_data, r_data
real(default) :: k_data(2,data_num), r_data(2,data_num)
public :: ilc_tt_init, ilc_tt_formfactor
contains
subroutine ilc_tt_init (mpole, width, m1s, vs, vmax, nl, init_in)
real(default), intent(inout) :: mpole
real(default), intent(in) :: width
real(default), intent(in) :: m1s
real(default), intent(in) :: vs
real(default), intent(in) :: vmax
integer, intent(in) :: nl
integer, intent(in), optional :: init_in
if ( init==0 ) print *, "Initialize vector/axial ttbar threshold production resummation:"
if ( .not.present(init_in) ) then
call ilc_tt_init_semi (mpole, width, m1s, vs, vmax, nl)
else
select case (init_in)
case (1)
call ilc_tt_init_interp (mpole, width, m1s, vs, vmax, nl)
case (2)
call ilc_tt_init_analytic (mpole, width, m1s, vs, vmax, nl)
case (3)
call ilc_tt_init_semi (mpole, width, m1s, vs, vmax, nl)
case default
print *, " ERROR: invalid form factor approach!"
print *, " ERROR: rv/ra => LO!"
init = 0
end select
end if
end subroutine ilc_tt_init
subroutine ilc_tt_init_interp (mpole, width, m1s, vs, vmax, nl)
real(default), intent(inout) :: mpole
real(default), intent(in) :: width
real(default), intent(in) :: m1s
real (default), intent(in) :: vs
real (default), intent(in) :: vmax
integer, intent(in) :: nl
integer :: i, j
integer :: io_error
real(default) :: k
real(default) :: r
type(string_t), dimension(2) :: rva
type(string_t), dimension(2) :: scanfile
type(string_t) :: mprefix
character(len=1) :: nloop_s
character(len=3) :: vsoft_s
integer :: u
if ( init==1 ) then
if ( (nl==nloop) .and. (vs==vsoft) ) then
return
else
init = 0
! if ( allocated(k_data) ) deallocate ( k_data )
! if ( allocated(r_data) ) deallocate ( r_data )
end if
end if
call init_parameters (mpole, width, m1s, vs, vmax, nl)
! data_num = 0
rva = (/ "rv", "ra" /)
! mprefix = PKGDATADIR // "/ilc_tt_threshold/scan_"
mprefix = PREFIX // "/share/whizard/ilc_tt_threshold/scan_"
write (nloop_s, '(i1)') nloop
write (vsoft_s, '(f3.1)') vsoft
print *, " Use numeric threshold shape interpolation (no interference)"
if ( nloop > 2 ) then
print *, " WARNING: numeric ", ("N",I=1,nloop), "LL not supported yet!"
print *, " rv/ra => LO"
return
end if
print *, " rv => ", ("N",i=1,nloop), "LL (v=", vsoft_s, ")"
if ( nloop==2 ) then
print *, " ra => LL (v=", vsoft_s, ")"
else
print *, " ra => LO"
end if
print *, " threshold shapes from Hoang et al. [arXiv:hep-ph/0107144]"
do i = 1, 2
data_num_va(i) = 2
intv(i) = 0.0_default
if ( i==2 .and. nloop<2 ) exit
scanfile(i) = mprefix // rva(i) // "_n" // nloop_s // "_v" // vsoft_s // ".dat"
u = free_unit ()
open(unit=u, file=char(scanfile(i)), status='old', action='read', iostat=io_error)
if ( io_error == 0) then
do
read(u,*, iostat=io_error)
data_num_va(i) = data_num_va(i) + 1
if (io_error == -1) exit
end do
else
print *, " ERROR (", io_error, ") while opening file ", char(scanfile(i))
cycle
end if
close(u)
end do
! if ( data_num_va(1) > 2 ) data_num = data_num_va(1)
! if ( data_num_va(2) > data_num_va(1) ) data_num = data_num_va(2)
! if ( data_num==0 ) then
if ( (data_num_va(1)==2) .and. (data_num_va(2)==2) ) then
print *, " WARNING: rv/ra => LO (no scan points)!"
return
end if
if ( (data_num_va(1)>data_num) .or. (data_num_va(2)>data_num) ) then
print *, " ERROR: insufficient memory allocated for scan size!"
print *, " ERROR: rv/ra => LO (no scan points)!"
return
end if
init = 1
! allocate ( k_data(2,data_num) )
! allocate ( r_data(2,data_num) )
do i = 1, 2
k_data(i,:) = (/ (0.,I=1,data_num) /)
r_data(i,:) = (/ (0.,I=1,data_num) /)
if ( i==2 .and. nloop<2 ) exit
if ( data_num_va(i)==2 ) then
print *, " WARNING: ", char(rva(i)), " => LO (no scan points)!"
cycle
end if
u = free_unit ()
open(unit=u, file=char(scanfile(i)), status='old', action='read')
do j = 2, data_num_va(i)-1
read(u,*) k, r
k_data(i,j) = k
!!! subtract LO contribution (r=1) contained in the SM piece
if ( r>1. ) r_data(i,j) = r - 1.
end do
close(u)
intv(i) = ( k_data(i,data_num_va(i)-1) - k_data(i,2) )
k_data(i,1) = k_data(i,2) - intv(i) / 2.
k_data(i,data_num_va(i)) = k_data(i,data_num_va(i)-1) + intv(i) / 2.
if ( intv(i)==0.0_default ) then
print *, " WARNING: ", char(rva(i)), " => LO (interpolation range vanishes)!"
cycle
end if
print *, " ", char(rva(i)), " initialized (", data_num_va(i)-2, " scan points)."
end do
end subroutine ilc_tt_init_interp
subroutine ilc_tt_init_analytic (mpole, width, m1s, vs, vmax, nl)
real(default), intent(inout) :: mpole
real(default), intent(in) :: width
real(default), intent(in) :: m1s
real(default), intent(in) :: vs
real(default), intent(in) :: vmax
integer, intent(in) :: nl
integer :: i
call init_parameters (mpole, width, m1s, vs, vmax, nl)
if ( init==2 ) return
print *, " Use analytic form factor for ttA/ttZ couplings at threshold"
if ( nloop > 0 ) then
print *, " WARNING: analytic ", ("N",i=1,nloop), "LL not supported yet!"
print *, " rv/ra => LO"
return
end if
print *, " rv => ", ("N",I=1,nloop), "LL (v=", vsoft, ")"
if ( nloop==2 ) then
print *, " ra => LL (v=", vsoft, ")"
else
print *, " ra => LO"
end if
print *, " threshold shapes from Hoang, Stahlhofen [arXiv:1309.6323]"
init = 2
end subroutine ilc_tt_init_analytic
subroutine ilc_tt_init_semi (mpole, width, m1s, vs, vmax, nl)
real(default), intent(inout) :: mpole
real(default), intent(in) :: width
real(default), intent(in) :: m1s
real(default), intent(in) :: vs
real(default), intent(in) :: vmax
integer, intent(in) :: nl
integer :: i
call init_parameters (mpole, width, m1s, vs, vmax, nl)
if ( init==3 ) then
! if ( allocated(k_data) .and. allocated(r_data) ) then
return
! else
! init = 0
! if ( allocated(k_data) ) deallocate ( k_data )
! if ( allocated(r_data) ) deallocate ( r_data )
! end if
end if
print *, " Use semi-analytic form factor for ttA/ttZ couplings at threshold"
print *, " (scan for constant sqrts and interpolate for top 3-momentum)"
if ( nloop > 0 ) then
print *, " WARNING: analytic ", ("N",i=1,nloop), "LL not supported yet!"
print *, " rv/ra => LO"
return
end if
print *, " rv => ", ("N",I=1,nloop), "LL (v=", vsoft, ")"
if ( nloop==2 ) then
print *, " ra => LL (v=", vsoft, ")"
else
print *, " ra => LO"
end if
print *, " threshold shapes from Hoang, Stahlhofen [arXiv:1309.6323]"
init = 3
! data_num = 100
! allocate ( k_data(1,data_num) )
! allocate ( r_data(2,data_num) )
end subroutine ilc_tt_init_semi
function ilc_tt_formfactor (pt, sqrts, i) result (c)
real(default), intent(in) :: pt
real(default), intent(in) :: sqrts
integer, intent(in) :: i
complex(default) :: c
real(default) :: en
c = 0.0_default
en = sqrts - 2.*mtpole
! if ( en < -2.*dm ) return
- if ( en > 2.*dm ) then
- c = sqrt( 1.37_default ) - 1.0_default
- return
- end if
+! if ( en > 2.*dm ) then
+! c = sqrt( 1.37_default ) - 1.0_default
+! return
+! end if
if ( pt > ptmax ) return
! if ( pt > ptmax .or. en > 2.*dm ) return
! print *, "asoft = ", asoft
! print *, "mtpole = ", mtpole
! print *, "p = ", pt
! print *, "sqrts = ", sqrts
! print *, "gam = ", gam
! print *, "en = ", en
select case (init)
case (1)
c = ilc_tt_interp (en, i)
case (2)
c = ilc_tt_analytic (pt, en, i)
! c = ilc_tt_analytic (min(pt,ptmax), en, i)
case (3)
c = ilc_tt_semi (pt, en, i)
! c = ilc_tt_semi (min(pt,ptmax), en, i)
case default
return
end select
end function ilc_tt_formfactor
function ilc_tt_interp (en, i) result (c)
real(default), intent(in) :: en
integer, intent(in) :: i
real(default) :: c
real(default) :: t_data(data_num_va(i))
real(default) :: p_data(1,data_num_va(i))
real(default) :: t_interp(1)
real(default) :: p_interp(2,1)
c = 0.0_default
if ( abs(en) > intv(i) ) return
t_data(:) = k_data(i,1:data_num_va(i))
p_data(1,:) = r_data(i,1:data_num_va(i))
t_interp(1) = en / gam
p_interp(1,1) = 0.
!!! INTERP routine
! call interp_lagrange ( &
call interp_linear ( &
! call interp_nearest ( &
1, data_num_va(i), t_data, p_data, 1, t_interp, p_interp )
c = p_interp(1,1)
end function ilc_tt_interp
!!! analytic form factor, normalizing to and subtracting the LO
function ilc_tt_analytic (pt, en, i) result (c)
real(default), intent(in) :: pt
real(default), intent(in) :: en
integer, intent(in) :: i
complex(default) :: c
real(default) :: edge
c = 0.0_default
if ( i==2 ) return
!!! smooth transition to c = 0 between
! if ( abs(en) > dm ) then
! edge = 2.
! en_abs = abs(en)
! ! switch = 1. - (en_abs-dm) / dm !!! linear
! switch = ( 1. - atan( 2.*edge*(en_abs-1.5*dm)/dm ) / atan(edge) )/2. !!! arctan
! ! switch = ( 1. - erf ( 2.*edge*(en_abs-1.5*dm)/dm ) / erf (edge) )/2. !!! erf
! ! print *, "switch = ", switch
! end if
c = switch * ( G0p ( CF * asoft, mtpole, pt, en, gam) &
/ G0p (0.0_default, mtpole, pt, en, gam) &
! - 1.0_default )
) - 1.0_default
end function ilc_tt_analytic
!!! semi-analytic form factor: scan for constant sqrts, interpolate pt values
function ilc_tt_semi (pt, en, i) result (c)
real(default), intent(in) :: pt
real(default), intent(in) :: en
integer, intent(in) :: i
complex(default) :: c
real(default) :: t_data(data_num)
real(default) :: p_data(2,data_num)
real(default) :: t_interp(1)
real(default) :: p_interp(2,1)
integer :: data_it
! real(default) :: dt1, dt2, dt3
! real(default) :: tres=0., tref=0.
! call cpu_time(tres)
! tref=tres
c = 0.0_default
if ( i==2 ) return
!!! refill scan arrays if energy has changed
if ( real(en,kind=single) /= en_ref ) then
do data_it=1, data_num
k_data(1,data_it) = real(data_it) / real(data_num) * ptmax
c = ilc_tt_analytic (k_data(1,data_it), en, i)
r_data(1,data_it) = real(c)
r_data(2,data_it) = aimag(c)
end do
en_ref = en
end if
! call cpu_time(tres)
! dt1 = tres-tref
! tref=tres
t_data(:) = k_data(1,1:data_num)
p_data(:,:) = r_data(:,1:data_num)
t_interp(1) = pt
p_interp(1,1) = 0.
p_interp(2,1) = 0.
! call cpu_time(tres)
! dt2 = tres-tref
! tref=tres
!!! INTERP routine
call interp_linear ( &
2, data_num, t_data, p_data, 1, t_interp, p_interp )
c = p_interp(1,1) + imago*p_interp(2,1)
! call cpu_time(tres)
! dt3 = tres-tref
! print *, " DT ", dt1, " ", dt2, " ", dt3
end function ilc_tt_semi
!!! Max's LL nonrelativistic threshold Green's function
function G0p (a, m, p, en, w) result (c)
real(default), intent(in) :: a
real(default), intent(in) :: m
real(default), intent(in) :: p
real(default), intent(in) :: en
real(default), intent(in) :: w
complex(default) :: c
complex(default) :: k, ipk, la, z1, z2
complex(default) :: one, two, cc, dd
k = sqrt( -m*en -imago*m*w )
ipk = imago * p / k
la = a * m / 2. / k
one = 1.
two = 2.
cc = 2. - la
dd = ( 1. + ipk ) / 2.
z1 = nr_hypgeo (two, one, cc, dd)
dd = ( 1. - ipk ) / 2.
z2 = nr_hypgeo (two, one, cc, dd)
c = - imago * m / (4.*p*k) / (1.-la) * ( z1 - z2 )
end function G0p
function m1s_to_mpole (m1s, as) result (mpole)
real(default), intent(in) :: m1s
real(default), intent(in) :: as
real(default) :: mpole
mpole = m1s * ( 1. + deltaLL(as) )
end function m1s_to_mpole
function mpole_to_m1s (mpole, as) result (m1s)
real(default), intent(in) :: mpole
real(default), intent(in) :: as
real(default) :: m1s
m1s = mpole * ( 1. - deltaLL(as) )
end function mpole_to_m1s
function deltaLL (as) result (del)
real(default), intent(in) :: as
real(default) :: del
del = 2.0_default / 9.0_default * as**2
end function deltaLL
subroutine init_parameters (mpole, width, m1s, vs, vmax, nl)
real(default), intent(inout) :: mpole
real(default), intent(in) :: width
real(default), intent(in) :: m1s
real (default), intent(in) :: vs
real (default), intent(in) :: vmax
integer, intent(in) :: nl
vsoft = vs
nloop = nl
gam = width
if ( m1s > 0. ) then
asoft = running_as (m1s/2.*vsoft)
mpole = m1s_to_mpole (m1s, asoft)
else
asoft = running_as (mpole/2.*vsoft)
end if
mtpole = mpole
-! ptmax = mtpole * vmax
- ptmax = sqrt( 2.*mtpole*dm )
+ ptmax = mtpole * vmax
+! ptmax = sqrt( 2.*mtpole*dm )
end subroutine init_parameters
end module ilc_tt_threshold
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Tue, Nov 19, 7:37 PM (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3805863
Default Alt Text
(23 KB)
Attached To
rWHIZARDSVN whizardsvn
Event Timeline
Log In to Comment