Page MenuHomeHEPForge

No OneTemporary

Index: trunk/HiggsBounds-5/AllAnalyses
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: trunk/HiggsBounds-5/theo_manip.f90
===================================================================
--- trunk/HiggsBounds-5/theo_manip.f90 (revision 598)
+++ trunk/HiggsBounds-5/theo_manip.f90 (revision 599)
@@ -1,1872 +1,1872 @@
! This file is part of HiggsBounds
! -KW
!******************************************************************
module theo_manip
!******************************************************************
!use S95tables_type1
use usefulbits, only : ndat,np,Hneut,Hplus,theo,partR,hadroncolliderextras,pdesc
implicit none
type(hadroncolliderextras) :: tevS(1) ! OBSOLETE !
type(hadroncolliderextras) :: lhc7S(1) ! OBSOLETE !
type(hadroncolliderextras) :: lhc8S(1) ! OBSOLETE !
contains
!*******************************************************************
! NEW HB-5 routines:
!*******************************************************************
subroutine HB5_complete_theo
!*******************************************************************
use usefulbits, only : whichanalyses,whichinput,ndat,BRdirectinput
implicit none
if(np(Hneut)>0) then
select case(whichinput)
case('effC')
call HB5_csratios_from_effC ! (DONE, needs adjustments)
call HB5_cp_from_effC
if(.not.BRdirectinput) then
call HB5_br_from_effC
endif
case('SLHA')
call HB5_csratios_from_effC
call HB5_cp_from_effC
case('hadr')
case default
stop 'error in subroutine complete_theo (2): unknown whichinput!'
end select
endif
call complete_BRs
call check_dataset ! Checks consistency in BRs and total width
if(np(Hneut)>0)then
select case(whichanalyses)
case('onlyH','LandH','onlyP','list ')
! n.b. there's no LEP SM cross sections at the moment
call fill_theo_SM
! HB-5.2: calculate hadronic channelrates (need SM reference values)
call complete_channelrates
case('onlyL')
case default
stop 'error in subroutine complete_theo (2): unknown whichinput!'
end select
endif
end subroutine HB5_complete_theo
!*******************************************************************
subroutine HB5_recalculate_theo_for_datapoint(n)
!*******************************************************************
! Does the same as complete_theo but just for the datapoint n.
use usefulbits, only : whichanalyses,whichinput,BRdirectinput
implicit none
integer, intent(in) :: n
if(np(Hneut)>0) then
select case(whichinput)
case('effC')
call HB5_csratios_from_effC_for_datapoint(n)
if(.not.BRdirectinput) then
call HB5_br_from_effC_for_datapoint(n)
endif
case('SLHA')
call HB5_csratios_from_effC_for_datapoint(n)
case('hadr','part')
case default
stop 'error in subroutine recalculate_theo_for_datapoint (1)'
end select
endif
call check_dataset ! Checks consistency in BRs and total width
if(np(Hneut)>0)then
select case(whichanalyses)
case('onlyH','LandH','onlyP','list ')
! n.b. there's no LEP SM cross sections at the moment
call fill_theo_SM_for_datapoint(n)
case('onlyL')
case default
stop 'error in subroutine recalculate_theo_for_datapoint (2)'
end select
endif
! DEBUGGING:
! write(*,*) '# --------- complete_theo debugging --------- #'
! write(*,*) 'XS(ggH)_norm at TeV: ', theo(1)%tev%XS_gg_hj_ratio
! write(*,*) 'XS(bbH)_norm at TeV: ', theo(1)%tev%XS_bb_hj_ratio
! write(*,*) 'XS(VBF)_norm at Tev: ', theo(1)%tev%XS_vbf_ratio
! write(*,*) 'XS(HZ)_norm at Tev: ', theo(1)%tev%XS_hjZ_ratio
! write(*,*) 'XS(HW)_norm at TeV: ', theo(1)%tev%XS_hjW_ratio
! write(*,*) 'XS(ttH)_norm at TeV: ', theo(1)%tev%XS_tthj_ratio
! write(*,*) 'XS(tH)_norm at TeV: ', theo(1)%tev%XS_thj_tchan_ratio
!
! write(*,*) 'XS(ggH)_norm at 7 TeV: ', theo(1)%lhc7%XS_gg_hj_ratio
! write(*,*) 'XS(bbH)_norm at 7 TeV: ', theo(1)%lhc7%XS_bb_hj_ratio
! write(*,*) 'XS(VBF)_norm at 7 Tev: ', theo(1)%lhc7%XS_vbf_ratio
! write(*,*) 'XS(HZ)_norm at 7 TeV: ', theo(1)%lhc7%XS_hjZ_ratio
! write(*,*) 'XS(HW)_norm at 7 TeV: ', theo(1)%lhc7%XS_hjW_ratio
! write(*,*) 'XS(ttH)_norm at 7 TeV: ', theo(1)%lhc7%XS_tthj_ratio
! write(*,*) 'XS(tH)_norm at 7 TeV: ', theo(1)%lhc7%XS_thj_tchan_ratio
!
! write(*,*) 'XS(ggH)_norm at 8 TeV: ', theo(1)%lhc8%XS_gg_hj_ratio
! write(*,*) 'XS(bbH)_norm at 8 TeV: ', theo(1)%lhc8%XS_bb_hj_ratio
! write(*,*) 'XS(VBF)_norm at 8 Tev: ', theo(1)%lhc8%XS_vbf_ratio
! write(*,*) 'XS(HZ)_norm at 8 TeV: ', theo(1)%lhc8%XS_hjZ_ratio
! write(*,*) 'XS(HW)_norm at 8 TeV: ', theo(1)%lhc8%XS_hjW_ratio
! write(*,*) 'XS(ttH)_norm at 8 TeV: ', theo(1)%lhc8%XS_tthj_ratio
! write(*,*) 'XS(tH)_norm at 8 TeV: ', theo(1)%lhc8%XS_thj_tchan_ratio
!
! write(*,*) 'XS(ggH)_norm at 13 TeV: ', theo(1)%lhc13%XS_gg_hj_ratio
! write(*,*) 'XS(bbH)_norm at 13 TeV: ', theo(1)%lhc13%XS_bb_hj_ratio
! write(*,*) 'XS(VBF)_norm at 13 Tev: ', theo(1)%lhc13%XS_vbf_ratio
! write(*,*) 'XS(HZ)_norm at 13 TeV: ', theo(1)%lhc13%XS_hjZ_ratio
! write(*,*) 'XS(HW)_norm at 13 TeV: ', theo(1)%lhc13%XS_hjW_ratio
! write(*,*) 'XS(ttH)_norm at 13 TeV: ', theo(1)%lhc13%XS_tthj_ratio
! write(*,*) 'XS(tH)_norm at 13 TeV: ', theo(1)%lhc13%XS_thj_tchan_ratio
! write(*,*) '# --------- end debugging --------- #'
! ------
end subroutine HB5_recalculate_theo_for_datapoint
!*******************************************************************
subroutine HB5_csratios_from_effC
! calls the subroutine csratios_from_effC_for_datapoint for each
! datapoint
!*****************************************************************
use usefulbits, only : ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1) stop 'error in csratios_from_g2 (np(Hneut))'
do jj=1,ndat
call HB5_csratios_from_effC_for_datapoint(jj)
enddo
end subroutine HB5_csratios_from_effC
!******************************************************************
subroutine HB5_csratios_from_effC_for_datapoint(jj)
! uses the effective couplings contained in effC to calculate
! the hadronic cross section ratios
!*****************************************************************
use usefulbits, only : effC
use theory_colliderSfunctions ! TODO: this includes the ratio functions, needs to be cleaned!
use theory_XS_SM_functions
use S95tables, only : inrange
implicit none
integer, intent(in) :: jj
!--------------------------------------internal
integer :: i,j
double precision :: TEVSM_ZZ_contrib_to_VBF,TEVSM_WW_contrib_to_VBF
double precision :: Mhi
integer :: kk ! DEBUG int
!---------------------------------------------
! relative contributuion of WW- and ZZ-fusion to VBF (in LO) for
! p p-bar collisions at SqrtS=1.96 TeV (calcuated by T. Figy with VBFNLO):s
TEVSM_ZZ_contrib_to_VBF=0.23D0
TEVSM_WW_contrib_to_VBF=0.77D0
do i=1,np(Hneut)
Mhi=theo(jj)%particle(Hneut)%M(i)
!---------------------------------------!
! LEP !
!---------------------------------------!
theo(jj)%lep%XS_hjZ_ratio(i) = effC(jj)%hjZZ(i)**2
theo(jj)%lep%XS_bbhj_ratio(i) = effC(jj)%hjbb_s(i)**2+effC(jj)%hjbb_p(i)**2
!n.b.: LEP tables with bbhj at the moment can not be applied to mixed CP Higgs
theo(jj)%lep%XS_tautauhj_ratio(i) = effC(jj)%hjtautau_s(i)**2+effC(jj)%hjtautau_p(i)**2
!n.b.: LEP tables with tautauhj at the moment can not be applied to mixed CP Higgs
!---------------------------------------!
! TEVATRON !
!---------------------------------------!
theo(jj)%tev%XS_gg_hj_ratio(i) = effC(jj)%hjgg(i)**2
theo(jj)%tev%XS_bb_hj_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2
theo(jj)%tev%XS_hjb_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2 ! still needed?
! calculate inclusive single Higgs production:
! n.b.: neglect cc,ss->hj for inclusive single Higgs production (in effC approximation)
if(inrange(Mhi,'TEV '))then
theo(jj)%tev%XS_hj_ratio(i) = ( theo(jj)%tev%XS_gg_hj_ratio(i)*XS_tev_gg_H_SM(Mhi) + &
& theo(jj)%tev%XS_bb_hj_ratio(i)*XS_tev_bb_H_SM(Mhi))/ &
& ( XS_tev_gg_H_SM(Mhi) + XS_tev_bb_H_SM(Mhi) )
else
theo(jj)%tev%XS_hj_ratio(i) = 0.0D0
endif
theo(jj)%tev%XS_vbf_ratio(i) = effC(jj)%hjWW(i)**2*TEVSM_WW_contrib_to_VBF &
& + effC(jj)%hjZZ(i)**2*TEVSM_ZZ_contrib_to_VBF
theo(jj)%tev%XS_tthj_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%tev%XS_thj_tchan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%tev%XS_thj_schan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
! n.b.: Tev tables for tthj at the moment can only use CP even Higgs
if(inrange(Mhi,'TEV '))then
theo(jj)%tev%XS_hjW_ratio(i) = WH_nnlo(Mhi,'TEV ',effC(jj)%hjWW(i), &
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),.True.,.True.) / &
! & WH_nnlo_SM(Mhi,'TEV ',.True.,.True.)
& WH_nnlo(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,.True.,.True.)
theo(jj)%tev%XS_hjZ_ratio(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'TEV ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_ggqqbb(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%tev%XS_gg_hjZ_ratio(i) = ZH_cpmix_nnlo_gg(Mhi,'TEV ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_gg(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%tev%XS_qq_hjZ_ratio(i) = ZH_cpmix_nnlo_qqbb(Mhi,'TEV ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
& ZH_cpmix_nnlo_qqbb(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
else
theo(jj)%tev%XS_hjW_ratio(i) = 0.0D0
theo(jj)%tev%XS_hjZ_ratio(i) = 0.0D0
theo(jj)%tev%XS_gg_hjZ_ratio(i) = 0.0D0
theo(jj)%tev%XS_qq_hjZ_ratio(i) = 0.0D0
endif
!---------------------------------------!
! LHC 7 !
!---------------------------------------!
theo(jj)%lhc7%XS_gg_hj_ratio(i) = effC(jj)%hjgg(i)**2
theo(jj)%lhc7%XS_bb_hj_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2
theo(jj)%lhc7%XS_hjb_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2 ! still needed?
! calculate inclusive single Higgs production:
! n.b.: neglect cc,ss->hj for inclusive single Higgs production (in effC approximation)
if(inrange(Mhi,'LHC7 '))then
theo(jj)%lhc7%XS_hj_ratio(i) = ( theo(jj)%lhc7%XS_gg_hj_ratio(i)*XS_lhc7_gg_H_SM(Mhi) + &
& theo(jj)%lhc7%XS_bb_hj_ratio(i)*XS_lhc7_bb_H_SM(Mhi))/ &
& ( XS_lhc7_gg_H_SM(Mhi) + XS_lhc7_bb_H_SM(Mhi) )
else
theo(jj)%lhc7%XS_hj_ratio(i) = 0.0D0
endif
if(inrange(Mhi,'LHC7 '))then
theo(jj)%lhc7%XS_vbf_ratio(i) = effC(jj)%hjWW(i)**2*lhc7_rHVBF_WW(Mhi) + &
& effC(jj)%hjZZ(i)**2*lhc7_rHVBF_ZZ(Mhi)
else
theo(jj)%lhc7%XS_vbf_ratio(i) = 0.0D0
endif
theo(jj)%lhc7%XS_tthj_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc7%XS_thj_tchan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc7%XS_thj_schan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
! n.b.: lhc7 tables for tthj at the moment can only use CP even Higgs
if(inrange(Mhi,'LHC7 '))then
theo(jj)%lhc7%XS_hjW_ratio(i) = WH_nnlo(Mhi,'LHC7 ',effC(jj)%hjWW(i), &
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),.True.,.True.) / &
! & WH_nnlo_SM(Mhi,'LHC7 ',.True.,.True.)
& WH_nnlo(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
theo(jj)%lhc7%XS_hjZ_ratio(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC7 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc7%XS_gg_hjZ_ratio(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC7 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_gg(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc7%XS_qq_hjZ_ratio(i) = ZH_cpmix_nnlo_qqbb(Mhi,'LHC7 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
& ZH_cpmix_nnlo_qqbb(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
else
theo(jj)%lhc7%XS_hjW_ratio(i) = 0.0D0
theo(jj)%lhc7%XS_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc7%XS_gg_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc7%XS_qq_hjZ_ratio(i) = 0.0D0
endif
!---------------------------------------!
! LHC 8 !
!---------------------------------------!
theo(jj)%lhc8%XS_gg_hj_ratio(i) = effC(jj)%hjgg(i)**2
theo(jj)%lhc8%XS_bb_hj_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2
theo(jj)%lhc8%XS_hjb_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2 ! still needed?
! calculate inclusive single Higgs production:
! n.b.: neglect cc,ss->hj for inclusive single Higgs production (in effC approximation)
if(inrange(Mhi,'LHC8 '))then
theo(jj)%lhc8%XS_hj_ratio(i) = ( theo(jj)%lhc8%XS_gg_hj_ratio(i)*XS_lhc8_gg_H_SM(Mhi) + &
& theo(jj)%lhc8%XS_bb_hj_ratio(i)*XS_lhc8_bb_H_SM(Mhi))/ &
& ( XS_lhc8_gg_H_SM(Mhi) + XS_lhc8_bb_H_SM(Mhi) )
else
theo(jj)%lhc8%XS_hj_ratio(i) = 0.0D0
endif
if(inrange(Mhi,'LHC8 '))then
theo(jj)%lhc8%XS_vbf_ratio(i) = effC(jj)%hjWW(i)**2*lhc8_rHVBF_WW(Mhi) + &
& effC(jj)%hjZZ(i)**2*lhc8_rHVBF_ZZ(Mhi)
else
theo(jj)%lhc8%XS_vbf_ratio(i) = 0.0D0
endif
theo(jj)%lhc8%XS_tthj_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc8%XS_thj_tchan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc8%XS_thj_schan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
! n.b.: lhc8 tables for tthj at the moment can only use CP even Higgs
if(inrange(Mhi,'LHC8 '))then
theo(jj)%lhc8%XS_hjW_ratio(i) = WH_nnlo(Mhi,'LHC8 ',effC(jj)%hjWW(i), &
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),.True.,.True.) / &
! & WH_nnlo_SM(Mhi,'LHC8 ',.True.,.True.)
& WH_nnlo(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
theo(jj)%lhc8%XS_hjZ_ratio(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC8 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc8%XS_gg_hjZ_ratio(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC8 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_gg(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc8%XS_qq_hjZ_ratio(i) = ZH_cpmix_nnlo_qqbb(Mhi,'LHC8 ',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
& ZH_cpmix_nnlo_qqbb(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
else
theo(jj)%lhc8%XS_hjW_ratio(i) = 0.0D0
theo(jj)%lhc8%XS_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc8%XS_gg_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc8%XS_qq_hjZ_ratio(i) = 0.0D0
endif
!---------------------------------------!
! LHC 13 !
!---------------------------------------!
theo(jj)%lhc13%XS_gg_hj_ratio(i) = effC(jj)%hjgg(i)**2
theo(jj)%lhc13%XS_bb_hj_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2
theo(jj)%lhc13%XS_hjb_ratio(i) = effC(jj)%hjbb_s(i)**2 + effC(jj)%hjbb_p(i)**2 ! still needed?
! calculate inclusive single Higgs production:
! n.b.: neglect cc,ss->hj for inclusive single Higgs production (in effC approximation)
if(inrange(Mhi,'LHC13'))then
theo(jj)%lhc13%XS_hj_ratio(i) = ( theo(jj)%lhc13%XS_gg_hj_ratio(i)*XS_lhc13_gg_H_SM(Mhi) + &
& theo(jj)%lhc13%XS_bb_hj_ratio(i)*XS_lhc13_bb_H_SM(Mhi))/ &
& ( XS_lhc13_gg_H_SM(Mhi) + XS_lhc13_bb_H_SM(Mhi) )
else
theo(jj)%lhc13%XS_hj_ratio(i) = 0.0D0
endif
if(inrange(Mhi,'LHC13'))then
theo(jj)%lhc13%XS_vbf_ratio(i) = effC(jj)%hjWW(i)**2*lhc13_rHVBF_WW(Mhi) + &
& effC(jj)%hjZZ(i)**2*lhc13_rHVBF_ZZ(Mhi)
else
theo(jj)%lhc13%XS_vbf_ratio(i) = 0.0D0
endif
theo(jj)%lhc13%XS_tthj_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc13%XS_thj_tchan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
theo(jj)%lhc13%XS_thj_schan_ratio(i) = effC(jj)%hjtt_s(i)**2+effC(jj)%hjtt_p(i)**2
! n.b.: lhc13 tables for tthj at the moment can only use CP even Higgs
! write(*,*) 'inrange(Mhi,LHC13) = ' , inrange(Mhi,'LHC13')
if(inrange(Mhi,'LHC13')) then
theo(jj)%lhc13%XS_hjW_ratio(i) = WH_nnlo(Mhi,'LHC13',effC(jj)%hjWW(i), &
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),.True.,.True.) / &
! & WH_nnlo_SM(Mhi,'LHC13',.True.,.True.)
& WH_nnlo(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,.True.,.True.)
! DEBUGGING:
! write(*,*) "theo(jj)%lhc13%XS_hjW_ratio(i) = ",theo(jj)%lhc13%XS_hjW_ratio(i)
! write(*,*) WH_nnlo(Mhi,'LHC13',effC(jj)%hjWW(i), &
! & effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),.True.,.True.)
! write(*,*) WH_nnlo(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,.True.,.True.)
! write(*,*) WH_nnlo_SM(Mhi,'LHC13',.True.,.True.)
theo(jj)%lhc13%XS_hjZ_ratio(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC13',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc13%XS_gg_hjZ_ratio(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC13',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
ZH_cpmix_nnlo_gg(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(jj)%lhc13%XS_qq_hjZ_ratio(i) = ZH_cpmix_nnlo_qqbb(Mhi,'LHC13',effC(jj)%hjZZ(i),&
& effC(jj)%hjtt_s(i),effC(jj)%hjbb_s(i),effC(jj)%hjtt_p(i),effC(jj)%hjbb_p(i),.True.) / &
& ZH_cpmix_nnlo_qqbb(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
else
theo(jj)%lhc13%XS_hjW_ratio(i) = 0.0D0
theo(jj)%lhc13%XS_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc13%XS_gg_hjZ_ratio(i) = 0.0D0
theo(jj)%lhc13%XS_qq_hjZ_ratio(i) = 0.0D0
endif
enddo
theo(jj)%lep%XS_hjhi_ratio=effC(jj)%hjhiZ**2! note only half of XS_hjhi_ratio is filled here
do j=2,np(Hneut)
do i=1,j-1
theo(jj)%lep%XS_hjhi_ratio(i,j) = theo(jj)%lep%XS_hjhi_ratio(j,i)
enddo
enddo
end subroutine HB5_csratios_from_effC_for_datapoint
!******************************************************************
subroutine HB5_cp_from_effC
! uses the effective couplings contained in effC to calculate the
! cp property of neutral higgs
!*****************************************************************
use usefulbits, only : effC,ndat,vsmall
implicit none
!--------------------------------------internal
integer :: i,jj
double precision :: max_hjff_s,max_hjff_p
!---------------------------------------------
if(np(Hneut)<1)stop 'error in cp_from_effC (np(Hneut))'
do jj=1,ndat
do i=1,np(Hneut)
max_hjff_s=max(effC(jj)%hjss_s(i),effC(jj)%hjcc_s(i),effC(jj)%hjbb_s(i), &
& effC(jj)%hjtt_s(i),effC(jj)%hjmumu_s(i),effC(jj)%hjtautau_s(i))
max_hjff_p=max(effC(jj)%hjss_p(i),effC(jj)%hjcc_p(i),effC(jj)%hjbb_p(i), &
& effC(jj)%hjtt_p(i),effC(jj)%hjmumu_p(i),effC(jj)%hjtautau_p(i))
if( max_hjff_p .lt. vsmall )then !CP even
theo(jj)%CP_value(i) = 1
elseif( max_hjff_s .lt. vsmall )then !CP odd
theo(jj)%CP_value(i) = -1
else !mixed CP
theo(jj)%CP_value(i) = 0
endif
enddo
enddo
end subroutine HB5_cp_from_effC
!******************************************************************
subroutine HB5_br_from_effC
! calls the subroutine br_from_effC_for_datapoint for each datapoint.
!*****************************************************************
use usefulbits, only : np,Hneut,ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1)stop 'error in br_from_effC (np(Hneut))'
do jj=1,ndat
call HB5_br_from_effC_for_datapoint(jj)
enddo
end subroutine HB5_br_from_effC
!*****************************************************************
subroutine HB5_br_from_effC_for_datapoint(jj)
! uses the effective couplings contained in effC to calculate
! branching ratios
!*****************************************************************
use theory_BRfunctions
use S95tables, only : inrange
use usefulbits, only : effC,ms,mc,mt,mbmb,mmu,mtau,small
implicit none
integer, intent(in) :: jj
!--------------------------------------internal
integer :: i
double precision :: Mhi,GammaRat
!---------------------------------------------
do i=1,np(Hneut)
Mhi=theo(jj)%particle(Hneut)%M(i)
if(theo(jj)%particle(Hneut)%Mc(i).ge.small) Mhi=theo(jj)%particle(Hneut)%Mc(i)
theo(jj)%BR_hjss(i) = 0.0D0
theo(jj)%BR_hjcc(i) = 0.0D0
theo(jj)%BR_hjbb(i) = 0.0D0
theo(jj)%BR_hjmumu(i) = 0.0D0
theo(jj)%BR_hjtautau(i)= 0.0D0
theo(jj)%BR_hjWW(i) = 0.0D0
theo(jj)%BR_hjZZ(i) = 0.0D0
theo(jj)%BR_hjZga(i) = 0.0D0
theo(jj)%BR_hjgaga(i) = 0.0D0
theo(jj)%BR_hjgg(i) = 0.0D0
theo(jj)%BR_hjtt(i) = 0.0D0 ! HB5 NEW
if( inrange(Mhi,'SMBR') )then
GammaRat=theo(jj)%particle(Hneut)%GammaTot(i)/BRSM_GammaTot(Mhi)
! write(*,*) 'br_from_effC debugging: '
! write(*,*) 'i, Mh = ', i, Mhi
! write(*,*) 'GammaRat = ',GammaRat
! write(*,*) 'Couplings hss = ',effC(jj)%hjss_s(i)
! write(*,*) 'Couplings htt = ',effC(jj)%hjtt_s(i)
! write(*,*) 'Couplings hWW = ',effC(jj)%hjWW(i)
if(theo(jj)%particle(Hneut)%GammaTot(i).gt.0.0D0)then
theo(jj)%BR_hjss(i) = ( effC(jj)%hjss_s(i)**2 +effC(jj)%hjss_p(i)**2 *invbsq(ms, Mhi) ) *BRSM_Hss(Mhi) /GammaRat
theo(jj)%BR_hjcc(i) = ( effC(jj)%hjcc_s(i)**2 +effC(jj)%hjcc_p(i)**2 *invbsq(mc, Mhi) ) *BRSM_Hcc(Mhi) /GammaRat
theo(jj)%BR_hjbb(i) = ( effC(jj)%hjbb_s(i)**2 +effC(jj)%hjbb_p(i)**2 *invbsq(mbmb,Mhi) ) *BRSM_Hbb(Mhi) /GammaRat
theo(jj)%BR_hjtt(i) = ( effC(jj)%hjtt_s(i)**2 +effC(jj)%hjtt_p(i)**2 *invbsq(mt ,Mhi) ) *BRSM_Htoptop(Mhi) /GammaRat ! HB5 new
theo(jj)%BR_hjmumu(i) = ( effC(jj)%hjmumu_s(i)**2 +effC(jj)%hjmumu_p(i)**2 *invbsq(mmu, Mhi) ) *BRSM_Hmumu(Mhi) /GammaRat
theo(jj)%BR_hjtautau(i)= ( effC(jj)%hjtautau_s(i)**2+effC(jj)%hjtautau_p(i)**2*invbsq(mtau,Mhi) ) *BRSM_Htautau(Mhi) /GammaRat
theo(jj)%BR_hjWW(i) = effC(jj)%hjWW(i)**2 *BRSM_HWW(Mhi) /GammaRat
theo(jj)%BR_hjZZ(i) = effC(jj)%hjZZ(i)**2 *BRSM_HZZ(Mhi) /GammaRat
theo(jj)%BR_hjZga(i) = effC(jj)%hjZga(i)**2 *BRSM_HZga(Mhi) /GammaRat
theo(jj)%BR_hjgaga(i) = effC(jj)%hjgaga(i)**2 *BRSM_Hgaga(Mhi) /GammaRat
theo(jj)%BR_hjgg(i) = effC(jj)%hjgg(i)**2 *BRSM_Hgg(Mhi) /GammaRat
! write(*,*) 'BR h->ss = ',theo(jj)%BR_hjss(i), 'SM =',BRSM_Hss(Mhi)
! write(*,*) 'BR h->cc = ',theo(jj)%BR_hjcc(i), 'SM =',BRSM_Hcc(Mhi)
! write(*,*) 'BR h->bb = ',theo(jj)%BR_hjbb(i), 'SM =',BRSM_Hbb(Mhi)
! write(*,*) 'BR h->tt = ',theo(jj)%BR_hjtt(i), 'SM =',BRSM_Htoptop(Mhi)
! write(*,*) 'BR h->mumu = ',theo(jj)%BR_hjmumu(i), 'SM =',BRSM_Hmumu(Mhi)
! write(*,*) 'BR h->tautau = ',theo(jj)%BR_hjtautau(i), 'SM =',BRSM_Htautau(Mhi)
! write(*,*) 'BR h->WW = ',theo(jj)%BR_hjWW(i), 'SM =',BRSM_HWW(Mhi)
! write(*,*) 'BR h->ZZ = ',theo(jj)%BR_hjZZ(i), 'SM =',BRSM_HZZ(Mhi)
! write(*,*) 'BR h->gaga = ',theo(jj)%BR_hjgaga(i), 'SM =',BRSM_Hgaga(Mhi)
! write(*,*) 'BR h->gg = ',theo(jj)%BR_hjgg(i), 'SM =',BRSM_Hgg(Mhi)
! write(*,*) 'BR h->Zga = ',theo(jj)%BR_hjZga(i), 'SM =',BRSM_HZga(Mhi)
else
write(*,*)'at jj=',jj,'i=',i
write(*,*)'total decay width is less than or equal to zero:',theo(jj)%particle(Hneut)%GammaTot(i)
endif
endif
enddo
end subroutine HB5_br_from_effC_for_datapoint
!*****************************************************************
subroutine complete_channelrates
! calls the subroutine complete_channelrates_for_datapoint for each datapoint.
!*****************************************************************
use usefulbits, only : np,Hneut,ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1)stop 'error in complete_channelrates (np(Hneut))'
do jj=1,ndat
call complete_channelrates_for_datapoint(jj)
enddo
end subroutine complete_channelrates
!*****************************************************************
subroutine complete_channelrates_for_datapoint(jj)
! obtains the channelrates either from the XS and BR input (assuming
! the narrow width approximation), or, if provided directly, from the
! user's input
! n.b.: Important case of 0.0D0 will be taken over! (To enable to treat the interference
! of several Higgs bosons in one slot and de-activate (i.e. set to zero) the other slot)
!*****************************************************************
use usefulbits, only : Nprod, Ndecay
implicit none
!--------------------------------------internal
integer :: i,jj,p,d
double precision :: sigma, BR
!---------------------------------------------
! write(*,*) "debug: calling complete_channelrates_for_datapoint"
do i=1,np(Hneut)
do p=1,Nprod
do d=1,Ndecay
if(theo(jj)%tev%channelrates_tmp(i,p,d).ge.0.0D0) then
theo(jj)%tev%channelrates(i,p,d) = theo(jj)%tev%channelrates_tmp(i,p,d)
else
select case(p)
case(1)
sigma = theo(jj)%tev%XS_hj_ratio(i)
case(2)
sigma = theo(jj)%tev%XS_vbf_ratio(i)
case(3)
sigma = theo(jj)%tev%XS_hjW_ratio(i)
case(4)
sigma = theo(jj)%tev%XS_hjZ_ratio(i)
case(5)
sigma = theo(jj)%tev%XS_tthj_ratio(i)
case(6)
sigma = theo(jj)%tev%XS_gg_hj_ratio(i)
case(7)
sigma = theo(jj)%tev%XS_bb_hj_ratio(i)
case(8)
sigma = theo(jj)%tev%XS_thj_tchan_ratio(i)
case(9)
sigma = theo(jj)%tev%XS_thj_schan_ratio(i)
case(10)
sigma = theo(jj)%tev%XS_qq_hjZ_ratio(i)
case(11)
sigma = theo(jj)%tev%XS_gg_hjZ_ratio(i)
end select
select case(d)
case(1)
BR = theo(jj)%BR_hjgaga(i)!/theo(jj)%BR_Hgaga_SM(i)
case(2)
BR = theo(jj)%BR_hjWW(i)!/theo(jj)%BR_HWW_SM(i)
case(3)
BR = theo(jj)%BR_hjZZ(i)!/theo(jj)%BR_HZZ_SM(i)
case(4)
BR = theo(jj)%BR_hjtautau(i)!/theo(jj)%BR_Htautau_SM(i)
case(5)
BR = theo(jj)%BR_hjbb(i)!/theo(jj)%BR_Hbb_SM(i)
case(6)
BR = theo(jj)%BR_hjZga(i)!/theo(jj)%BR_HZga_SM(i)
case(7)
BR = theo(jj)%BR_hjcc(i)!/theo(jj)%BR_Hcc_SM(i)
case(8)
BR = theo(jj)%BR_hjmumu(i)!/theo(jj)%BR_Hmumu_SM(i)
case(9)
BR = theo(jj)%BR_hjgg(i)!/theo(jj)%BR_Hgg_SM(i)
case(10)
BR = theo(jj)%BR_hjss(i)
case(11)
BR = theo(jj)%BR_hjtt(i)
end select
theo(jj)%tev%channelrates(i,p,d) = sigma*BR
endif
if(theo(jj)%lhc7%channelrates_tmp(i,p,d).ge.0.0D0) then
theo(jj)%lhc7%channelrates(i,p,d) = theo(jj)%lhc7%channelrates_tmp(i,p,d)
else
select case(p)
case(1)
sigma = theo(jj)%lhc7%XS_hj_ratio(i)
case(2)
sigma = theo(jj)%lhc7%XS_vbf_ratio(i)
case(3)
sigma = theo(jj)%lhc7%XS_hjW_ratio(i)
case(4)
sigma = theo(jj)%lhc7%XS_hjZ_ratio(i)
case(5)
sigma = theo(jj)%lhc7%XS_tthj_ratio(i)
case(6)
sigma = theo(jj)%lhc7%XS_gg_hj_ratio(i)
case(7)
sigma = theo(jj)%lhc7%XS_bb_hj_ratio(i)
case(8)
sigma = theo(jj)%lhc7%XS_thj_tchan_ratio(i)
case(9)
sigma = theo(jj)%lhc7%XS_thj_schan_ratio(i)
case(10)
sigma = theo(jj)%lhc7%XS_qq_hjZ_ratio(i)
case(11)
sigma = theo(jj)%lhc7%XS_gg_hjZ_ratio(i)
end select
select case(d)
case(1)
BR = theo(jj)%BR_hjgaga(i)!/theo(jj)%BR_Hgaga_SM(i)
case(2)
BR = theo(jj)%BR_hjWW(i)!/theo(jj)%BR_HWW_SM(i)
case(3)
BR = theo(jj)%BR_hjZZ(i)!/theo(jj)%BR_HZZ_SM(i)
case(4)
BR = theo(jj)%BR_hjtautau(i)!/theo(jj)%BR_Htautau_SM(i)
case(5)
BR = theo(jj)%BR_hjbb(i)!/theo(jj)%BR_Hbb_SM(i)
case(6)
BR = theo(jj)%BR_hjZga(i)!/theo(jj)%BR_HZga_SM(i)
case(7)
BR = theo(jj)%BR_hjcc(i)!/theo(jj)%BR_Hcc_SM(i)
case(8)
BR = theo(jj)%BR_hjmumu(i)!/theo(jj)%BR_Hmumu_SM(i)
case(9)
BR = theo(jj)%BR_hjgg(i)!/theo(jj)%BR_Hgg_SM(i)
case(10)
BR = theo(jj)%BR_hjss(i)
case(11)
BR = theo(jj)%BR_hjtt(i)
end select
theo(jj)%lhc7%channelrates(i,p,d) = sigma*BR
endif
! write(*,*) "i,p,d,8TeV:", i, p, d, theo(jj)%lhc8%channelrates_tmp(i,p,d)
if(theo(jj)%lhc8%channelrates_tmp(i,p,d).ge.0.0D0) then
theo(jj)%lhc8%channelrates(i,p,d) = theo(jj)%lhc8%channelrates_tmp(i,p,d)
else
select case(p)
case(1)
sigma = theo(jj)%lhc8%XS_hj_ratio(i)
case(2)
sigma = theo(jj)%lhc8%XS_vbf_ratio(i)
case(3)
sigma = theo(jj)%lhc8%XS_hjW_ratio(i)
case(4)
sigma = theo(jj)%lhc8%XS_hjZ_ratio(i)
case(5)
sigma = theo(jj)%lhc8%XS_tthj_ratio(i)
case(6)
sigma = theo(jj)%lhc8%XS_gg_hj_ratio(i)
case(7)
sigma = theo(jj)%lhc8%XS_bb_hj_ratio(i)
case(8)
sigma = theo(jj)%lhc8%XS_thj_tchan_ratio(i)
case(9)
sigma = theo(jj)%lhc8%XS_thj_schan_ratio(i)
case(10)
sigma = theo(jj)%lhc8%XS_qq_hjZ_ratio(i)
case(11)
sigma = theo(jj)%lhc8%XS_gg_hjZ_ratio(i)
end select
select case(d)
case(1)
BR = theo(jj)%BR_hjgaga(i)!/theo(jj)%BR_Hgaga_SM(i)
case(2)
BR = theo(jj)%BR_hjWW(i)!/theo(jj)%BR_HWW_SM(i)
case(3)
BR = theo(jj)%BR_hjZZ(i)!/theo(jj)%BR_HZZ_SM(i)
case(4)
BR = theo(jj)%BR_hjtautau(i)!/theo(jj)%BR_Htautau_SM(i)
case(5)
BR = theo(jj)%BR_hjbb(i)!/theo(jj)%BR_Hbb_SM(i)
case(6)
BR = theo(jj)%BR_hjZga(i)!/theo(jj)%BR_HZga_SM(i)
case(7)
BR = theo(jj)%BR_hjcc(i)!/theo(jj)%BR_Hcc_SM(i)
case(8)
BR = theo(jj)%BR_hjmumu(i)!/theo(jj)%BR_Hmumu_SM(i)
case(9)
BR = theo(jj)%BR_hjgg(i)!/theo(jj)%BR_Hgg_SM(i)
case(10)
BR = theo(jj)%BR_hjss(i)
case(11)
BR = theo(jj)%BR_hjtt(i)
end select
theo(jj)%lhc8%channelrates(i,p,d) = sigma*BR
endif
if(theo(jj)%lhc13%channelrates_tmp(i,p,d).ge.0.0D0) then
theo(jj)%lhc13%channelrates(i,p,d) = theo(jj)%lhc13%channelrates_tmp(i,p,d)
else
select case(p)
case(1)
sigma = theo(jj)%lhc13%XS_hj_ratio(i)
case(2)
sigma = theo(jj)%lhc13%XS_vbf_ratio(i)
case(3)
sigma = theo(jj)%lhc13%XS_hjW_ratio(i)
case(4)
sigma = theo(jj)%lhc13%XS_hjZ_ratio(i)
case(5)
sigma = theo(jj)%lhc13%XS_tthj_ratio(i)
case(6)
sigma = theo(jj)%lhc13%XS_gg_hj_ratio(i)
case(7)
sigma = theo(jj)%lhc13%XS_bb_hj_ratio(i)
case(8)
sigma = theo(jj)%lhc13%XS_thj_tchan_ratio(i)
case(9)
sigma = theo(jj)%lhc13%XS_thj_schan_ratio(i)
case(10)
sigma = theo(jj)%lhc13%XS_qq_hjZ_ratio(i)
case(11)
sigma = theo(jj)%lhc13%XS_gg_hjZ_ratio(i)
end select
select case(d)
case(1)
BR = theo(jj)%BR_hjgaga(i)!/theo(jj)%BR_Hgaga_SM(i)
case(2)
BR = theo(jj)%BR_hjWW(i)!/theo(jj)%BR_HWW_SM(i)
case(3)
BR = theo(jj)%BR_hjZZ(i)!/theo(jj)%BR_HZZ_SM(i)
case(4)
BR = theo(jj)%BR_hjtautau(i)!/theo(jj)%BR_Htautau_SM(i)
case(5)
BR = theo(jj)%BR_hjbb(i)!/theo(jj)%BR_Hbb_SM(i)
case(6)
BR = theo(jj)%BR_hjZga(i)!/theo(jj)%BR_HZga_SM(i)
case(7)
BR = theo(jj)%BR_hjcc(i)!/theo(jj)%BR_Hcc_SM(i)
case(8)
BR = theo(jj)%BR_hjmumu(i)!/theo(jj)%BR_Hmumu_SM(i)
case(9)
BR = theo(jj)%BR_hjgg(i)!/theo(jj)%BR_Hgg_SM(i)
case(10)
BR = theo(jj)%BR_hjss(i)
case(11)
BR = theo(jj)%BR_hjtt(i)
end select
theo(jj)%lhc13%channelrates(i,p,d) = sigma*BR
! write(*,*) "debug: getting 13 TeV from XS x BR:", i,p,d, sigma, BR
endif
enddo
enddo
enddo
end subroutine complete_channelrates_for_datapoint
!*****************************************************************
subroutine clean_channelrates
! calls the subroutine clean_channelrates_for_datapoint for each datapoint.
!*****************************************************************
use usefulbits, only : np,Hneut,ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1)stop 'error in complete_channelrates (np(Hneut))'
do jj=1,ndat
call clean_channelrates_for_datapoint(jj)
enddo
end subroutine clean_channelrates
!*****************************************************************
subroutine clean_channelrates_for_datapoint(jj)
! fills all channelrates matrices with -1.0D0
!*****************************************************************
use usefulbits, only : Nprod, Ndecay
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
theo(jj)%tev%channelrates = -1.0D0
theo(jj)%tev%channelrates_tmp = -1.0D0
theo(jj)%lhc7%channelrates = -1.0D0
theo(jj)%lhc7%channelrates_tmp = -1.0D0
theo(jj)%lhc8%channelrates = -1.0D0
theo(jj)%lhc8%channelrates_tmp = -1.0D0
theo(jj)%lhc13%channelrates = -1.0D0
theo(jj)%lhc13%channelrates_tmp = -1.0D0
end subroutine clean_channelrates_for_datapoint
!*****************************************************************
subroutine complete_BRs
implicit none
integer :: jj,i,j
! write(*,*) "# ------ complete_BRs debuggung -------#"
! copying over the (k,i,i) elements of BR_hkhjhi into BR_hjhihi.
do jj=1,ndat
do j=1,np(Hneut)
do i=1,np(Hneut)
theo(jj)%BR_hjhihi(j,i) = theo(jj)%BR_hkhjhi(j,i,i)
! write(*,"(a,I1,a,I1,a,I1,a,1E10.3)") "BR(h",j,"->h",i,"h",i,") = ",theo(jj)%BR_hjhihi(j,i)
! write(*,"(a,I1,a,I1,a,1E10.3)") "BR(h",j,"->h",i,"Z) = ",theo(jj)%BR_hjhiZ(j,i)
enddo
enddo
enddo
! write(*,*) "# ------ end debuggung -------#"
end subroutine complete_BRs
!*******************************************************************
! OLD HB-4 routines:
!******************************************************************
subroutine complete_theo ! OBSOLETE !
! This is the old routine (HB4 and earlier)
!decides what has to be done to the input and calls the appropriate
!subroutines
!******************************************************************
use usefulbits, only : whichanalyses,whichinput,ndat
implicit none
!--------------------------------------internal
integer :: i,j,jj
!----------------------------------------------
if(np(Hneut)>0)then !none if this is needed for the charged Higgs sector yet
select case(whichinput)
case('effC')
call csratios_from_g2
call cp_from_g2
call br_from_g2
case('SLHA')
call csratios_from_g2
call cp_from_g2
case('hadr','part')
case default
stop 'error in subroutine complete_theo (1)'
end select
do jj=1,ndat ! filling the other half of XS_hjhi_ratio
do j=2,np(Hneut)
do i=1,j-1
theo(jj)%lep%XS_hjhi_ratio(i,j) = theo(jj)%lep%XS_hjhi_ratio(j,i)
enddo
enddo
enddo
endif
call check_dataset !involves the charged Higgs sector
if(np(Hneut)>0)then !none if this is needed for the charged Higgs sector yet
select case(whichanalyses)
case('onlyH','LandH','onlyP','list ') ! everything which involves Tevatron and LHC tables
call fill_theo_SM ! n.b. there's no LEP SM cross sections at the moment
select case(whichinput)
case('part','effC','SLHA') ! everything except option 'hadr', where had XS ratios are inputted directly
call XS_from_partR
case('hadr')
case default
stop 'error in subroutine complete_theo (2)'
end select
case('onlyL')
case default
stop 'error in subroutine complete_theo (3)'
end select
endif
end subroutine complete_theo
!******************************************************************
subroutine recalculate_theo_for_datapoint(n) ! OBSOLETE !
! Does the same as complete_theo but just for the datapoint n.
use usefulbits, only : whichanalyses,whichinput
implicit none
integer, intent(in) :: n
if(np(Hneut)>0) then !none if this is needed for the charged Higgs sector yet
select case(whichinput)
case('effC')
call csratios_from_g2_for_datapoint(n)
call br_from_g2_for_datapoint(n)
case('SLHA')
call csratios_from_g2_for_datapoint(n)
case('hadr','part')
case default
stop 'error in subroutine recalculate_theo_for_datapoint (1)'
end select
endif
call check_dataset !involves the charged Higgs sector
if(np(Hneut)>0)then !none if this is needed for the charged Higgs sector yet
select case(whichanalyses)
case('onlyH','LandH','onlyP','list ') ! everything which involves Tevatron and LHC tables
call fill_theo_SM_for_datapoint(n) ! n.b. there's no LEP SM cross sections at the moment
select case(whichinput)
case('part','effC','SLHA') ! everything except option 'hadr', where had XS ratios are inputted directly
call XS_from_partR_for_datapoint(n)
case('hadr')
case default
stop 'error in subroutine recalculate_theo_for_datapoint (2)'
end select
case('onlyL')
case default
stop 'error in subroutine recalculate_theo_for_datapoint (3)'
end select
endif
end subroutine recalculate_theo_for_datapoint
!******************************************************************
subroutine csratios_from_g2 ! OBSOLETE !
! uses the effective couplings contained in g2 to calculate
! partonic cross section ratios, some hadronic cross section ratios
!*****************************************************************
use usefulbits, only : ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1)stop 'error in csratios_from_g2 (np(Hneut))'
do jj=1,ndat
call csratios_from_g2_for_datapoint(jj)
enddo
end subroutine csratios_from_g2
!******************************************************************
subroutine csratios_from_g2_for_datapoint(jj) ! OBSOLETE !
! uses the effective couplings contained in g2 to calculate
! partonic cross section ratios, some hadronic cross section ratios
!*****************************************************************
use usefulbits, only : g2
use theory_colliderSfunctions
use S95tables, only : inrange
implicit none
integer, intent(in) :: jj
!--------------------------------------internal
integer :: i
double precision :: TEVSM_ZZ_contrib_to_VBF,TEVSM_WW_contrib_to_VBF
double precision :: Mhi
!---------------------------------------------
! relative contributuion of WW- and ZZ-fusion to VBF (in LO) for
! p p-bar collisions at SqrtS=1.96 TeV (calcuated by T. Figy with VBFNLO):s
TEVSM_ZZ_contrib_to_VBF=0.23D0
TEVSM_WW_contrib_to_VBF=0.77D0
do i=1,np(Hneut)
theo(jj)%lep%XS_hjZ_ratio(i) = g2(jj)%hjZZ(i)
theo(jj)%lep%XS_bbhj_ratio(i) = g2(jj)%hjbb_s(i)+g2(jj)%hjbb_p(i)!nb tables at the moment can not be applied to mixed CP Higgs
theo(jj)%lep%XS_tautauhj_ratio(i) = g2(jj)%hjtautau_s(i)+g2(jj)%hjtautau_p(i)!nb tables at the moment can not be applied to mixed CP Higgs
partR(jj)%bg_hjb(i) = g2(jj)%hjbb_s(i)+g2(jj)%hjbb_p(i)
theo(jj)%tev%XS_vbf_ratio(i) = g2(jj)%hjWW(i)*TEVSM_WW_contrib_to_VBF &
& + g2(jj)%hjZZ(i)*TEVSM_ZZ_contrib_to_VBF
theo(jj)%tev%XS_tthj_ratio(i) = g2(jj)%hjtoptop_s(i)+g2(jj)%hjtoptop_p(i) !nb tev tables at the moment can only use CP even Higgs
Mhi=theo(jj)%particle(Hneut)%M(i)
if(inrange(Mhi,'LHC7 '))then
theo(jj)%lhc7%XS_vbf_ratio(i) = g2(jj)%hjWW(i)*lhc7_rHVBF_WW(Mhi) &
& + g2(jj)%hjZZ(i)*lhc7_rHVBF_ZZ(Mhi)
else
theo(jj)%lhc7%XS_vbf_ratio(i) = 0.0D0
endif
theo(jj)%lhc7%XS_tthj_ratio(i) = g2(jj)%hjtoptop_s(i)+g2(jj)%hjtoptop_p(i) !nb no tables need this at the moment
! We are using 7 TeV ratios for VBF contribution from WW/ZZ at the moment also
! for LHC 8 TeV cross sections
if(inrange(Mhi,'LHC8 '))then
theo(jj)%lhc8%XS_vbf_ratio(i) = g2(jj)%hjWW(i)*lhc7_rHVBF_WW(Mhi) &
& + g2(jj)%hjZZ(i)*lhc7_rHVBF_ZZ(Mhi)
else
theo(jj)%lhc8%XS_vbf_ratio(i) = 0.0D0
endif
theo(jj)%lhc8%XS_tthj_ratio(i) = g2(jj)%hjtoptop_s(i)+g2(jj)%hjtoptop_p(i)
partR(jj)%qq_hjWp(:,i) = g2(jj)%hjWW(i)
partR(jj)%qq_hjWm(:,i) = g2(jj)%hjWW(i)
partR(jj)%gg_hj(i) = g2(jj)%hjgg(i)
partR(jj)%qq_hj(5,i) = g2(jj)%hjbb_s(i)+g2(jj)%hjbb_p(i)
partR(jj)%qq_hjZ(:,i) = g2(jj)%hjZZ(i)
partR(jj)%gg_hjZ(i) = g2(jj)%hjggZ(i)
enddo
theo(jj)%lep%XS_hjhi_ratio=g2(jj)%hjhiZ! note only half of XS_hjhi_ratio is filled here
end subroutine csratios_from_g2_for_datapoint
!******************************************************************
subroutine cp_from_g2 ! OBSOLETE !
! uses the effective couplings contained in g2 to calculate
! cp of neutral higgs
!*****************************************************************
use usefulbits, only : g2,ndat,vsmall
implicit none
!--------------------------------------internal
integer :: i,jj
double precision :: max_hjff_s,max_hjff_p
!---------------------------------------------
if(np(Hneut)<1)stop 'error in cp_from_g2 (np(Hneut))'
do jj=1,ndat
do i=1,np(Hneut)
max_hjff_s=max(g2(jj)%hjss_s(i),g2(jj)%hjcc_s(i),g2(jj)%hjbb_s(i), &
& g2(jj)%hjtoptop_s(i),g2(jj)%hjmumu_s(i),g2(jj)%hjtautau_s(i))
max_hjff_p=max(g2(jj)%hjss_p(i),g2(jj)%hjcc_p(i),g2(jj)%hjbb_p(i), &
& g2(jj)%hjtoptop_p(i),g2(jj)%hjmumu_p(i),g2(jj)%hjtautau_p(i))
if( max_hjff_p .lt. vsmall )then !CP even
theo(jj)%CP_value(i) = 1
elseif( max_hjff_s .lt. vsmall )then !CP odd
theo(jj)%CP_value(i) = -1
else !mixed CP
theo(jj)%CP_value(i) = 0
endif
enddo
enddo
end subroutine cp_from_g2
!******************************************************************
subroutine br_from_g2 ! OBSOLETE !
! uses the effective couplings contained in g2 to calculate
! branching ratios
!*****************************************************************
use usefulbits, only : np,Hneut,ndat
implicit none
!--------------------------------------internal
integer :: jj
!---------------------------------------------
if(np(Hneut)<1)stop 'error in br_from_g2 (np(Hneut))'
do jj=1,ndat
call br_from_g2_for_datapoint(jj)
enddo
end subroutine br_from_g2
!*****************************************************************
subroutine br_from_g2_for_datapoint(jj) ! OBSOLETE !
! uses the effective couplings contained in g2 to calculate
! branching ratios
!*****************************************************************
use theory_BRfunctions
use S95tables, only : inrange
use usefulbits, only : g2,ms,mc,mbmb,mmu,mtau,small
implicit none
integer, intent(in) :: jj
!--------------------------------------internal
integer :: i
double precision :: Mhi,GammaRat
!---------------------------------------------
do i=1,np(Hneut)
Mhi=theo(jj)%particle(Hneut)%M(i)
if(theo(jj)%particle(Hneut)%Mc(i).ge.small) Mhi=theo(jj)%particle(Hneut)%Mc(i)
theo(jj)%BR_hjss(i) = 0.0D0
theo(jj)%BR_hjcc(i) = 0.0D0
theo(jj)%BR_hjbb(i) = 0.0D0
theo(jj)%BR_hjmumu(i) = 0.0D0
theo(jj)%BR_hjtautau(i)= 0.0D0
theo(jj)%BR_hjWW(i) = 0.0D0
theo(jj)%BR_hjZZ(i) = 0.0D0
theo(jj)%BR_hjZga(i) = 0.0D0
theo(jj)%BR_hjgaga(i) = 0.0D0
theo(jj)%BR_hjgg(i) = 0.0D0
if( inrange(Mhi,'SMBR') )then
GammaRat=theo(jj)%particle(Hneut)%GammaTot(i)/BRSM_GammaTot(Mhi)
if(theo(jj)%particle(Hneut)%GammaTot(i).gt.0.0D0)then
theo(jj)%BR_hjss(i) = ( g2(jj)%hjss_s(i) +g2(jj)%hjss_p(i) *invbsq(ms, Mhi) ) *BRSM_Hss(Mhi) /GammaRat
theo(jj)%BR_hjcc(i) = ( g2(jj)%hjcc_s(i) +g2(jj)%hjcc_p(i) *invbsq(mc, Mhi) ) *BRSM_Hcc(Mhi) /GammaRat
theo(jj)%BR_hjbb(i) = ( g2(jj)%hjbb_s(i) +g2(jj)%hjbb_p(i) *invbsq(mbmb,Mhi) ) *BRSM_Hbb(Mhi) /GammaRat
theo(jj)%BR_hjmumu(i) = ( g2(jj)%hjmumu_s(i) +g2(jj)%hjmumu_p(i) *invbsq(mmu, Mhi) ) *BRSM_Hmumu(Mhi) /GammaRat
theo(jj)%BR_hjtautau(i)= ( g2(jj)%hjtautau_s(i)+g2(jj)%hjtautau_p(i)*invbsq(mtau,Mhi) ) *BRSM_Htautau(Mhi) /GammaRat
theo(jj)%BR_hjWW(i) = g2(jj)%hjWW(i) *BRSM_HWW(Mhi) /GammaRat
theo(jj)%BR_hjZZ(i) = g2(jj)%hjZZ(i) *BRSM_HZZ(Mhi) /GammaRat
theo(jj)%BR_hjZga(i) = g2(jj)%hjZga(i) *BRSM_HZga(Mhi) /GammaRat
theo(jj)%BR_hjgaga(i) = g2(jj)%hjgaga(i) *BRSM_Hgaga(Mhi) /GammaRat
theo(jj)%BR_hjgg(i) = g2(jj)%hjgg(i) *BRSM_Hgg(Mhi) /GammaRat
else
write(*,*)'at jj=',jj,'i=',i
write(*,*)'total decay width is less than or equal to zero:',theo(jj)%particle(Hneut)%GammaTot(i)
endif
endif
enddo
end subroutine br_from_g2_for_datapoint
!*****************************************************************
function invbsq(mf,mh)
implicit none
double precision,intent(in) :: mf,mh
double precision :: invbsq
if(mh>2.0D0*mf)then
invbsq=1.0D0/(1.0D0-4.0D0*(mf/mh)**2.0D0)
else
invbsq=0.0D0
endif
end function invbsq
!*****************************************************************
subroutine check_dataset
! checks each parameter point to determine whether the Higgs masses
! and branching ratios make sense
! Sets theo(jj)%gooddataset accordingly
!*****************************************************************
use usefulbits, only : theo,ndat,debug,np,vsmall
implicit none
!--------------------------------------internal
integer :: jj,kk,ll,mm,x
double precision :: testsumBR,testsumBR_t
double precision,allocatable :: testBR(:)
double precision :: fuzziness
double precision, allocatable :: sumhjhi(:), sumhjHpi(:)
!---------------------------------------------
fuzziness = 0.01D0
!fuzziness = 100.0D0 ; write(*,*)'WARNING: fuzziness factor is far too high'
testsumBR =0.0D0
testsumBR_t =0.0D0
if(np(Hneut)>0)then
allocate(testBR(np(Hneut)))
allocate(sumhjhi(np(Hneut)))
allocate(sumhjHpi(np(Hneut)))
! testing to see if the dataset is ok
do jj=1,ndat
do kk=1,np(Hneut)
do ll=1,np(Hneut)
do mm=1,np(Hneut)
! write(*,'(a,I2,a,I2,a,I2,a,1F10.8)') "BR_hkhjhi(",kk,",",ll,",",mm,")=",theo(jj)%BR_hkhjhi(kk,ll,mm)
if(abs(theo(jj)%BR_hkhjhi(kk,ll,mm)-theo(jj)%BR_hkhjhi(kk,mm,ll)).gt.vsmall) then
if(theo(jj)%BR_hkhjhi(kk,ll,mm).lt.vsmall) then
theo(jj)%BR_hkhjhi(kk,ll,mm)=theo(jj)%BR_hkhjhi(kk,mm,ll)
! write(*,'(a,I2,a,I2,a,I2,a)') "WARNING: BR_hkhjhi is not symmetric. Correcting BR_hkhjhi(",&
! & kk,",",ll,",",mm,") element..."
else if(theo(jj)%BR_hkhjhi(kk,mm,ll).lt.vsmall) then
theo(jj)%BR_hkhjhi(kk,mm,ll)=theo(jj)%BR_hkhjhi(kk,ll,mm)
! write(*,'(a,I2,a,I2,a,I2,a)') "WARNING: BR_hkhjhi is not symmetric. Correcting BR_hkhjhi(",&
! & kk,",",mm,",",ll,") element..."
else
write(*,*) "WARNING: BR_hkhjhi is not symmetric."
endif
endif
enddo
enddo
enddo
sumhjhi = 0.0D0
do kk=lbound(theo(jj)%BR_hkhjhi,dim=1),ubound(theo(jj)%BR_hkhjhi,dim=1)
do ll=lbound(theo(jj)%BR_hkhjhi,dim=2),ubound(theo(jj)%BR_hkhjhi,dim=2)
do mm=lbound(theo(jj)%BR_hkhjhi,dim=3),ll
sumhjhi(kk) = sumhjhi(kk) + theo(jj)%BR_hkhjhi(kk,ll,mm)
! write(*,*) "kk,ll,mm, sumhjhi = ", kk, ll, mm, sumhjhi
enddo
enddo
enddo
sumhjHpi = 0.0D0
if(np(Hplus).gt.0) then
sumhjHpi = sum(theo(jj)%BR_hjHpiW,dim=2)
endif
testBR = theo(jj)%BR_hjss &
& + theo(jj)%BR_hjcc &
& + theo(jj)%BR_hjbb &
& + theo(jj)%BR_hjtt &
& + theo(jj)%BR_hjmumu &
& + theo(jj)%BR_hjtautau &
& + theo(jj)%BR_hjemu &
& + theo(jj)%BR_hjetau &
& + theo(jj)%BR_hjmutau &
& + theo(jj)%BR_hjWW &
& + theo(jj)%BR_hjZZ &
& + theo(jj)%BR_hjZga &
& + theo(jj)%BR_hjgg &
& + theo(jj)%BR_hjgaga &
& + sum(theo(jj)%BR_hjhiZ,dim=2) &
& + sumhjhi + sumhjHpi
! write(*,*) 'sumhjhi = ',sumhjhi
! write(*,*) 'sum(theo(jj)%BR_hjhiZ,dim=2) = ', sum(theo(jj)%BR_hjhiZ,dim=2)
! write(*,*) 'debug: testBR = ', testBR
testsumBR = maxval( testBR )
if( testsumBR .gt. 1.0D0+fuzziness )then
! if(debug)
write(*,*) 'warning: sum of BR for '//trim(adjustl(pdesc(Hneut)%long))//&
&' ',maxloc(testBR),' at line number=',jj,'is',testsumBR
write(*,*) 'BR(h',maxloc(testBR),'->WW)=',theo(jj)%BR_hjWW( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->ZZ)=',theo(jj)%BR_hjZZ( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->gg)=',theo(jj)%BR_hjgg( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->gaga)=',theo(jj)%BR_hjgaga( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->bb)=',theo(jj)%BR_hjbb( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->tautau)=',theo(jj)%BR_hjtautau( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->tt)=',theo(jj)%BR_hjtt( maxloc(testBR) )
write(*,*) 'BR(h',maxloc(testBR),'->hiZ)=',theo(jj)%BR_hjhiZ( maxloc(testBR),:)
write(*,*) 'sum(BR(h',maxloc(testBR),'->hjhi))=',sumhjhi( maxloc(testBR))
write(*,*) 'sum(BR(h',maxloc(testBR),'->HpjW))=',sumhjHpi( maxloc(testBR))
endif
enddo
deallocate(testBR)
endif
if(np(Hplus)>0)then
allocate(testBR(np(Hplus)))
do jj=1,ndat
testBR = theo(jj)%BR_Hpjcs &
& + theo(jj)%BR_Hpjcb &
& + theo(jj)%BR_Hpjtaunu
testsumBR = maxval( testBR )
testsumBR_t = theo(jj)%BR_tWpb &
& + sum(theo(jj)%BR_tHpjb,dim=1)
if( testsumBR .gt. 1.0D0+fuzziness )then
if(debug)write(*,*) 'warning: sum of BR for '//trim(adjustl(pdesc(Hplus)%long))//' at line number=',jj,'is',testsumBR
elseif( testsumBR_t .gt. 1.0D0+fuzziness )then
if(debug)write(*,*) 'warning: sum of BR for the top quark at jj=',jj,'is',testsumBR_t
endif
enddo
deallocate(testBR)
endif
do jj=1,ndat
theo(jj)%gooddataset=.True.
enddo
do x=1,ubound(np,dim=1)
if(np(x)>0)then
do jj=1,ndat
if( minval(theo(jj)%particle(x)%M).lt.0.0D0)then
theo(jj)%gooddataset=.False.
if(debug)write(*,*) 'warning: negative mass for '//trim(adjustl(pdesc(x)%long))//' at line number=',jj,theo(jj)%particle(x)%M
!elseif( testsumBR_hj .gt. (1.0D0+fuzziness) )then !i.e. branching ratios for one of the Higgs add up to more than 1+fuzziness
! !theo(jj)%gooddataset=.False.
elseif( .not. (sum(theo(jj)%particle(x)%M).ge.0.0D0) )then
theo(jj)%gooddataset=.False.
write(*,*) 'warning: mass is NaN for '//trim(adjustl(pdesc(x)%long))//' at line number=',jj,theo(jj)%particle(x)%M
elseif( minval(theo(jj)%particle(x)%GammaTot).lt.0.0D0)then
theo(jj)%gooddataset=.False.
if(debug)write(*,*) 'warning: negative total decay width for '//trim(adjustl(pdesc(x)%long))// &
& ' at line number=',jj,theo(jj)%particle(x)%GammaTot
!elseif( testsumBR_hj .gt. (1.0D0+fuzziness) )then !i.e. branching ratios for one of the Higgs add up to more than 1+fuzziness
! !theo(jj)%gooddataset=.False.
elseif( .not. (sum(theo(jj)%particle(x)%GammaTot).ge.0.0D0) )then
theo(jj)%gooddataset=.False.
if(debug)write(*,*) 'warning: total decay width is NaN for '//trim(adjustl(pdesc(x)%long))// &
& ' at line number=',jj,theo(jj)%particle(x)%GammaTot
endif
enddo
endif
enddo
end subroutine check_dataset
!*****************************************************************
subroutine fill_theo_SM
! fills the Standard Model part of theo
! We do this here to save computational time - these quantities will be
! needed a few times in subroutine calcfact_t1, so don't want to calculate them each time
!************************************************************
use theory_BRfunctions
use theory_XS_SM_functions
use usefulbits, only : ndat
use S95tables, only : inrange
implicit none
!--------------------------------------internal
integer :: n
!----------------------------------------------
if(np(Hneut)<1)stop 'error in subroutine fill_theo_SM (np(Hneut))'
do n=1,ndat
call fill_theo_SM_for_datapoint(n)
enddo
end subroutine fill_theo_SM
!*****************************************************************
subroutine fill_theo_SM_for_datapoint(n)
! fills the Standard Model part of theo
! We do this here to save computational time - these quantities will be
! needed a few times in subroutine calcfact_t1, so don't want to calculate them each time
!************************************************************
use theory_BRfunctions
use theory_XS_SM_functions
use usefulbits, only : theo,small
use S95tables, only : inrange
implicit none
integer, intent(in) :: n
!--------------------------------------internal
integer :: i
double precision :: Mhi
!----------------------------------------------
if(theo(n)%gooddataset) then
do i=1,np(Hneut)
Mhi=theo(n)%particle(Hneut)%M(i)
if(theo(n)%particle(Hneut)%Mc(i).ge.small) Mhi=theo(n)%particle(Hneut)%Mc(i)
! write(*,*) 'DEBUG HB - running fill_theo_SM_for_datapoint for theo_Mh = ', theo(n)%particle(Hneut)%M, &
! i, theo(n)%particle(Hneut)%M(i)
! write(*,*) 'DEBUG HB - running fill_theo_SM_for_datapoint for Mh = ', Mhi
! write(*,*) 'DEBUG HB - running fill_theo_SM_for_datapoint BRs = ', BRSM_HWW(Mhi)
if(inrange(Mhi,'SMBR'))then
theo(n)%BR_HWW_SM(i) = BRSM_HWW(Mhi)
theo(n)%BR_HZZ_SM(i) = BRSM_HZZ(Mhi)
theo(n)%BR_Hbb_SM(i) = BRSM_Hbb(Mhi)
theo(n)%BR_Htt_SM(i) = BRSM_Htoptop(Mhi) !HB-5 new
theo(n)%BR_Hcc_SM(i) = BRSM_Hcc(Mhi)
theo(n)%BR_Hss_SM(i) = BRSM_Hss(Mhi)
theo(n)%BR_Hmumu_SM(i) = BRSM_Hmumu(Mhi)
theo(n)%BR_Htautau_SM(i)= BRSM_Htautau(Mhi)
theo(n)%BR_HZga_SM(i) = BRSM_HZga(Mhi)
theo(n)%BR_Hgaga_SM(i) = BRSM_Hgaga(Mhi)
theo(n)%BR_Hgg_SM(i) = BRSM_Hgg(Mhi)
theo(n)%BR_Hjets_SM(i) = BRSM_Hss(Mhi)+BRSM_Hcc(Mhi)+BRSM_Hbb(Mhi)+BRSM_Hgg(Mhi)
theo(n)%GammaTot_SM(i) = BRSM_GammaTot(Mhi)
else
theo(n)%BR_HWW_SM(i) = 0.0D0
theo(n)%BR_HZZ_SM(i) = 0.0D0
theo(n)%BR_Hbb_SM(i) = 0.0D0
theo(n)%BR_Hcc_SM(i) = 0.0D0
theo(n)%BR_Hss_SM(i) = 0.0D0
theo(n)%BR_Hmumu_SM(i) = 0.0D0
theo(n)%BR_Htautau_SM(i) = 0.0D0
theo(n)%BR_HZga_SM(i) = 0.0D0
theo(n)%BR_Hgaga_SM(i) = 0.0D0
theo(n)%BR_Hgg_SM(i) = 0.0D0
theo(n)%BR_Hjets_SM(i) = 0.0D0
theo(n)%GammaTot_SM(i) = 0.0D0
endif
if(inrange(Mhi,'TEV '))then ! n.b.: in fb
! theo(n)%tev%XS_HZ_SM(i) = XS_tev_HZ_SM(Mhi)
! theo(n)%tev%XS_HW_SM(i) = XS_tev_HW_SM(Mhi)
- theo(n)%tev%XS_HZ_SM(i) = 1000.0D0 * ZH_cpmix_nnlo_ggqqbb(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
- theo(n)%tev%XS_gg_HZ_SM(i) = 1000.0D0 * ZH_cpmix_nnlo_gg(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
+ theo(n)%tev%XS_HZ_SM(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
+ theo(n)%tev%XS_gg_HZ_SM(i) = ZH_cpmix_nnlo_gg(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%tev%XS_qq_HZ_SM(i) = theo(n)%tev%XS_HZ_SM(i) - theo(n)%tev%XS_gg_HZ_SM(i)
- theo(n)%tev%XS_HW_SM(i) = 1000.0D0 * WH_nnlo(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,.True.,.True.)
+ theo(n)%tev%XS_HW_SM(i) = WH_nnlo(Mhi,'TEV ',1.0D0,1.0D0,1.0D0,.True.,.True.)
theo(n)%tev%XS_H_SM(i) = XS_tev_gg_H_SM(Mhi)+XS_tev_bb_H_SM(Mhi)
theo(n)%tev%XS_gg_H_SM(i) = XS_tev_gg_H_SM(Mhi) !HB-5 new
theo(n)%tev%XS_bb_H_SM(i) = XS_tev_bb_H_SM(Mhi) !HB-5 new
theo(n)%tev%XS_vbf_SM(i)= XS_tev_vbf_SM(Mhi)
theo(n)%tev%XS_ttH_SM(i)= XS_tev_ttH_SM(Mhi)
theo(n)%tev%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
theo(n)%tev%XS_tH_schan_SM(i) = 0.0D0 !HB-5 new
theo(n)%tev%XS_Hb_SM(i) = XS_tev_bg_Hb_SM(Mhi)
theo(n)%tev%XS_Hb_c1_SM(i) = XS_tev_bg_Hb_c1_SM(Mhi)
theo(n)%tev%XS_Hb_c2_SM(i) = XS_tev_bg_Hb_c2_SM(Mhi)
theo(n)%tev%XS_Hb_c3_SM(i) = XS_tev_bg_Hb_c3_SM(Mhi)
theo(n)%tev%XS_Hb_c4_SM(i) = XS_tev_bg_Hb_c4_SM(Mhi)
else
theo(n)%tev%XS_HW_SM(i) = 0.0D0
theo(n)%tev%XS_H_SM(i) = 0.0D0
theo(n)%tev%XS_gg_H_SM(i)= 0.0D0
theo(n)%tev%XS_bb_H_SM(i)= 0.0D0
theo(n)%tev%XS_HZ_SM(i) = 0.0D0
theo(n)%tev%XS_gg_HZ_SM(i) = 0.0D0
theo(n)%tev%XS_qq_HZ_SM(i) = 0.0D0
theo(n)%tev%XS_vbf_SM(i)= 0.0D0
theo(n)%tev%XS_ttH_SM(i)= 0.0D0
theo(n)%tev%XS_tH_tchan_SM(i) = 0.0D0
theo(n)%tev%XS_tH_tchan_SM(i) = 0.0D0
theo(n)%tev%XS_Hb_SM(i) = 0.0D0
theo(n)%tev%XS_Hb_c1_SM(i) = 0.0D0
theo(n)%tev%XS_Hb_c2_SM(i) = 0.0D0
theo(n)%tev%XS_Hb_c3_SM(i) = 0.0D0
theo(n)%tev%XS_Hb_c4_SM(i) = 0.0D0
endif
if(inrange(Mhi,'LHC7 '))then
theo(n)%lhc7%XS_H_SM(i) = XS_lhc7_gg_H_SM(Mhi) + XS_lhc7_bb_H_SM(Mhi)
theo(n)%lhc7%XS_gg_H_SM(i) = XS_lhc7_gg_H_SM(Mhi) !HB-5 new
theo(n)%lhc7%XS_bb_H_SM(i) = XS_lhc7_bb_H_SM(Mhi) !HB-5 new
theo(n)%lhc7%XS_HZ_SM(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc7%XS_gg_HZ_SM(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc7%XS_qq_HZ_SM(i) = theo(n)%lhc7%XS_HZ_SM(i) - theo(n)%lhc7%XS_gg_HZ_SM(i)
theo(n)%lhc7%XS_HW_SM(i) = WH_nnlo(Mhi,'LHC7 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
! theo(n)%lhc7%XS_HW_SM(i) = XS_lhc7_HW_SM(Mhi)
! theo(n)%lhc7%XS_HZ_SM(i) = XS_lhc7_HZ_SM(Mhi)
theo(n)%lhc7%XS_vbf_SM(i)= XS_lhc7_vbf_SM(Mhi)
theo(n)%lhc7%XS_ttH_SM(i)= XS_lhc7_ttH_SM(Mhi)
theo(n)%lhc7%XS_tH_tchan_SM(i) = XS_lhc7_tH_tchan_SM(Mhi) !HB-5 new
theo(n)%lhc7%XS_tH_schan_SM(i) = XS_lhc7_tH_schan_SM(Mhi) !HB-5 new
else
theo(n)%lhc7%XS_HW_SM(i) = 0.0D0
theo(n)%lhc7%XS_H_SM(i) = 0.0D0
theo(n)%lhc7%XS_gg_H_SM(i)= 0.0D0
theo(n)%lhc7%XS_bb_H_SM(i)= 0.0D0
theo(n)%lhc7%XS_HZ_SM(i) = 0.0D0
theo(n)%lhc7%XS_gg_HZ_SM(i) = 0.0D0
theo(n)%lhc7%XS_qq_HZ_SM(i) = 0.0D0
theo(n)%lhc7%XS_vbf_SM(i)= 0.0D0
theo(n)%lhc7%XS_ttH_SM(i)= 0.0D0
theo(n)%lhc7%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
theo(n)%lhc7%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
endif
if(inrange(Mhi,'LHC8 '))then
! theo(n)%lhc8%XS_HW_SM(i) = XS_lhc8_HW_SM(Mhi)
theo(n)%lhc8%XS_H_SM(i) = XS_lhc8_gg_H_SM(Mhi) + XS_lhc8_bb_H_SM(Mhi)
theo(n)%lhc8%XS_gg_H_SM(i) = XS_lhc8_gg_H_SM(Mhi) !HB-5 new
theo(n)%lhc8%XS_bb_H_SM(i) = XS_lhc8_bb_H_SM(Mhi) !HB-5 new
theo(n)%lhc8%XS_HZ_SM(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc8%XS_gg_HZ_SM(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc8%XS_qq_HZ_SM(i) = theo(n)%lhc8%XS_HZ_SM(i) - theo(n)%lhc8%XS_gg_HZ_SM(i)
theo(n)%lhc8%XS_HW_SM(i) = WH_nnlo(Mhi,'LHC8 ',1.0D0,1.0D0,1.0D0,.True.,.True.)
! theo(n)%lhc8%XS_HZ_SM(i) = XS_lhc8_HZ_SM(Mhi)
theo(n)%lhc8%XS_vbf_SM(i)= XS_lhc8_vbf_SM(Mhi)
theo(n)%lhc8%XS_ttH_SM(i)= XS_lhc8_ttH_SM(Mhi)
theo(n)%lhc8%XS_tH_tchan_SM(i) = XS_lhc8_tH_tchan_SM(Mhi) !HB-5 new
theo(n)%lhc8%XS_tH_schan_SM(i) = XS_lhc8_tH_schan_SM(Mhi) !HB-5 new
else
theo(n)%lhc8%XS_HW_SM(i) = 0.0D0
theo(n)%lhc8%XS_H_SM(i) = 0.0D0
theo(n)%lhc8%XS_HZ_SM(i) = 0.0D0
theo(n)%lhc8%XS_gg_HZ_SM(i) = 0.0D0
theo(n)%lhc8%XS_qq_HZ_SM(i) = 0.0D0
theo(n)%lhc8%XS_vbf_SM(i)= 0.0D0
theo(n)%lhc8%XS_ttH_SM(i)= 0.0D0
theo(n)%lhc8%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
theo(n)%lhc8%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
endif
if(inrange(Mhi,'LHC13'))then
! theo(n)%lhc13%XS_HW_SM(i) = XS_lhc13_HW_SM(Mhi)
theo(n)%lhc13%XS_H_SM(i) = XS_lhc13_gg_H_SM(Mhi) + XS_lhc13_bb_H_SM(Mhi)
theo(n)%lhc13%XS_gg_H_SM(i) = XS_lhc13_gg_H_SM(Mhi) !HB-5 new
theo(n)%lhc13%XS_bb_H_SM(i) = XS_lhc13_bb_H_SM(Mhi) !HB-5 new
theo(n)%lhc13%XS_HZ_SM(i) = ZH_cpmix_nnlo_ggqqbb(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc13%XS_gg_HZ_SM(i) = ZH_cpmix_nnlo_gg(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,0.0D0,0.0D0,.True.)
theo(n)%lhc13%XS_qq_HZ_SM(i) = theo(n)%lhc13%XS_HZ_SM(i) - theo(n)%lhc13%XS_gg_HZ_SM(i)
theo(n)%lhc13%XS_HW_SM(i) = WH_nnlo(Mhi,'LHC13',1.0D0,1.0D0,1.0D0,.True.,.True.)
! theo(n)%lhc13%XS_HZ_SM(i) = XS_lhc13_HZ_SM(Mhi)
theo(n)%lhc13%XS_vbf_SM(i)= XS_lhc13_vbf_SM(Mhi)
theo(n)%lhc13%XS_ttH_SM(i)= XS_lhc13_ttH_SM(Mhi)
theo(n)%lhc13%XS_tH_tchan_SM(i) = XS_lhc13_tH_tchan_SM(Mhi) !HB-5 new
theo(n)%lhc13%XS_tH_schan_SM(i) = XS_lhc13_tH_schan_SM(Mhi) !HB-5 new
else
theo(n)%lhc13%XS_HW_SM(i) = 0.0D0
theo(n)%lhc13%XS_H_SM(i) = 0.0D0
theo(n)%lhc13%XS_HZ_SM(i) = 0.0D0
theo(n)%lhc13%XS_gg_HZ_SM(i) = 0.0D0
theo(n)%lhc13%XS_qq_HZ_SM(i) = 0.0D0
theo(n)%lhc13%XS_vbf_SM(i)= 0.0D0
theo(n)%lhc13%XS_ttH_SM(i)= 0.0D0
theo(n)%lhc13%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
theo(n)%lhc13%XS_tH_tchan_SM(i) = 0.0D0 !HB-5 new
endif
enddo
endif
end subroutine fill_theo_SM_for_datapoint
!************************************************************
subroutine XS_from_partR ! OBSOLETE !
! turn partonic cross section ratios in to hadronic cross section
! ratios
! Subroutine is complicated by the fact that if e.g. all
! the partR(n)%qq_hjW partonic cross section ratios are equal,
! just want to use this value for the hadronic cross section
! ratio and not lose any accuracy by combining with the tevS
!************************************************************
use usefulbits, only : ndat
use S95tables, only : inrange
implicit none
!--------------------------------------internal
integer :: n
!----------------------------------------------
if(np(Hneut)<1)stop 'error in subroutine XS_from_partR (np(Hneut))'
do n=1,ndat
call XS_from_partR_for_datapoint(n)
enddo
end subroutine XS_from_partR
!******************************************************************
subroutine XS_from_partR_for_datapoint(n) ! OBSOLETE !
! turn partonic cross section ratios in to hadronic cross section
! ratios
! Subroutine is complicated by the fact that if e.g. all
! the partR(n)%qq_hjW partonic cross section ratios are equal,
! just want to use this value for the hadronic cross section
! ratio and not lose any accuracy by combining with the tevS
!************************************************************
use usefulbits, only : allocate_hadroncolliderextras_parts, &
& deallocate_hadroncolliderextras_parts
use S95tables, only : inrange
implicit none
integer, intent(in) :: n
!--------------------------------------internal
integer :: i
double precision :: Mhi
logical :: simple_partR
!----------------------------------------------
call allocate_hadroncolliderextras_parts(tevS)
call allocate_hadroncolliderextras_parts(lhc7S)
call allocate_hadroncolliderextras_parts(lhc8S)
if(theo(n)%gooddataset) then
do i=1,np(Hneut)
Mhi=theo(n)%particle(Hneut)%M(i)
call fill_tevS(i,Mhi)
call fill_lhc7S(i,Mhi)
call fill_lhc8S(i,Mhi)
!this if loop is here to make sure partR(n)%qq_hjWp(1,i).eq.0.0D0 is taken care of
if(partR(n)%qq_hjWp(1,i).eq.0.0D0)then
simple_partR=.False.
elseif( (( sum(abs( partR(n)%qq_hjWp(:,i) - partR(n)%qq_hjWp(1,i))) &
& + sum(abs( partR(n)%qq_hjWm(:,i) - partR(n)%qq_hjWp(1,i))) )/partR(n)%qq_hjWp(1,i)) .lt. 1.0D-5 )then
simple_partR=.True.
else
simple_partR=.False.
endif
if(simple_partR)then
theo(n)%tev%XS_hjW_ratio(i)=partR(n)%qq_hjWp(1,i)
theo(n)%lhc7%XS_hjW_ratio(i)=partR(n)%qq_hjWp(1,i)
theo(n)%lhc8%XS_hjW_ratio(i)=partR(n)%qq_hjWp(1,i)
else
theo(n)%tev%XS_hjW_ratio(i)= &
& sum( partR(n)%qq_hjWp(:,i)*tevS(1)%qq_hjWp(:,i) ) &
& + sum( partR(n)%qq_hjWm(:,i)*tevS(1)%qq_hjWm(:,i) )
theo(n)%lhc7%XS_hjW_ratio(i)= &
& sum( partR(n)%qq_hjWp(:,i)*lhc7S(1)%qq_hjWp(:,i) ) &
& + sum( partR(n)%qq_hjWm(:,i)*lhc7S(1)%qq_hjWm(:,i) )
theo(n)%lhc8%XS_hjW_ratio(i)= &
& sum( partR(n)%qq_hjWp(:,i)*lhc8S(1)%qq_hjWp(:,i) ) &
& + sum( partR(n)%qq_hjWm(:,i)*lhc8S(1)%qq_hjWm(:,i) )
endif
theo(n)%tev%XS_hj_ratio(i)= &
& partR(n)%gg_hj(i) *tevS(1)%gg_hj(i) &
& + sum( partR(n)%qq_hj(:,i) *tevS(1)%qq_hj(:,i) )
theo(n)%lhc7%XS_hj_ratio(i)= &
& partR(n)%gg_hj(i) *lhc7S(1)%gg_hj(i) &
& + sum( partR(n)%qq_hj(:,i) *lhc7S(1)%qq_hj(:,i) )
theo(n)%lhc8%XS_hj_ratio(i)= &
& partR(n)%gg_hj(i) *lhc8S(1)%gg_hj(i) &
& + sum( partR(n)%qq_hj(:,i) *lhc8S(1)%qq_hj(:,i) )
!this if loop is here to make sure partR(n)%qq_hjZ(1,i).eq.0.0D0 is taken care of
if(partR(n)%qq_hjZ(1,i).eq.0.0D0)then
simple_partR=.False.
elseif( (abs(sum( partR(n)%qq_hjZ(:,i) - partR(n)%qq_hjZ(1,i)))/partR(n)%qq_hjZ(1,i)).lt. 1.0D-5 )then
simple_partR=.True.
else
simple_partR=.False.
endif
if( simple_partR )then
theo(n)%tev%XS_hjZ_ratio(i) = partR(n)%qq_hjZ(1,i)
if(partR(n)%gg_hjZ(i) .le.0.0D0)then
theo(n)%lhc7%XS_hjZ_ratio(i)= partR(n)%qq_hjZ(1,i)
theo(n)%lhc8%XS_hjZ_ratio(i)= partR(n)%qq_hjZ(1,i)
else
theo(n)%lhc7%XS_hjZ_ratio(i)= &
& partR(n)%gg_hjZ(i) *lhc7S(1)%gg_hjZ(i) &
& + sum( partR(n)%qq_hjZ(:,i) *lhc7S(1)%qq_hjZ(:,i) )
theo(n)%lhc8%XS_hjZ_ratio(i)= &
& partR(n)%gg_hjZ(i) *lhc8S(1)%gg_hjZ(i) &
& + sum( partR(n)%qq_hjZ(:,i) *lhc8S(1)%qq_hjZ(:,i) )
endif
else
theo(n)%tev%XS_hjZ_ratio(i)= &
& partR(n)%gg_hjZ(i) *tevS(1)%gg_hjZ(i) &
& + sum( partR(n)%qq_hjZ(:,i) *tevS(1)%qq_hjZ(:,i) )
theo(n)%lhc7%XS_hjZ_ratio(i)= &
& partR(n)%gg_hjZ(i) *lhc7S(1)%gg_hjZ(i) &
& + sum( partR(n)%qq_hjZ(:,i) *lhc7S(1)%qq_hjZ(:,i) )
theo(n)%lhc8%XS_hjZ_ratio(i)= &
& partR(n)%gg_hjZ(i) *lhc8S(1)%gg_hjZ(i) &
& + sum( partR(n)%qq_hjZ(:,i) *lhc8S(1)%qq_hjZ(:,i) )
endif
theo(n)%tev%XS_hjb_ratio(i) = partR(n)%bg_hjb(i)
theo(n)%lhc7%XS_hjb_ratio(i)= partR(n)%bg_hjb(i)
theo(n)%lhc8%XS_hjb_ratio(i)= partR(n)%bg_hjb(i)
theo(n)%tev%XS_gg_hj_ratio(i) = partR(n)%gg_hj(i)
theo(n)%tev%XS_bb_hj_ratio(i) = partR(n)%bg_hjb(i)
theo(n)%lhc7%XS_gg_hj_ratio(i) = partR(n)%gg_hj(i)
theo(n)%lhc7%XS_bb_hj_ratio(i) = partR(n)%bg_hjb(i)
theo(n)%lhc8%XS_gg_hj_ratio(i) = partR(n)%gg_hj(i)
theo(n)%lhc8%XS_bb_hj_ratio(i) = partR(n)%bg_hjb(i)
enddo
endif
call deallocate_hadroncolliderextras_parts(lhc8S)
call deallocate_hadroncolliderextras_parts(lhc7S)
call deallocate_hadroncolliderextras_parts(tevS)
end subroutine XS_from_partR_for_datapoint
!******************************************************************
subroutine fill_tevS(j,Mhj) ! OBSOLETE !
! fills the elements of tevS using the functions in module theory_colliderSfunctions
!************************************************************
use theory_colliderSfunctions
use theory_XS_SM_functions
use S95tables, only : inrange
implicit none
!--------------------------------------internal
integer :: j
double precision :: Mhj
!----------------------------------------------
if(inrange(Mhj,'TEV '))then
tevS(1)%qq_hjWp(1,j)=tev_rHWpm_udb(Mhj)
tevS(1)%qq_hjWp(2,j)=tev_rHWpm_csb(Mhj)
tevS(1)%qq_hjWm(1,j)=tev_rHWpm_dub(Mhj)
tevS(1)%qq_hjWm(2,j)=tev_rHWpm_scb(Mhj)
!We now have a new gg->H SM function: Should use XS functions instead of r's
!For cross check with OB code changed this temporarily!
tevS(1)%gg_hj(j)=tev_rH_gg(Mhj)
!tevS(1)%gg_hj(j) =XS_tev_gg_H_SM(Mhj)/(XS_tev_gg_H_SM(Mhj)+XS_tev_bb_H_SM(Mhj))
tevS(1)%qq_hj(:,j)=0.0D0
tevS(1)%qq_hj(5,j)=tev_rH_bb(Mhj)
!tevS(1)%qq_hj(5,j)=XS_tev_bb_H_SM(Mhj)/(XS_tev_gg_H_SM(Mhj)+XS_tev_bb_H_SM(Mhj))
tevS(1)%gg_hjZ(j)=0.0D0
tevS(1)%qq_hjZ(1,j)=tev_rHZ_ddb(Mhj)
tevS(1)%qq_hjZ(2,j)=tev_rHZ_uub(Mhj)
tevS(1)%qq_hjZ(3,j)=tev_rHZ_ssb(Mhj)
tevS(1)%qq_hjZ(4,j)=tev_rHZ_ccb(Mhj)
tevS(1)%qq_hjZ(5,j)=tev_rHZ_bbb(Mhj)
if(abs(sum(tevS(1)%qq_hjWp(:,j))+sum(tevS(1)%qq_hjWm(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_tevS (a)'
elseif(abs(tevS(1)%gg_hj(j)+sum(tevS(1)%qq_hj(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_tevS (b)'
elseif(abs(tevS(1)%gg_hjZ(j)+sum(tevS(1)%qq_hjZ(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_tevS (c)'
endif
else
tevS(1)%qq_hjWp(:,j)=0.0D0
tevS(1)%qq_hjWm(:,j)=0.0D0
tevS(1)%gg_hj(j)=0.0D0
tevS(1)%qq_hj(:,j)=0.0D0
tevS(1)%gg_hjZ(j)=0.0D0
tevS(1)%qq_hjZ(:,j)=0.0D0
endif
end subroutine fill_tevS
!******************************************************************
subroutine fill_lhc7S(j,Mhj) ! OBSOLETE !
! fills the elements of lhc7S using the functions in module theory_colliderSfunctions
!************************************************************
use theory_colliderSfunctions
use theory_XS_SM_functions
use usefulbits, only : vsmall
use S95tables, only : inrange
implicit none
!--------------------------------------internal
integer :: j
double precision :: Mhj
!----------------------------------------------
if(inrange(Mhj,'LHC7 '))then
lhc7S(1)%gg_hj(j)=LHC7_rH_gg(Mhj)
lhc7S(1)%qq_hj(:,j)=0.0D0
lhc7S(1)%qq_hj(5,j)=LHC7_rH_bb(Mhj)
if(abs(lhc7S(1)%gg_hj(j)+sum(lhc7S(1)%qq_hj(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_lhc7S (b)'
endif
if(XS_lhc7_HW_SM(Mhj).lt.vsmall)then
lhc7S(1)%qq_hjWp(:,j)=0.0D0
lhc7S(1)%qq_hjWm(:,j)=0.0D0
else
lhc7S(1)%qq_hjWp(1,j)=LHC7_rHWp_udb(Mhj)
lhc7S(1)%qq_hjWp(2,j)=LHC7_rHWp_csb(Mhj)
lhc7S(1)%qq_hjWm(1,j)=LHC7_rHWm_dub(Mhj)
lhc7S(1)%qq_hjWm(2,j)=LHC7_rHWm_scb(Mhj)
if(abs(sum(lhc7S(1)%qq_hjWp(:,j))+sum(lhc7S(1)%qq_hjWm(:,j)) - 1.0D0) .gt. 1.0D-2)then
! write(*,*) "hello: ", Mhj
stop 'error in fill_lhc7S (a)'
endif
endif
if(XS_lhc7_HZ_SM(Mhj).lt.vsmall)then
lhc7S(1)%gg_hjZ(j)=0.0D0
lhc7S(1)%qq_hjZ(:,j)=0.0D0
else
lhc7S(1)%gg_hjZ(j)=LHC7_rHZ_gg(Mhj)
lhc7S(1)%qq_hjZ(1,j)=LHC7_rHZ_ddb(Mhj)
lhc7S(1)%qq_hjZ(2,j)=LHC7_rHZ_uub(Mhj)
lhc7S(1)%qq_hjZ(3,j)=LHC7_rHZ_ssb(Mhj)
lhc7S(1)%qq_hjZ(4,j)=LHC7_rHZ_ccb(Mhj)
lhc7S(1)%qq_hjZ(5,j)=LHC7_rHZ_bbb(Mhj)
if(abs(lhc7S(1)%gg_hjZ(j)+sum(lhc7S(1)%qq_hjZ(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_lhc7S (c)'
endif
endif
else
lhc7S(1)%qq_hjWp(:,j)=0.0D0
lhc7S(1)%qq_hjWm(:,j)=0.0D0
lhc7S(1)%gg_hj(j)=0.0D0
lhc7S(1)%qq_hj(:,j)=0.0D0
lhc7S(1)%gg_hjZ(j)=0.0D0
lhc7S(1)%qq_hjZ(:,j)=0.0D0
endif
end subroutine fill_lhc7S
!******************************************************************
subroutine fill_lhc8S(j,Mhj) ! OBSOLETE !
! fills the elements of lhc8S using the functions in module theory_colliderSfunctions
!************************************************************
use theory_colliderSfunctions
use theory_XS_SM_functions
use usefulbits, only : vsmall
use S95tables, only : inrange
implicit none
!--------------------------------------internal
integer :: j
double precision :: Mhj
!----------------------------------------------
if(inrange(Mhj,'LHC8 '))then
lhc8S(1)%gg_hj(j)=LHC8_rH_gg(Mhj)
lhc8S(1)%qq_hj(:,j)=0.0D0
lhc8S(1)%qq_hj(5,j)=LHC8_rH_bb(Mhj)
if(abs(lhc8S(1)%gg_hj(j)+sum(lhc8S(1)%qq_hj(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_lhc8S (b)'
endif
if(XS_lhc8_HW_SM(Mhj).lt.vsmall)then
lhc8S(1)%qq_hjWp(:,j)=0.0D0
lhc8S(1)%qq_hjWm(:,j)=0.0D0
else
lhc8S(1)%qq_hjWp(1,j)=LHC8_rHWp_udb(Mhj)
lhc8S(1)%qq_hjWp(2,j)=LHC8_rHWp_csb(Mhj)
lhc8S(1)%qq_hjWm(1,j)=LHC8_rHWm_dub(Mhj)
lhc8S(1)%qq_hjWm(2,j)=LHC8_rHWm_scb(Mhj)
if(abs(sum(lhc8S(1)%qq_hjWp(:,j))+sum(lhc8S(1)%qq_hjWm(:,j)) - 1.0D0) .gt. 1.0D-2)then
! write(*,*) Mhj,sum(lhc8S(1)%qq_hjWp(:,j)), sum(lhc8S(1)%qq_hjWm(:,j))
stop 'error in fill_lhc8S (a)'
endif
endif
if(XS_lhc8_HZ_SM(Mhj).lt.vsmall)then
lhc8S(1)%gg_hjZ(j)=0.0D0
lhc8S(1)%qq_hjZ(:,j)=0.0D0
else
lhc8S(1)%gg_hjZ(j)=LHC8_rHZ_gg(Mhj)
lhc8S(1)%qq_hjZ(1,j)=LHC8_rHZ_ddb(Mhj)
lhc8S(1)%qq_hjZ(2,j)=LHC8_rHZ_uub(Mhj)
lhc8S(1)%qq_hjZ(3,j)=LHC8_rHZ_ssb(Mhj)
lhc8S(1)%qq_hjZ(4,j)=LHC8_rHZ_ccb(Mhj)
lhc8S(1)%qq_hjZ(5,j)=LHC8_rHZ_bbb(Mhj)
if(abs(lhc8S(1)%gg_hjZ(j)+sum(lhc8S(1)%qq_hjZ(:,j)) - 1.0D0) .gt. 1.0D-2)then
stop 'error in fill_lhc8S (c)'
endif
endif
else
lhc8S(1)%qq_hjWp(:,j)=0.0D0
lhc8S(1)%qq_hjWm(:,j)=0.0D0
lhc8S(1)%gg_hj(j)=0.0D0
lhc8S(1)%qq_hj(:,j)=0.0D0
lhc8S(1)%gg_hjZ(j)=0.0D0
lhc8S(1)%qq_hjZ(:,j)=0.0D0
endif
end subroutine fill_lhc8S
!******************************************************************
end module theo_manip
!******************************************************************
Index: trunk/HiggsBounds-5/pubconfigure
===================================================================
--- trunk/HiggsBounds-5/pubconfigure (revision 598)
+++ trunk/HiggsBounds-5/pubconfigure (revision 599)
@@ -1,96 +1,151 @@
#! /bin/sh
#configure script for HiggsBounds
# this tells the fortran program where to look to read in tables of experimental data and Higgs branching ratios
chmod u+x ./create_store_pathname.bat
./create_store_pathname.bat > store_pathname.f90
-echo 'running configure script...' 1>&2
-
-echo ' * * * '
-echo 'Reminder: You must enter the correct paths in the ./configure manually if you'
-echo 'wish to use HiggsBounds in conjunction with FeynHiggs or CPsuperH'
-echo 'Also, you may need/wish to change the fortran compiler used. '
-echo 'The default is gfortran.'
-echo ' * * * '
-
+echo ' ******************************************************** '
+echo ' * Configuring HiggsBounds... * ' 1>&2
+echo ' * * '
+echo ' * (will create makefile from makefile.in) * '
+echo ' ******************************************************** '
+echo ' You can specify the correct paths to FeynHiggs (if needed) '
+echo ' via the option '
+echo ' --fhpath=/PATH/TO/FEYNHIGGS'
+echo ' or manually in the configure script.'
+echo ''
+echo ' In order to use the LEP chi-squared extension, please '
+echo ' configure with'
+echo ' --enable-chisq'
+echo ' and specify the path to the clsbtables (separate download!)'
+echo ' --clsbtablespath=/ABSOLUTE/PATH/TO/CLSBTABLES'
+echo ''
+echo ' The Fortran compiler has to be set manually in the '
+echo ' configure script. The default is gfortran.'
+echo ' ******************************************************** '
+
+CONF_FHPATH="../FeynHiggs-2.14.3beta"
+# For FeynHiggs:
+CONF_OS=`uname -s`
+CONF_MACH=`uname -m`
+CONF_DEFPREFIX="$CONF_MACH-$CONF_OS"
+CONF_CHISQ=0
+USECHISQMODS_STR=
+ADDITIONALDEFINE_STR=
+clsbtablesdir=`pwd`"/clsbtables/"
+
+for arg in "$@" ; do
+ case "$arg" in
+ --fhpath=*)
+ CONF_FHPATH=`expr "$arg" : ".*--fhpath=\(.*\)"` ;;
+ --enable-chisq)
+ CONF_CHISQ=1 ;;
+ --clsbtablespath=*)
+ clsbtablesdir=`expr "$arg" : ".*--clsbtablespath=\(.*\)"` ;;
+ -*)
+ echo "Warning: $arg is not a valid option." ;;
+ *=*)
+ eval `echo $arg\" | sed 's/=/="/'` ;;
+ *)
+ echo "Warning: $arg is not a valid argument." ;;
+ esac
+done
+
+if [ "${CONF_FHPATH: -1}" = "/" ]; then
+ CONF_FHPATH="${CONF_FHPATH%?}"
+fi
+
+if [ "${clsbtablesdir: -1}" != "/" ]; then
+ clsbtablesdir="${clsbtablesdir}/"
+fi
+
+echo ''
+echo ' current settings: '
+echo ''
+echo " fhpath=${CONF_FHPATH}"
+
+if [ ${CONF_CHISQ} = 1 ]; then
+ echo " LEP chi-squared extension enabled, with"
+ echo " clsbtablespath=${clsbtablesdir}"
+ USECHISQMODS_STR='$(CHISQMODS)'
+ ADDITIONALDEFINE_STR='-DenableCHISQ -DSETCLSBTABLEDIR="\"'${clsbtablesdir}'"\"'
+fi
+
+#----------------------------
cat - makefile.in > makefile << _EOF_
# --- variables defined by configure ---
# If you want to edit these variables, change ./configure, not ./makefile
-
#----------------------------
+#----------------------------
# Put you favourite compiler and compiler options in here:
-
-# e.g.
-
-# a) GNU compiler (http://gcc.gnu.org/wiki/GFortran):
F90C = gfortran
F77C = gfortran
F90FLAGS = -fbounds-check -ffixed-line-length-none
-
-# F90FLAGS = -fbounds-check -ffixed-line-length-none -fPIC
-# use the compiler flag -fopenmp for parallel processing
+#F90FLAGS = -fbounds-check -ffixed-line-length-none -fPIC
+#F90FLAGS = -fbounds-check -Wall -W
# b) g95 compiler (www.g95.org):
#F90C = g95
#F77C = g95
#F90FLAGS = -fbounds-check -ffree-line-length-huge
# c) Portland Group Inc. compiler:
#F90C = pgf90
#F77C = pgf90
#F90FLAGS = -C -Ktrap=fp -Mbounds
# d) Intel compiler:
#F90C = ifort
#F77C = ifort
#F90FLAGS =
#if using the NAG compiler, you need the compiler flag -DNAGf90Fortran
#because the subroutines flush,iargc,getarg need to use modules
#caution: the use of the NAG compiler is unsupported)
#(nb. the f77 compiler is currently only used for compiling the example programs)
#------------------------------
-# If you wish to use HiggsBounds in conjunction with FeynHiggs or CPsuperH,
+# If you wish to use HiggsBounds in conjunction with FeynHiggs
# make sure these paths indicate where you've stored these packages on your system,
-# for example:
-
-FHINCLUDE = -I/blah/blah/FeynHiggs-2.x.x/i586-linux/include
-FHLIBS = -L/blah/blah/FeynHiggs-2.x.x/i586-linux/lib -lFH
+FHINCLUDE = -I${CONF_FHPATH}/${CONF_DEFPREFIX}/include
+FHLIBS = -L${CONF_FHPATH}/${CONF_DEFPREFIX}/lib -lFH
-CPSUPERHLIBS = -L/blah/blah/CPsuperH2 -lcpsuperh2
+# not supported any more:
+# CPSUPERHLIBS = -L/blah/blah/CPsuperH2 -lcpsuperh2
# Note that care must be taken to ensure that consistent compilers are used
# If you get error messages similar to
# ... undefined reference to initialize_higgsbounds__...
# and the paths the libraries are correct, it's a good idea to check
# that the same compilers are used for each package.
# (you may be able to work around this
# e.g. if FeynHiggs was compiled with g77 it may be possible to compile HiggsBounds
# with gfortran and add -lg2c to the end of the variable FHLIBS)
#-----------------------------
HBLIBS = -L./ -lHB
EXE = HiggsBounds
#-----------------------------
-#USECHISQMODS = \$(CHISQMODS)
-#ADDITIONALDEFINE = -DenableCHISQ
+USECHISQMODS = ${USECHISQMODS_STR}
+ADDITIONALDEFINE = ${ADDITIONALDEFINE_STR}
# --- end defs by configure ---
_EOF_
-echo 'finished configure script' 1>&2
+echo ' ******************************************************** '
+echo ' ...finished configure script.' 1>&2
+echo ' ******************************************************** '
\ No newline at end of file

File Metadata

Mime Type
text/x-diff
Expires
Sun, Feb 23, 2:25 PM (16 h, 5 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4474056
Default Alt Text
(82 KB)

Event Timeline