# This file was automatically created by FeynRules $Revision: 535 $
# Mathematica version: 7.0 for Mac OS X x86 (64-bit) (November 11, 2008)
# Date: Fri 18 Mar 2011 18:40:51

from object_library import all_couplings, Coupling

from function_library import complexconjugate, re, im, csc, sec, acsc, asec

################
# R2 couplings #
################

# ========= #
# Pure QCD  #
# ========= #

R2_3Gq = Coupling(name = 'R2_3Gq',
                value = '2.0*G**3/(48.0*cmath.pi**2)',
                order = {'QCD':3})

R2_3Gg = Coupling(name = 'R2_3Gg',
                 value = 'Ncol*G**3/(48.0*cmath.pi**2)*(7.0/4.0+lhv)',
                 order = {'QCD':3})

#=============================================================================================
#  4-gluon R2 couplings
#=============================================================================================

# Gluon contribution to it

GC_4GR2_Gluon_delta5 = Coupling(name = 'GC_4GR2_Gluon_delta5',
                 value = '-4.0*complex(0,1)*RGR2*(2.0*lhv+5.0)',
                 order = {'QCD':4})

GC_4GR2_Gluon_delta7 = Coupling(name = 'GC_4GR2_Gluon_delta7',
                 value = '2.0*complex(0,1)*RGR2*(2.0*lhv+7.0)',
                 order = {'QCD':4})

GC_4GR2_2Struct = Coupling(name = 'GC_4GR2_2Struct',
                 value = '2.0*complex(0,1)*RGR2*Ncol*(lhv+3.0)',
                 order = {'QCD':4})

GC_4GR2_4Struct = Coupling(name = 'GC_4GR2_4Struct',
                 value = '-complex(0,1)*RGR2*Ncol*(4.0*lhv+11.0)',
                 order = {'QCD':4})

# Fermion contribution to it

GC_4GR2_Fermion_delta5 = Coupling(name = 'GC_4GR2_Fermion_delta5',
                 value = '(2.0/Ncol)*5.0*complex(0,1)*RGR2',
                 order = {'QCD':4})

GC_4GR2_Fermion_delta11 = Coupling(name = 'GC_4GR2_Fermion_delta11',
                 value = '-(2.0/Ncol)*11.0*complex(0,1)*RGR2',
                 order = {'QCD':4})

GC_4GR2_5Struct = Coupling(name = 'GC_4GR2_5Struct',
                 value = '5.0*complex(0,1)*RGR2',
                 order = {'QCD':4})

GC_4GR2_11Struct = Coupling(name = 'GC_4GR2_11Struct',
                 value = '-11.0*complex(0,1)*RGR2',
                 order = {'QCD':4})

#=============================================================================================

R2_GQQ = Coupling(name = 'R2_GQQ',
                value = '-complex(0,1)*G**3/(16.0*cmath.pi**2)*((Ncol**2-1)/(2.0*Ncol))*(1.0+lhv)',
                order = {'QCD':3})

R2_GGq = Coupling(name = 'R2_GGq',
                 value = 'complex(0,1)*G**2/(48.0*cmath.pi**2)',
                 order = {'QCD':2})

R2_GGb = Coupling(name = 'R2_GGb',
                 value = 'complex(0,1)*G**2*(-6.0*MB**2)/(48.0*cmath.pi**2)',
                 order = {'QCD':2})

R2_GGt = Coupling(name = 'R2_GGt',
                 value = 'complex(0,1)*G**2*(-6.0*MT**2)/(48.0*cmath.pi**2)',
                 order = {'QCD':2})

R2_GGg_1 = Coupling(name = 'R2_GGg_1',
                 value = 'complex(0,1)*G**2*Ncol/(48.0*cmath.pi**2)*(1.0/2.0+lhv)',
                 order = {'QCD':2})

R2_GGg_2 = Coupling(name = 'R2_GGg_2',
                 value = '-complex(0,1)*G**2*Ncol/(48.0*cmath.pi**2)*lhv',
                 order = {'QCD':2})

R2_QQq = Coupling(name = 'R2_QQq',
                 value =  'complex(0,1)*G**2*(Ncol**2-1)/(32.0*cmath.pi**2*Ncol)',
                 order = {'QCD':2})

R2_QQb = Coupling(name = 'R2_QQb',
                 value =  'complex(0,1)*G**2*(Ncol**2-1)*(2.0*MB)/(32.0*cmath.pi**2*Ncol)',
                 order = {'QCD':2})

R2_QQt = Coupling(name = 'R2_QQt',
                 value =  'complex(0,1)*G**2*(Ncol**2-1)*(2.0*MT)/(32.0*cmath.pi**2*Ncol)',
                 order = {'QCD':2})

# ============== #
# Mixed QCD-QED  #
# ============== #

# Quark couplings to A and Z

R2_DDA = Coupling(name = 'R2_DDA',
                value = '(-(ee*complex(0,1))/3.0)*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_UUA = Coupling(name = 'R2_UUA',
                value = '(2.0*(ee*complex(0,1))/3.0)*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_DDZ_V2 = Coupling(name = 'R2_DDZ_V2',
                value = '(-(cw*ee*complex(0,1))/(2.0*sw))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_DDZ_V3 = Coupling(name = 'R2_DDZ_V3',
                value = '(-(ee*complex(0,1)*sw)/(6.0*cw))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_UUZ_V2 = Coupling(name = 'R2_UUZ_V2',
                value = '((cw*ee*complex(0,1))/(2.*sw))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_UUZ_V5 = Coupling(name = 'R2_UUZ_V5',
                value = '(-(ee*complex(0,1)*sw)/(6.*cw))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

# Quark couplings to W, most general CKM

R2_dxuW = Coupling(name = 'R2_dxuW',
                value = '((CKM11*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_dxcW = Coupling(name = 'R2_dxcW',
                value = '((CKM21*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_dxtW = Coupling(name = 'R2_dxtW',
                value = '((CKM31*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_sxuW = Coupling(name = 'R2_sxuW',
                value = '((CKM12*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_sxcW = Coupling(name = 'R2_sxcW',
                value = '((CKM22*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_sxtW = Coupling(name = 'R2_sxtW',
                value = '((CKM32*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_bxuW = Coupling(name = 'R2_bxuW',
                value = '((CKM13*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_bxcW = Coupling(name = 'R2_bxcW',
                value = '((CKM23*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_bxtW = Coupling(name = 'R2_bxtW',
                value = '((CKM33*ee*complex(0,1))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_uxdW = Coupling(name = 'R2_uxdW',
                value = '((ee*complex(0,1)*complexconjugate(CKM11))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_cxdW = Coupling(name = 'R2_cxdW',
                value = '((ee*complex(0,1)*complexconjugate(CKM21))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_txdW = Coupling(name = 'R2_txdW',
                value = '((ee*complex(0,1)*complexconjugate(CKM31))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_uxsW = Coupling(name = 'R2_uxsW',
                value = '((ee*complex(0,1)*complexconjugate(CKM12))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_cxsW = Coupling(name = 'R2_cxsW',
                value = '((ee*complex(0,1)*complexconjugate(CKM22))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_txsW = Coupling(name = 'R2_txsW',
                value = '((ee*complex(0,1)*complexconjugate(CKM32))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_uxbW = Coupling(name = 'R2_uxbW',
                value = '((ee*complex(0,1)*complexconjugate(CKM13))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_cxbW = Coupling(name = 'R2_cxbW',
                value = '((ee*complex(0,1)*complexconjugate(CKM23))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

R2_txbW = Coupling(name = 'R2_txbW',
                value = '((ee*complex(0,1)*complexconjugate(CKM33))/(sw*cmath.sqrt(2)))*R2MixedFactor',
                order = {'QCD':2,'QED':1})

# R2 for the Higgs couplings to massive quarks 

R2_bbH = Coupling(name = 'R2_bbH',
                value = '(-((complex(0,1)*yb)/cmath.sqrt(2)))*(2.0*R2MixedFactor)',
                order = {'QCD':2,'QED':1})

R2_ttH = Coupling(name = 'R2_ttH',
                value = '(-((complex(0,1)*yt)/cmath.sqrt(2)))*(2.0*R2MixedFactor)',
                order = {'QCD':2,'QED':1})

R2_ccH = Coupling(name = 'R2_ccH',
                value = '(-((complex(0,1)*yc)/cmath.sqrt (2)))*(2.0*R2MixedFactor)',
                order = {'QCD':2,'QED':1})

# R2 interactions non proportional to the SM

# R2 for the Higgs interactions
# EDIT VH
# There is a factor added here to the three couplings below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGHc = Coupling(name = 'R2_GGHc',
                value = '4.0*(-((complex(0,1)*yc)/cmath.sqrt(2)))*(1.0/2.0)*(G**2/(8.0*cmath.pi**2))*MC',
                order = {'QCD':2,'QED':1})

R2_GGHb = Coupling(name = 'R2_GGHb',
                value = '4.0*(-((complex(0,1)*yb)/cmath.sqrt(2)))*(1.0/2.0)*(G**2/(8.0*cmath.pi**2))*MB',
                order = {'QCD':2,'QED':1})

R2_GGHt = Coupling(name = 'R2_GGHt',
                value = '4.0*(-((complex(0,1)*yt)/cmath.sqrt(2)))*(1.0/2.0)*(G**2/(8.0*cmath.pi**2))*MT',
                order = {'QCD':2,'QED':1})

# R2 for the weak vector bosons interaction with gluons

R2_GGZup = Coupling(name = 'R2_GGZup',
                    value = {0:'AxialZUp*(1.0/2.0)*(G**2/(12.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':1})

R2_GGZdown = Coupling(name = 'R2_GGZdown',
                    value = {0:'AxialZDown*(1.0/2.0)*(G**2/(12.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':1})

# EDIT VH
# There is a factor four added here to all the GGVV R2 couplings below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH

R2_GGZAup = Coupling(name = 'R2_GGZAup',
                    value = {0:'4.0*(-VectorAUp*VectorZUp)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGZAdown = Coupling(name = 'R2_GGZAdown',
                    value = {0:'4.0*(-VectorADown*VectorZDown)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGZZdown = Coupling(name = 'R2_GGZZdown',
                    value = {0:'4.0*(-VectorZDown*VectorZDown-AxialZDown*AxialZDown)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGZZup = Coupling(name = 'R2_GGZZup',
                    value = {0:'4.0*(-VectorZUp*VectorZUp-AxialZUp*AxialZUp)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGAAdown = Coupling(name = 'R2_GGAAdown',
                    value = {0:'4.0*(-VectorADown*VectorADown)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGAAup = Coupling(name = 'R2_GGAAup',
                    value = {0:'4.0*(-VectorAUp*VectorAUp)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWud = Coupling(name = 'R2_GGWWud',
                    value = {0:'4.0*(CKM11*complexconjugate(CKM11))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWus = Coupling(name = 'R2_GGWWus',
                    value = {0:'4.0*(CKM12*complexconjugate(CKM12))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWub = Coupling(name = 'R2_GGWWub',
                    value = {0:'4.0*(CKM13*complexconjugate(CKM13))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWcd = Coupling(name = 'R2_GGWWcd',
                    value = {0:'4.0*(CKM21*complexconjugate(CKM21))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWcs = Coupling(name = 'R2_GGWWcs',
                    value = {0:'4.0*(CKM22*complexconjugate(CKM22))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWcb = Coupling(name = 'R2_GGWWcb',
                    value = {0:'4.0*(CKM23*complexconjugate(CKM23))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWtd = Coupling(name = 'R2_GGWWtd',
                    value = {0:'4.0*(CKM31*complexconjugate(CKM31))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWts = Coupling(name = 'R2_GGWWts',
                    value = {0:'4.0*(CKM32*complexconjugate(CKM32))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGWWtb = Coupling(name = 'R2_GGWWtb',
                    value = {0:'4.0*(CKM33*complexconjugate(CKM33))*(-VectorWmDxU*VectorWpUxD-AxialWmDxU*AxialWpUxD)*(1.0/2.0)*(-(complex(0,1)*G**2)/(24.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGHHc = Coupling(name = 'R2_GGHHc',
                    value = {0:'(-yc**2/2.0)*(1.0/2.0)*((complex(0,1)*G**2)/(8.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

# EDIT VH
# There is a factor +4 added here to the two couplings below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGHHb = Coupling(name = 'R2_GGHHb',
                    value = {0:'4.0*(-yb**2/2.0)*(1.0/2.0)*((complex(0,1)*G**2)/(8.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

R2_GGHHt = Coupling(name = 'R2_GGHHt',
                    value = {0:'4.0*(-yt**2/2.0)*(1.0/2.0)*((complex(0,1)*G**2)/(8.0*cmath.pi**2))'},
                    order = {'QCD':2,'QED':2})

# EDIT VH
# There is a minus sign added here to the coupling below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGGZvecUp = Coupling(name = 'R2_GGGZvecUp',
                        value = {0:'complex(0,1)*VectorZUp*(-1.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})

# EDIT VH
# There is a minus sign added here to the coupling below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGGZvecDown = Coupling(name = 'R2_GGGZvecDown',
                        value = {0:'complex(0,1)*VectorZDown*(-1.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})

R2_GGGZaxialUp = Coupling(name = 'R2_GGGZaxialUp',
                        value = {0:'complex(0,1)*AxialZUp*(9.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})

R2_GGGZaxialDown = Coupling(name = 'R2_GGGZaxialDown',
                        value = {0:'complex(0,1)*AxialZDown*(9.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})

# EDIT VH
# There is a minus signe added here to the coupling below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGGAvecUp = Coupling(name = 'R2_GGGAvecUp',
                        value = {0:'complex(0,1)*VectorAUp*(-1.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})
# EDIT VH
# There is a minus signe added here to the coupling below without proper understanding of it
# I have not investigate too much about it though.
# END EDIT VH
R2_GGGAvecDown = Coupling(name = 'R2_GGGAvecDown',
                        value = {0:'complex(0,1)*VectorADown*(-1.0/2.0)*(-G**3/(24.0*cmath.pi**2))'},
                        order = {'QCD':3,'QED':1})

################
# UV couplings #
################

# ========= #
# Pure QCD  #
# ========= #

UV_3Gg = Coupling(name = 'UV_3Gg',
                 value = '-G_UVg*G',
                 order = {'QCD':3})

UV_3Gq = Coupling(name = 'UV_3Gq',
                 value = '-G_UVq*G',
                 order = {'QCD':3})

UV_3Gb = Coupling(name = 'UV_3Gb',
                 value = '-G_UVb*G',
                 order = {'QCD':3})

UV_3Gt = Coupling(name = 'UV_3Gt',
                 value = '-G_UVt*G',
                 order = {'QCD':3})

UV_4Gg = Coupling(name = 'UV_4Gg',
                 value = '2.0*complex(0,1)*G_UVg*(G**2)',
                 order = {'QCD':4})

UV_4Gq = Coupling(name = 'UV_4Gq',
                 value = '2.0*complex(0,1)*G_UVq*(G**2)',
                 order = {'QCD':4})

UV_4Gb = Coupling(name = 'UV_4Gb',
                 value = '2.0*complex(0,1)*G_UVb*(G**2)',
                 order = {'QCD':4})

UV_4Gt = Coupling(name = 'UV_4Ggt',
                 value = '2.0*complex(0,1)*G_UVt*(G**2)',
                 order = {'QCD':4})

UV_GQQg = Coupling(name = 'UV_GQQg',
                 value = 'complex(0,1)*G_UVg*G',
                 order = {'QCD':3})

UV_GQQq = Coupling(name = 'UV_GQQq',
                 value = 'complex(0,1)*G_UVq*G',
                 order = {'QCD':3})

UV_GQQb = Coupling(name = 'UV_GQQb',
                 value = 'complex(0,1)*G_UVb*G',
                 order = {'QCD':3})

UV_GQQt = Coupling(name = 'UV_GQQt',
                 value = 'complex(0,1)*G_UVt*G',
                 order = {'QCD':3})

UV_bMass = Coupling(name = 'UV_bMass',
                 value = 'bMass_UV',
                 order = {'QCD':2}) 

UV_tMass = Coupling(name = 'UV_tMass',
                 value = 'tMass_UV',
                 order = {'QCD':2})

# ============== #
# Mixed QCD-QED  #
# ============== #

UV_Htt = Coupling(name = 'UV_Htt',
                 value = '-((complex(0,1)*yt)/cmath.sqrt(2))*UV_yuk_t',
                 order = {'QED':1,'QCD':2})

UV_Hbb = Coupling(name = 'UV_Hbb',
                 value = '-((complex(0,1)*yb)/cmath.sqrt(2))*UV_yuk_b',
                 order = {'QED':1,'QCD':2})
