! Code automatically generated by 'PreSARAH'  
! Expressions for amplitudes are obtained by FeynArts/FormCalc  
! Created at 11:55 on 9.11.2016  
 
 
Module DecaySSS 

Use Control 
Use LoopFunctions 
Use AddLoopFunctions 
Use Settings


Contains 

Subroutine TreeAmp_StoSS(Mex1,Mex2,Mex3,coupT1,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Complex(dp), Intent(in) :: coupT1 
! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 1*(0.,1._dp)*coupT1 


End Subroutine TreeAmp_StoSS

! -------------------------------------- 
! Topology Nr.1
! -------------------------------------- 

Subroutine Amp_VERTEX_StoSS_Topology1_FFF(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1L, coup1R, coup2L, coup2R, coup3L, coup3R,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1L, coup1R, coup2L, coup2R, coup3L, coup3R 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML2**2,ML3**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(2*(0.,1._dp)*coup1R*coup2R*coup3L*int1*ML1) & 
& +(2*(0.,1._dp)*coup1L*coup2L*coup3R*int1*ML1) & 
& +(1*(0.,1._dp)*coup1R*coup2R*coup3L*int2*Mex1**2*ML1) & 
& +(1*(0.,1._dp)*coup1L*coup2L*coup3R*int2*Mex1**2*ML1) & 
& +(1*(0.,1._dp)*coup1R*coup2R*coup3L*int3*Mex1**2*ML1) & 
& +(1*(0.,1._dp)*coup1L*coup2L*coup3R*int3*Mex1**2*ML1) & 
& +(3*(0.,1._dp)*coup1R*coup2R*coup3L*int4*Mex1**2*ML1) & 
& +(3*(0.,1._dp)*coup1L*coup2L*coup3R*int4*Mex1**2*ML1) & 
& +(1*(0.,1._dp)*coup1R*coup2R*coup3L*int2*Mex2**2*ML1) & 
& +(1*(0.,1._dp)*coup1L*coup2L*coup3R*int2*Mex2**2*ML1) & 
& +(3*(0.,1._dp)*coup1R*coup2R*coup3L*int3*Mex2**2*ML1) & 
& +(3*(0.,1._dp)*coup1L*coup2L*coup3R*int3*Mex2**2*ML1) & 
& +(1*(0.,1._dp)*coup1R*coup2R*coup3L*int4*Mex2**2*ML1) & 
& +(1*(0.,1._dp)*coup1L*coup2L*coup3R*int4*Mex2**2*ML1) & 
& +(-1*(0.,1._dp)*coup1R*coup2R*coup3L*int2*Mex3**2*ML1) & 
& +(-1*(0.,1._dp)*coup1L*coup2L*coup3R*int2*Mex3**2*ML1) & 
& +(-1*(0.,1._dp)*coup1R*coup2R*coup3L*int3*Mex3**2*ML1) & 
& +(-1*(0.,1._dp)*coup1L*coup2L*coup3R*int3*Mex3**2*ML1) & 
& +(-1*(0.,1._dp)*coup1R*coup2R*coup3L*int4*Mex3**2*ML1) & 
& +(-1*(0.,1._dp)*coup1L*coup2L*coup3R*int4*Mex3**2*ML1) & 
& +(2*(0.,1._dp)*coup1R*coup2R*coup3L*int2*ML1**3) & 
& +(2*(0.,1._dp)*coup1L*coup2L*coup3R*int2*ML1**3) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3L*int1*ML2) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3R*int1*ML2) & 
& +(1*(0.,1._dp)*coup1L*coup2R*coup3L*int4*Mex1**2*ML2) & 
& +(1*(0.,1._dp)*coup1R*coup2L*coup3R*int4*Mex1**2*ML2) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3L*int3*Mex2**2*ML2) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3R*int3*Mex2**2*ML2) & 
& +(1*(0.,1._dp)*coup1L*coup2R*coup3L*int4*Mex2**2*ML2) & 
& +(1*(0.,1._dp)*coup1R*coup2L*coup3R*int4*Mex2**2*ML2) & 
& +(-1*(0.,1._dp)*coup1L*coup2R*coup3L*int4*Mex3**2*ML2) & 
& +(-1*(0.,1._dp)*coup1R*coup2L*coup3R*int4*Mex3**2*ML2) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3L*int2*ML1**2*ML2) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3R*int2*ML1**2*ML2) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3L*int1*ML3) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3R*int1*ML3) & 
& +(1*(0.,1._dp)*coup1R*coup2L*coup3L*int3*Mex1**2*ML3) & 
& +(1*(0.,1._dp)*coup1L*coup2R*coup3R*int3*Mex1**2*ML3) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3L*int4*Mex1**2*ML3) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3R*int4*Mex1**2*ML3) & 
& +(1*(0.,1._dp)*coup1R*coup2L*coup3L*int3*Mex2**2*ML3) & 
& +(1*(0.,1._dp)*coup1L*coup2R*coup3R*int3*Mex2**2*ML3) & 
& +(-1*(0.,1._dp)*coup1R*coup2L*coup3L*int3*Mex3**2*ML3) & 
& +(-1*(0.,1._dp)*coup1L*coup2R*coup3R*int3*Mex3**2*ML3) & 
& +(2*(0.,1._dp)*coup1R*coup2L*coup3L*int2*ML1**2*ML3) & 
& +(2*(0.,1._dp)*coup1L*coup2R*coup3R*int2*ML1**2*ML3) & 
& +(2*(0.,1._dp)*coup1L*coup2L*coup3L*int2*ML1*ML2*ML3) & 
& +(2*(0.,1._dp)*coup1R*coup2R*coup3R*int2*ML1*ML2*ML3)

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[1,{F, F, F},1]={Internal[1][i1], AntiField[Internal[2]][i2], External[1][gt1]}; 
! FieldOrder[1,{F, F, F},2]={Internal[3][i3], AntiField[Internal[1]][i1], External[2][gt2]}; 
! FieldOrder[1,{F, F, F},3]={Internal[2][i2], AntiField[Internal[3]][i3], External[3][gt3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_FFF

Subroutine Amp_VERTEX_StoSS_Topology1_SSS(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= -1*(0.,1._dp)*coup1*coup2*coup3*int1 

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if

!Field Order 
! FieldOrder[1,{S, S, S},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{S, S, S},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{S, S, S},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_SSS

Subroutine Amp_VERTEX_StoSS_Topology1_UUU(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 1*(0.,1._dp)*coup1*coup2*coup3*int1 

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[1,{U, U, U},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{U, U, U},2]={External[2][gt2], Internal[3][i3], AntiField[Internal[1]][i1]}; 
! FieldOrder[1,{U, U, U},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_UUU

Subroutine Amp_VERTEX_StoSS_Topology1_VVV(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 4*(0.,1._dp)*coup1*coup2*coup3*int1 

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if

!Field Order 
! FieldOrder[1,{V, V, V},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{V, V, V},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{V, V, V},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_VVV

Subroutine Amp_VERTEX_StoSS_Topology1_SSV(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML2**2,ML3**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex1**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)


Amplitude=-Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if

!Field Order 
! FieldOrder[1,{S, S, V},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{S, S, V},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{S, S, V},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_SSV

Subroutine Amp_VERTEX_StoSS_Topology1_SVS(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML3**2,ML2**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex2**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)

Amplitude=-Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if

!Field Order 
! FieldOrder[1,{S, V, S},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{S, V, S},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{S, V, S},3]={External[3][gt3], AntiField[Internal[3]][i3], Internal[2][i2]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_SVS

Subroutine Amp_VERTEX_StoSS_Topology1_VSS(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML2**2,ML3**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(-2*(0.,1._dp)*coup1*coup2*coup3*int2*Mex1**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(-3*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(-2*(0.,1._dp)*coup1*coup2*coup3*int2*Mex2**2) & 
& +(-3*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(2*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)


If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if

!Field Order 
! FieldOrder[1,{V, S, S},1]={External[1][gt1], AntiField[Internal[2]][i2], Internal[1][i1]}; 
! FieldOrder[1,{V, S, S},2]={External[2][gt2], Internal[3][i3], AntiField[Internal[1]][i1]}; 
! FieldOrder[1,{V, S, S},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_VSS

Subroutine Amp_VERTEX_StoSS_Topology1_SVV(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML2**2,ML3**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int2*Mex1**2) & 
& +(-1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(-3/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int2*Mex2**2) & 
& +(-3/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(-1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(-1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[1,{S, V, V},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{S, V, V},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{S, V, V},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_SVV

Subroutine Amp_VERTEX_StoSS_Topology1_VSV(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML2**2,ML3**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(3*(0.,1._dp)*coup1*coup2*coup3*int2*Mex1**2) & 
& +(2*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(7/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex2**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(-1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(-2*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[1,{V, S, V},1]={External[1][gt1], AntiField[Internal[2]][i2], Internal[1][i1]}; 
! FieldOrder[1,{V, S, V},2]={External[2][gt2], AntiField[Internal[1]][i1], Internal[3][i3]}; 
! FieldOrder[1,{V, S, V},3]={External[3][gt3], Internal[2][i2], AntiField[Internal[3]][i3]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_VSV

Subroutine Amp_VERTEX_StoSS_Topology1_VVS(Mex1,Mex2,Mex3,ML1, ML2, ML3,coup1, coup2, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2, ML3 
Complex(dp), Intent(in) :: coup1, coup2, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML3**2,ML2**2)
int2=SA_Cget("C0  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int3=SA_Cget("C1  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)
int4=SA_Cget("C2  ",Mex2**2,Mex3**2,Mex1**2,ML1**2,ML3**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int1) & 
& +(-1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex1**2) & 
& +(-1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex1**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int4*Mex1**2) & 
& +(3*(0.,1._dp)*coup1*coup2*coup3*int2*Mex2**2) & 
& +(7/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex2**2) & 
& +(2*(0.,1._dp)*coup1*coup2*coup3*int4*Mex2**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*Mex3**2) & 
& +(1/2._dp*(0.,1._dp)*coup1*coup2*coup3*int3*Mex3**2) & 
& +(-2*(0.,1._dp)*coup1*coup2*coup3*int4*Mex3**2) & 
& +(1*(0.,1._dp)*coup1*coup2*coup3*int2*ML1**2)

Amplitude=-Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[1,{V, V, S},1]={External[1][gt1], Internal[1][i1], AntiField[Internal[2]][i2]}; 
! FieldOrder[1,{V, V, S},2]={External[2][gt2], Internal[3][i3], AntiField[Internal[1]][i1]}; 
! FieldOrder[1,{V, V, S},3]={External[3][gt3], AntiField[Internal[3]][i3], Internal[2][i2]}; 
End Subroutine Amp_VERTEX_StoSS_Topology1_VVS

! -------------------------------------- 
! Topology Nr.2
! -------------------------------------- 

Subroutine Amp_VERTEX_StoSS_Topology2_SS(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup2,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup2 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex1**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 1/2._dp*(0.,1._dp)*coup1*coup2*int1 

Amplitude=2._dp*Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[2,{S, S},1]=Null[[1]]; 
! FieldOrder[2,{S, S},2]=Null[[2]]; 
! FieldOrder[2,{S, S},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology2_SS

Subroutine Amp_VERTEX_StoSS_Topology2_VV(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup2,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup2 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex1**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup2*rMS) & 
& +(2*(0.,1._dp)*coup1*coup2*int1)

Amplitude=2._dp*Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[2,{V, V},1]=Null[[1]]; 
! FieldOrder[2,{V, V},2]=Null[[2]]; 
! FieldOrder[2,{V, V},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology2_VV

! -------------------------------------- 
! Topology Nr.3
! -------------------------------------- 

Subroutine Amp_VERTEX_StoSS_Topology3_SS(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup2,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup2 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex2**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 1/2._dp*(0.,1._dp)*coup1*coup2*int1 

Amplitude=2._dp*Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[3,{S, S},1]=Null[[1]]; 
! FieldOrder[3,{S, S},2]=Null[[2]]; 
! FieldOrder[3,{S, S},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology3_SS

Subroutine Amp_VERTEX_StoSS_Topology3_VV(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup2,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup2 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex2**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup2*rMS) & 
& +(2*(0.,1._dp)*coup1*coup2*int1)

Amplitude=2._dp*Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[3,{V, V},1]=Null[[1]]; 
! FieldOrder[3,{V, V},2]=Null[[2]]; 
! FieldOrder[3,{V, V},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology3_VV

! -------------------------------------- 
! Topology Nr.4
! -------------------------------------- 

Subroutine Amp_VERTEX_StoSS_Topology4_SS(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= 1/2._dp*(0.,1._dp)*coup1*coup3*int1 
Amplitude=2._dp*Amplitude

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[4,{S, S},1]=Null[[1]]; 
! FieldOrder[4,{S, S},2]=Null[[2]]; 
! FieldOrder[4,{S, S},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology4_SS

Subroutine Amp_VERTEX_StoSS_Topology4_VV(Mex1,Mex2,Mex3,ML1, ML2,coup1, coup3,Amplitude)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(out) :: Amplitude 
Real(dp), Intent(in) :: ML1, ML2 
Complex(dp), Intent(in) :: coup1, coup3 
Complex(dp) :: int1,int2,int3,int4,int5,int6,int7,int8,int9,int10 


! Necessary Loop Integrals 
int1=SA_B0(Mex3**2,ML1**2,ML2**2)


! Now the full amplitude for the different Lorentz Parts 
! Coefficient of {}[[1]] 
Amplitude= & 
& +(-1*(0.,1._dp)*coup1*coup3*rMS) & 
& +(2*(0.,1._dp)*coup1*coup3*int1)

Amplitude=2*Amplitude
! Amplitude=0

If ((Abs(Amplitude)).ne.(Abs(Amplitude))) Then
Amplitude=0._dp
End if


!Field Order 
! FieldOrder[4,{V, V},1]=Null[[1]]; 
! FieldOrder[4,{V, V},2]=Null[[2]]; 
! FieldOrder[4,{V, V},3]=Null[[3]]; 
End Subroutine Amp_VERTEX_StoSS_Topology4_VV

Subroutine SquareAmp_StoSS(Mex1,Mex2,Mex3,Amplitude,AmplitudeC,AmpSquared)
Implicit None 
Real(dp), Intent(in) :: Mex1,Mex2,Mex3 
Complex(dp), Intent(in) :: Amplitude, AmplitudeC 
Real(dp), Intent(out) :: AmpSquared 
Real(dp) :: LorentzFactor 
 
AmpSquared = 0._dp 
AmpSquared = Amplitude*Conjg(AmplitudeC) 
End Subroutine SquareAmp_StoSS
End Module DecaySSS
